Explorar o código

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

koul %!s(int64=7) %!d(string=hai) anos
pai
achega
c411e840ce
Modificáronse 36 ficheiros con 1068 adicións e 391 borrados
  1. 1 3
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/controller/InOutRecordController.java
  2. 33 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/controller/PrincipalMailController.java
  3. 8 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/PrincipalMailService.java
  4. 46 3
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/PrincipalMailServiceImpl.java
  5. 0 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/interceptor/AuthRestInterceptor.java
  6. 23 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/interceptor/InterceptorConfig.java
  7. 14 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/PrincipalMailboxMapper.java
  8. 3 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/HomeWork.java
  9. 11 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/Notify.java
  10. 53 13
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/OutInRecord.java
  11. 49 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/PrincipalMail.java
  12. 185 154
      applications/school/school-server/src/main/resources/mapper/HomeWorkMapper.xml
  13. 15 3
      applications/school/school-server/src/main/resources/mapper/NotifyMapper.xml
  14. 23 8
      applications/school/school-server/src/main/resources/mapper/OutInRecordMapper.xml
  15. 40 11
      applications/school/school-server/src/main/resources/mapper/PrincipalMailboxMapper.xml
  16. 1 1
      base-servers/file/file-server/src/main/java/com/usoftchina/smartschool/file/controller/FileController.java
  17. 7 1
      base-servers/file/file-server/src/main/resources/application.yml
  18. 2 1
      frontend/pc-web/app/Application.js
  19. 2 2
      frontend/pc-web/app/model/Subject.js
  20. 7 7
      frontend/pc-web/app/model/Timetable.js
  21. 58 46
      frontend/pc-web/app/store/Subject.js
  22. 34 0
      frontend/pc-web/app/view/Interaction/access/List.js
  23. 35 6
      frontend/pc-web/app/view/Interaction/homework/List.js
  24. 9 2
      frontend/pc-web/app/view/Interaction/homework/Release.js
  25. 131 74
      frontend/pc-web/app/view/Interaction/mailbox/List.js
  26. 195 0
      frontend/pc-web/app/view/Interaction/mailbox/ListController.js
  27. 3 3
      frontend/pc-web/app/view/Interaction/notice/List.js
  28. 10 2
      frontend/pc-web/app/view/Interaction/notice/SchoolNotice.js
  29. 6 2
      frontend/pc-web/app/view/Interaction/timetable/Detail.js
  30. 1 1
      frontend/pc-web/app/view/Interaction/timetable/List.js
  31. 1 0
      frontend/pc-web/app/view/basic/class/ClassInfoController.js
  32. 1 1
      frontend/pc-web/app/view/core/base/BasePanel.js
  33. 22 18
      frontend/pc-web/app/view/core/form/FormPanelController.js
  34. 21 0
      frontend/pc-web/app/view/core/form/field/SubjectComboBox.js
  35. 6 11
      frontend/pc-web/app/view/core/grid/column/SubjectColumn.js
  36. 12 8
      frontend/wechat-web/src/modules/principalMailbox/PrincipalMailbox.jsx

+ 1 - 3
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/controller/InOutRecordController.java

@@ -8,9 +8,7 @@ import com.usoftchina.smartschool.school.business.service.InOutRecordService;
 import com.usoftchina.smartschool.school.dto.ListReqDTO;
 import com.usoftchina.smartschool.school.po.OutInRecord;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author: guq

+ 33 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/controller/PrincipalMailController.java

@@ -7,7 +7,7 @@ import com.usoftchina.smartschool.page.PageRequest;
 import com.usoftchina.smartschool.school.business.service.PrincipalMailService;
 import com.usoftchina.smartschool.school.dto.BatchDealBaseDTO;
 import com.usoftchina.smartschool.school.dto.ListReqDTO;
-import com.usoftchina.smartschool.school.po.PrincipalMailboxDO;
+import com.usoftchina.smartschool.school.po.PrincipalMail;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -25,7 +25,7 @@ public class PrincipalMailController {
 
     @GetMapping("/list")
     public Result getList(@PageDefault PageRequest page, ListReqDTO listReqDTO) {
-        PageInfo<PrincipalMailboxDO> data = principalMailService.getListData(page, listReqDTO);
+        PageInfo<PrincipalMail> data = principalMailService.getListData(page, listReqDTO);
         return Result.success(data);
     }
 
@@ -40,4 +40,35 @@ public class PrincipalMailController {
         return Result.success();
     }
 
+
+    /**
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchIgnore")
+    public Result batchIgnore(@RequestBody BatchDealBaseDTO baseDTOs) {
+        principalMailService.batchIgnore(baseDTOs);
+        return Result.success();
+    }
+
+    /**
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchUnIgnore")
+    public Result batchUnIgnore(@RequestBody BatchDealBaseDTO baseDTOs) {
+        principalMailService.batchUnIgnore(baseDTOs);
+        return Result.success();
+    }
+
+
+    /**
+     * @return
+     */
+    @PostMapping("/reply")
+    public Result reply(String msg, Long id) {
+        principalMailService.reply(msg, id);
+        return Result.success();
+    }
+
 }

+ 8 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/PrincipalMailService.java

@@ -4,10 +4,16 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.smartschool.page.PageRequest;
 import com.usoftchina.smartschool.school.dto.BatchDealBaseDTO;
 import com.usoftchina.smartschool.school.dto.ListReqDTO;
-import com.usoftchina.smartschool.school.po.PrincipalMailboxDO;
+import com.usoftchina.smartschool.school.po.PrincipalMail;
 
 public interface PrincipalMailService {
-    PageInfo<PrincipalMailboxDO> getListData(PageRequest page, ListReqDTO listReqDTO);
+    PageInfo<PrincipalMail> getListData(PageRequest page, ListReqDTO listReqDTO);
 
     void batchDelete(BatchDealBaseDTO baseDTOs);
+
+    void batchIgnore(BatchDealBaseDTO baseDTOs);
+
+    void batchUnIgnore(BatchDealBaseDTO baseDTOs);
+
+    void reply(String msg, Long id);
 }

+ 46 - 3
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/PrincipalMailServiceImpl.java

@@ -3,16 +3,22 @@ package com.usoftchina.smartschool.school.business.service.impl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.smartschool.context.BaseContextHolder;
+import com.usoftchina.smartschool.exception.BizException;
 import com.usoftchina.smartschool.page.PageRequest;
 import com.usoftchina.smartschool.school.business.service.PrincipalMailService;
 import com.usoftchina.smartschool.school.dto.BatchDealBaseDTO;
 import com.usoftchina.smartschool.school.dto.DocBaseDTO;
 import com.usoftchina.smartschool.school.dto.ListReqDTO;
+import com.usoftchina.smartschool.school.exception.BizExceptionCode;
 import com.usoftchina.smartschool.school.mapper.PrincipalMailboxMapper;
+import com.usoftchina.smartschool.school.po.PrincipalMail;
 import com.usoftchina.smartschool.school.po.PrincipalMailboxDO;
+import com.usoftchina.smartschool.school.po.PrincipalReplyDO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -26,7 +32,7 @@ public class PrincipalMailServiceImpl implements PrincipalMailService {
     private PrincipalMailboxMapper principalMailboxMapper;
 
     @Override
-    public PageInfo<PrincipalMailboxDO> getListData(PageRequest page, ListReqDTO listReqDTO) {
+    public PageInfo<PrincipalMail> getListData(PageRequest page, ListReqDTO listReqDTO) {
         PageHelper.startPage(page.getNumber(), page.getSize());
         Long schoolId = BaseContextHolder.getSchoolId();
         schoolId = 1l;
@@ -35,8 +41,8 @@ public class PrincipalMailServiceImpl implements PrincipalMailService {
         if(condition == null){
             condition = "1=1";
         }
-        List<PrincipalMailboxDO> data = principalMailboxMapper.selectByConditon(condition, schoolId);
-        PageInfo<PrincipalMailboxDO> list = new PageInfo<>(data);
+        List<PrincipalMail> data = principalMailboxMapper.selectByConditon(condition, schoolId);
+        PageInfo<PrincipalMail> list = new PageInfo<>(data);
         return list;
     }
 
@@ -52,7 +58,44 @@ public class PrincipalMailServiceImpl implements PrincipalMailService {
         }
     }
 
+    @Override
+    public void batchIgnore(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return;
+        }
+        List<DocBaseDTO> base = baseDTOs.getBaseDTOs();
+        principalMailboxMapper.batchIgnore(base);
+    }
+
+    @Override
+    public void batchUnIgnore(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return;
+        }
+        List<DocBaseDTO> base = baseDTOs.getBaseDTOs();
+        principalMailboxMapper.batchUnIgnore(base);
+    }
+
+    @Override
+    public void reply(String msg, Long id) {
+        if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(id)) {
+            throw new BizException(BizExceptionCode.USELESS_DATA);
+        }
+        //更新主表
+        principalMailboxMapper.updateReply(msg, id);
+
+        PrincipalReplyDO replyDO = new PrincipalReplyDO();
+        replyDO.setMailboxId(id);
+        replyDO.setReplyContent(msg);
+        replyDO.setReplyDate(new Date());
+        //插入从表
+        principalMailboxMapper.insertDetail(replyDO);
+    }
+
     private void singleDelete(Long id) {
         principalMailboxMapper.deleteByPrimaryKey(id);
     }
+
 }

+ 0 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/interceptor/AuthRestInterceptor.java

@@ -19,8 +19,6 @@ import java.util.Enumeration;
  * @author chenwei
  * @date 2019/2/18
  */
-@Component
-@Configuration
 public class AuthRestInterceptor extends HandlerInterceptorAdapter {
 
     private static final Logger logger = LoggerFactory.getLogger(AuthRestInterceptor.class);

+ 23 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/interceptor/InterceptorConfig.java

@@ -0,0 +1,23 @@
+package com.usoftchina.smartschool.school.interceptor;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author: guq
+ * @create: 2019-03-01 16:00
+ **/
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+    @Bean
+    public AuthRestInterceptor authRestInterceptor() {
+        return new AuthRestInterceptor();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(authRestInterceptor());
+    }
+}

+ 14 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/PrincipalMailboxMapper.java

@@ -1,6 +1,8 @@
 package com.usoftchina.smartschool.school.mapper;
 
-import com.usoftchina.smartschool.school.po.PrincipalMailboxDO;
+import com.usoftchina.smartschool.school.dto.DocBaseDTO;
+import com.usoftchina.smartschool.school.po.PrincipalMail;
+import com.usoftchina.smartschool.school.po.PrincipalReplyDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,5 +17,15 @@ public interface PrincipalMailboxMapper {
 
     PrincipalMailboxDO selectByPrimaryKey(Long mailbox_id);*/
 
-    List<PrincipalMailboxDO> selectByConditon(@Param("con") String condition, @Param("school_id") Long schoolId);
+    List<PrincipalMail> selectByConditon(@Param("con") String condition, @Param("school_id") Long schoolId);
+
+    //void ignore(Long id);
+
+  void batchIgnore(List<DocBaseDTO> baseDTOs);
+
+  void batchUnIgnore(List<DocBaseDTO> base);
+
+  void updateReply(@Param("msg") String msg, @Param("id") Long id);
+
+  void insertDetail(PrincipalReplyDO replyDO);
 }

+ 3 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/HomeWork.java

@@ -40,6 +40,8 @@ public class HomeWork implements Serializable{
 
     private String grade_name;
 
-    private Date publish_date;
+    private Date publish_date;  //作业发布时间
+
+    private String creator;      //发布人姓名
 
 }

+ 11 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/Notify.java

@@ -27,7 +27,9 @@ public class Notify implements Serializable{
 
     private String notify_stu;
 
-    private Date publish_date;
+    private Date publish_date;  //发布时间
+
+    private String creator; //创建人姓名
 
     public String getNotify_details() {
         return notify_details;
@@ -132,4 +134,12 @@ public class Notify implements Serializable{
     public void setPublish_date(Date publish_date) {
         this.publish_date = publish_date;
     }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
 }

+ 53 - 13
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/OutInRecord.java

@@ -4,31 +4,39 @@ import java.io.Serializable;
 import java.util.Date;
 
 public class OutInRecord implements Serializable{
-    private Long record_id;
+    private Long record_id;         //编号
 
-    private String record_name;
+    private String record_name;     //记录名
 
-    private Date out_date;
+    private Date out_date;          //出校时间
 
-    private Date in_date;
+    private Date in_date;           //入校时间
 
-    private String record_details;
+    private String record_details;  //详情
 
-    private String record_remarks;
+    private String record_remarks;  //备注
 
-    private String device_id;
+    private String device_id;       //设备标识
 
-    private Long stu_id;
+    private Long stu_id;            //学生编号
 
-    private Long school_id;
+    private Long school_id;         //学校编号
 
-    private String stu_name;
+    private Integer stu_sex;        //学生性别
 
-    private Integer stu_sex;
+    private String stu_number;      //学号
 
-    private String stu_number;
+    private String stu_name;	    //学生姓名
 
-    private String clazz_name;
+    private Long grade_id;	        //年级编号
+
+    private String grade_name;	    //年级名
+
+    private Long clazz_id;	        //班级编号
+
+    private String clazz_name;	    //班级名
+
+    private String grade_clazz;	    //年级加班级名
 
     public String getStu_name() {
         return stu_name;
@@ -133,4 +141,36 @@ public class OutInRecord implements Serializable{
     public void setSchool_id(Long school_id) {
         this.school_id = school_id;
     }
+
+    public Long getGrade_id() {
+        return grade_id;
+    }
+
+    public void setGrade_id(Long grade_id) {
+        this.grade_id = grade_id;
+    }
+
+    public String getGrade_name() {
+        return grade_name;
+    }
+
+    public void setGrade_name(String grade_name) {
+        this.grade_name = grade_name;
+    }
+
+    public Long getClazz_id() {
+        return clazz_id;
+    }
+
+    public void setClazz_id(Long clazz_id) {
+        this.clazz_id = clazz_id;
+    }
+
+    public String getGrade_clazz() {
+        return grade_clazz;
+    }
+
+    public void setGrade_clazz(String grade_clazz) {
+        this.grade_clazz = grade_clazz;
+    }
 }

+ 49 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/PrincipalMail.java

@@ -0,0 +1,49 @@
+package com.usoftchina.smartschool.school.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-03-01 09:41
+ **/
+@Data
+public class PrincipalMail implements Serializable{
+    private Long mailbox_id;
+
+    private String mailbox_title;
+
+    private Integer is_anonymity;
+
+    private Date create_date;
+
+    private Long mailbox_creator;
+
+    private Date read_date;
+
+    private Integer mailbox_status;
+
+    private Long notifier;
+
+    private Long school_id;
+
+    private Long mb_stuid;
+
+    private String mb_student;
+
+    private String mb_grade;
+
+    private String mb_class;
+
+    private Integer mb_ignore;
+
+    private String mailbox_context;
+
+    private String mailbox_files;
+
+    private String mb_reply;
+
+    private String mb_creatorname;
+}

+ 185 - 154
applications/school/school-server/src/main/resources/mapper/HomeWorkMapper.xml

@@ -1,164 +1,192 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.usoftchina.smartschool.school.mapper.HomeWorkMapper" >
-  <resultMap id="BaseResultMap" type="com.usoftchina.smartschool.school.po.HomeWork" >
-    <id column="task_id" property="task_id" jdbcType="BIGINT" />
-    <result column="subject_id" property="subject_id" jdbcType="BIGINT" />
-    <result column="task_title" property="task_title" jdbcType="VARCHAR" />
-    <result column="task_status" property="task_status" jdbcType="INTEGER" />
-    <result column="create_date" property="create_date" jdbcType="TIMESTAMP" />
-    <result column="start_date" property="start_date" jdbcType="TIMESTAMP" />
-    <result column="end_date" property="end_date" jdbcType="TIMESTAMP" />
-    <result column="task_creator" property="task_creator" jdbcType="BIGINT" />
-    <result column="school_id" property="school_id" jdbcType="BIGINT" />
-    <result column="task_context" property="task_context" jdbcType="LONGVARCHAR" />
-    <result column="task_files" property="task_files" jdbcType="LONGVARCHAR" />
-    <result column="task_notifier" property="task_notifier" jdbcType="LONGVARCHAR" />
-    <result column="classz_name" property="classz_name" jdbcType="VARCHAR" />
-    <result column="grade_name" property="grade_name" jdbcType="VARCHAR" />
-    <result column="publish_date" property="publish_date" jdbcType="TIMESTAMP" />
-  </resultMap>
+<mapper namespace="com.usoftchina.smartschool.school.mapper.HomeWorkMapper">
+    <resultMap id="BaseResultMap" type="com.usoftchina.smartschool.school.po.HomeWork">
+        <id column="task_id" property="task_id" jdbcType="BIGINT"/>
+        <result column="subject_id" property="subject_id" jdbcType="BIGINT"/>
+        <result column="task_title" property="task_title" jdbcType="VARCHAR"/>
+        <result column="task_status" property="task_status" jdbcType="INTEGER"/>
+        <result column="create_date" property="create_date" jdbcType="TIMESTAMP"/>
+        <result column="start_date" property="start_date" jdbcType="TIMESTAMP"/>
+        <result column="end_date" property="end_date" jdbcType="TIMESTAMP"/>
+        <result column="task_creator" property="task_creator" jdbcType="BIGINT"/>
+        <result column="school_id" property="school_id" jdbcType="BIGINT"/>
+        <result column="task_context" property="task_context" jdbcType="LONGVARCHAR"/>
+        <result column="task_files" property="task_files" jdbcType="LONGVARCHAR"/>
+        <result column="task_notifier" property="task_notifier" jdbcType="LONGVARCHAR"/>
+        <result column="classz_name" property="classz_name" jdbcType="VARCHAR"/>
+        <result column="grade_name" property="grade_name" jdbcType="VARCHAR"/>
+        <result column="publish_date" property="publish_date" jdbcType="TIMESTAMP"/>
+        <result column="creator" property="creator" jdbcType="VARCHAR"/>
+    </resultMap>
 
-  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">
     select 
     *
     from task_notify
     where task_id = #{task_id,jdbcType=BIGINT}
   </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
     delete from task_notify
     where task_id = #{task_id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" parameterType="com.usoftchina.smartschool.school.po.HomeWork" >
+    <insert id="insert" parameterType="com.usoftchina.smartschool.school.po.HomeWork">
     insert into task_notify (subject_id, task_title,
       task_status, create_date, start_date, 
       end_date, task_creator, school_id, 
       task_context, task_files, task_notifier,
-      classz_name, grade_name
+      classz_name, grade_name,creator
       )
     values (#{subject_id,jdbcType=BIGINT}, #{task_title,jdbcType=VARCHAR},
       #{task_status,jdbcType=INTEGER}, #{create_date,jdbcType=TIMESTAMP}, #{start_date,jdbcType=TIMESTAMP}, 
       #{end_date,jdbcType=TIMESTAMP}, #{task_creator,jdbcType=BIGINT}, #{school_id,jdbcType=BIGINT}, 
       #{task_context,jdbcType=LONGVARCHAR}, #{task_files,jdbcType=LONGVARCHAR}, #{task_notifier,jdbcType=LONGVARCHAR},
-      #{task_title,jdbcType=VARCHAR},#{task_title,jdbcType=VARCHAR}
+      #{task_title,jdbcType=VARCHAR},#{task_title,jdbcType=VARCHAR}, #{creator,jdbcType=VARCHAR}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.usoftchina.smartschool.school.po.HomeWork" >
-    <selectKey  resultType="java.lang.Long" keyProperty="task_id">
-      SELECT LAST_INSERT_ID() AS ID
-    </selectKey>
-    insert into task_notify
-    <trim prefix="(" suffix=")" suffixOverrides="," >
-      <if test="subject_id != null" >
-        subject_id,
-      </if>
-      <if test="task_title != null" >
-        task_title,
-      </if>
-      <if test="task_status != null" >
-        task_status,
-      </if>
-      <if test="create_date != null" >
-        create_date,
-      </if>
-      <if test="start_date != null" >
-        start_date,
-      </if>
-      <if test="end_date != null" >
-        end_date,
-      </if>
-      <if test="task_creator != null" >
-        task_creator,
-      </if>
-      <if test="school_id != null" >
-        school_id,
-      </if>
-      <if test="task_context != null" >
-        task_context,
-      </if>
-      <if test="task_files != null" >
-        task_files,
-      </if>
-      <if test="task_notifier != null" >
-        task_notifier,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides="," >
-      <if test="subject_id != null" >
-        #{subject_id,jdbcType=BIGINT},
-      </if>
-      <if test="task_title != null" >
-        #{task_title,jdbcType=VARCHAR},
-      </if>
-      <if test="task_status != null" >
-        #{task_status,jdbcType=INTEGER},
-      </if>
-      <if test="create_date != null" >
-        #{create_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="start_date != null" >
-        #{start_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="end_date != null" >
-        #{end_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="task_creator != null" >
-        #{task_creator,jdbcType=BIGINT},
-      </if>
-      <if test="school_id != null" >
-        #{school_id,jdbcType=BIGINT},
-      </if>
-      <if test="task_context != null" >
-        #{task_context,jdbcType=LONGVARCHAR},
-      </if>
-      <if test="task_files != null" >
-        #{task_files,jdbcType=LONGVARCHAR},
-      </if>
-      <if test="task_notifier != null" >
-        #{task_notifier,jdbcType=LONGVARCHAR},
-      </if>
-    </trim>
-  </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.smartschool.school.po.HomeWork" >
-    update task_notify
-    <set >
-      <if test="subject_id != null" >
-        subject_id = #{subject_id,jdbcType=BIGINT},
-      </if>
-      <if test="task_title != null" >
-        task_title = #{task_title,jdbcType=VARCHAR},
-      </if>
-      <if test="task_status != null" >
-        task_status = #{task_status,jdbcType=INTEGER},
-      </if>
-      <if test="create_date != null" >
-        create_date = #{create_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="start_date != null" >
-        start_date = #{start_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="end_date != null" >
-        end_date = #{end_date,jdbcType=TIMESTAMP},
-      </if>
-      <if test="task_creator != null" >
-        task_creator = #{task_creator,jdbcType=BIGINT},
-      </if>
-      <if test="school_id != null" >
-        school_id = #{school_id,jdbcType=BIGINT},
-      </if>
-      <if test="task_context != null" >
-        task_context = #{task_context,jdbcType=LONGVARCHAR},
-      </if>
-      <if test="task_files != null" >
-        task_files = #{task_files,jdbcType=LONGVARCHAR},
-      </if>
-      <if test="task_notifier != null" >
-        task_notifier = #{task_notifier,jdbcType=LONGVARCHAR},
-      </if>
-    </set>
-    where task_id = #{task_id,jdbcType=BIGINT}
-  </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.usoftchina.smartschool.school.po.HomeWork" >
+    <insert id="insertSelective" parameterType="com.usoftchina.smartschool.school.po.HomeWork">
+        <selectKey resultType="java.lang.Long" keyProperty="task_id">
+            SELECT LAST_INSERT_ID() AS ID
+        </selectKey>
+        insert into task_notify
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="subject_id != null">
+                subject_id,
+            </if>
+            <if test="task_title != null">
+                task_title,
+            </if>
+            <if test="task_status != null">
+                task_status,
+            </if>
+            <if test="create_date != null">
+                create_date,
+            </if>
+            <if test="start_date != null">
+                start_date,
+            </if>
+            <if test="end_date != null">
+                end_date,
+            </if>
+            <if test="task_creator != null">
+                task_creator,
+            </if>
+            <if test="school_id != null">
+                school_id,
+            </if>
+            <if test="task_context != null">
+                task_context,
+            </if>
+            <if test="task_files != null">
+                task_files,
+            </if>
+            <if test="task_notifier != null">
+                task_notifier,
+            </if>
+            <if test="classz_name != null">
+                classz_name,
+            </if>
+            <if test="grade_name != null">
+                grade_name,
+            </if>
+            <if test="creator != null">
+                creator,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="subject_id != null">
+                #{subject_id,jdbcType=BIGINT},
+            </if>
+            <if test="task_title != null">
+                #{task_title,jdbcType=VARCHAR},
+            </if>
+            <if test="task_status != null">
+                #{task_status,jdbcType=INTEGER},
+            </if>
+            <if test="create_date != null">
+                #{create_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="start_date != null">
+                #{start_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="end_date != null">
+                #{end_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="task_creator != null">
+                #{task_creator,jdbcType=BIGINT},
+            </if>
+            <if test="school_id != null">
+                #{school_id,jdbcType=BIGINT},
+            </if>
+            <if test="task_context != null">
+                #{task_context,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="task_files != null">
+                #{task_files,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="task_notifier != null">
+                #{task_notifier,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="classz_name != null">
+                #{classz_name,jdbcType=VARCHAR},
+            </if>
+            <if test="grade_name != null">
+                #{grade_name,jdbcType=VARCHAR},
+            </if>
+            <if test="creator != null">
+                #{creator,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.smartschool.school.po.HomeWork">
+        update task_notify
+        <set>
+            <if test="subject_id != null">
+                subject_id = #{subject_id,jdbcType=BIGINT},
+            </if>
+            <if test="task_title != null">
+                task_title = #{task_title,jdbcType=VARCHAR},
+            </if>
+            <if test="task_status != null">
+                task_status = #{task_status,jdbcType=INTEGER},
+            </if>
+            <if test="create_date != null">
+                create_date = #{create_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="start_date != null">
+                start_date = #{start_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="end_date != null">
+                end_date = #{end_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="task_creator != null">
+                task_creator = #{task_creator,jdbcType=BIGINT},
+            </if>
+            <if test="school_id != null">
+                school_id = #{school_id,jdbcType=BIGINT},
+            </if>
+            <if test="task_context != null">
+                task_context = #{task_context,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="task_files != null">
+                task_files = #{task_files,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="task_notifier != null">
+                task_notifier = #{task_notifier,jdbcType=LONGVARCHAR},
+            </if>
+            <if test="classz_name != null">
+                classz_name = #{classz_name,jdbcType=VARCHAR},
+            </if>
+            <if test="grade_name != null">
+                grade_name = #{grade_name,jdbcType=VARCHAR},
+            </if>
+            <if test="creator != null">
+                creator = #{creator,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where task_id = #{task_id,jdbcType=BIGINT}
+    </update>
+    <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.usoftchina.smartschool.school.po.HomeWork">
     update task_notify
     set subject_id = #{subject_id,jdbcType=BIGINT},
       task_title = #{task_title,jdbcType=VARCHAR},
@@ -170,10 +198,13 @@
       school_id = #{school_id,jdbcType=BIGINT},
       task_context = #{task_context,jdbcType=LONGVARCHAR},
       task_files = #{task_files,jdbcType=LONGVARCHAR},
-      task_notifier = #{task_notifier,jdbcType=LONGVARCHAR}
+      task_notifier = #{task_notifier,jdbcType=LONGVARCHAR},
+      classz_name = #{classz_name,jdbcType=VARCHAR},
+      grade_name = #{grade_name,jdbcType=VARCHAR},
+      creator = #{creator,jdbcType=VARCHAR}
     where task_id = #{task_id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.usoftchina.smartschool.school.po.HomeWork" >
+    <update id="updateByPrimaryKey" parameterType="com.usoftchina.smartschool.school.po.HomeWork">
     update task_notify
     set subject_id = #{subject_id,jdbcType=BIGINT},
       task_title = #{task_title,jdbcType=VARCHAR},
@@ -186,19 +217,19 @@
     where task_id = #{task_id,jdbcType=BIGINT}
   </update>
 
-  <select id="selectByConditon" resultMap="BaseResultMap">
-    select * from task_notify
-    <where>
-      <if test="con != null">
-        ${con}
-      </if>
-      <if test="school_id != null">
-        and school_id=#{school_id}
-      </if>
-    </where>
-    ORDER BY task_id DESC
-  </select>
-  <update id="updateByPublish" parameterType="java.lang.Long">
+    <select id="selectByConditon" resultMap="BaseResultMap">
+        select * from task_notify
+        <where>
+            <if test="con != null">
+                ${con}
+            </if>
+            <if test="school_id != null">
+                and school_id=#{school_id}
+            </if>
+        </where>
+        ORDER BY task_id DESC
+    </select>
+    <update id="updateByPublish" parameterType="java.lang.Long">
     update task_notify
     set task_status = 1 ,
       publish_date = now()

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

@@ -15,6 +15,7 @@
     <result column="notify_teacher" property="notify_teacher" jdbcType="LONGVARCHAR" />
     <result column="notify_stu" property="notify_stu" jdbcType="LONGVARCHAR" />
     <result column="publish_date" property="publish_date" jdbcType="TIMESTAMP" />
+    <result column="creator" property="creator" jdbcType="VARCHAR" />
   </resultMap>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
     select *
@@ -29,12 +30,13 @@
     insert into notify (notify_id, notify_title, notify_type, 
       notify_creator, create_date, notify_status, 
       notify_remarks, school_id, notify_details, 
-      notify_files, notify_teacher, notify_stu
+      notify_files, notify_teacher, notify_stu, creator
       )
     values (#{notify_id,jdbcType=BIGINT}, #{notify_title,jdbcType=VARCHAR}, #{notify_type,jdbcType=INTEGER}, 
       #{notify_creator,jdbcType=BIGINT}, #{create_date,jdbcType=TIMESTAMP}, #{notify_status,jdbcType=INTEGER}, 
       #{notify_remarks,jdbcType=VARCHAR}, #{school_id,jdbcType=BIGINT}, #{notify_details,jdbcType=LONGVARCHAR}, 
-      #{notify_files,jdbcType=LONGVARCHAR}, #{notify_teacher,jdbcType=LONGVARCHAR}, #{notify_stu,jdbcType=LONGVARCHAR}
+      #{notify_files,jdbcType=LONGVARCHAR}, #{notify_teacher,jdbcType=LONGVARCHAR}, #{notify_stu,jdbcType=LONGVARCHAR},
+      #{creator,jdbcType=VARCHAR}
       )
   </insert>
   <insert id="insertSelective" parameterType="com.usoftchina.smartschool.school.po.Notify" >
@@ -76,6 +78,9 @@
       <if test="notify_stu != null" >
         notify_stu,
       </if>
+      <if test="creator != null" >
+        creator,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="notify_title != null" >
@@ -111,6 +116,9 @@
       <if test="notify_stu != null" >
         #{notify_stu,jdbcType=LONGVARCHAR},
       </if>
+      <if test="creator != null" >
+        #{creator,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.smartschool.school.po.Notify" >
@@ -149,6 +157,9 @@
       <if test="notify_stu != null" >
         notify_stu = #{notify_stu,jdbcType=LONGVARCHAR},
       </if>
+      <if test="creator != null" >
+        creator = #{creator,jdbcType=VARCHAR},
+      </if>
     </set>
     where notify_id = #{notify_id,jdbcType=BIGINT}
   </update>
@@ -164,7 +175,8 @@
       notify_details = #{notify_details,jdbcType=LONGVARCHAR},
       notify_files = #{notify_files,jdbcType=LONGVARCHAR},
       notify_teacher = #{notify_teacher,jdbcType=LONGVARCHAR},
-      notify_stu = #{notify_stu,jdbcType=LONGVARCHAR}
+      notify_stu = #{notify_stu,jdbcType=LONGVARCHAR},
+      creator = #{creator,jdbcType=VARCHAR}
     where notify_id = #{notify_id,jdbcType=BIGINT}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.usoftchina.smartschool.school.po.Notify" >

+ 23 - 8
applications/school/school-server/src/main/resources/mapper/OutInRecordMapper.xml

@@ -8,16 +8,22 @@
     <result column="in_date" property="in_date" jdbcType="TIMESTAMP" />
     <result column="record_details" property="record_details" jdbcType="VARCHAR" />
     <result column="record_remarks" property="record_remarks" jdbcType="VARCHAR" />
+    <result column="device_id" property="device_id" jdbcType="BIGINT" />
     <result column="stu_id" property="stu_id" jdbcType="BIGINT" />
     <result column="school_id" property="school_id" jdbcType="BIGINT" />
-    <result column="clazz_name" property="clazz_name" jdbcType="VARCHAR"/>
-    <result column="stu_name" property="stu_name" jdbcType="VARCHAR"/>
     <result column="stu_sex" property="stu_sex" jdbcType="INTEGER"/>
     <result column="stu_number" property="stu_number" jdbcType="VARCHAR"/>
+    <result column="stu_name" property="stu_name" jdbcType="VARCHAR"/>
+    <result column="grade_id" property="grade_id" jdbcType="BIGINT" />
+    <result column="grade_name" property="grade_name" jdbcType="VARCHAR"/>
+    <result column="clazz_id" property="clazz_id" jdbcType="BIGINT" />
+    <result column="clazz_name" property="clazz_name" jdbcType="VARCHAR"/>
+    <result column="grade_clazz" property="grade_clazz" jdbcType="VARCHAR"/>
   </resultMap>
   <sql id="Base_Column_List" >
-    record_id, record_name, out_date, in_date, record_details, record_remarks,
-    stu_id, school_id
+    record_id, record_name, out_date, in_date, record_details, record_remarks,device_id,
+    stu_id, school_id, stu_sex, stu_number, stu_name, grade_id, grade_name,
+    clazz_id, clazz_name, grade_clazz
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
     select 
@@ -31,10 +37,14 @@
   </delete>
   <insert id="insert" parameterType="com.usoftchina.smartschool.school.po.OutInRecord" >
     insert into out_in_record (record_id, record_name, out_date, 
-      in_date, record_details, record_remarks, stu_id, school_id
+      in_date, record_details, record_remarks, device_id, stu_id, school_id,
+      stu_sex, stu_number, stu_name, grade_id, grade_name,clazz_id, clazz_name, grade_clazz
       )
     values (#{record_id,jdbcType=BIGINT}, #{record_name,jdbcType=VARCHAR}, #{out_date,jdbcType=TIMESTAMP}, 
-      #{in_date,jdbcType=TIMESTAMP}, #{record_details,jdbcType=VARCHAR}, #{record_remarks,jdbcType=VARCHAR},#{stu_id,jdbcType=BIGINT}, #{school_id,jdbcType=BIGINT}
+      #{in_date,jdbcType=TIMESTAMP}, #{record_details,jdbcType=VARCHAR}, #{record_remarks,jdbcType=VARCHAR}, #{device_id,jdbcType=BIGINT},
+      #{stu_id,jdbcType=BIGINT}, #{school_id,jdbcType=BIGINT}, #{stu_sex,jdbcType=INTEGER}, #{stu_number,jdbcType=VARCHAR},
+      #{stu_name,jdbcType=VARCHAR}, #{grade_id,jdbcType=BIGINT}, #{grade_name,jdbcType=VARCHAR}, #{clazz_id,jdbcType=BIGINT},
+      #{clazz_name,jdbcType=VARCHAR}, #{grade_clazz,jdbcType=VARCHAR}
       )
   </insert>
   <insert id="insertSelective" parameterType="com.usoftchina.smartschool.school.po.OutInRecord" >
@@ -58,6 +68,9 @@
       <if test="record_remarks != null" >
         record_remarks,
       </if>
+      <if test="device_id != null" >
+        device_id,
+      </if>
       <if test="stu_id != null" >
         stu_id,
       </if>
@@ -84,6 +97,9 @@
       <if test="record_remarks != null" >
         #{record_remarks,jdbcType=VARCHAR},
       </if>
+      <if test="device_id != null" >
+        #{device_id,jdbcType=BIGINT},
+      </if>
       <if test="stu_id != null" >
         #{stu_id,jdbcType=BIGINT},
       </if>
@@ -132,8 +148,7 @@
   </update>
 
   <select id="selectByConditon" resultMap="BaseResultMap">
-    select * from out_in_record left join sys_student on out_in_record.stu_id = sys_student.stu_id
-    left join sys_clazz on sys_student.clazz_id = sys_clazz.clazz_id
+    select * from out_in_record
     <where>
       <if test="con != null">
         ${con}

+ 40 - 11
applications/school/school-server/src/main/resources/mapper/PrincipalMailboxMapper.xml

@@ -1,18 +1,25 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.smartschool.school.mapper.PrincipalMailboxMapper" >
-  <resultMap id="BaseResultMap" type="com.usoftchina.smartschool.school.po.PrincipalMailboxDO" >
-    <id column="mailbox_id" property="mailboxId" jdbcType="BIGINT" />
-    <result column="mailbox_title" property="mailboxTitle" jdbcType="VARCHAR" />
-    <result column="is_anonymity" property="isAnonymity" jdbcType="INTEGER" />
-    <result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
-    <result column="mailbox_creator" property="mailboxCreator" jdbcType="BIGINT" />
-    <result column="read_date" property="readDate" jdbcType="TIMESTAMP" />
-    <result column="mailbox_status" property="mailboxStatus" jdbcType="INTEGER" />
+  <resultMap id="BaseResultMap" type="com.usoftchina.smartschool.school.po.PrincipalMail" >
+    <id column="mailbox_id" property="mailbox_id" jdbcType="BIGINT" />
+    <result column="mailbox_title" property="mailbox_title" jdbcType="VARCHAR" />
+    <result column="is_anonymity" property="is_anonymity" jdbcType="INTEGER" />
+    <result column="create_date" property="create_date" jdbcType="TIMESTAMP" />
+    <result column="mailbox_creator" property="mailbox_creator" jdbcType="BIGINT" />
+    <result column="read_date" property="read_date" jdbcType="TIMESTAMP" />
+    <result column="mailbox_status" property="mailbox_status" jdbcType="INTEGER" />
     <result column="notifier" property="notifier" jdbcType="BIGINT" />
-    <result column="school_id" property="schoolId" jdbcType="BIGINT" />
-    <result column="mailbox_context" property="mailboxContext" jdbcType="LONGVARCHAR" />
-    <result column="mailbox_files" property="mailboxFiles" jdbcType="LONGVARCHAR" />
+    <result column="school_id" property="school_id" jdbcType="BIGINT" />
+    <result column="mb_stuid" property="mb_stuid" jdbcType="BIGINT" />
+    <result column="mb_student" property="mb_student" jdbcType="VARCHAR" />
+    <result column="mb_grade" property="mb_grade" jdbcType="VARCHAR" />
+    <result column="mb_class" property="mb_class" jdbcType="VARCHAR" />
+    <result column="mb_ignore" property="mb_ignore" jdbcType="INTEGER" />
+    <result column="mailbox_context" property="mailbox_context" jdbcType="LONGVARCHAR" />
+    <result column="mailbox_files" property="mailbox_files" jdbcType="LONGVARCHAR" />
+    <result column="mb_reply" property="mb_reply" jdbcType="LONGVARCHAR" />
+    <result column="mb_creatorname" property="mb_creatorname" jdbcType="VARCHAR"/>
   </resultMap>
 
   <select id="selectByConditon" resultMap="BaseResultMap">
@@ -33,4 +40,26 @@
     where mailbox_id = #{mailbox_id,jdbcType=BIGINT}
   </delete>
 
+  <update id="batchIgnore" parameterType="com.usoftchina.smartschool.school.dto.DocBaseDTO">
+    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+      update principal_mailbox set mb_ignore = 1 where mailbox_id = #{item.id}
+    </foreach>
+  </update>
+
+
+  <update id="batchUnIgnore" parameterType="com.usoftchina.smartschool.school.dto.DocBaseDTO">
+    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+      update principal_mailbox set mb_ignore = 0 where mailbox_id = #{item.id}
+    </foreach>
+  </update>
+  
+  <update id="updateReply">
+    update principal_mailbox set mailbox_status=3,mb_reply=#{msg} where mailbox_id=#{id}
+  </update>
+
+  <insert id="insertDetail" parameterType="com.usoftchina.smartschool.school.po.PrincipalReplyDO">
+    insert into principal_reply (mailbox_id,reply_content,reply_date)
+    values (#{mailboxId,jdbcType=BIGINT}, #{replyContent,jdbcType=VARCHAR}, #{replyDate,jdbcType=TIMESTAMP})
+  </insert>
+
 </mapper>

+ 1 - 1
base-servers/file/file-server/src/main/java/com/usoftchina/smartschool/file/controller/FileController.java

@@ -93,7 +93,7 @@ public class FileController {
 
     @ApiOperation(value = "上传文件")
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public Result<FileInfoDTO> upload(@RequestParam("folderId") Long folderId, @RequestPart(value = "com/usoftchina/smartschool/file") MultipartFile file) throws Exception {
+    public Result<FileInfoDTO> upload(@RequestParam("folderId") Long folderId, @RequestPart(value = "file") MultipartFile file) throws Exception {
         // 检查父文件夹
         FileInfo parent = checkFolder(folderId);
         FileInfo info = FileInfo.newFile(file).folder(parent.getId())

+ 7 - 1
base-servers/file/file-server/src/main/resources/application.yml

@@ -41,6 +41,12 @@ spring:
     time-zone: GMT+8
   profiles:
     active: dev
+  servlet:
+    multipart:
+      enabled: true
+      #20971520 ->  20M
+      max-file-size: 20971520
+      max-request-size: 20971520
 eureka:
   instance:
     leaseRenewalIntervalInSeconds: 10
@@ -53,7 +59,7 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@10.1.81.61:8510/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9500/eureka/
 server:
   port: 9540
   tomcat:

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

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

+ 2 - 2
frontend/pc-web/app/model/Subject.js

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

+ 7 - 7
frontend/pc-web/app/model/Timetable.js

@@ -4,19 +4,19 @@
 Ext.define('school.model.Timetable', {
     extend: 'school.model.Base',
     fields: [{
-        name: 'mon', type: 'string'
+        name: 'mon', type: 'int'
     }, {
-        name: 'tues', type: 'string'
+        name: 'tues', type: 'int'
     }, {
-        name: 'wed', type: 'string'
+        name: 'wed', type: 'int'
     }, {
-        name: 'thur', type: 'string'
+        name: 'thur', type: 'int'
     }, {
-        name: 'fri', type: 'string'
+        name: 'fri', type: 'int'
     }, {
-        name: 'sat', type: 'string'
+        name: 'sat', type: 'int'
     }, {
-        name: 'sunday', type: 'string'
+        name: 'sunday', type: 'int'
     }, {
         name: 'startTime', type: 'string',
     }, {

+ 58 - 46
frontend/pc-web/app/store/Subject.js

@@ -4,53 +4,65 @@
 Ext.define('school.store.Subject', {
     extend: 'Ext.data.Store',
     alias: 'store.store_subject',
+    storeId: 'store_subject',
 
     model: 'school.model.Subject',
+    autoLoad: false,
+    proxy: {
+        type: 'ajax',
+        url: '/api/school/subject/list',
+        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: '思想品德'
-    }]
+    // 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: '思想品德'
+    // }]
 });

+ 34 - 0
frontend/pc-web/app/view/Interaction/access/List.js

@@ -5,6 +5,7 @@ Ext.define('school.view.interaction.access.List', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'interaction-access-list',
 
+    // dataUrl: 'http://10.1.80.180:9520/api/school/record/list',
     dataUrl: '/api/school/record/list',
     initComponent: function () {
         var me = this;
@@ -13,6 +14,39 @@ Ext.define('school.view.interaction.access.List', {
                 xtype: 'textfield',
                 name: 'keyword',
                 fieldLabel: '姓名'
+            }, {
+                xtype: 'gradecombo',
+                name: 'grade_name',
+                fieldLabel: '年级',
+                listeners: {
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('clazz_name').setValue(null);
+                    }
+                }
+            }, {
+                xtype: 'classcombo',
+                name: 'clazz_name',
+                fieldLabel: '班级',
+                listeners: {
+                    expand: function (combo, eOpts) {
+                        combo.store.clearFilter();
+
+                        var gradeCombo = combo.up('form').getForm().findField('grade_name');
+                        var gradeName = gradeCombo.getValue();
+
+                        var filter = new Ext.util.Filter({
+                            property: 'gradeName',
+                            value: gradeName
+                        });
+
+                        if (!!gradeName) {
+                            combo.store.setFilters([filter]);
+                        }
+                    },
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                    }
+                }
             }],
 
             caller: null,

+ 35 - 6
frontend/pc-web/app/view/Interaction/homework/List.js

@@ -5,7 +5,7 @@ Ext.define('school.view.interaction.homework.List', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'interaction-homework-list',
 
-    // dataUrl: 'http://10.1.80.47:9560/homework/list',
+    // dataUrl: 'http://10.1.80.180:9520/api/school/homework/list',
     dataUrl: '/api/school/homework/list',
     _title: '作业发布',
 
@@ -20,12 +20,41 @@ Ext.define('school.view.interaction.homework.List', {
                     return ' (task_title like\'%' + value + '%\' or task_context like \'%' + value + '%\') ';
                 }
             }, {
-                xtype: 'textfield',
-                name: 'bj',
-                fieldLabel: '班级'
+                xtype: 'gradecombo',
+                name: 'grade_name',
+                fieldLabel: '年级',
+                listeners: {
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('classz_name').setValue(null);
+                    }
+                }
+            }, {
+                xtype: 'classcombo',
+                name: 'classz_name',
+                fieldLabel: '班级',
+                listeners: {
+                    expand: function (combo, eOpts) {
+                        combo.store.clearFilter();
+
+                        var gradeCombo = combo.up('form').getForm().findField('grade_name');
+                        var gradeName = gradeCombo.getValue();
+
+                        var filter = new Ext.util.Filter({
+                            property: 'gradeName',
+                            value: gradeName
+                        });
+
+                        if (!!gradeName) {
+                            combo.store.setFilters([filter]);
+                        }
+                    },
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('grade_name').setValue(record.get('gradeName'));
+                    }
+                }
             }, {
                 xtype: 'textfield',
-                name: 'task_creator',
+                name: 'creator',
                 fieldLabel: '发布人'
             }, {
                 xtype: 'combobox',
@@ -139,7 +168,7 @@ Ext.define('school.view.interaction.homework.List', {
                     width: 300
                 }, {
                     text: '发布人',
-                    dataIndex: 'task_creator',
+                    dataIndex: 'creator',
                     width: 150
                 }, {
                     text: '发布状态',

+ 9 - 2
frontend/pc-web/app/view/Interaction/homework/Release.js

@@ -12,9 +12,9 @@ Ext.define('school.view.interaction.homework.Release', {
     _title: '作业发布',
     _idField: 'task_id',
     _codeField: null,
-    // _readUrl: 'http://10.1.80.47:9560/homework/read',
+    // _readUrl: 'http://10.1.80.180:9520/api/school/homework/read',
     _readUrl: '/api/school/homework/read',
-    // _saveUrl: 'http://10.1.80.47:9560/homework/save',
+    // _saveUrl: 'http://10.1.80.180:9520/api/school/homework/save',
     _saveUrl: '/api/school/homework/save',
     _deleteUrl: '/api/school/homework/delete',
     initId: 0,
@@ -27,6 +27,12 @@ Ext.define('school.view.interaction.homework.Release', {
             }, {
                 xtype: "textfield",
                 name: "task_creator",
+                fieldLabel: "发布人id",
+                defaultValue: school.util.BaseUtil.getCurrentUser().id,
+                hidden: true
+            }, {
+                xtype: "textfield",
+                name: "creator",
                 fieldLabel: "发布人",
                 defaultValue: school.util.BaseUtil.getCurrentUser().username,
                 readOnly: true
@@ -119,6 +125,7 @@ Ext.define('school.view.interaction.homework.Release', {
             toolBtns: [{
                 xtype: 'button',
                 text: '发布',
+                hidden: true,
                 bind: {
                     hidden: '{!task_id}'
                 },

+ 131 - 74
frontend/pc-web/app/view/Interaction/mailbox/List.js

@@ -5,6 +5,9 @@ Ext.define('school.view.interaction.mailbox.List', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'interaction-mailbox-list',
 
+    controller: 'interaction-mailbox-list',
+
+    // dataUrl: 'http://10.1.80.47:9520/api/school/principal/list',
     dataUrl: '/api/school/principal/list',
     initComponent: function() {
         var me = this;
@@ -12,11 +15,80 @@ Ext.define('school.view.interaction.mailbox.List', {
             searchField: [{
                 xtype: 'textfield',
                 name: 'keyword',
-                fieldLabel: '关键字'
+                fieldLabel: '关键字',
+                getCondition: function (value) {
+                    return ' (mailbox_title like\'%' + value + '%\' or mailbox_context like \'%' + value + '%\') ';
+                }
+            }, {
+                xtype: 'gradecombo',
+                name: 'mb_grade',
+                fieldLabel: '年级',
+                listeners: {
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('mb_class').setValue(null);
+                    }
+                }
+            }, {
+                xtype: 'classcombo',
+                name: 'mb_class',
+                fieldLabel: '班级',
+                listeners: {
+                    expand: function (combo, eOpts) {
+                        combo.store.clearFilter();
+
+                        var gradeCombo = combo.up('form').getForm().findField('mb_grade');
+                        var gradeName = gradeCombo.getValue();
+
+                        var filter = new Ext.util.Filter({
+                            property: 'gradeName',
+                            value: gradeName
+                        });
+
+                        if (!!gradeName) {
+                            combo.store.setFilters([filter]);
+                        }
+                    },
+                    select: function (combo, record, eOpts) {
+                        combo.up('form').getForm().findField('mb_grade').setValue(record.get('gradeName'));
+                    }
+                }
+            }, {
+                xtype: 'combobox',
+                fieldLabel: '回复状态',
+                name: 'mb_reply',
+                displayField: 'name',
+                valueField: 'value',
+                editable: true,
+                store: Ext.create('Ext.data.ArrayStore', {
+                    fields: ['name', 'value'],
+                    data: [['已回复', 3], ['未回复', 0]]
+                }),
+                minChars: 0,
+                queryMode: 'local',
+                getCondition: function(v) {
+                    return v == 3 ? ('mailbox_status = 3') : ('mailbox_status != 3 or mailbox_status is null')
+                }
+            }, {
+                xtype: 'combobox',
+                fieldLabel: '忽略状态',
+                name: 'mb_ignore',
+                displayField: 'name',
+                valueField: 'value',
+                editable: false,
+                value: '0',
+                store: Ext.create('Ext.data.ArrayStore', {
+                    fields: ['name', 'value'],
+                    data: [['已忽略', 1], ['正常', 0]]
+                }),
+                minChars: 0,
+                queryMode: 'local',
+                getCondition: function(v) {
+                    return v == 1 ? ('mb_ignore = 1') : ('mb_ignore != 1 or mb_ignore is null')
+                }
             }],
 
             gridConfig: {
-                idField: null,
+                idField: 'mailbox_id',
                 codeField: null,
                 statusCodeField: null,
                 dataUrl: me.dataUrl,
@@ -25,103 +97,88 @@ Ext.define('school.view.interaction.mailbox.List', {
                 totalProperty: 'data.total',
                 actionColumn: [],
                 selModel: {
-                    type: 'cellmodel'
+                    checkOnly: true,
+                    type: 'checkboxmodel',
+                    mode: "MULTI",
+                    ignoreRightMouseSelection: false
                 },
                 hiddenTools: false,
                 disableDetail: true,
                 toolBtns: [{
                     xtype: 'button',
-                    text: '导出'
+                    text: '忽略',
+                    handler: 'onIgnoreClick'
                 }, {
                     xtype: 'button',
-                    text: '批量回复'
+                    text: '取消忽略',
+                    handler: 'onUnIgnoreClick'
                 }, {
                     xtype: 'button',
                     text: '删除'
                 }],
                 columns : [{
+                    text: 'ID',
+                    dataIndex: 'mailbox_id',
+                    hidden: true
+                }, {
                     text: '标题',
-                    dataIndex: 'mailboxTitle',
+                    dataIndex: 'mailbox_title',
                     width: 120
                 }, {
                     text: '内容',
-                    dataIndex: 'mailboxContext',
+                    dataIndex: 'mailbox_context',
                     width: 300
                 }, {
                     xtype: 'datecolumn',
                     text: '日期',
-                    dataIndex: 'createDate'
+                    dataIndex: 'create_date',
+                    width: 150
                 }, {
                     text: '提出人',
-                    dataIndex: 'mailboxCreator',
+                    dataIndex: 'mb_creatorname',
                     width: 120
+                }, {
+                    text: '年级',
+                    dataIndex: 'mb_grade'
+                }, {
+                    text: '班级',
+                    dataIndex: 'mb_class'
+                }, {
+                    text: '学生',
+                    dataIndex: 'mb_student'
+                }, {
+                    text: '回复状态',
+                    dataIndex: 'mailbox_status',
+                    renderer: function(v, m, r) {
+                        return v == 3 ? '已回复' : '未回复';
+                    }
+                }, {
+                    text: '忽略状态',
+                    dataIndex: 'mb_ignore',
+                    renderer: function(v, m, r) {
+                        return v == 1 ? '已忽略' : '正常';
+                    }
+                }, {
+                    text: '回复信息',
+                    dataIndex: 'mb_reply',
+                    width: 250
+                }, {
+                    xtype:'actioncolumn',
+                    width:70,
+                    dataIndex:'actioncolumn',
+                    text:'操作',
+                    align: 'center',
+                    items: [{
+                        tooltip: '回复',
+                        iconCls: 'x-fa fa-pencil fa-fw',
+                        scope:this
+                    }],
+                    listeners: {
+                        click: 'onActionClick'
+                    }
                 }]
             },
         });
         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;
-     },
+    }
 });

+ 195 - 0
frontend/pc-web/app/view/Interaction/mailbox/ListController.js

@@ -0,0 +1,195 @@
+Ext.define('school.view.interaction.mailbox.ListController', {
+    extend: 'school.view.core.base.BasePanelController',
+    alias: 'controller.interaction-mailbox-list',
+
+    onActionClick: function(tableView, td, row, col, e, record, tr) {
+        let me = this;
+        me.onReply(record.data);
+        // let targetCls = event.target.classList;
+        // if(targetCls.contains('fa-pencil')) {
+        //     me.modifyClick(record.data);
+        // }else if(targetCls.contains('fa-trash-o')) {
+        //     me.onDeleteClick(record.data.subject_id);
+        // }
+    },
+
+    onReply: function (data) {
+        let me = this,
+        tab = school.util.BaseUtil.getCurrentTab(),
+        view = me.getView(),
+        win = Ext.getCmp('reply-win');
+
+        if (!win) {
+            win = Ext.create('Ext.window.Window', {
+                title: '回复',
+                width: tab.getBox().width * 0.8,
+                height: tab.getBox().height * 0.8,
+                id: 'reply-win',
+                constrain: true,
+                modal: true,
+                bodyPadding: 10,
+                layout: 'fit',
+                scrollable: true,
+                items: [{
+                    xtype: 'form',
+                    layout: 'column',
+                    defaults: {
+                        margin: '0 0 10 0',
+                        columnWidth: 1
+                    },
+                    items: [{
+                        xtype: 'hidden',
+                        name: 'id',
+                    }, {
+                        xtype: 'textareafield',
+                        name: 'content',
+                        fieldLabel: '内容',
+                        readOnly: true,
+                    }, {
+                        xtype: 'textareafield',
+                        name: 'text',
+                        fieldLabel: '回复',
+                        allowBlank: false,
+                        maxLength: 500
+                    }],
+                    buttonAlign: 'center',
+                    buttons: [{
+                        text: '确定',
+                        formBind: true,
+                        handler: function () {
+                            let form = this.up('form');
+                            let id = form.getValues().id;
+                            let text = form.getValues().text;
+                            let url, params, headers;
+                            
+                            params = {
+                                id: id,
+                                msg: text
+                            };
+
+                            headers = {
+                                "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
+                            }
+
+                            view.setLoading(true);
+                            school.util.BaseUtil.request({
+                                // url: 'http://10.1.80.47:9520/api/school/principal/reply',
+                                url: '/api/school/principal/reply',
+                                method: 'POST',
+                                params: params,
+                                headers: headers
+                            }).then(function (res) {
+                                view.setLoading(false);
+                                win.close();
+                                school.util.BaseUtil.showSuccessToast('添加成功');
+                                view.refresh();
+                            }).catch(function (e) {
+                                view.setLoading(false);
+                                school.util.BaseUtil.showErrorToast('添加失败: ' + e.message);
+                            });
+                        }
+                    }]
+                }]
+            });
+            tab.add(win);
+            win.setTitle(data.mailbox_title);
+            win.down('form').getForm().findField('id').setValue(data.mailbox_id);
+            win.down('form').getForm().findField('content').setValue(data.mailbox_context);
+            win.down('form').getForm().findField('text').setValue(data.mb_reply);
+        }
+        win.show();
+    },
+
+    onIgnoreClick: function() {
+        let me = this,
+        view = me.getView();
+
+        let grid = view.down('grid'),
+        selectedRecords = grid.getSelection();
+        let data, flag = false;
+
+        data = selectedRecords.map(function(r) {
+            if(r.get('mb_ignore') == 1) {
+                flag = true;
+                return;
+            }
+            return {
+                id: r.get('mailbox_id')
+            };
+        });
+
+        if(data.length == 0) {
+            school.util.BaseUtil.showErrorToast('请先勾选需要删除的记录');
+            return;
+        }
+
+        if(flag) {
+            school.util.BaseUtil.showErrorToast('不可包含已忽略记录');
+            return;
+        }
+
+        grid.setLoading(true);
+        school.util.BaseUtil.request({
+            // url: 'http://10.1.80.47:9520/api/school/principal/batchIgnore',
+            url: '/api/school/principal/batchIgnore',
+            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);
+        });
+    },
+
+    onUnIgnoreClick: function() {
+        let me = this,
+        view = me.getView();
+
+        let grid = view.down('grid'),
+        selectedRecords = grid.getSelection();
+        let data, flag = false;
+
+        data = selectedRecords.map(function(r) {
+            if(r.get('mb_ignore') != 1) {
+                flag = true;
+                return;
+            }
+            return {
+                id: r.get('mailbox_id')
+            };
+        });
+
+        if(data.length == 0) {
+            school.util.BaseUtil.showErrorToast('请先勾选需要删除的记录');
+            return;
+        }
+
+        if(!!flag) {
+            school.util.BaseUtil.showErrorToast('不可包含未忽略记录');
+            return;
+        }
+
+        grid.setLoading(true);
+        school.util.BaseUtil.request({
+            // url: 'http://10.1.80.47:9520/api/school/principal/batchUnIgnore',
+            url: '/api/school/principal/batchUnIgnore',
+            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);
+        });
+    },
+
+});

+ 3 - 3
frontend/pc-web/app/view/Interaction/notice/List.js

@@ -5,7 +5,7 @@ Ext.define('school.view.interaction.notice.List', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'interaction-notice-list',
 
-    // dataUrl: 'http://10.1.80.47:9560/notice/list',
+    // dataUrl: 'http://10.1.80.180:9520/api/school/notice/list',
     dataUrl: '/api/school/notice/list',
     _title: '学校通知',
 
@@ -21,7 +21,7 @@ Ext.define('school.view.interaction.notice.List', {
                 }
             }, {
                 xtype: 'textfield',
-                name: 'notify_creator',
+                name: 'creator',
                 fieldLabel: '发布人'
             }, {
                 xtype: 'combobox',
@@ -127,7 +127,7 @@ Ext.define('school.view.interaction.notice.List', {
                     width: 300
                 }, {
                     text: '发布人',
-                    dataIndex: 'notify_creator',
+                    dataIndex: 'creator',
                     width: 150
                 }, {
                     text: '发布状态',

+ 10 - 2
frontend/pc-web/app/view/Interaction/notice/SchoolNotice.js

@@ -12,9 +12,9 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
     _title: '学校通知',
     _idField: 'notify_id',
     _codeField: null,
-    // _readUrl: 'http://10.1.80.47:9560/notice/read',
+    // _readUrl: 'http://10.1.80.180:9520/api/school/notice/read',
     _readUrl: '/api/school/notice/read',
-    // _saveUrl: 'http://10.1.80.47:9560/notice/save',
+    // _saveUrl: 'http://10.1.80.180:9520/api/school/notice/save',
     _saveUrl: '/api/school/notice/save',
     _deleteUrl: '/api/school/notice/delete',
     initId: 0,
@@ -27,6 +27,13 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
             }, {
                 xtype: "textfield",
                 name: "notify_creator",
+                fieldLabel: "发布人id",
+                columnWidth: 0.5,
+                defaultValue: school.util.BaseUtil.getCurrentUser().id,
+                hidden: true
+            }, {
+                xtype: "textfield",
+                name: "creator",
                 fieldLabel: "发布人",
                 columnWidth: 0.5,
                 defaultValue: school.util.BaseUtil.getCurrentUser().username,
@@ -75,6 +82,7 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
             toolBtns: [{
                 xtype: 'button',
                 text: '发布',
+                hidden: true,
                 bind: {
                     hidden: '{!notify_id}'
                 },

+ 6 - 2
frontend/pc-web/app/view/Interaction/timetable/Detail.js

@@ -7,9 +7,9 @@ Ext.define('school.view.interaction.timetable.Detail', {
     _title: '课程表',
     _idField: 'id',
     _codeField: null,
-    // _readUrl: 'http://10.1.80.36:9520/api/school/curriculum/read',
+    // _readUrl: 'http://10.1.80.47:9520/api/school/curriculum/read',
     _readUrl: '/api/school/curriculum/read',
-    // _saveUrl: 'http://10.1.80.36:9520/api/school/curriculum/save',
+    // _saveUrl: 'http://10.1.80.47:9520/api/school/curriculum/save',
     _saveUrl: '/api/school/curriculum/save',
     _deleteUrl: '/api/school/curriculum/delete',
     initId: 0,
@@ -253,5 +253,9 @@ Ext.define('school.view.interaction.timetable.Detail', {
         menu.setVisible(false);
         let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), record.get('date'), Ext.Date.MINUTE));
         me.CLASS_TIME = classTime;
+    },
+
+    refresh: function() {
+        Ext.StoreMgr.get('store_subject').load();
     }
 });

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

@@ -7,7 +7,7 @@ Ext.define('school.view.interaction.timetable.List', {
 
     controller: 'interaction-timetable-list',
 
-    // dataUrl: 'http://10.1.80.36:9520/api/school/curriculum/list',
+    // dataUrl: 'http://10.1.80.47:9520/api/school/curriculum/list',
     dataUrl: '/api/school/curriculum/list',
     _title: '课程表',
     caller: 'Curriculum',

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

@@ -328,6 +328,7 @@ Ext.define('school.view.basic.class.ClassInfoController', {
                             }).then(function(res) {
                                 view.setLoading(false);
                                 currentNode.set('text', text);
+                                currentNode.set('pathText', text);
                                 currentNode.commit();
                                 win.close();
                                 listCard.showNode(currentNode);

+ 1 - 1
frontend/pc-web/app/view/core/base/BasePanel.js

@@ -134,7 +134,7 @@ Ext.define('school.view.core.base.BasePanel', {
             value = item.value,
             condition;
 
-            if(value&&value!=''){
+            if(value !== undefined && value !== null && value !== ''){
                 if(typeof func == 'function') {
                     condition = {
                         type: 'condition',

+ 22 - 18
frontend/pc-web/app/view/core/form/FormPanelController.js

@@ -13,24 +13,28 @@ Ext.define('school.view.core.form.FormPanelController', {
     },
 
     refresh: function() {
-        var me = this,
-        form = me.getView(),
-        xtype = form.xtype,
-        _config = {
-            initId: form.initId,
-        },
-        currentTab = school.util.BaseUtil.getCurrentTab();
-        
-        var view = {
-            _config: _config,
-            xtype: xtype
-        };
-        Ext.apply(view, _config);
-        
-        Ext.suspendLayouts();
-        currentTab.removeAll();
-        currentTab.add(view);
-        Ext.resumeLayouts(true);
+        try {
+            var me = this,
+            form = me.getView(),
+            xtype = form.xtype,
+            _config = {
+                initId: form.initId,
+            },
+            currentTab = school.util.BaseUtil.getCurrentTab();
+            
+            var view = {
+                _config: _config,
+                xtype: xtype
+            };
+            Ext.apply(view, _config);
+            
+            Ext.suspendLayouts();
+            currentTab.removeAll();
+            currentTab.add(view);
+            Ext.resumeLayouts(true);
+        }catch(e) {
+            console.error(e);
+        }
     },
 
     add: function(){

+ 21 - 0
frontend/pc-web/app/view/core/form/field/SubjectComboBox.js

@@ -0,0 +1,21 @@
+Ext.define('school.view.core.form.field.SubjectComboBox', {
+    extend: 'Ext.form.field.ComboBox',
+    alias: 'widget.subjectcombo',
+
+    fieldLabel: '学科',
+    displayField: 'subject_name',
+    valueField: 'subject_id',
+    editable: true,
+    minChars: 0,
+    queryMode: 'local',
+    initComponent: function() {
+        var me = this;
+        var store = Ext.StoreMgr.get('store_subject');
+        store.load();
+        Ext.apply(me, {
+            store: store,
+        });
+
+        me.callParent(arguments);
+    }
+});

+ 6 - 11
frontend/pc-web/app/view/core/grid/column/SubjectColumn.js

@@ -6,23 +6,18 @@ Ext.define('school.view.core.grid.column.SubjectColumn', {
     xtype: 'subjectcolumn',
 
     editor: {
-        xtype: 'combobox',
-        displayField: 'name',
-        valueField: 'code',
-        store: {
-            type: 'store_subject'
-        },
-        queryMode: 'local'
+        xtype: 'subjectcombo',
+        fieldLabel: null
     },
     renderer: function(v, m , r) {
         let store = m.column.getEditor().store;
-        let idx = store.find('code', v);
+        let idx = store.find('subject_id', v);
 
         if(idx != -1) {
             let subject = store.getAt(idx);
-            v = subject.get('name');
+            return subject.get('subject_name');
+        }else {
+            return null
         }
-
-        return v;
     }
 });

+ 12 - 8
frontend/wechat-web/src/modules/principalMailbox/PrincipalMailbox.jsx

@@ -14,6 +14,7 @@ import {fetchPost} from "../../utils/fetchRequest";
 import {connect} from 'react-redux'
 
 const {TextArea} = Input
+
 class PrincipalMailbox extends Component {
 
     constructor() {
@@ -88,16 +89,19 @@ class PrincipalMailbox extends Component {
         }
 
         let params = {
-                mailboxTitle: "校长信箱",
-                mailboxContext: suggest,
-                mailboxFiles: JSON.stringify(fileUrls),
-                mailboxCreator: this.props.userInfo.user.userFunId,
-                isAnonymity: isAnonymous ? 2 : 1,
-                mailboxStatus:1
+            mailboxTitle: "校长信箱",
+            mailboxContext: suggest,
+            mailboxFiles: JSON.stringify(fileUrls),
+            mailboxCreator: this.props.userInfo.user.userFunId,
+            isAnonymity: isAnonymous ? 2 : 1,
+            mailboxStatus: 1,
+            mbStuid:this.props.userInfo.user.student.stuId,
+            mbStudent:this.props.userInfo.user.student.stuName,
+
         }
-        console.log("params",params)
+        console.log("params", params)
         fetchPost(API.PRINCIPAL_MAILBOX, {
-            mailboxString:JSON.stringify(params)
+            mailboxString: JSON.stringify(params)
         }).then(response => {
             Toast.hide()
             Toast.success('提交成功,谢谢您的建议!')