Selaa lähdekoodia

班级组织新增修改接口对接

zhuth 6 vuotta sitten
vanhempi
commit
b272f6710d

+ 3 - 2
frontend/pc-web/app/util/BaseUtil.js

@@ -191,9 +191,10 @@ Ext.define('school.util.BaseUtil', {
                         }catch(e) {
                             res = response.responseJson || {};
                         }
-                        console.error('ajax request failure: ', res);
                         res.message = res.message || '未知错误';
-                        throw new Error(res.message);
+                        console.error('ajax request failure: ', res);
+                        // throw new Error(res.message);
+                        return reject(res);
                     }
                 });
             })

+ 0 - 1
frontend/pc-web/app/util/FormUtil.js

@@ -290,7 +290,6 @@ Ext.define('school.util.FormUtil', {
                     });
 
                     cnames.push(item.detnoColumn);
-                    console.log(cnames);
 
                     formModel.set('detail' + index + '.detailBindFields', cnames);
                     item.bind = {

+ 24 - 3
frontend/pc-web/app/view/basic/class/ClassInfo.js

@@ -28,6 +28,13 @@ Ext.define('school.view.basic.class.ClassInfo', {
             store: '{store_grade}',
             width: '{treeWidth}'
         },
+        // viewConfig: {
+        //     plugins: {
+        //         treeviewdragdrop: {
+        //             containerScroll: true
+        //         }
+        //     }
+        // },
         columns: [{
             xtype: 'treecolumn',
             text: 'Name',
@@ -46,6 +53,14 @@ Ext.define('school.view.basic.class.ClassInfo', {
                 tooltip: '新增',
                 handler: 'onTreeAddClick'
             }]
+        }, {
+            xtype: 'actioncolumn',
+            width: 30,
+            items: [{
+                iconCls: 'action-icon x-hidden x-fa fa-pencil',
+                tooltip: '编辑',
+                handler: 'onTreeEditClick'
+            }]
         }, {
             xtype: 'actioncolumn',
             width: 30,
@@ -56,9 +71,11 @@ Ext.define('school.view.basic.class.ClassInfo', {
             }]
         }],
         listeners: {
-            itemclick: 'onItemclick',
+            itemclick: 'onItemClick',
             itemmouseenter: 'onItemMouseEnter',
-            itemmouseleave: 'onItemMouseLeave'
+            itemmouseleave: 'onItemMouseLeave',
+            beforedrop: 'onItemBeforeDrop',
+            drop: 'onItemDrop',
         }
     }, {
         region: 'center',
@@ -94,5 +111,9 @@ Ext.define('school.view.basic.class.ClassInfo', {
                 hidden: true
             }]
         }]
-    }]
+    }],
+    
+    listeners: {
+        afterrender: 'onAfterRender'
+    }
 });

+ 210 - 41
frontend/pc-web/app/view/basic/class/ClassInfoController.js

@@ -2,32 +2,42 @@ Ext.define('school.view.basic.class.ClassInfoController', {
     extend: 'Ext.app.ViewController',
     alias: 'controller.basic-class-classinfo',
 
-    onItemMouseEnter: function(tree, record, item, index, e, eOpts)  {
-        var icons = item.getElementsByClassName('action-icon');
-        if(record.data.leaf) {
-            icons[1].classList.remove('x-hidden');
-            return;
-        }
+    onAfterRender: function() {
+        let me = this,
+        view = me.getView(),
+        viewModel = me.getViewModel();
 
-        if(record.data.id == 'root') {
-            icons[0].classList.remove('x-hidden');
-            return;
-        }
+        viewModel.get('store_grade').load();
+    },
 
-        icons[0].classList.remove('x-hidden');
-        icons[1].classList.remove('x-hidden');
+    onItemMouseEnter: function(tree, record, item, index, e, eOpts)  {
+        let icons = item.getElementsByClassName('action-icon');
+        let addIcon = icons[0],
+        editIcon = icons[1],
+        deleteIcon = icons[2];
+        if(record.data.type == 'SCHOOL') {
+            addIcon.classList.remove('x-hidden');
+        }else if(record.data.type == 'GRADE') {
+            addIcon.classList.remove('x-hidden');
+            editIcon.classList.remove('x-hidden');
+            deleteIcon.classList.remove('x-hidden');
+        }else if(record.data.type == 'CLASS') {
+            // addIcon.classList.remove('x-hidden');
+            editIcon.classList.remove('x-hidden');
+            deleteIcon.classList.remove('x-hidden');
+        } 
     },
 
     onItemMouseLeave: function(tree, record, item, index, e, eOpts) {
-        var icons = item.getElementsByClassName('action-icon');
+        let icons = item.getElementsByClassName('action-icon');
 
-        for(var x = 0; x < icons.length; x++) {
+        for(let x = 0; x < icons.length; x++) {
             icons[x].classList.add('x-hidden');
         }
     },
 
-    onItemclick: function(tree, record, item, index, e, eOpts) {
-        var me = this,
+    onItemClick: function(tree, record, item, index, e, eOpts) {
+        let me = this,
         refs = me.getReferences(),
         listCard = refs.listcard;
 
@@ -35,8 +45,24 @@ Ext.define('school.view.basic.class.ClassInfoController', {
 
     },
 
+    onItemBeforeDrop: function(node, data, overModel, dropPosition, dropHandlers) {
+        let cdata = data.records[0].data;
+        let tdata = overModel.data;
+        dropHandlers.wait = true;
+
+        if(cdata.type == tdata.type && dropPosition != 'append') {
+            dropHandlers.processDrop();
+        }else {
+            dropHandlers.cancelDrop();
+        }
+    },
+
+    onItemDrop: function() {
+
+    },
+
     onToggleTree: function() {
-        var me = this,
+        let me = this,
         viewModel = me.getViewModel(),
         refs = me.getReferences(),
         treeList = refs.treelist,
@@ -59,7 +85,7 @@ Ext.define('school.view.basic.class.ClassInfoController', {
     },
 
     onTreeUp: function() {
-        var me = this,
+        let me = this,
         viewModel = me.getViewModel(),
         refs = me.getReferences(),
         treeList = refs.treelist,
@@ -78,49 +104,77 @@ Ext.define('school.view.basic.class.ClassInfoController', {
     },
 
     onTreeAddClick: function(tree, row, col, item, e, eOpts, tr) {
-        var me = this,
+        let me = this,
         store = tree.store,
         record = store.getAt(row);
 
-        me.showTreeAddWin(record.data);
+        me.showTreeAddWin(record.data, record);
+
+    },
+
+    onTreeEditClick: function(tree, row, col, item, e, eOpts, tr) {
+        let me = this,
+        store = tree.store,
+        record = store.getAt(row);
 
+        me.showTreeEditWin(record.data, true);
     },
 
     onTreeDeleteClick: function(tree, row, col, item, e, eOpts, tr) {
-        var me = this,
+        let me = this,
         refs = me.getReferences(),
         listCard = refs.listcard,
         treeList = refs.treelist,
         store = treeList.store,
         record = store.getAt(row),
         rootNode = treeList.getRootNode(),
+        _id = record.data._id,
         id = record.data.id,
+        type = record.data.type,
         currentNode = rootNode.findChild('id', id, true),
         parentNode = currentNode.parentNode;
 
-        treeList.setSelection(parentNode);
-        currentNode.remove();
-        
-        listCard.showNode(parentNode);
+        let url;
+
+        if(type == 'GRADE') {
+            // url = 'http://10.1.80.47:9560/grade/delete'
+            url = '/api/school/grade/delete'
+        }else {
+            // url = 'http://10.1.80.47:9560/grade/deleteClass'
+            url = '/api/school/grade/deleteClass'
+        }
+
+        school.util.BaseUtil.request({
+            url: url + '/' +  _id,
+            method: 'POST'
+        }).then(function(res) {
+            treeList.setSelection(parentNode);
+            currentNode.remove();
+            listCard.showNode(parentNode);
+        }).catch(function(e) {
+            school.util.BaseUtil.showErrorToast(e.message);
+        });
     },
 
-    showTreeAddWin: function(data) {
-        var me = this,
+    showTreeAddWin: function(data, record) {
+        let me = this,
         view = me.getView(),
         refs = me.getReferences(),
         treeList = refs.treelist,
         listCard = refs.listcard,
         win = refs.treeaddwin,
         id = data.id,
-        type = data.type;
+        _id = data._id,
+        type = data.type,
+        childCount = record.childNodes.length;
 
-        var title = type == 'SCHOOL' ? '新增年级' : '新增班级';
-        var sumType = type == 'SCHOOL' ? 'GRADE' : 'CLASS';
+        let title = type == 'SCHOOL' ? '新增年级' : '新增班级';
+        let sumType = type == 'SCHOOL' ? 'GRADE' : 'CLASS';
         if(!win) {
             win = Ext.create('Ext.window.Window', {
                 width: 300,
                 height: 180,
-                renderTo: Ext.getBody(),
+                constrain: true,
                 references: 'treeaddwin',
                 modal: true,
                 bodyPadding: 10,
@@ -142,26 +196,141 @@ Ext.define('school.view.basic.class.ClassInfoController', {
                         text: '确定',
                         formBind: true,
                         handler: function() {
-                            var form = this.up('form');
-                            var text = form.getValues().text;
-                            var rootNode = treeList.getRootNode();
-                            var currentNode;
-                            var childNode = {
+                            let form = this.up('form');
+                            let text = form.getValues().text;
+                            let rootNode = treeList.getRootNode();
+                            let currentNode;
+                            let childNode = {
                                 text: text,
                                 type: sumType
                             };
-                            if(id == 'root') {
+                            let url, params, headers;
+                            if(type == 'SCHOOL') {
                                 currentNode = rootNode;
                                 childNode.leaf = false;
                                 childNode.children = [];
+                                // url = 'http://10.1.80.47:9560/grade/save';
+                                url = '/api/school/grade/save';
+                                params = {
+                                    grade: text,
+                                    no: childCount
+                                };
+                                headers = {
+                                    "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
+                                }
                             }else {
                                 currentNode = rootNode.findChild('id', id, true);
                                 childNode.leaf = true;
+                                // url = 'http://10.1.80.47:9560/grade/addClass';
+                                url = '/api/school/grade/addClass';
+                                params = JSON.stringify({
+                                    grade_id: _id,
+                                    clazz_name: text,
+                                    no: childCount
+                                });
                             }
-                            
-                            currentNode.appendChild(childNode);
-                            listCard.showNode(currentNode);
-                            win.close();
+
+                            view.setLoading(true);
+                            school.util.BaseUtil.request({
+                                url: url,
+                                method: 'POST',
+                                params: params,
+                                headers: headers
+                            }).then(function(res) {
+                                view.setLoading(false);
+                                childNode._id = res.data.id;
+                                currentNode.appendChild(childNode);
+                                listCard.showNode(currentNode);
+                                win.close();
+                            }).catch(function(e) {
+                                view.setLoading(false);
+                                school.util.BaseUtil.showErrorToast(e.message);
+                            });
+                        }
+                    }]
+                }]
+            });
+            view.add(win);
+        }
+        win.setTitle(title);
+        win.show();
+    },
+
+    showTreeEditWin: function(data) {
+        let me = this,
+        view = me.getView(),
+        refs = me.getReferences(),
+        treeList = refs.treelist,
+        listCard = refs.listcard,
+        win = refs.treeaddwin,
+        _id = data._id,
+        id = data.id,
+        type = data.type;
+
+        let title = type == 'GRADE' ? '修改年级' : '修改班级';
+        if(!win) {
+            win = Ext.create('Ext.window.Window', {
+                width: 300,
+                height: 180,
+                references: 'treeaddwin',
+                constrain: true,
+                modal: true,
+                bodyPadding: 10,
+                layout: 'fit',
+                items: [{
+                    xtype: 'form',
+                    layout: 'column',
+                    defaults: {
+                        columnWidth: 1
+                    },
+                    items: [{
+                        xtype: 'textfield',
+                        name: 'text',
+                        emptyText: '名称',
+                        value: data.text,
+                        allowBlank: false
+                    }],
+                    buttonAlign: 'center',
+                    buttons: [{
+                        text: '确定',
+                        formBind: true,
+                        handler: function() {
+                            let form = this.up('form');
+                            let text = form.getValues().text;
+                            let rootNode = treeList.getRootNode();
+                            let currentNode = rootNode.findChild('id', id, true);
+                            let url, params, headers;
+                            if(type == 'GRADE') {
+                                // url = 'http://10.1.80.47:9560/grade/update';
+                                url = '/api/school/grade/update';
+                                params = JSON.stringify({
+                                    grade_id: _id,
+                                    grade_name: text
+                                });
+                            }else {
+                                // url = 'http://10.1.80.47:9560/grade/updateClass';
+                                url = '/api/school/grade/updateClass';
+                                params = JSON.stringify({
+                                    clazz_id: _id,
+                                    clazz_name: text
+                                });
+                            }
+
+                            view.setLoading(true);
+                            school.util.BaseUtil.request({
+                                url: url,
+                                method: 'POST',
+                                params: params,
+                                headers: headers
+                            }).then(function(res) {
+                                view.setLoading(false);
+                                currentNode.set('text', text);
+                                currentNode.commit();
+                                win.close();
+                            }).catch(function(e) {
+                                view.setLoading(false);
+                                school.util.BaseUtil.showErrorToast(e.message);
+                            });
                         }
                     }]
                 }]

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

@@ -39,7 +39,7 @@ Ext.define('school.view.basic.class.ListCard', {
     },
 
     showNode: function(node) {
-        var me = this,
+        let me = this,
         classInfo = me.up('basic-class-classinfo'),
         viewModel = classInfo.getViewModel(),
         currentlist = viewModel.get('currentlist'),

+ 1 - 1
frontend/pc-web/app/view/basic/school/SchoolInfo.js

@@ -91,7 +91,7 @@ Ext.define('school.view.basic.school.SchoolInfo', {
         me.setLoading(true);
         school.util.BaseUtil.request({
             // url: 'http://10.1.80.35:9560/school/save',
-            url: '/school/save',
+            url: '/api/school/school/save',
             method: 'POST',
             params: JSON.stringify(values)
         })

+ 2 - 1
frontend/pc-web/app/view/viewport/ViewportModel.js

@@ -34,13 +34,14 @@ Ext.define('school.view.viewport.ViewportModel', {
             }],
             proxy: {
                 type: 'ajax',
-                // url: 'http://10.1.80.35:9520/grade/read/1',
+                // url: 'http://10.1.80.47:9560/grade/read/1',
                 url: '/api/school/grade/read/1',
                 reader: {
                     transform: {
                         fn: function(data) {
                             let schools = data.data.children;
                             schools.map(function(s) {
+                                s._id = s.id;
                                 s.id = 'school-' + s.id;
                                 let classes = s.children;
                                 classes.map(function(c) {

BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.eot


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
frontend/pc-web/packages/font-school/resources/fonts/iconfont.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 9 - 0
frontend/pc-web/packages/font-school/resources/fonts/iconfont.svg


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.ttf


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff2


+ 12 - 8
frontend/pc-web/packages/font-school/sass/etc/icons.scss

@@ -1,15 +1,19 @@
-.font-school {
-  font-family: "font-school" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
 .ss-nav-interaction:before {
   content: "\e905";
 }
 
+.ss-move:before {
+  content: "\e908";
+}
+
+.ss-down:before {
+  content: "\e906";
+}
+
+.ss-up:before {
+  content: "\e907";
+}
+
 .ss-nav-setting:before {
   content: "\e904";
 }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 2
frontend/pc-web/packages/font-school/sass/src/all.scss


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä