Jelajahi Sumber

年级、班级、科目选择器

zhuth 6 tahun lalu
induk
melakukan
0deeafe7f9

+ 6 - 0
frontend/pc-web/app/model/Class.js

@@ -9,6 +9,9 @@ Ext.define('school.model.Class', {
     }, {
         name: 'clazz_name', // 名称
         type: 'string'
+    }, {
+        name: 'clazz_nickname',
+        type: 'string'
     }, {
         name: 'clazz_status', // 状态
         type: 'int'
@@ -21,5 +24,8 @@ Ext.define('school.model.Class', {
     }, {
         name: 'grade_id', // 所属年级
         type: 'int'
+    }, {
+        name: 'clazz_grade', // 所属年级
+        type: 'string'
     }],
 });

+ 11 - 2
frontend/pc-web/app/store/Class.js

@@ -7,6 +7,15 @@ Ext.define('school.store.Class', {
 
     storeId: 'store_class',
 
-    fields: ['name', 'value'],
-    data: []
+    model: 'school.model.Grade',
+
+    autoLoad: true,
+    proxy: {
+        type: 'ajax',
+        url: '/api/school/mirror/findClazz',
+        reader: {
+            type: 'json',
+            rootProperty: 'data.list'
+        }
+    },
 });

+ 10 - 2
frontend/pc-web/app/store/Grade.js

@@ -7,7 +7,15 @@ Ext.define('school.store.Grade', {
 
     storeId: 'store_grade',
 
-    fields: ['name', 'value'],
+    model: 'school.model.Grade',
 
-    data: []
+    autoLoad: true,
+    proxy: {
+        type: 'ajax',
+        url: '/api/school/mirror/findGrade',
+        reader: {
+            type: 'json',
+            rootProperty: 'data.list'
+        }
+    },
 });

+ 3 - 53
frontend/pc-web/app/store/Subject.js

@@ -7,62 +7,12 @@ Ext.define('school.store.Subject', {
     storeId: 'store_subject',
 
     model: 'school.model.Subject',
-    autoLoad: false,
+    autoLoad: true,
     proxy: {
         type: 'ajax',
-        url: '/api/school/subject/list',
+        url: '/api/school/mirror/findSubject',
         reader: {
             type: 'json',
             rootProperty: 'data.list'
         }
-    },
-    // fields: ['subject_id', 'subject_name'],
-    // data: []
-
-    // data: [{
-    //     code: '1',
-    //     name: '语文'
-    // }, {
-    //     code: '2',
-    //     name: '数学'
-    // }, {
-    //     code: '3',
-    //     name: '英语'
-    // }, {
-    //     code: '4',
-    //     name: '物理'
-    // }, {
-    //     code: '5',
-    //     name: '化学'
-    // }, {
-    //     code: '6',
-    //     name: '生物'
-    // }, {
-    //     code: '7',
-    //     name: '政治'
-    // }, {
-    //     code: '8',
-    //     name: '历史'
-    // }, {
-    //     code: '9',
-    //     name: '地理'
-    // }, {
-    //     code: '10',
-    //     name: '体育'
-    // }, {
-    //     code: '11',
-    //     name: '书法'
-    // }, {
-    //     code: '12',
-    //     name: '美工'
-    // }, {
-    //     code: '13',
-    //     name: '画画'
-    // }, {
-    //     code: '14',
-    //     name: '自然'
-    // }, {
-    //     code: '15',
-    //     name: '思想品德'
-    // }]
-});
+    }

+ 2 - 2
frontend/pc-web/app/view/Interaction/access/List.js

@@ -35,7 +35,7 @@ Ext.define('school.view.interaction.access.List', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -44,7 +44,7 @@ Ext.define('school.view.interaction.access.List', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('clazz_grade'));
                     }
                 }
             }],

+ 2 - 2
frontend/pc-web/app/view/Interaction/homework/List.js

@@ -40,7 +40,7 @@ Ext.define('school.view.interaction.homework.List', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -49,7 +49,7 @@ Ext.define('school.view.interaction.homework.List', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {

+ 2 - 2
frontend/pc-web/app/view/Interaction/homework/Release.js

@@ -58,7 +58,7 @@ Ext.define('school.view.interaction.homework.Release', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -67,7 +67,7 @@ Ext.define('school.view.interaction.homework.Release', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('clazz_grade'));
                     }
                 },
                 allowBlank: false

+ 2 - 2
frontend/pc-web/app/view/Interaction/mailbox/List.js

@@ -40,7 +40,7 @@ Ext.define('school.view.interaction.mailbox.List', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -49,7 +49,7 @@ Ext.define('school.view.interaction.mailbox.List', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('mb_grade').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('mb_grade').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {

+ 2 - 2
frontend/pc-web/app/view/Interaction/score/List.js

@@ -36,7 +36,7 @@ Ext.define('school.view.interaction.score.List', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -45,7 +45,7 @@ Ext.define('school.view.interaction.score.List', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('grade').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('grade').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {

+ 3 - 3
frontend/pc-web/app/view/Interaction/timetable/Detail.js

@@ -66,7 +66,7 @@ Ext.define('school.view.interaction.timetable.Detail', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -75,8 +75,8 @@ Ext.define('school.view.interaction.timetable.Detail', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('clazzId').setValue(record.get('value'));
-                        combo.up('form').getForm().findField('gradeName').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('clazzId').setValue(record.get('clazz_id'));
+                        combo.up('form').getForm().findField('gradeName').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {

+ 3 - 67
frontend/pc-web/app/view/Interaction/timetable/List.js

@@ -41,7 +41,7 @@ Ext.define('school.view.interaction.timetable.List', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -50,7 +50,7 @@ Ext.define('school.view.interaction.timetable.List', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {
@@ -166,69 +166,5 @@ Ext.define('school.view.interaction.timetable.List', {
             },
         });
         this.callParent(arguments);
-    },
-
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function (field, value) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            conditionValue;
-        if (me.isContainsAny(xtypes, ['datefield'])) {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = from + ',' + to;
-        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
-            conditionValue = value.map ? value.map(function (v) {
-                return v.value;
-            }).join(',') : '';
-        } else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
-    },
-
-    getExtraParams: function(store, op, condition) {
-        var temp = {};
-
-        for(let x = 0; x < condition.length; x++) {
-            let c = condition[x];
-            if(c.field == 'keyword') {
-                temp.keyword = c.value;
-            }else if(c.field == 'date') {
-                temp.fromDate = new Date(c.value.split(',')[0]).getTime();
-                temp.endDate = new Date(c.value.split(',')[1]).getTime();
-            }else if(c.field == 'quoted') {
-                temp.quoted = c.value == 'all' ? null : c.value;
-            }else if(c.field == 'closed') {
-                // temp.endDate = c.value == 'all' ? null : (
-                //     c.value == '0' ? 
-                // );
-            }
-        }
-        let obj = {
-            pageNumber: store.exportNumber?store.exportNumber:op._page,
-            pageSize: store.exportPageSize?store.exportPageSize:store.pageSize
-        };
-        for(let k in temp) {
-            if(!!temp[k]) {
-                obj[k] = temp[k];
-            }
-        }
-        return obj;
-     },
+    }
 });

+ 4 - 1
frontend/pc-web/app/view/basic/class/ClassDetailController.js

@@ -6,12 +6,14 @@ Ext.define('school.view.basic.class.ClassDetailController', {
         let me = this;
 
         me.refresh(localJson.data.id);
+        Ext.StoreMgr.get('store_class').load();
     },
 
     refresh: function(id) {
         let me = this,
         view = me.getView();
 
+        view.setLoading(true);
         school.util.BaseUtil.request({
             url: view._readUrl + '/' + id
         }).then(function(res) {
@@ -31,9 +33,10 @@ Ext.define('school.view.basic.class.ClassDetailController', {
                     }
                 }
                 view.initFormData(o);
-                view.fireEvent('load', classDetail, o);
+                view.fireEvent('load', view, o);
             }
         }).catch(function(e) {
+            view.setLoading(false);
             school.util.BaseUtil.showErrorToast('请求数据失败: ' + e.message);
         });
     }

+ 3 - 0
frontend/pc-web/app/view/basic/class/ClassInfoController.js

@@ -332,6 +332,9 @@ Ext.define('school.view.basic.class.ClassInfoController', {
                                 currentNode.commit();
                                 win.close();
                                 listCard.showNode(currentNode);
+                            }).then(function() {
+                                Ext.StoreMgr.get('store_grade').load();
+                                Ext.StoreMgr.get('store_class').load();
                             }).catch(function(e) {
                                 view.setLoading(false);
                                 school.util.BaseUtil.showErrorToast(e.message);

+ 3 - 5
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -99,7 +99,6 @@ Ext.define('school.view.basic.student.StudentDetail', {
             }, {
                 xtype: 'gradecombo',
                 name: 'stu_grade',
-                valueField: 'name',
                 fieldLabel: '年级',
                 listeners: {
                     select: function (combo, record, eOpts) {
@@ -118,7 +117,6 @@ Ext.define('school.view.basic.student.StudentDetail', {
                 xtype: 'classcombo',
                 name: 'stu_class',
                 fieldLabel: '班级',
-                valueField: 'name',
                 listeners: {
                     expand: function (combo, eOpts) {
                         combo.store.clearFilter();
@@ -127,7 +125,7 @@ Ext.define('school.view.basic.student.StudentDetail', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -136,8 +134,8 @@ Ext.define('school.view.basic.student.StudentDetail', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('clazz_id').setValue(record.get('value'));
-                        combo.up('form').getForm().findField('stu_grade').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('clazz_id').setValue(record.get('clazz_id'));
+                        combo.up('form').getForm().findField('stu_grade').setValue(record.get('clazz_grade'));
                     }
                 },
                 allowBlank: false

+ 2 - 4
frontend/pc-web/app/view/basic/student/StudentList.js

@@ -18,7 +18,6 @@ Ext.define('school.view.basic.student.StudentList', {
                 xtype: 'gradecombo',
                 name: 'stu_grade',
                 fieldLabel: '年级',
-                valueField: 'name',
                 listeners: {
                     select: function (combo, record, eOpts) {
                         combo.up('form').getForm().findField('stu_class').setValue(null);
@@ -28,7 +27,6 @@ Ext.define('school.view.basic.student.StudentList', {
                 xtype: 'classcombo',
                 name: 'stu_class',
                 fieldLabel: '班级',
-                valueField: 'name',
                 listeners: {
                     expand: function (combo, eOpts) {
                         combo.store.clearFilter();
@@ -37,7 +35,7 @@ Ext.define('school.view.basic.student.StudentList', {
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -46,7 +44,7 @@ Ext.define('school.view.basic.student.StudentList', {
                         }
                     },
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('stu_grade').setValue(record.get('gradeName'));
+                        combo.up('form').getForm().findField('stu_grade').setValue(record.get('clazz_grade'));
                     }
                 }
             }, {

+ 4 - 62
frontend/pc-web/app/view/basic/subject/List.js

@@ -81,67 +81,9 @@ Ext.define('school.view.basic.subject.List', {
         this.callParent(arguments);
     },
 
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function (field, value) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            conditionValue;
-        if (me.isContainsAny(xtypes, ['datefield'])) {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = from + ',' + to;
-        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
-            conditionValue = value.map ? value.map(function (v) {
-                return v.value;
-            }).join(',') : '';
-        } else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
-    },
-
-    getExtraParams: function(store, op, condition) {
-        var temp = {};
-
-        for(let x = 0; x < condition.length; x++) {
-            let c = condition[x];
-            if(c.field == 'keyword') {
-                temp.keyword = c.value;
-            }else if(c.field == 'date') {
-                temp.fromDate = new Date(c.value.split(',')[0]).getTime();
-                temp.endDate = new Date(c.value.split(',')[1]).getTime();
-            }else if(c.field == 'quoted') {
-                temp.quoted = c.value == 'all' ? null : c.value;
-            }else if(c.field == 'closed') {
-                // temp.endDate = c.value == 'all' ? null : (
-                //     c.value == '0' ? 
-                // );
-            }
-        }
-        let obj = {
-            pageNumber: store.exportNumber?store.exportNumber:op._page,
-            pageSize: store.exportPageSize?store.exportPageSize:store.pageSize
-        };
-        for(let k in temp) {
-            if(!!temp[k]) {
-                obj[k] = temp[k];
-            }
+    listeners: {
+        load: function() {
+            Ext.StoreMgr.get('store_subject').load();
         }
-        return obj;
-     },
+    }
 });

+ 0 - 38
frontend/pc-web/app/view/core/List.js

@@ -1,38 +0,0 @@
-Ext.define('school.view.core.List', {
-    extend: 'Ext.grid.Panel',
-    xtype: 'corelist',
-
-    cls: 'x-core-list x-infocardlist',
-
-    border: 1,
-
-    plugins: [{
-        ptype: 'menuclipboard'
-    }],
-
-    columns: [],
-    store: Ext.create('Ext.data.Store', {
-        fields: [],
-        data: [],
-    }),
-
-    bbar: {
-        items: [{
-            xtype: 'button',
-            tooltip: '刷新',
-            ui: 'header',
-            cls: 'refresh',
-            iconCls: 'x-fa fa-refresh',
-            listeners: {
-                click: function() {
-                    this.up('grid').store.reload();
-                }
-            }
-        }]
-    },
-
-    refresh: function() {
-        this.store.reload();
-    },
-
-});

+ 2 - 2
frontend/pc-web/app/view/core/form/field/ClassComboBox.js

@@ -3,8 +3,8 @@ Ext.define('school.view.core.form.field.ClassComboBox', {
     alias: 'widget.classcombo',
 
     fieldLabel: '班级',
-    displayField: 'name',
-    valueField: 'name',
+    displayField: 'clazz_name',
+    valueField: 'clazz_name',
     editable: true,
     minChars: 0,
     queryMode: 'local',

+ 2 - 2
frontend/pc-web/app/view/core/form/field/GradeComboBox.js

@@ -3,8 +3,8 @@ Ext.define('school.view.core.form.field.GradeComboBox', {
     alias: 'widget.gradecombo',
 
     fieldLabel: '年级',
-    displayField: 'name',
-    valueField: 'name',
+    displayField: 'grade_name',
+    valueField: 'grade_name',
     editable: true,
     minChars: 0,
     queryMode: 'local',

+ 0 - 23
frontend/pc-web/app/view/viewport/ViewportModel.js

@@ -61,29 +61,6 @@ Ext.define('school.view.viewport.ViewportModel', {
                 text: '全年级',
                 type: 'SCHOOL',
                 expanded: true
-            },
-            listeners: {
-                load: function(store, records) {
-                    let classData = [];
-                    let gradeData = records.map(function(r) {
-                        let d = r.data;
-                        let c = d.children.map(function(h) {
-                            return {
-                                value: h._id,
-                                name: h.text,
-                                gradeId: d._id,
-                                gradeName: d.text
-                            }
-                        });
-                        classData = classData.concat(c);
-                        return {
-                            value: d._id,
-                            name: d.text,
-                        }
-                    })
-                    Ext.StoreMgr.get('store_grade').loadData(gradeData);
-                    Ext.StoreMgr.get('store_class').loadData(classData);
-                }
             }
         }
     }