Просмотр исходного кода

Merge branch 'dev' of ssh://10.10.100.21/source/smartschool-platform into dev

guq 7 лет назад
Родитель
Сommit
d5e1053d09
46 измененных файлов с 430 добавлено и 384 удалено
  1. 5 0
      applications/school/school-server/pom.xml
  2. 12 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/StudentServiceImpl.java
  3. 19 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/TeacherServiceImpl.java
  4. 6 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysStudentMapper.java
  5. 6 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysTeacherMapper.java
  6. 1 1
      applications/school/school-server/src/main/resources/mapper/NotifyMapper.xml
  7. 4 0
      applications/school/school-server/src/main/resources/mapper/SysStudentMapper.xml
  8. 3 0
      applications/school/school-server/src/main/resources/mapper/SysTeacherMapper.xml
  9. 0 1
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java
  10. 6 0
      base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java
  11. 11 1
      base-servers/auth/auth-server/src/main/java/com/usoftchina/smartschool/auth/controller/AuthController.java
  12. 6 0
      frontend/pc-web/app/model/Class.js
  13. 11 2
      frontend/pc-web/app/store/Class.js
  14. 3 0
      frontend/pc-web/app/store/Ethnicity.js
  15. 10 2
      frontend/pc-web/app/store/Grade.js
  16. 3 52
      frontend/pc-web/app/store/Subject.js
  17. 8 2
      frontend/pc-web/app/view/Interaction/access/List.js
  18. 8 2
      frontend/pc-web/app/view/Interaction/homework/List.js
  19. 7 3
      frontend/pc-web/app/view/Interaction/homework/Release.js
  20. 8 2
      frontend/pc-web/app/view/Interaction/mailbox/List.js
  21. 39 22
      frontend/pc-web/app/view/Interaction/score/Detail.js
  22. 17 0
      frontend/pc-web/app/view/Interaction/score/DetailController.js
  23. 13 0
      frontend/pc-web/app/view/Interaction/score/DetailModel.js
  24. 106 74
      frontend/pc-web/app/view/Interaction/score/List.js
  25. 5 3
      frontend/pc-web/app/view/Interaction/timetable/Detail.js
  26. 7 65
      frontend/pc-web/app/view/Interaction/timetable/List.js
  27. 4 1
      frontend/pc-web/app/view/basic/class/ClassDetailController.js
  28. 1 1
      frontend/pc-web/app/view/basic/class/ClassInfo.js
  29. 4 1
      frontend/pc-web/app/view/basic/class/ClassInfoController.js
  30. 1 1
      frontend/pc-web/app/view/basic/staff/StaffDetail.js
  31. 14 1
      frontend/pc-web/app/view/basic/staff/StaffDetailController.js
  32. 1 1
      frontend/pc-web/app/view/basic/staff/StaffList.js
  33. 11 7
      frontend/pc-web/app/view/basic/student/StudentDetail.js
  34. 40 0
      frontend/pc-web/app/view/basic/student/StudentDetailModel.js
  35. 8 4
      frontend/pc-web/app/view/basic/student/StudentList.js
  36. 4 62
      frontend/pc-web/app/view/basic/subject/List.js
  37. 0 38
      frontend/pc-web/app/view/core/List.js
  38. 8 0
      frontend/pc-web/app/view/core/base/GridPanel.js
  39. 1 1
      frontend/pc-web/app/view/core/button/import/Window.js
  40. 2 2
      frontend/pc-web/app/view/core/form/field/ClassComboBox.js
  41. 2 2
      frontend/pc-web/app/view/core/form/field/GradeComboBox.js
  42. 2 1
      frontend/pc-web/app/view/viewport/ViewportController.js
  43. 1 24
      frontend/pc-web/app/view/viewport/ViewportModel.js
  44. BIN
      frontend/pc-web/resources/images/auth-background.jpg
  45. BIN
      frontend/pc-web/resources/images/标题.png
  46. 2 2
      frontend/wechat-web/src/configs/regexp.config.js

+ 5 - 0
applications/school/school-server/pom.xml

@@ -118,6 +118,11 @@
         <artifactId>auth-dto</artifactId>
         <version>1.0.0-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>com.usoftchina.smartschool</groupId>
+        <artifactId>account-api</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+      </dependency>
     </dependencies>
 
     <build>

+ 12 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/StudentServiceImpl.java

@@ -3,6 +3,8 @@ package com.usoftchina.smartschool.school.basic.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.smartschool.account.api.AccountApi;
+import com.usoftchina.smartschool.account.dto.AccountRegDTO;
 import com.usoftchina.smartschool.context.BaseContextHolder;
 import com.usoftchina.smartschool.exception.BizException;
 import com.usoftchina.smartschool.page.PageRequest;
@@ -34,9 +36,10 @@ public class StudentServiceImpl implements StudentService{
 
     @Autowired
     private SysStudentMapper sysStudentMapper;
-
     @Autowired
     private DataImportMapper dataImportMapper;
+    @Autowired
+    private AccountApi accountApi;
 
     @Override
     public PageInfo<SysStudent> getListData(PageRequest page, ListReqDTO listReqDTO) {
@@ -114,6 +117,14 @@ public class StudentServiceImpl implements StudentService{
                 sysStudentMapper.insertparent(item);
                 pr_id = item.getParent_id();
                 sysStudentMapper.insertrelation(id, pr_id, item.getPs_relation());
+                //自动创建家长账户
+                if (!StringUtils.isEmpty(item.getPa_phone())) {
+                    AccountRegDTO accountRegDTO = new AccountRegDTO();
+                    accountRegDTO.setUser_phone(item.getPa_phone());
+                    accountRegDTO.setUser_pass("111111");
+                    accountRegDTO.setRoleId(sysStudentMapper.selectRoleId());
+                    accountApi.register(accountRegDTO);
+                }
             }
         }
         //更新从表

+ 19 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/TeacherServiceImpl.java

@@ -3,6 +3,8 @@ package com.usoftchina.smartschool.school.basic.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.smartschool.account.api.AccountApi;
+import com.usoftchina.smartschool.account.dto.AccountRegDTO;
 import com.usoftchina.smartschool.context.BaseContextHolder;
 import com.usoftchina.smartschool.exception.BizException;
 import com.usoftchina.smartschool.page.PageRequest;
@@ -33,9 +35,10 @@ public class TeacherServiceImpl implements TeacherService{
 
     @Autowired
     private SysTeacherMapper sysTeacherMapper;
-
     @Autowired
     private DataImportMapper dataImportMapper;
+    @Autowired
+    private AccountApi accountApi;
 
     @Override
     public PageInfo<SysTeacher> getListData(PageRequest page, ListReqDTO listReqDTO) {
@@ -75,7 +78,9 @@ public class TeacherServiceImpl implements TeacherService{
         //新增教师
         if (StringUtils.isEmpty(formdata.getTeacher_id()) || "0".equals(formdata.getTeacher_id().toString())) {
             sysTeacherMapper.insertSelective(formdata);
-
+            if (!StringUtils.isEmpty(formdata.getTeacher_phone())) {
+                createAccount(formdata);
+            }
         } else {
             //更新教师
             sysTeacherMapper.updateByPrimaryKeySelective(formdata);
@@ -83,6 +88,18 @@ public class TeacherServiceImpl implements TeacherService{
         return new DocBaseDTO(formdata.getTeacher_id(), null, null);
     }
 
+    /**
+     * 新建账户信息
+     */
+    private void createAccount(SysTeacher sysTeacher) {
+        AccountRegDTO accountRegDTO = new AccountRegDTO();
+        accountRegDTO.setUser_phone(sysTeacher.getTeacher_phone());
+        accountRegDTO.setUser_pass("111111");
+        Long roleId = sysTeacherMapper.selectRoleId();
+        accountRegDTO.setRoleId(roleId);
+        accountApi.register(accountRegDTO);
+    }
+
     @Override
     @Transactional
     public void saveToFormal(Integer id, boolean update) {

+ 6 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysStudentMapper.java

@@ -46,4 +46,10 @@ public interface SysStudentMapper {
     void deleteRelationById(Long id);
 
     void deleteTeacher(Long id);
+
+    /**
+     * 查询家长角色
+     * @return
+     */
+    Long selectRoleId();
 }

+ 6 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysTeacherMapper.java

@@ -32,4 +32,10 @@ public interface SysTeacherMapper {
     void deleteRelation(Long id);
 
     List<SysTeacher> selectByTeacher(@Param("condition") String condition, @Param("school_id") Long schoolId);
+
+    /**
+     * 查询角色为"教师"的roleId
+     * @return
+     */
+    Long selectRoleId();
 }

+ 1 - 1
applications/school/school-server/src/main/resources/mapper/NotifyMapper.xml

@@ -83,7 +83,7 @@
             <if test="creator != null">
                 creator,
             </if>
-            <if test="creator != null">
+            <if test="accessory != null">
                 accessory,
             </if>
         </trim>

+ 4 - 0
applications/school/school-server/src/main/resources/mapper/SysStudentMapper.xml

@@ -436,4 +436,8 @@
     delete from sys_teacher_clazz
     where teacher_clazz_id = #{teacher_clazz_id,jdbcType=BIGINT}
   </delete>
+
+  <select id="selectRoleId" resultType="long">
+    SELECT ROLE_ID FROM SYS_ROLE WHERE ROLE_NAME = '家长'
+  </select>
 </mapper>

+ 3 - 0
applications/school/school-server/src/main/resources/mapper/SysTeacherMapper.xml

@@ -372,4 +372,7 @@ where sys_teacher_clazz.teacher_id=#{id}
       </if>
     </where>
   </select>
+  <select id="selectRoleId" resultType="long">
+    SELECT ROLE_ID FROM SYS_ROLE WHERE ROLE_NAME = '教师'
+  </select>
 </mapper>

+ 0 - 1
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java

@@ -38,7 +38,6 @@ public class WxPushServiceImpl implements WxPushService{
                 String content=httpRequest.body();
                 System.err.println("getWxAccessTokenContent======"+content);
                 String token= JSON.parseObject(content).getString("access_token");
-                //System.err.println("getWxAccessTokenToken====="+ token);
                 HttpRequest hRequest=  HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token)
                         .header("Content-Type", "application/json")
                         .send(json.getBytes());

+ 6 - 0
base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java

@@ -1,9 +1,11 @@
 package com.usoftchina.smartschool.account.api;
 
 import com.usoftchina.smartschool.account.dto.AccountDTO;
+import com.usoftchina.smartschool.account.dto.AccountRegDTO;
 import com.usoftchina.smartschool.base.Result;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 /**
@@ -21,4 +23,8 @@ public interface AccountApi {
 
     @GetMapping("/account/getUsername")
     Result<String> getUsername(@RequestParam(value = "schoolId") Long schoolId, @RequestParam(value = "userId") Long userId);
+
+    @GetMapping("/account/register")
+    Result<String> register(@RequestBody AccountRegDTO accountRegDTO);
+
 }

+ 11 - 1
base-servers/auth/auth-server/src/main/java/com/usoftchina/smartschool/auth/controller/AuthController.java

@@ -8,6 +8,8 @@ import com.usoftchina.smartschool.auth.jwt.JwtHelper;
 import com.usoftchina.smartschool.auth.jwt.JwtInfo;
 import com.usoftchina.smartschool.auth.jwt.JwtToken;
 import com.usoftchina.smartschool.base.Result;
+import com.usoftchina.smartschool.exception.BizException;
+import com.usoftchina.smartschool.exception.ExceptionCode;
 import com.usoftchina.smartschool.utils.BeanMapper;
 import com.usoftchina.smartschool.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,7 +50,15 @@ public class AuthController {
         Result<AccountDTO> result = accountApi.checkPwd(username, password);
         if (result.isSuccess()){
             AccountDTO accountDTO = result.getData();
-            Long school_id = accountDTO.getRoleMaps().stream().filter(roleDTO -> "教师".equals(roleDTO.getRole_name())).findFirst().get().getSchool_id();
+            Long school_id = -1L;
+            try {
+                school_id = accountDTO.getRoleMaps().stream().filter(roleDTO -> "教师".equals(roleDTO.getRole_name())).findFirst().get().getSchool_id();
+                if (school_id == -1){
+                    throw new BizException(ExceptionCode.USER_NOT_EXIST);
+                }
+            }catch (Exception e){
+                throw new BizException(ExceptionCode.USER_NOT_EXIST);
+            }
             accountDTO.setSchool_id(school_id);
             String realName = accountApi.getUsername(school_id, accountDTO.getId()).getData();
             accountDTO.setUsername(realName);

+ 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'
+        }
+    },
 });

+ 3 - 0
frontend/pc-web/app/store/Ethnicity.js

@@ -1,3 +1,6 @@
+/**
+ * 民族
+ */
 Ext.define('school.store.Ethnicity', {
     extend: 'Ext.data.ArrayStore',
     alias: 'store.store_ethnicity',

+ 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 - 52
frontend/pc-web/app/store/Subject.js

@@ -7,62 +7,13 @@ 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: '思想品德'
-    // }]
+    }
 });

+ 8 - 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'));
                     }
                 }
             }],
@@ -108,5 +108,11 @@ Ext.define('school.view.interaction.access.List', {
             },
         });
         this.callParent(arguments);
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
     }
 });

+ 8 - 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'));
                     }
                 }
             }, {
@@ -185,5 +185,11 @@ Ext.define('school.view.interaction.homework.List', {
             },
         });
         this.callParent(arguments);
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
     }
 });

+ 7 - 3
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
@@ -102,7 +102,6 @@ Ext.define('school.view.interaction.homework.Release', {
                 fieldLabel: '发布时间',
                 readOnly: true,
                 format: 'Y-m-d H:i:s',
-                defaultValue: new Date(),
                 readOnly: true
             }, {
                 xtype: "textfield",
@@ -148,5 +147,10 @@ Ext.define('school.view.interaction.homework.Release', {
             fileField.value = data.main.accessory
             fileField.renderMF(fileField);
         }
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
     }
 });

+ 8 - 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'));
                     }
                 }
             }, {
@@ -180,5 +180,11 @@ Ext.define('school.view.interaction.mailbox.List', {
             },
         });
         this.callParent(arguments);
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
     }
 });

+ 39 - 22
frontend/pc-web/app/view/Interaction/score/Detail.js

@@ -2,43 +2,48 @@ Ext.define('school.view.interaction.score.Detail', {
     extend: 'school.view.core.form.FormPanel',
     xtype: 'interaction-score-detail',
 
-    _title: '成绩录入',
-    _idField: 'student_id',
-    _codeField: 'student_number',
+    controller: 'interaction-score-detail',
+    viewModel: 'interaction-score-detail',
 
-    // _readUrl: 'http://10.1.80.47:9560/score/read',
-    _readUrl: '/api/school/score/read',
-    // _saveUrl: 'http://10.1.80.35:8560/api/sale/saledown/update',
-    _saveUrl: '/api/sale/sss/update',
-    // _toSaleUrl: 'http://10.1.80.35:8560/api/sale/saledown/toSale',
-    _toSaleUrl: '/api/sale/sss/toSale',
-    initId: 0,
+    _title: '学生成绩',
+    _idField: 'si_id',
+    _codeField: null,
 
+    // _readUrl: 'http://10.1.80.47:9520/api/school/score/read',
+    _readUrl: '/api/school/score/read',
+    // _saveUrl: 'http://10.1.80.47:9520/api/school/score/save',
+    // _saveUrl: '/api/sale/sss/update',
+    // _deleteUrl: 'http://10.1.80.47:9520/api/school/score/delete',
+    _deleteUrl: '/api/school/score/delete',
+    
     codeInHeader: true,
 
     initComponent: function () {
         let me = this;
         Ext.apply(this, {
             defaultItems: [{
+                xtype: 'hidden',
+                name: 'si_id',
+            }, {
                 xtype: 'textfield',
-                name: 'number',
+                name: 'si_examtitle',
                 fieldLabel: '考试标题'
             }, {
                 xtype: 'textfield',
-                name: 'name',
+                name: 'si_examdate',
                 fieldLabel: '考试时间'
             }, {
                 xtype: 'textfield',
-                name: 'grade',
+                name: 'si_examscope',
                 fieldLabel: '考试范围'
             }, {
-                xtype: 'textfield',
-                name: 'class',
-                fieldLabel: '总分'
+                xtype: 'gradecombo',
+                name: 'si_grade',
+                fieldLabel: '年级'
             }, {
-                xtype: "textfield",
-                name: "jg",
-                fieldLabel: "及格分"
+                xtype: 'classcombo',
+                name: 'si_class',
+                fieldLabel: '班级'
             }, {
                 name: "score",
                 xtype: "detailGridField",
@@ -51,16 +56,28 @@ Ext.define('school.view.interaction.score.Detail', {
                 rowViewModel: {},
                 columns: [{
                     text: '学生编号',
-                    dataIndex: 'number'
+                    dataIndex: 'sd_id'
                 }, {
                     text: '姓名',
-                    dataIndex: 'name'
+                    dataIndex: 'sd_stu'
+                }, {
+                    text: '科目',
+                    dataIndex: 'sd_subject'
                 }, {
                     text: '成绩',
-                    dataIndex: 'score'
+                    dataIndex: 'sd_score'
+                }, {
+                    text: '备注',
+                    dataIndex: 'sd_remark'
                 }]
             }],
         });
         this.callParent();
+        this.setEditable(false);
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
     }
 });

+ 17 - 0
frontend/pc-web/app/view/Interaction/score/DetailController.js

@@ -0,0 +1,17 @@
+Ext.define('school.view.interaction.score.DetailController', {
+    extend: 'school.view.core.form.FormPanelController',
+    alias: 'controller.interaction-score-detail',
+
+    onAfterSave: function(localJson) {
+        var form = this.getView();
+        var id = localJson.data.id;
+        var code = localJson.data.code;
+        form.initId = id;
+        school.util.FormUtil.loadData(form).then(function(data) {
+            var newId = form.xtype + '-' + id;
+            var newTitle = form._title + '(' + data.main.si_id + ')';
+    
+            school.util.BaseUtil.refreshTabTitle(newId, newTitle);
+        });
+    },
+});

+ 13 - 0
frontend/pc-web/app/view/Interaction/score/DetailModel.js

@@ -0,0 +1,13 @@
+Ext.define('school.view.interaction.score.DetailModel', {
+    extend: 'school.view.core.form.FormPanelModel',
+    alias: 'viewmodel.interaction-score-detail',
+
+    data: {
+        showAddBtn: false,
+        showRefreshBtn: true,
+        showCopyBtn: false,
+        showSaveBtn: false,
+        showDeleteBtn: true,
+        showLogBtn: false
+    },
+});

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

@@ -7,37 +7,36 @@ Ext.define('school.view.interaction.score.List', {
 
     controller: 'interaction-score-list',
 
-    // dataUrl: 'http://10.1.80.47:9560/score/list',
+    // dataUrl: 'http://10.1.80.47:9520/api/school/score/list',
     dataUrl: '/api/school/score/list',
+    caller: 'ScorePublish',
+    pathKey: 'score',
+
     initComponent: function () {
         var me = this;
         Ext.apply(this, {
             searchField: [{
-                xtype: 'textfield',
-                name: 'term',
-                fieldLabel: '学期'
-            }, {
                 xtype: 'gradecombo',
-                name: 'grade',
+                name: 'si_grade',
                 fieldLabel: '年级',
                 listeners: {
                     select: function (combo, record, eOpts) {
-                        combo.up('form').getForm().findField('class').setValue(null);
+                        combo.up('form').getForm().findField('si_class').setValue(null);
                     }
                 }
             }, {
                 xtype: 'classcombo',
-                name: 'class',
+                name: 'si_class',
                 fieldLabel: '班级',
                 listeners: {
                     expand: function (combo, eOpts) {
                         combo.store.clearFilter();
 
-                        var gradeCombo = combo.up('form').getForm().findField('grade');
+                        var gradeCombo = combo.up('form').getForm().findField('si_grade');
                         var gradeName = gradeCombo.getValue();
 
                         var filter = new Ext.util.Filter({
-                            property: 'gradeName',
+                            property: 'clazz_grade',
                             value: gradeName
                         });
 
@@ -46,27 +45,25 @@ 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('si_grade').setValue(record.get('clazz_grade'));
                     }
                 }
+            }, {
+                xtype: 'textfield',
+                name: 'keyword',
+                fieldLabel: '学生',
+                getCondition: function (value) {
+                    return ' (sd_stu like\'%' + value + '%\') ';
+                }
             }],
 
-            caller: null,
-            _formXtype: null,
-            _title: null,
-            _deleteUrl: null,
-            _batchOpenUrl: null,
-            _batchCloseUrl: null,
-            _batchDeleteUrl: null,
-
             gridConfig: {
                 addTitle: '成绩录入',
                 addXtype: 'interaction-score-detail',
-                idField: 'score_id',
-                codeField: 'score_num',
-                detailField: null,
+                idField: 'si_id',
+                codeField: 'si_id',
+                detailField: '',
                 dataUrl: me.dataUrl,
-                caller: null,
                 rootProperty: 'data.list',
                 totalProperty: 'data.total',
                 actionColumn: [],
@@ -82,88 +79,117 @@ Ext.define('school.view.interaction.score.List', {
                     text: '新增',
                     handler: 'onAddClick'
                 }, {
-                    xtype: 'button',
-                    text: '导入'
+                    xtype: 'importbutton',
+                    text: '导入',
+                    belong: me,
+                    caller: me.caller,
+                    pathKey: me.pathKey,
+                    onSuccess: function () {
+                        //刷新界面
+                        var g = me.down('grid');
+                        g.store.loadPage(g.store.currentPage);
+                    }
                 }, {
                     xtype: 'button',
-                    text: '删除'
+                    text: '删除',
+                    handler: function() {
+                        let grid = this.up('grid'),
+                        selectedRecords = grid.getSelection();
+                        let data;
+
+                        data = selectedRecords.map(function(r) {
+                            return {
+                                id: r.get('si_id')
+                            };
+                        });
+
+                        if(data.length == 0) {
+                            school.util.BaseUtil.showErrorToast('请先勾选需要删除的记录');
+                            return;
+                        }
+
+                        grid.setLoading(true);
+                        school.util.BaseUtil.request({
+                            // url: 'http://10.1.80.47:9520/api/school/score/batchDelete',
+                            url: '/api/school/score/batchDelete',
+                            method: 'POST',
+                            params: JSON.stringify({
+                                baseDTOs: data
+                            })
+                        }).then(function(res) {
+                            grid.setLoading(false);
+                            school.util.BaseUtil.showSuccessToast('成功删除' + data.length + '条记录');
+                            grid.store.loadPage(grid.store.currentPage);
+                        }).catch(function(e) {
+                            grid.setLoading(false);
+                            school.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
+                        });
+                    }
                 }],
                 columns: [{
                     text: 'ID',
-                    dataIndex: 'score_id',
+                    dataIndex: 'si_id',
                     hidden: true
                 }, {
                     text: '考试标题',
-                    dataIndex: 'score_name'
+                    dataIndex: 'si_examtitle'
                 }, {
                     text: '考试时间',
-                    dataIndex: 'score_date',
+                    dataIndex: 'si_examdate',
                     width: 150
                 }, {
                     text: '考试范围',
-                    dataIndex: 'score_scope'
+                    dataIndex: 'si_examscope'
                 }, {
                     text: '年级',
-                    dataIndex: ''
+                    dataIndex: 'si_grade'
                 }, {
                     text: '班级',
-                    dataIndex: ''
+                    dataIndex: 'si_class'
+                }],
+                supColumns: [{
+                //     text: '学生编号',
+                //     dataIndex: ''
+                // }, {
+                    text: '学生姓名',
+                    dataIndex: 'sd_stu'
+                }, {
+                    text: '科目',
+                    dataIndex: 'sd_subject'
+                }, {
+                    text: '成绩',
+                    dataIndex: 'sd_score'
                 }]
             },
         });
         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;
+    listeners: {
+        load: function(store, grid, panel, condition) {
+            let flag = false,
+            columns = panel.gridConfig.columns;
+            Ext.Array.each(condition, function(c) {
+                if(c.type == 'condition') {
+                    flag = true;
+                }
+            });
+            if(flag) {
+                columns = columns.concat(panel.gridConfig.supColumns);
+            }
 
-            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;
+            grid.reconfigure(store, columns);
+            grid.applyScrollable(true)
         }
-
-        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' ? 
-                // );
+            if (c.type == 'condition') {
+                temp.mode = 'DETAIL';
             }
         }
         let obj = {
@@ -176,5 +202,11 @@ Ext.define('school.view.interaction.score.List', {
             }
         }
         return obj;
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
     }
 });

+ 5 - 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'));
                     }
                 }
             }, {
@@ -267,6 +267,8 @@ Ext.define('school.view.interaction.timetable.Detail', {
     },
 
     refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
         Ext.StoreMgr.get('store_subject').load();
     }
 });

+ 7 - 65
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'));
                     }
                 }
             }, {
@@ -168,67 +168,9 @@ 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;
-     },
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
+    }
 });

+ 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);
         });
     }

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

@@ -138,6 +138,6 @@ Ext.define('school.view.basic.class.ClassInfo', {
     },
     
     listeners: {
-        afterrender: 'onAfterRender'
+        beforerender: 'onBeforeRender'
     }
 });

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

@@ -2,7 +2,7 @@ Ext.define('school.view.basic.class.ClassInfoController', {
     extend: 'Ext.app.ViewController',
     alias: 'controller.basic-class-classinfo',
 
-    onAfterRender: function() {
+    onBeforeRender: function() {
         let me = this,
         view = me.getView(),
         viewModel = me.getViewModel();
@@ -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);

+ 1 - 1
frontend/pc-web/app/view/basic/staff/StaffDetail.js

@@ -14,7 +14,7 @@ Ext.define('school.view.basic.staff.StaffDetail', {
     _auditdateField: null,
     // _readUrl: 'http://10.1.80.47:9560/teacher/read',
     _readUrl: '/api/school/teacher/read',
-    // _saveUrl: 'http://10.1.80.47:9560/teacher/save',
+    // _saveUrl: 'http://10.1.80.180:9520/api/school/teacher/save',
     _saveUrl: '/api/school/teacher/save',
     // _deleteUrl: 'http://10.1.80.47:9560/teacher/delete',
     _deleteUrl: '/api/school/teacher/delete',

+ 14 - 1
frontend/pc-web/app/view/basic/staff/StaffDetailController.js

@@ -4,5 +4,18 @@ Ext.define('school.view.basic.staff.StaffDetailController', {
 
     getMySaveParams: function(params) {
         return params.main;
-    }
+    },
+
+    onAfterSave: function(localJson) {
+        var form = this.getView();
+        var id = localJson.data.id;
+        var code = localJson.data.code;
+        form.initId = id;
+        school.util.FormUtil.loadData(form).then(function(data) {
+            var newId = form.xtype + '-' + data.main.id;
+            var newTitle = form._title + '(' + data.main.teacher_number + ')';
+    
+            school.util.BaseUtil.refreshTabTitle(newId, newTitle);
+        });
+    },
 });

+ 1 - 1
frontend/pc-web/app/view/basic/staff/StaffList.js

@@ -51,7 +51,7 @@ Ext.define('school.view.basic.staff.StaffList', {
                     xtype: 'importbutton',
                     text: '导入',
                     belong: me,
-                    caller: 'ScorePublish',
+                    caller: me.caller,
                     pathKey: me.pathKey,
                     onSuccess: function () {
                         //刷新界面

+ 11 - 7
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -3,7 +3,7 @@ Ext.define('school.view.basic.student.StudentDetail', {
     xtype: 'basic-student-studentdetail',
 
     controller: 'basic-student-studentdetail',
-    // viewModel: 'sale-b2b-purchasedetail',
+    viewModel: 'basic-student-studentdetail',
 
     //字段属性
     _title: '学生信息',
@@ -84,7 +84,8 @@ Ext.define('school.view.basic.student.StudentDetail', {
             }, {
                 xtype: 'numberfield',
                 name: 'stu_age',
-                fieldLabel: '年龄'
+                fieldLabel: '年龄',
+                readOnly: true
             }, {
                 xtype: "textfield",
                 name: "stu_address",
@@ -99,7 +100,6 @@ Ext.define('school.view.basic.student.StudentDetail', {
             }, {
                 xtype: 'gradecombo',
                 name: 'stu_grade',
-                valueField: 'name',
                 fieldLabel: '年级',
                 listeners: {
                     select: function (combo, record, eOpts) {
@@ -118,7 +118,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 +126,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 +135,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
@@ -190,4 +189,9 @@ Ext.define('school.view.basic.student.StudentDetail', {
         });
         this.callParent();
     },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+    }
 });

+ 40 - 0
frontend/pc-web/app/view/basic/student/StudentDetailModel.js

@@ -0,0 +1,40 @@
+Ext.define('school.view.basic.student.StudentDetailModel', {
+    extend: 'school.view.core.form.FormPanelModel',
+    alias: 'viewmodel.basic-student-studentdetail',
+
+    formulas: {
+        stu_birthday_change: {
+            bind: '{stu_birthday}',
+            get: function(v) {
+                var val = new Date(v);
+                var now = new Date();
+                var nYear = now.getFullYear();
+                var nMonth = now.getMonth() + 1;
+                var nDay = now.getDate();
+
+                var vYear = val.getFullYear();
+                var vMonth = val.getMonth() + 1;
+                var vDay = val.getDate();
+                
+                var age = 0;
+
+                if(nYear < vYear) {
+                    age = nYear - vYear;
+                }else {
+                    age = nYear - vYear;
+                    if(nMonth < vMonth) {
+                        age--;
+                    }else if(nMonth == vMonth){
+                        if(nDay < vDay) {
+                            age--;
+                        }
+                    }
+                }
+
+                
+                this.set('stu_age', age);
+                return v;
+            }
+        }
+    }
+});

+ 8 - 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'));
                     }
                 }
             }, {
@@ -184,5 +182,11 @@ Ext.define('school.view.basic.student.StudentList', {
             },
         });
         this.callParent(arguments);
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_grade').load();
+        Ext.StoreMgr.get('store_class').load();
+        this.items.items[0].store.load();
     }
 });

+ 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();
-    },
-
-});

+ 8 - 0
frontend/pc-web/app/view/core/base/GridPanel.js

@@ -81,6 +81,14 @@ Ext.define('school.view.core.base.GridPanel', {
                         var obj = basePanel.getExtraParams(store, op, condition);
                         var defaultObj = basePanel.getDefaultExtraParams(store, op, condition);
                         Ext.apply(store.proxy.extraParams, obj, defaultObj);
+                    },
+                    load: function(store, records, successful, operation, eOpts) {
+                        var basePanel = me.up('core-base-basepanel');
+                        var condition = basePanel.getConditions();
+                        if (Ext.isEmpty(condition)) {
+                            condition = "";
+                        }
+                        basePanel.fireEvent('load', store, me, basePanel, condition);
                     }
                 }
             });

+ 1 - 1
frontend/pc-web/app/view/core/button/import/Window.js

@@ -84,7 +84,7 @@ Ext.define('school.view.core.button.import.Window', {
             if (id) {
                 form.setLoading(true);
                 Ext.Ajax.request({
-                    // url: 'http://10.1.80.47:9560/' + win.pathKey + '/saveToFormal', //这里是填写需要跨域访问的URL
+                    // url: 'http://10.1.80.47:9520/api/school/' + win.pathKey + '/saveToFormal', //这里是填写需要跨域访问的URL
                     url: '/api/school/' + win.pathKey + '/saveToFormal', //这里是填写需要跨域访问的URL
                     method: 'post',
                     headers: {

+ 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',

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

@@ -45,10 +45,11 @@ Ext.define('school.view.viewport.ViewportController', {
 
     showMain: function() {
         var me = this;
+        var schoolId = school.util.BaseUtil.getCurrentUser().school_id;
         //读取学校
         school.util.BaseUtil.request({
             // url:'http://10.1.80.35:9560/school/read/1'
-            url:'/api/school/school/read/1'
+            url:'/api/school/school/read/' + schoolId
         })
         .then(function(res) {
             if(res.success) {

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

@@ -35,7 +35,7 @@ Ext.define('school.view.viewport.ViewportModel', {
             proxy: {
                 type: 'ajax',
                 // url: 'http://10.1.80.47:9560/grade/read/1',
-                url: '/api/school/grade/read/1',
+                url: '/api/school/grade/read/' + school.util.BaseUtil.getCurrentUser().school_id,
                 reader: {
                     transform: {
                         fn: function(data) {
@@ -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);
-                }
             }
         }
     }

BIN
frontend/pc-web/resources/images/auth-background.jpg


BIN
frontend/pc-web/resources/images/标题.png


+ 2 - 2
frontend/wechat-web/src/configs/regexp.config.js

@@ -5,10 +5,10 @@
 
 export const regExpConfig = {
     IDcard: /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/, // 身份证
-    mobile: /^1([3|4|5|7|8|])\d{9}$/, // 手机号码
+    mobile: /^1([3|4|5|7|8|9|])\d{9}$/, // 手机号码
     telephone: /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/, // 固定电话
     num: /^[0-9]*$/, // 数字
-    phoneNo: /(^1([3|4|5|7|8|])\d{9}$)|(^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$)/, // 电话或者手机
+    phoneNo: /(^1([3|4|5|7|8|9|])\d{9}$)|(^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$)/, // 电话或者手机
     policeNo: /^[0-9A-Za-z]{4,10}$/, // 账号4-10位数字或字母组成
     pwd: /^[0-9A-Za-z]{6,16}$/, // 密码由6-16位数字或者字母组成
     isNumAlpha: /^[0-9A-Za-z]*$/, // 字母或数字