Browse Source

部分接口对接

zhuth 6 years ago
parent
commit
902b5b716b

+ 13 - 0
frontend/pc-web/app/model/Subject.js

@@ -0,0 +1,13 @@
+/**
+ * 学科
+ */
+Ext.define('school.model.Subject', {
+    extend: 'school.model.Base',
+    fields: [{
+        name: 'code', // 学科代码
+        type: 'string'
+    }, {
+        name: 'name', // 学科名称
+        type: 'string'
+    }]
+});

+ 37 - 0
frontend/pc-web/app/model/Timetable.js

@@ -0,0 +1,37 @@
+/**
+ * 课表model
+ */
+Ext.define('school.model.Timetable', {
+    extend: 'school.model.Base',
+    fields: [{
+        name: 'monday', type: 'string'
+    }, {
+        name: 'tuesday', type: 'string'
+    }, {
+        name: 'wednesday', type: 'string'
+    }, {
+        name: 'thursday', type: 'string'
+    }, {
+        name: 'friday', type: 'string'
+    }, {
+        name: 'saturday', type: 'string'
+    }, {
+        name: 'sunday', type: 'string'
+    }, {
+        name: 'period0', type: 'date'
+    }, {
+        name: 'periodText0', type: 'string',
+        convert: function(v, rec) {
+            return Ext.Date.format(rec.get('period0'), 'H:i');
+        },
+        depends: ['period0']
+    }, {
+        name: 'period1', type: 'date'
+    }, {
+        name: 'periodText1', type: 'string',
+        convert: function(v, rec) {
+            return Ext.Date.format(rec.get('period1'), 'H:i');
+        },
+        depends: ['period1']
+    }]
+});

+ 13 - 0
frontend/pc-web/app/store/Gender.js

@@ -0,0 +1,13 @@
+Ext.define('school.store.Gender', {
+    extend: 'Ext.data.Store',
+    alias: 'store.store_gender',
+
+    fields: ['name', 'value'],
+    data: [{
+        name: '男',
+        value: 1
+    }, {
+        name: '女',
+        value: 0
+    }]
+});

+ 20 - 0
frontend/pc-web/app/store/Subject.js

@@ -0,0 +1,20 @@
+/**
+ * 学科
+ */
+Ext.define('school.store.Subject', {
+    extend: 'Ext.data.Store',
+    alias: 'store.subject',
+
+    model: 'school.model.Subject',
+
+    data: [{
+        code: 'language',
+        name: '语文'
+    }, {
+        code: 'math',
+        name: '数学'
+    }, {
+        code: 'english',
+        name: '英语'
+    }]
+});

+ 58 - 2
frontend/pc-web/app/util/FormUtil.js

@@ -214,9 +214,9 @@ Ext.define('school.util.FormUtil', {
                     let index = form.detailCount;
                     let columns = item.columns,
                     cnames = columns.filter(function(c) {
-                        return c.dataIndex && !c.ignore;
+                        return (c.dataIndex && !c.ignore) || (c.getBindField && typeof c.getBindField == 'function' && !c.ignore);
                     }).map(function(c) {
-                        return c.dataIndex
+                        return c.getBindField ? c.getBindField(c) : c.dataIndex;
                     }),
                     defaultValueColumns = {};
 
@@ -275,7 +275,22 @@ Ext.define('school.util.FormUtil', {
                         }
                     });
 
+                    let tempCnames = [];
+                    for(let i = cnames.length-1; i >=0 ; i--) {
+                        if(Ext.isArray(cnames[i])) {
+                            cnames[i].map(function(c) {
+                                tempCnames.push(c);
+                            });
+                            cnames.splice(i, 1);
+                        }
+                    }
+
+                    tempCnames.map(function(t) {
+                        cnames.push(t);
+                    });
+
                     cnames.push(item.detnoColumn);
+                    console.log(cnames);
 
                     formModel.set('detail' + index + '.detailBindFields', cnames);
                     item.bind = {
@@ -338,6 +353,47 @@ Ext.define('school.util.FormUtil', {
                     form.setLoading(false);
                     school.util.BaseUtil.showErrorToast('读取单据数据错误: ' + e.message);
                 });
+            }else {
+                new Ext.Promise(function (resolve, reject) {
+                    form.setLoading(false);
+                    let viewModel = form.getViewModel();
+                    let detailGrids = form.query('detailGridField');
+    
+                    let o = {};
+    
+                    let formData = {main: {}};
+                    Ext.apply(formData.main, o);
+                    Ext.Array.each(detailGrids, function(grid, index) {
+                        let detno = 0;
+                        let detnoColumn = grid.detnoColumn;
+                        let datas = [];
+                        let emptyRows = grid.emptyRows;
+                        
+                        Ext.Array.each(new Array(emptyRows), function() {
+                            detno += 1;
+                            let data = {};
+                            data[detnoColumn] = detno;
+                            datas.push(data);
+                        })
+                        formData['detail' + index] = datas;
+                    });
+    
+                    return resolve(formData);
+                })
+                .then(function(formData) {
+                    let initData = form.initData;
+                    if(initData) {
+                        Ext.apply(initData.main, formData.main);
+                        form.setFormData(initData);
+                        form.fireEvent('load', form, initData);
+                    }else {
+                        form.initFormData(formData);
+                        form.fireEvent('load', form, formData);
+                    }
+                })
+                .catch(function(e) {
+                    school.util.BaseUtil.showErrorToast(e.message);
+                });
             }
         }
     }

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

@@ -25,7 +25,7 @@ Ext.define('school.view.basic.class.ClassInfo', {
         xtype: 'treepanel',
         reference: 'treelist',
         bind: {
-            store: '{grade}',
+            store: '{store_grade}',
             width: '{treeWidth}'
         },
         columns: [{

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

@@ -2,62 +2,127 @@
  * 学校信息
  */
 Ext.define('school.view.basic.school.SchoolInfo', {
-    extend: 'school.view.core.form.FormPanel',
+    // extend: 'school.view.core.form.FormPanel',
+    extend: 'Ext.form.Panel',
     xtype: 'basic-school-schoolinfo',
 
     // controller: 'purchase-purchase-formpanel',
     // viewModel: 'purchase-purchase-formpanel',
 
-    //字段属性
-    _title: '学校信息',
-    _idField: 'id',
-    _codeField: 'pu_code',
-    _statusField: 'pu_status',
-    _statusCodeField: 'pu_statuscode',
-    _auditmanField: 'pu_auditman',
-    _auditdateField: 'pu_auditdate',
-    _relationColumn: 'pd_puid',
-    _readUrl: '/api/purchase/purchase/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,
+    readUrl: 'http://10.1.80.35:9560/school/read',
+
+    layout: 'column',
+    autoScroll: true,
+    bodyPadding: '8 12 8 12',
+
+    fieldDefaults: {
+        margin: '0 0 10 0',
+        labelAlign: 'right',
+        labelWidth: 90,
+        columnWidth: 0.25,
+    },
     initComponent: function () {
+        var me = this;
         Ext.apply(this, {
-            defaultItems: [{
+            dockedItems: [{
+                xtype: 'toolbar',
+                dock: 'top',
+                items: ['->', {
+                    xtype: 'button',
+                    text: '更新',
+                    bind: {
+                        disabled: '{!formValid}'
+                    },
+                    handler: function() {
+                        me.onSave();
+                    }
+                }],
+            }],
+            items: [{
                 xtype: 'hidden',
-                name: 'id',
+                name: 'school_id',
+                bind: '{schoolId}',
                 fieldLabel: 'id'
             }, {
                 xtype: "textfield",
-                name: "name",
+                name: "school_name",
+                bind: '{schoolName}',
                 fieldLabel: "学校名称",
+                allowBlank: false,
                 columnWidth: 0.5
             }, {
                 xtype: 'textfield',
-                name: 'code',
-                fieldLabel: '学校代码',
-            }, {
-                xtype: 'textfield',
-                name: 'type',
-                fieldLabel: '学校类型'
+                name: 'school_status',
+                bind: '{schoolStatus}',
+                fieldLabel: '状态',
             }, {
                 xtype: "textfield",
-                name: "address",
+                name: "school_address",
+                bind: '{schoolAddress}',
                 fieldLabel: "学校地址",
+                allowBlank: true,
                 columnWidth: 1
             }, {
                 xtype: "textfield",
-                name: 'man',
-                fieldLabel: "联系人"
+                name: 'school_phone',
+                bind: '{schoolPhone}',
+                fieldLabel: '联系电话'
             }, {
-                xtype: "textfield",
-                name: 'phone',
-                fieldLabel: '联系电话',
+                xtype: 'textfield',
+                name: 'school_appid',
+                bind: '{schoolAppId}',
+                fieldLabel: '绑定微信号'
+            }, {
+                xtype: 'textfield',
+                name: 'school_remarks',
+                bind: '{schoolRemarks}',
+                fieldLabel: '备注',
+                columnWidth: 1
             }]
         });
         this.callParent();
-    }
+    },
+
+    onSave: function() {
+        let me = this,
+        values = me.getValues();
+
+        me.setLoading(true);
+        school.util.BaseUtil.request({
+            url: 'http://10.1.80.35:9560/school/save',
+            method: 'POST',
+            params: JSON.stringify(values)
+        })
+        .then(function() {
+            me.setLoading(false);
+            school.util.BaseUtil.showSuccessToast('资料更新成功');
+            me.clearDirty();
+        })
+        .catch(function(e) {
+            me.setLoading(false);
+            school.util.BaseUtil.showErrorToast('资料更新失败: ' + e.message);
+        });
+    },
+
+    clearDirty: function() {
+        let me = this;
+        let fields = me.getForm().getFields().items;
+        
+        Ext.Array.each(fields, function(f) {
+            f.resetOriginalValue ? f.resetOriginalValue() : '';
+        });
+    },
+
+    //overriders
+    isValid: function() {
+        let me = this;
+        let viewModel = me.getViewModel();
+        let formItems = me.getForm().getFields().items;
+        let valid = !Ext.Array.findBy(formItems, function(f) {
+            return !f.isValid();
+        });
+        viewModel.set('formValid', valid);
+        return valid;
+    },
+    
 });

+ 8 - 0
frontend/pc-web/app/view/basic/school/SchoolInfoModel.js

@@ -0,0 +1,8 @@
+Ext.define('school.view.basic.school.SchoolInfoModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.basic-school-schoolinfo',
+
+    data: {
+        formValid: true
+    }
+});

+ 34 - 6
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -14,7 +14,7 @@ Ext.define('school.view.basic.student.StudentDetail', {
     _auditmanField: null,
     _auditdateField: null,
     // _readUrl: 'http://10.1.80.35:8560/api/sale/saledown/read',
-    _readUrl: '/api/sale/saledown/read',
+    _readUrl: 'http://10.1.80.35:9560/student/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',
@@ -27,12 +27,32 @@ Ext.define('school.view.basic.student.StudentDetail', {
         Ext.apply(this, {
             defaultItems: [{
                 xtype: 'textfield',
-                name: 'number',
+                name: 'stu_number',
                 fieldLabel: '学号'
             }, {
                 xtype: 'textfield',
-                name: 'name',
+                name: 'stu_name',
                 fieldLabel: '姓名'
+            }, {
+                xtype: 'combobox',
+                name: 'stu_sex',
+                fieldLabel: '性别',
+                displayField: 'name',
+                valueField: 'value',
+                editable: false,
+                store: {
+                    type: 'store_gender'
+                },
+                minChars: 0,
+                queryMode: 'local'
+            }, {
+                xtype: 'datefield',
+                name: 'stu_enroll_date',
+                fieldLabel: '入学时间'
+            }, {
+                xtype: 'datefield',
+                name: 'stu_graduate_date',
+                fieldLabel: '毕业时间'
             }, {
                 xtype: 'textfield',
                 name: 'grade',
@@ -50,17 +70,25 @@ Ext.define('school.view.basic.student.StudentDetail', {
                 name: 'mz',
                 fieldLabel: '民族'
             }, {
-                xtype: 'textfield',
-                name: 'birth',
+                xtype: 'datefield',
+                name: 'stu_birthday',
                 fieldLabel: '出生日期'
+            }, {
+                xtype: 'numberfield',
+                name: 'stu_age',
+                fieldLabel: '年龄'
             }, {
                 xtype: "textfield",
-                name: "address",
+                name: "stu_address",
                 fieldLabel: "家庭住址"
             }, {
                 xtype: 'textfield',
                 name: 'teacher_zz',
                 fieldLabel: '政治面貌'
+            }, {
+                xtype: 'textfield',
+                name: 'stu_status',
+                fieldLabel: '状态'
             }, {
                 name: "parent",
                 xtype: "detailGridField",

+ 36 - 13
frontend/pc-web/app/view/basic/student/StudentList.js

@@ -5,7 +5,7 @@ Ext.define('school.view.basic.student.StudentList', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'basic-student-studentlist',
 
-    dataUrl: '/api/basic/student/list',
+    dataUrl: 'http://10.1.80.35:9560/student/list',
     initComponent: function() {
         var me = this;
         Ext.apply(this, {
@@ -66,23 +66,33 @@ Ext.define('school.view.basic.student.StudentList', {
                     text: '一键开通'
                 }, {
                     xtype: 'button',
-                    text: '添加'
+                    text: '添加',
+                    handler: function() {
+                        school.util.BaseUtil.openTab('basic-student-studentdetail', '新增学生信息', 'basic-student-studentdetail-add');
+                    }
                 }, {
                     xtype: 'button',
                     text: '删除'
                 }],
                 columns : [{
+                    text: 'id',
+                    dataIndex: 'stu_id',
+                    hidden: true
+                }, {
                     text: '学号',
-                    dataIndex: 'code',
+                    dataIndex: 'stu_number',
                     width: 150
                 }, {
                     text: '学生姓名',
-                    dataIndex: 'name',
+                    dataIndex: 'stu_number',
                     width: 120
                 }, {
                     text: '性别',
-                    dataIndex: 'gender',
-                    width: 120
+                    dataIndex: 'stu_sex',
+                    width: 120,
+                    renderer: function(v, m, r) {
+                        return v == 1 ? '男' : (v == 0 ? '女' : '未知');
+                    }
                 }, {
                     text: '年级',
                     dataIndex: 'grade'
@@ -91,20 +101,33 @@ Ext.define('school.view.basic.student.StudentList', {
                     dataIndex: 'class'
                 }, {
                     text: '出生日期',
-                    dataIndex: 'birth',
-                    width: 120
+                    dataIndex: 'stu_birthday',
+                    width: 120,
+                    xtype: 'datecolumn',
+                    format: 'Y-m-d'
                 }, {
                     text: '年龄',
-                    dataIndex: 'open'
+                    dataIndex: 'stu_age'
+                }, {
+                    text: '入学日期',
+                    dataIndex: 'stu_enroll_date',
+                    xtype: 'datecolumn',
+                    format: 'Y-m-d'
+                }, {
+                    text: '毕业日期',
+                    dataIndex: 'stu_graduate_date',
+                    xtype: 'datecolumn',
+                    format: 'Y-m-d'
                 }, {
                     text: '状态',
-                    dataIndex: 'status'
+                    dataIndex: 'stu_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')
-                        }); 
+                        let number = record.get('stu_number');
+                        school.util.BaseUtil.openTab('basic-student-studentdetail', '学生信息' + '(' + number + ')', 'basic-student-studentdetail'+record.get('stu_id'), {
+                            initId: record.get('stu_id')
+                        });
                     }
                 }
             },

+ 5 - 0
frontend/pc-web/app/view/core/form/FormPanel.js

@@ -24,6 +24,11 @@ Ext.define('school.view.core.form.FormPanel', {
 
     items: [],
 
+    invalidText: '表单校验有误,请检查后重试', // 校验未通过提示内容
+    dirtyAuditText: '表单数据有修改,是否先保存修改?', // 有修改时点击审核提示内容
+    noDirtySaveText: '表单数据无修改', // 无修改点击保存提示内容
+    dirtyCloseText: '表单数据有修改,确认要离开吗?', // 有修改时点击关闭提示内容
+
     initComponent: function () {
         let me = this;
         me.callParent(arguments);

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

@@ -27,7 +27,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
     showCount: true, // 显示合计栏
 
     emptyRows: 5,
-
+    defaultRecord: {}, // 新增行时默认数据
     allowDeselect: true,
 
     initComponent: function() {
@@ -223,7 +223,6 @@ Ext.define('school.view.core.form.field.DetailGridField', {
     },
 
     addDetail: function(v, d) {
-        d = d || {};
         var me = this;
         if(!me.editable) {
             return;
@@ -242,7 +241,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             }
         });
 
-        var data = d || {};
+        var data = d || Ext.clone(me.defaultRecord);
         data[detnoColumn] = v + 1;
         var r = store.insert(store.indexOf(selectedRecord) + 1, data);
 

+ 7 - 0
frontend/pc-web/app/view/core/grid/column/PeriodColumn.js

@@ -0,0 +1,7 @@
+/**
+ * 课程表-时间段列
+ */
+Ext.define('school.view.core.grid.column.PeriodColumn', {
+    extend: 'Ext.grid.column.Column',
+    xtype: 'periodcolumn'
+});

+ 28 - 0
frontend/pc-web/app/view/core/grid/column/SubjectColumn.js

@@ -0,0 +1,28 @@
+/**
+ * 课程表-学科列
+ */
+Ext.define('school.view.core.grid.column.SubjectColumn', {
+    extend: 'Ext.grid.column.Column',
+    xtype: 'subjectcolumn',
+
+    editor: {
+        xtype: 'combobox',
+        displayField: 'name',
+        valueField: 'code',
+        store: {
+            type: 'subject'
+        },
+        queryMode: 'local'
+    },
+    renderer: function(v, m , r) {
+        let store = m.column.getEditor().store;
+        let idx = store.find('code', v);
+
+        if(idx != -1) {
+            let subject = store.getAt(idx);
+            v = subject.get('name');
+        }
+
+        return v;
+    }
+});

+ 0 - 3
frontend/pc-web/app/view/core/tab/Panel.js

@@ -10,9 +10,6 @@ Ext.define('school.view.core.tab.Panel', {
         padding: '0 16 0 0'
     },
     closable: true,
-    tabConfig: {
-        maxWidth: 128
-    },
     
     listeners: {
         activate: 'onTabActivate',

+ 122 - 7
frontend/pc-web/app/view/interact/timetable/Detail.js

@@ -16,10 +16,16 @@ Ext.define('school.view.interact.timetable.Detail', {
     // _toSaleUrl: 'http://10.1.80.35:8560/api/sale/saledown/toSale',
     _toSaleUrl: '/api/sale/sss/toSale',
     initId: 0,
+    cls: 'timetable',
 
     codeInHeader: true,
 
+    START_TIME: Ext.Date.parse('08:00', 'H:i'), // 开始上课时间
+    END_TIME: Ext.Date.parse('22:00', 'H:i'), // 结束上课时间
+    MIN_WHILE: 10, // 一节课最小时间(分钟)
+
     initComponent: function () {
+        let me = this;
         Ext.apply(this, {
             defaultItems: [{
                 xtype: 'textfield',
@@ -65,34 +71,143 @@ Ext.define('school.view.interact.timetable.Detail', {
                 name: "timetable",
                 xtype: "detailGridField",
                 detnoColumn: 'no',
-                storeModel: 'school.model.basic.Student',
+                storeModel: 'school.model.Timetable',
                 deleteDetailUrl: '/api/sale/sale/deleteDetail',
                 allowEmpty: true,
                 showCount: false,
+                emptyRows: 10,
+                rowViewModel: {},
                 columns: [{
+                    text: '时间段',
+                    xtype: 'widgetcolumn',
+                    width: 200,
+                    padding: 0,
+                    tdCls: 'x-period-column',
+                    getBindField: function(c) {
+                        return ['period0', 'period1']
+                    },
+                    widget: {
+                        xtype: 'container',
+                        style: {
+                            textAlign: 'center'
+                        },
+                        items: [{
+                            xtype: 'button',
+                            text: '0:00',
+                            bind: {
+                                text: '{record.periodText0}',
+                            },
+                            style: {
+                                margin: '5px',
+                                height: '22px',
+                                width: '74px',
+                                padding: 0
+                            },
+                            handler: function(btn) {
+                                me.currentRecord = btn.ownerCt.$widgetRecord;
+                            },
+                            menu: {
+                                xtype: 'menu',
+                                plain: true,
+                                items: [{
+                                    xtype: 'timepicker',
+                                    maxHeight: 300,
+                                    increment: 5,
+                                    format: 'H:i',
+                                    minValue: Ext.Date.parse('08:00', 'H:i'),
+                                    maxValue: Ext.Date.parse('22:00', 'H:i'),
+                                    listeners: {
+                                        select: function(model, record, index, eOpts) {
+                                            me.onSelectPeriod0(this, this.up(), record);
+                                        },
+                                    }
+                                }]
+                            },
+                        }, {
+                            xtype: 'button',
+                            text: '0:00',
+                            bind: {
+                                text: '{record.periodText1}',
+                            },
+                            style: {
+                                margin: '5px',
+                                height: '22px',
+                                width: '74px',
+                                padding: 0
+                            },
+                            menu: {
+                                xtype: 'menu',
+                                plain: true,
+                                items: [{
+                                    xtype: 'timepicker',
+                                    maxHeight: 300,
+                                    increment: 10,
+                                    format: 'H:i',
+                                    minValue: Ext.Date.parse('08:00', 'H:i'),
+                                    maxValue: Ext.Date.parse('22:00', 'H:i'),
+                                    listeners: {
+                                        select: function(model, record, index, eOpts) {
+                                            me.onSelectPeriod1(this, this.up(), record);
+                                        },
+                                    }
+                                }],
+                                listeners: {
+                                    beforeshow: function(th, eOpts) {
+                                        me.currentRecord = th.ownerCmp.ownerCt.$widgetRecord;
+                                        let picker = th.down('timepicker');
+                                        let startDate = me.currentRecord.get('period0') || Ext.Date.parse('08:00', 'H:i');
+                                        let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_WHILE);
+                                        picker.setMinValue(minValue)
+                                    },
+                                }
+                            },
+                        }]
+                    }
+                }, {
                     text: '星期一',
-                    dataIndex: 'monday'
+                    dataIndex: 'monday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期二',
-                    dataIndex: 'tuesday'
+                    dataIndex: 'tuesday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期三',
                     dataIndex: 'wednesday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期四',
-                    dataIndex: 'thursday'
+                    dataIndex: 'thursday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期五',
-                    dataIndex: 'friday'
+                    dataIndex: 'friday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期六',
-                    dataIndex: 'saturday'
+                    dataIndex: 'saturday',
+                    xtype: 'subjectcolumn'
                 }, {
                     text: '星期日',
-                    dataIndex: 'sunday'
+                    dataIndex: 'sunday',
+                    xtype: 'subjectcolumn'
                 }]
             }],
         });
         this.callParent();
     },
+
+    onSelectPeriod0: function(picker, menu, record) {
+        let me = this;
+        me.currentRecord.set('period0', record.get('date'));
+        menu.setVisible(false);
+    },
+
+    onSelectPeriod1: function(picker, menu, record) {
+        let me = this;
+        me.currentRecord.set('period1', record.get('date'));
+        menu.setVisible(false);
+        let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('period0'), record.get('date'), Ext.Date.MINUTE));
+        me.CLASS_TIME = classTime;
+    }
 });

+ 17 - 0
frontend/pc-web/app/view/interact/timetable/Detail.scss

@@ -0,0 +1,17 @@
+.timetable {
+    .x-grid-cell.x-period-column {
+        &>div {
+            padding: 0;
+            &>div {
+                &>div>div {
+                    a.x-btn,a.x-btn-over,a.x-btn-pressed {
+                        background: #ffffff;
+                        span {
+                            color: #404040 !important;
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 4 - 1
frontend/pc-web/app/view/interact/timetable/List.js

@@ -5,6 +5,8 @@ Ext.define('school.view.interact.timetable.List', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'interact-timetable-list',
 
+    controller: 'interact-timetable-list',
+
     dataUrl: '/api/interact/timetable/list',
     initComponent: function() {
         var me = this;
@@ -55,7 +57,8 @@ Ext.define('school.view.interact.timetable.List', {
                     text: '上传课表'
                 }, {
                     xtype: 'button',
-                    text: '添加'
+                    text: '添加',
+                    handler: 'onAddClick'
                 }, {
                     xtype: 'button',
                     text: '删除'

+ 8 - 0
frontend/pc-web/app/view/interact/timetable/ListController.js

@@ -0,0 +1,8 @@
+Ext.define('school.view.interact.timetable.ListController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.interact-timetable-list',
+
+    onAddClick: function() {
+        school.util.BaseUtil.openTab('interact-timetable-detail', '新增课程表', 'interact-timetable-detail-add'); 
+    }
+});

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

@@ -16,7 +16,7 @@ Ext.define('school.view.main.Navigation', {
         var me = this;
         var view = new Ext.DataView({
             bind: {
-                store: '{navigationMenu}'
+                store: '{store_navigationMenu}'
             },
             tpl: new Ext.XTemplate('<ul class="x-navlist">',
                 '<tpl for=".">',

+ 39 - 0
frontend/pc-web/app/view/viewport/ViewportController.js

@@ -38,11 +38,50 @@ Ext.define('school.view.viewport.ViewportController', {
     },
 
     showAuth: function() {
+        var me = this;
+        //读取学校
+        school.util.BaseUtil.request({url:'http://10.1.80.35:9560/school/read/1'})
+        .then(function(res) {
+            if(res.success) {
+                let d = {
+                    schoolId: res.data.school_id,
+                    schoolName: res.data.school_name,
+                    schoolPhone: res.data.school_phone,
+                    schoolRemarks: res.data.school_remarks,
+                    schoolAppId: res.data.school_appid,
+                    schoolAddress: res.data.school_address,
+                    schoolStatus: res.data.school_status,
+                    schoolSecret: res.data.school_secret,
+                };
+                me.getViewModel().setData(d)
+            }
+        })
+        .catch(function(e) {
+            console.error(e);
+        });
         this.showView('main');
     },
 
     showMain: function() {
         var me = this;
+        //读取学校
+        school.util.BaseUtil.request({url:'http://10.1.80.35:9560/school/read/1'})
+        .then(function(res) {
+            if(res.success) {
+                debugger
+                // var list = res.data.list;
+                // if(list.length>0){
+                //     var d = {};
+                //     Ext.each(list, function(item, index){
+                //         d[item.code] = item.data;
+                //     });
+                //     me.getViewModel().setData(d)
+                // }
+            }
+        })
+        .catch(function(e) {
+            console.error(e);
+        });
         me.showView('main');
     },
 

+ 10 - 3
frontend/pc-web/app/view/viewport/ViewportModel.js

@@ -20,7 +20,7 @@ Ext.define('school.view.viewport.ViewportModel', {
     },
 
     stores: {
-        navigationMenu: {
+        store_navigationMenu: {
             autoLoad: true,
             fields: ['text', 'iconCls'],
             proxy: {
@@ -31,18 +31,25 @@ Ext.define('school.view.viewport.ViewportModel', {
                 }
             }
         },
-        grade: {
+        store_grade: {
             type: 'tree',
             // model: 'school.model.Grade',
             fields: [{
                 name: 'text'
             }],
+            proxy: {
+                type: 'ajax',
+                url: 'http://10.1.80.35:9560/grade/read/1',
+                reader: {
+                    type: 'json'
+                }
+            },
             root: {
                 text: '全年级',
                 type: 'school',
                 expanded: true
             },
-            data: [{
+            data1: [{
                 id: 'g1',
                 text: '一年级',
                 // grade_id: '1',