浏览代码

学生信息/权限设置

zhuth 7 年之前
父节点
当前提交
e423874524

+ 10 - 0
frontend/pc-web/app/model/access/Role.js

@@ -0,0 +1,10 @@
+/**
+ * 角色
+ */
+Ext.define('school.model.access.Role', {
+    extend: 'school.model.Base',
+    fields: [{
+        name: 'name',
+        type: 'int'
+    }],
+});

+ 92 - 0
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -0,0 +1,92 @@
+Ext.define('school.view.basic.student.StudentDetail', {
+    extend: 'school.view.core.form.FormPanel',
+    xtype: 'basic-student-studentdetail',
+
+    // controller: 'sale-b2b-purchasedetail',
+    // viewModel: 'sale-b2b-purchasedetail',
+
+    //字段属性
+    _title: '学生信息',
+    _idField: 'student_id',
+    _codeField: 'student_number',
+    _statusField: null,
+    _statusCodeField: null,
+    _auditmanField: null,
+    _auditdateField: null,
+    // _readUrl: 'http://10.1.80.35:8560/api/sale/saledown/read',
+    _readUrl: '/api/sale/saledown/read',
+    // _saveUrl: 'http://10.1.80.35:8560/api/sale/saledown/update',
+    _saveUrl: '/api/sale/saledown/update',
+    // _toSaleUrl: 'http://10.1.80.35:8560/api/sale/saledown/toSale',
+    _toSaleUrl: '/api/sale/saledown/toSale',
+    initId: 0,
+
+    codeInHeader: true,
+
+    initComponent: function () {
+        Ext.apply(this, {
+            defaultItems: [{
+                xtype: 'textfield',
+                name: 'number',
+                fieldLabel: '学号'
+            }, {
+                xtype: 'textfield',
+                name: 'name',
+                fieldLabel: '姓名'
+            }, {
+                xtype: 'textfield',
+                name: 'grade',
+                fieldLabel: '年级'
+            }, {
+                xtype: 'textfield',
+                name: 'class',
+                fieldLabel: '班级'
+            }, {
+                xtype: "textfield",
+                name: "jg",
+                fieldLabel: "籍贯"
+            }, {
+                xtype: 'textfield',
+                name: 'mz',
+                fieldLabel: '民族'
+            }, {
+                xtype: 'textfield',
+                name: 'birth',
+                fieldLabel: '出生日期'
+            }, {
+                xtype: "textfield",
+                name: "address",
+                fieldLabel: "家庭住址"
+            }, {
+                xtype: 'textfield',
+                name: 'teacher_zz',
+                fieldLabel: '政治面貌'
+            }, {
+                name: "parent",
+                xtype: "detailGridField",
+                detnoColumn: 'sd_detno',
+                storeModel: 'school.model.basic.Student',
+                deleteDetailUrl: '/api/sale/sale/deleteDetail',
+                allowEmpty: true,
+                showCount: false,
+                columns: [{
+                    text: '家长姓名',
+                    dataIndex: 'parent_name',
+                    editor: {
+                        xtype: 'textfield'
+                    }
+                }, {
+                    text: '联系电话',
+                    dataIndex: 'parent_phone',
+                    editor: {
+                        xtype: 'numberfield'
+                    }
+                }, {
+                    text: '关系',
+                    dataIndex: 'parent_rel',
+                }]
+            }],
+        });
+        this.callParent();
+    },
+});

+ 170 - 0
frontend/pc-web/app/view/basic/student/StudentList.js

@@ -0,0 +1,170 @@
+/**
+ * 学生信息
+ */
+Ext.define('school.view.basic.student.StudentList', {
+    extend: 'school.view.core.base.BasePanel',
+    xtype: 'basic-student-studentlist',
+
+    dataUrl: '/api/basic/student/list',
+    initComponent: function() {
+        var me = this;
+        Ext.apply(this, {
+            searchField: [{
+                xtype: 'textfield',
+                name: 'code',
+                fieldLabel:'学号'
+            }, {
+                xtype: 'textfield',
+                name: 'name',
+                fieldLabel: '姓名'
+            }, {
+                xtype: 'textfield',
+                name: 'parent',
+                fieldLabel: '家长'
+            }],
+        
+            caller: null,
+            _formXtype: null,
+            _title: null,
+            _deleteUrl: null,
+            _batchOpenUrl: null,
+            _batchCloseUrl: null,
+            _batchDeleteUrl: null,
+        
+            gridConfig: {
+                idField: null,
+                codeField: null,
+                statusCodeField: null,
+                dataUrl: me.dataUrl,
+                caller: null,
+                rootProperty: 'data.list',
+                totalProperty: 'data.total',
+                actionColumn: [],
+                selModel: {
+                    checkOnly:true,
+                    type:'checkboxmodel',
+                    mode : "MULTI" ,
+                    ignoreRightMouseSelection : false
+                },
+                hiddenTools: false,
+                toolBtns: [{
+                    xtype: 'button',
+                    text: '下载模板'
+                }, {
+                    xtype: 'button',
+                    text: '上传数据'
+                }, {
+                    xtype: 'button',
+                    text: '一键开通'
+                }, {
+                    xtype: 'button',
+                    text: '添加'
+                }, {
+                    xtype: 'button',
+                    text: '删除'
+                }],
+                columns : [{
+                    text: '学号',
+                    dataIndex: 'code',
+                    width: 150
+                }, {
+                    text: '学生姓名',
+                    dataIndex: 'name',
+                    width: 120
+                }, {
+                    text: '性别',
+                    dataIndex: 'gender',
+                    width: 120
+                }, {
+                    text: '年级',
+                    dataIndex: 'grade'
+                }, {
+                    text: '班级',
+                    dataIndex: 'class'
+                }, {
+                    text: '出生日期',
+                    dataIndex: 'birth',
+                    width: 120
+                }, {
+                    text: '年龄',
+                    dataIndex: 'open'
+                }, {
+                    text: '状态',
+                    dataIndex: 'status'
+                }],
+                listeners: {
+                    itemclick: function(view, record, item, index, e, eOpts) {
+                        school.util.BaseUtil.openTab('basic-student-studentdetail', '教职工信息', 'basic-student-studentdetail'+record.get('id'), {
+                            initId: record.get('id')
+                        }); 
+                    }
+                }
+            },
+        });
+        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;
+     },
+});

+ 3 - 11
frontend/pc-web/app/view/main/Navigation.js

@@ -15,17 +15,9 @@ Ext.define('school.view.main.Navigation', {
     initComponent: function () {
         var me = this;
         var view = new Ext.DataView({
-            store: Ext.create('Ext.data.Store', {
-                autoLoad: true,
-                fields: ['text', 'iconCls'],
-                proxy: {
-                    type: 'ajax',
-                    url: 'resources/json/navigation.json',
-                    reader: {
-                        type: 'json'
-                    }
-                }
-            }),
+            bind: {
+                store: '{navigationMenu}'
+            },
             tpl: new Ext.XTemplate('<ul class="x-navlist">',
                 '<tpl for=".">',
                 '<li class="x-navitem">',

+ 67 - 0
frontend/pc-web/app/view/setting/access/AccessList.js

@@ -0,0 +1,67 @@
+Ext.define('school.view.setting.access.AccessList', {
+    extend: 'Ext.tree.Panel',
+    xtype: 'setting-access-accesslist',
+
+    reserveScrollbar: true,
+    useArrows: true,
+    rootVisible: false,
+    multiSelect: true,
+    singleExpand: false,
+
+    columns: [{
+        xtype: 'treecolumn',
+        text: '菜单',
+        dataIndex: 'text',
+        width: 160
+    }, {
+        text: '显示',
+        dataIndex: 'enable',
+        xtype: 'actioncolumn',
+        menuDisabled: true,
+        align: 'center',
+        handler: 'onToggleEnable',
+        getClass: 'getEnableCls'
+    }],
+
+    initComponent: function() {
+        var me = this;
+        Ext.apply(me, {
+            store: me.getStore()
+        });
+        me.callParent(arguments);
+    },
+
+    getStore: function() {
+        var me = this,
+        parent = me.up('setting-access-roleaccess'),
+        viewModel = parent.getViewModel(),
+        navStore = viewModel.get('navigationMenu'),
+        store, data = [];
+
+        navStore.each(function(r) {
+            var items = r.get('items');
+            var children = items.map(function(item) {
+                return {
+                    text: item.text,
+                    leaf: true
+                }
+            });
+            data.push({
+                expanded: true,
+                text: r.data.text,
+                children: children
+            });
+        });
+
+        store = Ext.create('Ext.data.TreeStore', {
+            fields: ['text', 'enable'],
+            root: {
+                text: 'root',
+                expanded: true
+            },
+            data: data,
+        });
+
+        return store;
+    }
+});

+ 18 - 0
frontend/pc-web/app/view/setting/access/RoleAccess.js

@@ -0,0 +1,18 @@
+Ext.define('school.view.setting.access.RoleAccess', {
+    extend: 'Ext.panel.Panel',
+    xtype: 'setting-access-roleaccess',
+
+    controller: 'setting-access-roleaccess',
+    viewModel: 'setting-access-roleaccess',
+
+    layout: 'border',
+
+    items: [{
+        xtype: 'setting-access-roletree',
+        region: 'west',
+        width: 250
+    }, {
+        xtype: 'setting-access-accesslist',
+        region: 'center'
+    }]
+});

+ 13 - 0
frontend/pc-web/app/view/setting/access/RoleAccessController.js

@@ -0,0 +1,13 @@
+Ext.define('school.view.setting.access.RoleAccessController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.setting-access-roleaccess',
+
+    getEnableCls: function(v, m, r) {
+        let checked = r.data.enable;
+        return 'x-grid-checkcolumn' + (checked ? ' x-grid-checkcolumn-checked' : '');
+    },
+
+    onToggleEnable: function() {
+
+    }
+});

+ 46 - 0
frontend/pc-web/app/view/setting/access/RoleAccessModel.js

@@ -0,0 +1,46 @@
+Ext.define('school.view.setting.access.RoleAccessModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.setting-access-roleaccess',
+
+    stores: {
+        roleTree: {
+            type: 'tree',
+            fields: [{
+                name: 'text'
+            }],
+            root: {
+                text: '所有角色',
+                expanded: true
+            },
+            data: [{
+                id: 'role1',
+                text: '角色1',
+                leaf: true
+            }, {
+                id: 'role2',
+                text: '角色2',
+                leaf: true
+            }, {
+                id: 'role3',
+                text: '角色3',
+                leaf: true
+            }, {
+                id: 'role4',
+                text: '角色4',
+                leaf: true
+            }, {
+                id: 'role5',
+                text: '角色5',
+                leaf: true
+            }, {
+                id: 'role6',
+                text: '角色6',
+                leaf: true
+            }, {
+                id: 'role7',
+                text: '角色7',
+                leaf: true
+            }]
+        }
+    }
+});

+ 15 - 0
frontend/pc-web/app/view/setting/access/RoleTree.js

@@ -0,0 +1,15 @@
+Ext.define('school.view.setting.access.RoleTree', {
+    extend: 'Ext.tree.Panel',
+    xtype: 'setting-access-roletree',
+
+    columns: [{
+        xtype: 'treecolumn',
+        dataIndex: 'text',
+        flex: 1
+    }],
+
+    bind: {
+        store: '{roleTree}'
+    }
+
+});

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

@@ -20,6 +20,17 @@ Ext.define('school.view.viewport.ViewportModel', {
     },
 
     stores: {
+        navigationMenu: {
+            autoLoad: true,
+            fields: ['text', 'iconCls'],
+            proxy: {
+                type: 'ajax',
+                url: 'resources/json/navigation.json',
+                reader: {
+                    type: 'json'
+                }
+            }
+        },
         grade: {
             type: 'tree',
             // model: 'school.model.Grade',

+ 6 - 2
frontend/pc-web/resources/json/navigation.json

@@ -13,14 +13,18 @@
         "id": "basic-staff-stafflist",
         "text": "教职工信息",
         "view": "basic-staff-stafflist"
+    }, {
+        "id": "basic-student-studentlist",
+        "text": "学生信息",
+        "view": "basic-student-studentlist"
     }]
 }, {
     "text": "系统设置",
     "iconCls": "x-sa sa-setting",
     "items": [{
-        "id": "role-access",
+        "id": "setting-access-roleaccess",
         "text": "角色授权",
-        "view": "role-access"
+        "view": "setting-access-roleaccess"
     }, {
         "id": "device-param",
         "text": "设备参数",