Parcourir la source

班级组织优化

zhuth il y a 6 ans
Parent
commit
0c3ca5f3eb

+ 2 - 1
frontend/pc-web/app/Application.js

@@ -15,7 +15,8 @@ Ext.define('school.Application', {
         // TODO: add global / shared stores here
         'school.store.Grade',
         'school.store.Class',
-        'school.store.Subject'
+        'school.store.Subject',
+        'school.store.GradeClass'
     ],
 
     defaultToken: 'main',

+ 47 - 0
frontend/pc-web/app/store/GradeClass.js

@@ -0,0 +1,47 @@
+/**
+ * 年级组织
+ */
+Ext.define('school.store.GradeClass', {
+    extend: 'Ext.data.TreeStore',
+    alias: 'store.store_gradeclass',
+
+    storeId: 'store_gradeclass',
+
+    fields: [{
+        name: 'text'
+    }],
+    root: {
+        text: '全年级',
+        type: 'SCHOOL',
+        expanded: false
+    },
+    autoLoad: false,
+    proxy: {
+        type: 'ajax',
+        // url: 'http://10.1.80.47:9560/grade/read',
+        url: '/api/school/grade/read',
+        reader: {
+            transform: {
+                fn: function(data) {
+                    let grades = [];
+                    if(!!data.data) {
+                        grades = data.data.children || [];
+                        grades.map(function(s) {
+                            s._id = s.id;
+                            s.id = 'grade-' + s.id;
+                            let classes = s.children;
+                            let d = classes.map(function(c) {
+                                c._id = c.id;
+                                c.id = 'class-' + c.id;
+                                return c;
+                            });
+                            return s;
+                        });
+                    }
+                    return grades;
+                },
+                scope: this
+            }
+        }
+    }
+});

+ 10 - 4
frontend/pc-web/app/view/basic/class/ClassInfo.js

@@ -18,6 +18,7 @@ Ext.define('school.view.basic.class.ClassInfo', {
 
     initComponent: function() {
         let me = this;
+        let store = Ext.StoreMgr.get('store_gradeclass');
         Ext.apply(me, {
             items: [{
                 region: 'west',
@@ -28,8 +29,8 @@ Ext.define('school.view.basic.class.ClassInfo', {
                 width: 250,
                 xtype: 'treepanel',
                 reference: 'treelist',
+                store: store,
                 bind: {
-                    store: '{store_gradeclass}',
                     width: '{treeWidth}'
                 },
                 // viewConfig: {
@@ -81,9 +82,14 @@ Ext.define('school.view.basic.class.ClassInfo', {
                     caller: 'GradeAndCLass',
                     pathKey: 'grade',
                     onSuccess: function() {
-                        let viewModel = me.getViewModel();
-        
-                        viewModel.get('store_gradeclass').load();
+                        let treePanel = me.down('treepanel');
+                        let listCard = me.down('listcard');
+                        let treeStore = treePanel.store;
+                        treeStore.load(function() {
+                            let rootNode = treeStore.getRootNode();
+                            rootNode.expand();
+                            listCard.showNode(rootNode);
+                        });
                     }
                 }, '->'],
                 listeners: {

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

@@ -4,13 +4,19 @@ Ext.define('school.view.basic.class.ClassInfoController', {
 
     onBeforeRender: function() {
         let me = this,
-        view = me.getView(),
-        viewModel = me.getViewModel();
+        refs = me.getReferences(),
+        treeList = refs.treelist,
+        listCard = refs.listcard,
+        treeStore = treeList.store;
 
         Ext.StoreMgr.get('store_grade').load();
         Ext.StoreMgr.get('store_class').load();
         Ext.StoreMgr.get('store_subject').load();
-        viewModel.get('store_gradeclass').load();
+        treeStore.load(function(records, operation, success) {
+            let rootNode = treeStore.getRootNode();
+            rootNode.expand();
+            listCard.showNode(rootNode);
+        });
     },
 
     onItemMouseEnter: function(tree, record, item, index, e, eOpts)  {

+ 1 - 2
frontend/pc-web/app/view/basic/class/ListCard.js

@@ -34,8 +34,7 @@ Ext.define('school.view.basic.class.ListCard', {
     singleSelect: true,
     itemSelector: '.item',
     listeners: {
-        itemclick: 'cardItemClick',
-        beforeRender: 'onBeforeRender'
+        itemclick: 'cardItemClick'
     },
 
     showNode: function(node) {

+ 0 - 9
frontend/pc-web/app/view/basic/class/ListCardController.js

@@ -2,15 +2,6 @@ Ext.define('school.view.basic.class.ListCardController', {
     extend: 'Ext.app.ViewController',
     alias: 'controller.listcard',
 
-    onBeforeRender: function() {
-        var me = this,
-        view = me.view,
-        viewModel = me.getViewModel(),
-        grade = viewModel.get('store_gradeclass');
-
-        view.showNode(grade.getRootNode());
-    },
-
     cardItemClick: function(view, record, navItem, index, e, eOpts) {
         var me = this;
         var view = me.getView();

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

@@ -25,46 +25,5 @@ Ext.define('school.view.viewport.ViewportModel', {
                 }
             }
         },
-        store_gradeclass: {
-            type: 'tree',
-            autoLoad: false,
-            // model: 'school.model.Grade',
-            fields: [{
-                name: 'text'
-            }],
-            proxy: {
-                type: 'ajax',
-                // url: 'http://10.1.80.47:9560/grade/read',
-                url: '/api/school/grade/read',
-                reader: {
-                    transform: {
-                        fn: function(data) {
-                            let grades = [];
-                            if(!!data.data) {
-                                grades = data.data.children || [];
-                                grades.map(function(s) {
-                                    s._id = s.id;
-                                    s.id = 'grade-' + s.id;
-                                    let classes = s.children;
-                                    let d = classes.map(function(c) {
-                                        c._id = c.id;
-                                        c.id = 'class-' + c.id;
-                                        return c;
-                                    });
-                                    return s;
-                                });
-                            }
-                            return grades;
-                        },
-                        scope: this
-                    }
-                }
-            },
-            root: {
-                text: '全年级',
-                type: 'SCHOOL',
-                expanded: true
-            }
-        }
     }
 });