浏览代码

merge scoreserviceimpl冲突

guq 6 年之前
父节点
当前提交
216e3e111b
共有 60 个文件被更改,包括 583 次插入158 次删除
  1. 2 0
      applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/po/AccessControlRecord.java
  2. 4 3
      applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/service/impl/AccessControlServiceImpl.java
  3. 6 0
      applications/device/device-server/src/main/resources/mapper/AccessControlRecordMapper.xml
  4. 2 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/CurriculumServiceImpl.java
  5. 2 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/StudentServiceImpl.java
  6. 3 28
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/ScoreServiceImpl.java
  7. 1 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/exception/BizExceptionCode.java
  8. 58 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/InOutRecordDO.java
  9. 14 4
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/controller/WxOutInRecordController.java
  10. 8 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/WxOutInRecordService.java
  11. 22 14
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxClazzCurriculumServiceImpl.java
  12. 7 4
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxMeetingServiceImpl.java
  13. 2 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxNotifyServiceImpl.java
  14. 7 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java
  15. 17 3
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOutInRecordServiceImpl.java
  16. 24 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxUserServiceImpl.java
  17. 3 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/mapper/WxOutInRecordMapper.java
  18. 2 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/support/RemindTask.java
  19. 1 1
      applications/school/school-server/src/main/resources/mapper/HomeWorkMapper.xml
  20. 4 0
      applications/school/school-server/src/main/resources/mapper/WxOutInRecordMapper.xml
  21. 0 1
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/TransfersController.java
  22. 2 1
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/WxPushController.java
  23. 2 5
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java
  24. 3 0
      base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java
  25. 9 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/smartschool/account/dto/AccountDTO.java
  26. 10 0
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/controller/AccountController.java
  27. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/mapper/AccountMapper.java
  28. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/AccountService.java
  29. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/impl/AccountServiceImpl.java
  30. 4 0
      base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml
  31. 3 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/smartschool/auth/controller/AuthController.java
  32. 1 9
      frontend/pc-web/app/view/Interaction/homework/Release.js
  33. 15 0
      frontend/pc-web/app/view/Interaction/homework/ReleaseModel.js
  34. 7 1
      frontend/pc-web/app/view/Interaction/notice/SchoolNotice.js
  35. 15 0
      frontend/pc-web/app/view/Interaction/notice/SchoolNoticeModel.js
  36. 25 3
      frontend/pc-web/app/view/Interaction/timetable/Detail.js
  37. 7 9
      frontend/pc-web/app/view/Interaction/timetable/DetailModel.js
  38. 10 2
      frontend/pc-web/app/view/Interaction/timetable/List.js
  39. 2 2
      frontend/pc-web/app/view/basic/staff/StaffDetail.js
  40. 1 1
      frontend/pc-web/app/view/basic/student/StudentDetail.js
  41. 5 1
      frontend/pc-web/app/view/core/form/field/DetailGridField.js
  42. 1 0
      frontend/pc-web/app/view/core/form/field/FileField.js
  43. 6 15
      frontend/pc-web/app/view/setting/operatelog/OperateLog.js
  44. 53 3
      frontend/pc-web/overrides/form/field/ComboBox.js
  45. 2 2
      frontend/wechat-web/src/configs/api.config.js
  46. 2 1
      frontend/wechat-web/src/configs/router.config.js
  47. 81 8
      frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail.css
  48. 0 3
      frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail.js
  49. 55 0
      frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail1.jsx
  50. 1 1
      frontend/wechat-web/src/modules/hiPages/approvel-detail/ItemApprovel.js
  51. 6 0
      frontend/wechat-web/src/modules/hiPages/approvel/Approvel.css
  52. 12 3
      frontend/wechat-web/src/modules/hiPages/approvel/Approvel.js
  53. 4 4
      frontend/wechat-web/src/modules/home/HomePage.jsx
  54. 22 11
      frontend/wechat-web/src/modules/homework/AssignmentDetailPage.js
  55. 2 2
      frontend/wechat-web/src/modules/leave/LeaveItem.js
  56. 1 0
      frontend/wechat-web/src/modules/leave/LeaveListPage.css
  57. 1 1
      frontend/wechat-web/src/modules/leave/LeaveListPage.js
  58. 2 2
      frontend/wechat-web/src/style/css/consume-re.css
  59. 二进制
      frontend/wechat-web/src/style/imgs/no_data.png
  60. 1 1
      frontend/wechat-web/src/utils/common.js

+ 2 - 0
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/po/AccessControlRecord.java

@@ -48,4 +48,6 @@ public class AccessControlRecord implements Serializable{
     private Integer record_type;
 
     private Date record_date;
+
+    private String file_id;           //图片path
 }

+ 4 - 3
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/service/impl/AccessControlServiceImpl.java

@@ -50,7 +50,7 @@ public class AccessControlServiceImpl implements AccessControlService{
 
     @Override
     public void onAccessControlEvent(AccessControlInfo info) {
-        Long fileId = null;
+        String filePath = null;
         String cardNo = info.getCardNo();
         if (StringUtils.isEmpty(cardNo)) {
             return;
@@ -72,7 +72,7 @@ public class AccessControlServiceImpl implements AccessControlService{
             Result<FileInfoDTO> fileInfo = null;
             try {
                 fileInfo = fileApi.upload(0L, file);
-                fileId = fileInfo.getData().getId();
+                filePath = fileInfo.getData().getFullPath();
             }catch (Exception ex) {
                 logger.error(ex.getMessage());
             }
@@ -94,7 +94,8 @@ public class AccessControlServiceImpl implements AccessControlService{
         record.setRecord_type(type);
         record.setStu_id(studentInfo.getStuId());
         record.setStu_number(studentInfo.getStuNumber());
-        record.setRecord_name(studentInfo.getStuName() + (type == 1 ? "进入" : "出去"));
+        record.setRecord_name(studentInfo.getStuName());
+        record.setFile_id(filePath);
         accessControlRecordMapper.insertRecordSelective(record);
         /**
          * 3、推送消息到消息服务器(微信服务监听此消息发送微信消息)

+ 6 - 0
applications/device/device-server/src/main/resources/mapper/AccessControlRecordMapper.xml

@@ -52,6 +52,9 @@
             <if test="record_date != null" >
                 record_date,
             </if>
+            <if test="file_id != null" >
+                file_id,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides="," >
             <if test="record_name != null" >
@@ -103,6 +106,9 @@
             <if test="record_date != null" >
                 #{record_date,jdbcType=TIMESTAMP},
             </if>
+            <if test="file_id != null" >
+              #{file_id, jdbcType=VARCHAR},
+            </if>
         </trim>
     </insert>
 

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

@@ -243,7 +243,7 @@ public class CurriculumServiceImpl implements CurriculumService {
                     DataImportDetail singleDataImportDetail = dataImportMapper.selectMainBycode(key, id, schoolId);
                     CurriculumDTO curriculumDTO = JSON.parseObject(singleDataImportDetail.getDd_maindata(), CurriculumDTO.class);
                     //更新数据,将中文转换成ID
-                    curriculumDTO.setStatus("1");
+                    curriculumDTO.setStatus("0");
                     curriculumDTO.setCreateTime(new Date());
                     curriculumDTO.setClazzId(String.valueOf(clazzId));
                     curriculumDTO.setSchoolId(schoolId);
@@ -260,7 +260,7 @@ public class CurriculumServiceImpl implements CurriculumService {
                         //1. 替换课程名称为ID
                         List<SubjectDO> subjectDOList = curriculumMapper.selectSubject(schoolId);
                         curriculumDetailDTO.setmId(mainId);
-                        curriculumDetailDTO.setStatus(1);
+                        curriculumDetailDTO.setStatus(0);
                         curriculumDetailDTO.setSchoolId(schoolId);
                         curriculumDetailDTO.setClazzId(clazzId);
                         curriculumDetailDTO.setLessons(detno++);

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

@@ -197,9 +197,9 @@ public class StudentServiceImpl implements StudentService{
                 json = JSONObject.parseObject(main.getDd_maindata());
                 if (null != json) {
                     if ("男".equals(json.get("stu_sex"))) {
-                        json.put("stu_sex", 0);
-                    }else if ("女".equals(json.get("stu_sex"))) {
                         json.put("stu_sex", 1);
+                    }else if ("女".equals(json.get("stu_sex"))) {
+                        json.put("stu_sex", 2);
                     }else if(!"男".equals(json.get("stu_sex")) && !"女".equals(json.get("stu_sex"))){
                         throw new BizException(BizExceptionCode.ILLEGAL_Gender);
                     }

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

@@ -60,6 +60,9 @@ public class ScoreServiceImpl implements ScoreService{
 
     final static String TEMPLATEID = "GwR7hZ9ya7ghAiH3PR-ws1l24P_ETE3phYJBjKTcpKY";
 
+    @Autowired
+    private SubjectMapper subjectMapper;
+
     @Override
     public PageInfo<ScoreImportList> getListData(PageRequest page, ListReqDTO listReqDTO) {
         PageHelper.startPage(page.getNumber(), page.getSize());
@@ -215,13 +218,8 @@ public class ScoreServiceImpl implements ScoreService{
         List<StuScore> appScores = new ArrayList<StuScore>();
         StuScore appScore = null;
         Long school_id = BaseContextHolder.getSchoolId();
-        //学校信息
-        SysSchool school = sysSchoolMapper.selectByPrimaryKey(BaseContextHolder.getSchoolId());
-        //表单数据
         ScoreImport main = scoreMapper.selectByPrimaryKey(id);
         List<ScoreImportdetail> details = scoreMapper.selectDetail(id);
-        //消息内容
-        List<MessageInfoDTO> msgs = new ArrayList<>();
         for (ScoreImportdetail detail : details) {
             appScore = new StuScore();
             appScore.setSchool_id(school_id);
@@ -239,29 +237,6 @@ public class ScoreServiceImpl implements ScoreService{
             appScores.add(appScore);
         }
         scoreMapper.batchInsert(appScores);
-        //微信推送
-        List<ScoreNoticer> noticers = scoreMapper.selectWechatMsg(id);
-        noticers.forEach(noticer -> {
-            MessageInfoDTO msg = new MessageInfoDTO();
-            msg.setTitle("您好,请查收您小孩" + noticer.getStuName() + "的成绩单");
-            msg.setKeyword1(noticer.getStuName());
-            msg.setKeyword2(noticer.getStuNo());
-            msg.setKeyword3(main.getSi_examtitle());
-            msg.setKeyword4(DateUtils.format(main.getSi_examdate(),"yyyy-MM-dd"));
-            msg.setKeyword5(school.getSchool_name());
-            msg.setRemark("成绩为:" + noticer.getScore());
-            msg.setTemplateId(TEMPLATEID);
-            msg.setTouser(noticer.getOpenid());
-            msg.setAppId(school.getSchool_appid());
-            msg.setSecret(school.getSchool_secret());
-            msgs.add(msg);
-        });
-        if (msgs.size() > 0) {
-            TransferDTO transferDTO = new TransferDTO();
-            transferDTO.setData(msgs);
-            //调用推送接口
-            wechatApi.largeMessages(transferDTO);
-        }
         //更新已转标志
         scoreMapper.updateTurnPublish(id);
     }

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/exception/BizExceptionCode.java

@@ -17,7 +17,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     NONCLAZZ(500005, "班级名称不存在"),
     REPEAT_TEACHER_NUMBER(500006, "教师工号重复"),
     NONSTU(500006, "学生不存在"),
-    EXISTS_TEACHER(500004,"存在教师,无法删除"),
+    EXISTS_TEACHER(500004,"存在任课教师,无法删除"),
     EXISTS_CURRICULUM(500005,"存在课表,无法删除"),
     EXISTS_TEACHER_CLASS(500006,"存在任课班级,无法删除"),
     TEACHERS_EXISTS_CLASS(500006,"%s存在任课班级,无法删除"),

+ 58 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/InOutRecordDO.java

@@ -0,0 +1,58 @@
+package com.usoftchina.smartschool.school.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 出入校记录详细
+ * @Author chenwei
+ * @Date 2019-03-13
+ */
+public class InOutRecordDO implements Serializable {
+
+    private String recordName;
+    private Date recordDate;
+    private String recordType;
+    private String recordFile;
+    private String weekDays;
+
+    public String getWeekDays() {
+        return weekDays;
+    }
+
+    public void setWeekDays(String weekDays) {
+        this.weekDays = weekDays;
+    }
+
+    public String getRecordFile() {
+        return recordFile;
+    }
+
+    public void setRecordFile(String recordFile) {
+        this.recordFile = recordFile;
+    }
+
+    public String getRecordName() {
+        return recordName;
+    }
+
+    public void setRecordName(String recordName) {
+        this.recordName = recordName;
+    }
+
+    public Date getRecordDate() {
+        return recordDate;
+    }
+
+    public void setRecordDate(Date recordDate) {
+        this.recordDate = recordDate;
+    }
+
+    public String getRecordType() {
+        return recordType;
+    }
+
+    public void setRecordType(String recordType) {
+        this.recordType = recordType;
+    }
+}

+ 14 - 4
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/controller/WxOutInRecordController.java

@@ -5,10 +5,7 @@ import com.usoftchina.smartschool.school.wxschool.basic.service.WxOutInRecordSer
 import com.usoftchina.smartschool.school.wxschool.utils.ResultBean;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -44,6 +41,19 @@ public class WxOutInRecordController {
 		}
 	}
 
+    /**
+     * 获取出入校记录
+     * @return
+     */
+    @GetMapping("/inout/detail/{id}")
+    public ResultBean getInOutDetail(@PathVariable("id") Long id){
+        try {
+            return new ResultBean(outInRecordService.getInOutRecordById(id));
+        }catch (Exception e){
+            return new ResultBean(e);
+        }
+    }
+
 	/**
 	 * 通知详情
 	 * @param recordId

+ 8 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/WxOutInRecordService.java

@@ -1,5 +1,6 @@
 package com.usoftchina.smartschool.school.wxschool.basic.service;
 
+import com.usoftchina.smartschool.school.po.InOutRecordDO;
 import com.usoftchina.smartschool.school.po.OutInRecordDO;
 import org.apache.ibatis.annotations.Param;
 
@@ -23,6 +24,13 @@ public interface WxOutInRecordService {
 	 */
 	public Map<String, Object> selectRecordOutgoingListByStuId(@Param("stuId") Long stuId, @Param("pageIndex") Integer pageIndex, @Param("pageSize") Integer pageSize);
 
+    /**
+     * 获取出入校详情
+     * @param id
+     * @return
+     */
+    InOutRecordDO getInOutRecordById(Long id);
+
 	/**
 	 * 通知详情
 	 * @param recordId

+ 22 - 14
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxClazzCurriculumServiceImpl.java

@@ -14,10 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 @Service
@@ -123,23 +120,34 @@ public class WxClazzCurriculumServiceImpl implements WxClazzCurriculumService {
 	private Map<String,Object> getDetail(ClazzCurriculumDO cc,Long subjectId){
 		SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
 		Map<String, Object> hashMap = new HashMap<>();
-		hashMap.put("startTime",dateFormat.format(cc.getCurStartTime()));
-		hashMap.put("endTime",dateFormat.format(cc.getCurEndTime()));
+		Date curStartTime = cc.getCurStartTime();
+		if (ObjectUtils.isNotEmpty(curStartTime)){
+			hashMap.put("startTime",dateFormat.format(curStartTime));
+		}
+		Date curEndTime = cc.getCurEndTime();
+		if (ObjectUtils.isNotEmpty(curEndTime)){
+			hashMap.put("endTime",dateFormat.format(curEndTime));
+		}
+
 		SubjectDO subjectDO = subjectMapper.get(subjectId);
 		if (ObjectUtils.isNotEmpty(subjectDO)){
 			hashMap.put("subjectName",subjectDO.getSubjectName());
 		}
-		TeacherClazzDO teacher1 = wxTeacherClazzMapper.getTeacher(cc.getClazzId(), subjectId);
-		if (ObjectUtils.isNotEmpty(teacher1)){
-			Long teacherId = teacher1.getTeacherId();
-			if (ObjectUtils.isNotEmpty(teacherId)){
-				TeacherDO teacherDO1 = wxTeacherMapper.get(teacherId);
-				if (ObjectUtils.isNotEmpty(teacherDO1)){
-					hashMap.put("teacherName",teacherDO1.getTeacherName());
-					hashMap.put("teacherPhoto",teacherDO1.getTeacherPhoto());
+		Long clazzId = cc.getClazzId();
+		if (ObjectUtils.isNotEmpty(clazzId)){
+			TeacherClazzDO teacher1 = wxTeacherClazzMapper.getTeacher(clazzId, subjectId);
+			if (ObjectUtils.isNotEmpty(teacher1)){
+				Long teacherId = teacher1.getTeacherId();
+				if (ObjectUtils.isNotEmpty(teacherId)){
+					TeacherDO teacherDO1 = wxTeacherMapper.get(teacherId);
+					if (ObjectUtils.isNotEmpty(teacherDO1)){
+						hashMap.put("teacherName",teacherDO1.getTeacherName());
+						hashMap.put("teacherPhoto",teacherDO1.getTeacherPhoto());
+					}
 				}
 			}
 		}
+
 		return hashMap;
 	}
 }

+ 7 - 4
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxMeetingServiceImpl.java

@@ -49,11 +49,14 @@ public class WxMeetingServiceImpl implements WxMeetingService {
 	public String createMeeting(String jsonMeeting) throws Exception {
 		JSONObject json = JSONObject.parseObject(jsonMeeting);
 		MeetingDO meetingDO = new MeetingDO();
-		meetingDO.setMeetingName(json.getString("meetingName"));
-		meetingDO.setMeetingDetails(json.getString("meetingDetails"));
+		String meetingName = json.getString("meetingName");
+		meetingDO.setMeetingName(meetingName);
+		String meetingDetails = json.getString("meetingDetails");
+		meetingDO.setMeetingDetails(meetingDetails);
 		Long creator = json.getLong("meetingCreator");
 		meetingDO.setMeetingCreator(creator);
-		meetingDO.setMeetingAddress(json.getString("meetingAddress"));
+		String meetingAddress = json.getString("meetingAddress");
+		meetingDO.setMeetingAddress(meetingAddress);
 		meetingDO.setCreateDate(new Date());
 		Date startDate = DateFormatUtil.string2Date(json.getString("startDate"));
 		meetingDO.setStartDate(startDate);
@@ -98,7 +101,7 @@ public class WxMeetingServiceImpl implements WxMeetingService {
 							TemplateDO templateDO = wxTemplateMapper.getByAppid(schoolAppid);
 							if (ObjectUtils.isNotEmpty(templateDO)){
 								String temMeeting = templateDO.getTemMeeting();
-								wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),openid , temMeeting, "您好,您有一条新的会议通知", meetingDO.getMeetingName(), simpleDateFormat.format(meetingDO.getStartDate()), meetingDO.getMeetingAddress(), "-", "点击查看详情",  wechatUrl + "/meet-detail/" + meetingDO.getMeetingId()+"?teacherId="+l);
+								wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),openid , temMeeting, "您好,您有一条新的会议通知", meetingName, simpleDateFormat.format(meetingDO.getStartDate()), meetingAddress, "-", "点击查看详情",  wechatUrl + "/meet-detail/" + meetingDO.getMeetingId()+"?teacherId="+l);
 
 							}
 

+ 2 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxNotifyServiceImpl.java

@@ -102,6 +102,7 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 					notifyrecordsMapper.save(notifyrecordsDO);
 					TeacherDO teacherDO = teacherMapper.get(l);
 					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
+					String schoolName = schoolDO.getSchoolName();
 					String teacherName = teacherMapper.get(notifyCreator).getTeacherName();
 					if (ObjectUtils.isNotEmpty(schoolDO)){
 						String schoolAppid = schoolDO.getSchoolAppid();
@@ -110,7 +111,7 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 							if (ObjectUtils.isNotEmpty(templateDO)){
 								String temNotify = templateDO.getTemNotify();
 								try {
-									wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), temNotify, "您好,您有一条通知", schoolDO.getSchoolName(),teacherName,format.format(new Date()),notifyDetails, "点击查看详情", wechatUrl + "/notifyDetail/teacher/"+notifyDO.getNotifyId()+"?teacherId="+l);
+									wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), temNotify, "您好,您有一条通知",schoolName ,teacherName,format.format(new Date()),notifyDetails, "点击查看详情", wechatUrl + "/notifyDetail/teacher/"+notifyDO.getNotifyId()+"?teacherId="+l);
 								}catch (Exception e){
 									e.printStackTrace();
 								}

+ 7 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java

@@ -41,6 +41,9 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
     @Autowired
     private WxTemplateMapper wxTemplateMapper;
 
+    @Autowired
+    private WxClazzMapper wxClazzMapper;
+
     @Value("${smartschool.domain.wechat}")
     private String wechatUrl;
 
@@ -87,7 +90,9 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
                 for (Long teacherId : longs) {
                     TeacherDO teacherDO = teacherMapper.get(teacherId);
                     SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-                    String stuName = studentMapper.get(lvProposer).getStuName();
+                    StudentDO studentDO = studentMapper.get(lvProposer);
+                    String stuName = studentDO.getStuName();
+                    String clazzName = wxClazzMapper.get(studentDO.getClazzId()).getClazzName();
                     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                     String date =format.format(leave.getStartDate())  + "至" + format.format(leave.getEndDate());
                     if (ObjectUtils.isNotEmpty(schoolDO)){
@@ -97,7 +102,7 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
                             if (ObjectUtils.isNotEmpty(templateDO)){
                                 String temLeave = templateDO.getTemLeave();
                                 try {
-                                    wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(), temLeave,"您好,学生的请假申请", stuName+";", date+";", leave.getLvDetails()+";", "-", "点击查看详情", wechatUrl + "/leavedetail/teacher/" + leave.getLvId());
+                                    wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(), temLeave,"您好,学生的请假申请", format.format(new Date()),clazzName , stuName, lvDetails, "点击查看详情", wechatUrl + "/leavedetail/teacher/" + leave.getLvId());
                                 }catch (Exception e){
                                     e.printStackTrace();
                                 }

+ 17 - 3
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOutInRecordServiceImpl.java

@@ -1,6 +1,7 @@
 package com.usoftchina.smartschool.school.wxschool.basic.service.impl;
 
 import com.usoftchina.smartschool.school.po.ClazzDO;
+import com.usoftchina.smartschool.school.po.InOutRecordDO;
 import com.usoftchina.smartschool.school.po.OutInRecordDO;
 import com.usoftchina.smartschool.school.po.StudentDO;
 import com.usoftchina.smartschool.school.wxschool.basic.service.WxOutInRecordService;
@@ -13,9 +14,7 @@ import com.usoftchina.smartschool.school.wxschool.utils.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 @Service
@@ -83,5 +82,20 @@ public class WxOutInRecordServiceImpl implements WxOutInRecordService {
 			throw new Exception("暂无数据");
 		}
 	}
+
+	@Override
+    public InOutRecordDO getInOutRecordById(Long id){
+        InOutRecordDO inOutRecordDO = outInRecordMapper.selectRecordById(id);
+        Date date = inOutRecordDO.getRecordDate();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+        int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+        if (weekday < 0) {
+            weekday = 0;
+        }
+        inOutRecordDO.setWeekDays(weekDays[weekday]);
+	    return inOutRecordDO;
+    }
 	
 }

+ 24 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxUserServiceImpl.java

@@ -352,6 +352,18 @@ public class WxUserServiceImpl implements WxUserService {
 		hashMap.put("openid",openid);
 		List<TeacherDO> teacherDOS = teacherMapper.list(hashMap);
 		if (ObjectUtils.isNotEmpty(teacherDOS)){
+			Long userId = teacherDOS.get(0).getUserId();
+			HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+			stringObjectHashMap.put("userId",userId);
+			List<ParentsDO> list = parentsMapper.list(stringObjectHashMap);
+			if (ObjectUtils.isNotEmpty(list)){
+				for (ParentsDO pt:list) {
+					if (ObjectUtils.isEmpty(pt.getOpenid())){
+						pt.setOpenid(openid);
+						parentsMapper.update(pt);
+					}
+				}
+			}
 			for (TeacherDO tc:teacherDOS) {
 				tc.setTeacherPhoto(headimgurl);
 				teacherMapper.update(tc);
@@ -368,6 +380,18 @@ public class WxUserServiceImpl implements WxUserService {
 		}
 		List<ParentsDO> parentsDOS = parentsMapper.list(hashMap);
 		if (ObjectUtils.isNotEmpty(parentsDOS)){
+			Long userId = parentsDOS.get(0).getUserId();
+			HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+			stringObjectHashMap.put("userId",userId);
+			List<TeacherDO> list = teacherMapper.list(stringObjectHashMap);
+			if (ObjectUtils.isNotEmpty(list)){
+				for (TeacherDO tc:list) {
+					if (ObjectUtils.isEmpty(tc.getOpenid())){
+						tc.setOpenid(openid);
+						teacherMapper.update(tc);
+					}
+				}
+			}
 			for (ParentsDO pt:parentsDOS) {
 				pt.setParentsPhoto(headimgurl);
 				parentsMapper.update(pt);

+ 3 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/mapper/WxOutInRecordMapper.java

@@ -1,5 +1,6 @@
 package com.usoftchina.smartschool.school.wxschool.mapper;
 
+import com.usoftchina.smartschool.school.po.InOutRecordDO;
 import com.usoftchina.smartschool.school.po.OutInRecordDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -18,4 +19,6 @@ public interface WxOutInRecordMapper {
 	OutInRecordDO get(Long recordId);
 
 	List<OutInRecordDO> selectOutInRecordDOListByStuId(@Param("stuId") Long stuId, @Param("pageStart") Integer pageStart, @Param("pageSize") Integer pageSize);
+
+    InOutRecordDO selectRecordById(Long id);
 }

+ 2 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/support/RemindTask.java

@@ -66,6 +66,7 @@ public class RemindTask extends TimerTask {
         String meetingNotifier = meetingDO.getMeetingNotifier();
         List<Long> longs = JSON.parseArray(meetingNotifier, Long.class);
         List<Long> list = removeDuplicate(longs);
+            String meetingName = meetingDO.getMeetingName();
         for (Long teacherId:list) {
             SchoolDO schoolDO = wxSchoolMapper.get(meetingDO.getSchoolId());
             String openid = teacherMapper.get(teacherId).getOpenid();
@@ -76,7 +77,7 @@ public class RemindTask extends TimerTask {
                     if (ObjectUtils.isNotEmpty(byAppid)){
                         String temMeeting = byAppid.getTemMeeting();
                         try {
-                            wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),openid , temMeeting, "您好,您有一条新的会议通知", meetingDO.getMeetingName(), simpleDateFormat.format(meetingDO.getStartDate()), meetingDO.getMeetingAddress(), "-", "点击查看详情", wechatUrl + "/meet-detail/" + meetingDO.getMeetingId()+"?teacherId="+teacherId);
+                            wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),openid , temMeeting, "您好,您有一条新的会议通知",meetingName , simpleDateFormat.format(meetingDO.getStartDate()), meetingDO.getMeetingAddress(), "-", "点击查看详情", wechatUrl + "/meet-detail/" + meetingDO.getMeetingId()+"?teacherId="+teacherId);
                         } catch (Exception e) {
                             e.printStackTrace();
                         }

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

@@ -278,7 +278,7 @@
     </select>
 
     <select id="homeWorkRelease" parameterType="long" resultType="integer">
-      select count(1) from sys_clazz left join task_notify on sys_clazz.clazz_name=task_notify.classz_name
+      select count(1) from sys_clazz left join task_notify on sys_clazz.clazz_nickname= concat (task_notify.grade_name,task_notify.classz_name)
       where sys_clazz.clazz_id = #{id} and task_notify.task_status=1
   </select>
 

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

@@ -17,4 +17,8 @@
 		limit #{pageStart},#{pageSize}
 	</select>
 
+  <select id="selectRecordById" resultType="com.usoftchina.smartschool.school.po.InOutRecordDO">
+    SELECT STUDENT.stu_name recordName,RECORD.record_date recordDate, RECORD.record_type recordType,RECORD.file_id recordFile  FROM OUT_IN_RECORD RECORD LEFT JOIN SYS_STUDENT STUDENT ON RECORD.STU_ID = STUDENT.STU_ID  WHERE RECORD.RECORD_ID = #{id}
+  </select>
+
 </mapper>

+ 0 - 1
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/TransfersController.java

@@ -53,7 +53,6 @@ public class TransfersController {
         if (StringUtils.isEmpty(data)) {
             return Result.error("信息为空");
         }
-        data = URLDecoder.decode(data, "UTF-8");
         List<MessageInfoDTO> messages = JsonUtils.fromJsonArray(data, MessageInfoDTO.class);
         sendService.sendOutMessages(messages);
         return Result.success();

+ 2 - 1
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/WxPushController.java

@@ -3,7 +3,8 @@ package com.usoftchina.smartschool.wechat.controller;
 import com.usoftchina.smartschool.wechat.dto.MessageInfoDTO;
 import com.usoftchina.smartschool.wechat.service.SendService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @author: guq

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

@@ -2,14 +2,12 @@ package com.usoftchina.smartschool.wechat.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.github.kevinsawicki.http.HttpRequest;
-import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
 import com.usoftchina.smartschool.base.Result;
 import com.usoftchina.smartschool.wechat.po.MessageInfo;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import com.usoftchina.smartschool.wechat.wxUtils.ObjectUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
@@ -28,13 +26,12 @@ public class WxPushServiceImpl implements WxPushService{
      */
     @Override
     public String wxPush(String appId,String secret,String openid, String templateId, String title, String keyword1, String keyword2, String keyword3, String keyword4, String remark, String url) {
-            if (ObjectUtils.isNotEmpty(openid)){
+        if (ObjectUtils.isNotEmpty(openid)){
                 String json="{\"touser\":\""+openid+"\","
                         + "\"template_id\":\""+templateId+"\","
                         + "\"url\":\""+""+url+""+"\","
                         + "\"data\":{"
-                        + "\"first\":{\"value\":\""+title+"\","
-                        +"\"color\":\"#173177\"},"
+                        + "\"first\":{\"value\":\""+title+"\",\"color\":\"#173177\"},"
                         + "\"keyword1\":{\"value\":\""+keyword1+"\",\"color\":\"#173177\"},"
                         + "\"keyword2\":{\"value\":\""+keyword2+"\",\"color\":\"#173177\"},"
                         + "\"keyword3\":{\"value\":\""+keyword3+"\",\"color\":\"#173177\"},"

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

@@ -24,6 +24,9 @@ public interface AccountApi {
     @GetMapping("/account/getUsername")
     Result<String> getUsername(@RequestParam(value = "schoolId") Long schoolId, @RequestParam(value = "userId") Long userId);
 
+    @GetMapping("/account/getTeacherId")
+    Result<Long> getTeacherId(@RequestParam(value = "schoolId") Long schoolId, @RequestParam(value = "userId") Long userId);
+
     @GetMapping("/account/register")
     Result<Long> register(@RequestBody AccountRegDTO accountRegDTO);
 

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/smartschool/account/dto/AccountDTO.java

@@ -11,6 +11,7 @@ import java.util.List;
 public class AccountDTO implements Serializable {
 
     private Long id;
+    private Long teacher_id;
     private String user_phone;
     private String user_code;
     private String salt;
@@ -18,6 +19,14 @@ public class AccountDTO implements Serializable {
     private Long school_id;
     private String username;
 
+    public Long getTeacher_id() {
+        return teacher_id;
+    }
+
+    public void setTeacher_id(Long teacher_id) {
+        this.teacher_id = teacher_id;
+    }
+
     public String getUsername() {
         return username;
     }

+ 10 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/controller/AccountController.java

@@ -87,6 +87,16 @@ public class AccountController {
         return Result.success(accountService.getUsername(schoolId, userId));
     }
 
+    /**
+     * 查询教师表,获取教师ID
+     * @param schoolId
+     * @param userId
+     * @return
+     */
+    @GetMapping("/getTeacherId")
+    public Result<Long> getTeacherId(Long schoolId, Long userId){
+        return Result.success(accountService.getTeacherId(schoolId, userId));
+    }
     /**
      * 重置密码
      * @param password

+ 8 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/mapper/AccountMapper.java

@@ -55,4 +55,12 @@ public interface AccountMapper {
      * @return
      */
     String selectTeacherName(@Param("schoolId") Long schoolId, @Param("userId") Long userId);
+
+    /**
+     * 查找教师ID
+     * @param schoolId
+     * @param userId
+     * @return
+     */
+    Long selectTeacherId(@Param("schoolId") Long schoolId, @Param("userId") Long userId);
 }

+ 8 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/AccountService.java

@@ -63,4 +63,12 @@ public interface AccountService {
      * @return
      */
     String getUsername(Long schoolId, Long userId);
+
+    /**
+     * 获取教师ID
+     * @param schoolId
+     * @param userId
+     * @return
+     */
+    Long getTeacherId(Long schoolId, Long userId);
 }

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/impl/AccountServiceImpl.java

@@ -72,4 +72,9 @@ public class AccountServiceImpl implements AccountService {
     public String getUsername(Long schoolId, Long userId){
         return accountMapper.selectTeacherName(schoolId, userId);
     }
+
+    @Override
+    public Long getTeacherId(Long schoolId, Long userId){
+        return accountMapper.selectTeacherId(schoolId, userId);
+    }
 }

+ 4 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml

@@ -53,4 +53,8 @@
   <select id="selectTeacherName" resultType="string">
     select teacher_name from sys_teacher where school_id = #{schoolId} and user_id = #{userId}
   </select>
+
+  <select id="selectTeacherId" resultType="long">
+    select teacher_id from sys_teacher where school_id = #{schoolId} and user_id = #{userId}
+  </select>
 </mapper>

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

@@ -51,8 +51,10 @@ public class AuthController {
         if (result.isSuccess()){
             AccountDTO accountDTO = result.getData();
             Long school_id = -1L;
+            Long teacherId = -1L;
             try {
                 school_id = accountDTO.getRoleMaps().stream().filter(roleDTO -> "教师".equals(roleDTO.getRole_name())).findFirst().get().getSchool_id();
+                teacherId = accountApi.getTeacherId(school_id, accountDTO.getId()).getData();
                 if (school_id == -1){
                     throw new BizException(ExceptionCode.USER_NOT_EXIST);
                 }
@@ -60,6 +62,7 @@ public class AuthController {
                 throw new BizException(ExceptionCode.USER_NOT_EXIST);
             }
             accountDTO.setSchool_id(school_id);
+            accountDTO.setTeacher_id(teacherId);
             String realName = accountApi.getUsername(school_id, accountDTO.getId()).getData();
             accountDTO.setUsername(realName);
             JwtInfo jwtInfo = new JwtInfo("school", school_id, accountDTO.getId(), StringUtils.isEmpty(realName) ? accountDTO.getUser_phone() : realName, accountDTO.getUser_phone());

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

@@ -6,7 +6,7 @@ Ext.define('school.view.interaction.homework.Release', {
     xtype: 'interaction-homework-release',
 
     controller: 'interaction-homework-release',
-    // viewModel: 'purchase-purchase-formpanel',
+    viewModel: 'interaction-homework-release',
 
     //字段属性
     _title: '作业发布',
@@ -121,14 +121,6 @@ Ext.define('school.view.interaction.homework.Release', {
                 name: 'accessory',
                 fieldLabel: '附件'
             }],
-            applyBtns: [{
-                apply: true,
-                text: '保存',
-                bind: {
-                    hidden: '{!showSaveBtn || task_status == 1}',
-                    disabled: '{!base.valid}'
-                }
-            }],
             applyBtns: [{
                 apply: true,
                 text: '删除',

+ 15 - 0
frontend/pc-web/app/view/Interaction/homework/ReleaseModel.js

@@ -0,0 +1,15 @@
+Ext.define('school.view.interaction.homework.SchoolNoticeModel', {
+    extend: 'school.view.core.form.FormPanelModel',
+    alias: 'viewmodel.interaction-homework-release',
+
+    formulas: {
+        task_status_change: {
+            bind: '{task_status}',
+            get: function(v) {
+                let view = this.getView();
+                view.setEditable(v != 1);
+            }
+        }
+    }
+
+});

+ 7 - 1
frontend/pc-web/app/view/Interaction/notice/SchoolNotice.js

@@ -6,7 +6,7 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
     xtype: 'interaction-notice-schoolnotice',
 
     controller: 'interaction-notice-schoolnotice',
-    // viewModel: 'purchase-purchase-formpanel',
+    viewModel: 'interaction-notice-schoolnotice',
 
     //字段属性
     _title: '学校通知',
@@ -85,6 +85,12 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
                     hidden: '{!showSaveBtn || notify_status == 1}',
                     disabled: '{!base.valid}'
                 }
+            }, {
+                apply: true,
+                text: '删除',
+                bind: {
+                    hidden: '{!showDeleteBtn || !notify_id || notify_status == 1}'
+                },
             }],
             toolBtns: [{
                 xtype: 'button',

+ 15 - 0
frontend/pc-web/app/view/Interaction/notice/SchoolNoticeModel.js

@@ -0,0 +1,15 @@
+Ext.define('school.view.interaction.notice.SchoolNoticeModel', {
+    extend: 'school.view.core.form.FormPanelModel',
+    alias: 'viewmodel.interaction-notice-schoolnotice',
+
+    formulas: {
+        notify_status_change: {
+            bind: '{notify_status}',
+            get: function(v) {
+                let view = this.getView();
+                view.setEditable(v != 1);
+            }
+        }
+    }
+
+});

+ 25 - 3
frontend/pc-web/app/view/Interaction/timetable/Detail.js

@@ -35,7 +35,7 @@ Ext.define('school.view.interaction.timetable.Detail', {
                 xtype: 'textfield',
                 name: 'name',
                 fieldLabel: '课表名称',
-                emptyText: '请选择年级',
+                columnWidth: 0.5,
                 bind: {
                     emptyText: '{name_emptyText}'
                 }
@@ -115,10 +115,18 @@ Ext.define('school.view.interaction.timetable.Detail', {
                     let now = new Date();
                     let year = now.getFullYear();
                     let month = now.getMonth() + 1;
-                    let o1, o2;
+                    let o1, o2, termPart;
+                    
                     o1 = [(year - 1) + '-' + year];
                     o2 = [year + '-' + (year + 1)];
-                    return (month < 9) ? o1[0] : o2[0]
+
+                    if((month > 2 && month < 8) || (month == 2 && date > 15) || (month == 8 && date < 15)) {
+                        termPart = o1[0];
+                    }else {
+                        termPart = o2[0];
+                    }
+
+                    return termPart;
                 })()
             }, {
                 xtype: "combobox",
@@ -365,6 +373,20 @@ Ext.define('school.view.interaction.timetable.Detail', {
                     hidden: true
                 }]
             }],
+            applyBtns: [{
+                apply: true,
+                text: '删除',
+                bind: {
+                    hidden: '{!showDeleteBtn || !id || status == 1}'
+                },
+            }, {
+                apply: true,
+                text: '保存',
+                bind: {
+                    hidden: '{!showSaveBtn || status == 1}',
+                    disabled: '{!base.valid}'
+                }
+            }],
             toolBtns: [{
                 xtype: 'button',
                 text: '启用',

+ 7 - 9
frontend/pc-web/app/view/Interaction/timetable/DetailModel.js

@@ -12,18 +12,16 @@ Ext.define('school.view.interaction.timetable.DetailModel', {
 
             if(!!gradeName && !!clazzName && !!termPart && !!termName) {
                 text =  gradeName + clazzName + termPart.split('-')[0] + '学年' + termName + '课表';
-                // this.set('name', text);
-            }else if(!gradeName) {
-                text = '请选择年级';
-            }else if(!clazzName) {
-                text = '请选择班级';
-            }else if(!termPart) {
-                text = '请选择学年';
-            }else if(!termName) {
-                text = '请选择学期';
             }
 
             return text;
+        },
+        status_change: {
+            bind: '{status}',
+            get: function(v) {
+                let view = this.getView();
+                view.setEditable(v != 1);
+            }
         }
     }
 

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

@@ -77,10 +77,18 @@ Ext.define('school.view.interaction.timetable.List', {
                     let now = new Date();
                     let year = now.getFullYear();
                     let month = now.getMonth() + 1;
-                    let o1, o2;
+                    let o1, o2, termPart;
+                    
                     o1 = [(year - 1) + '-' + year];
                     o2 = [year + '-' + (year + 1)];
-                    return (month < 9) ? o1[0] : o2[0]
+
+                    if((month > 2 && month < 8) || (month == 2 && date > 15) || (month == 8 && date < 15)) {
+                        termPart = o1[0];
+                    }else {
+                        termPart = o2[0];
+                    }
+
+                    return termPart;
                 })()
             }, {
                 xtype: "combobox",

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

@@ -84,7 +84,7 @@ Ext.define('school.view.basic.staff.StaffDetail', {
                 fieldLabel: '政治面貌',
                 displayField: 'name',
                 valueField: 'name',
-                editable: false,
+                editable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name'],
                     data: [['中共党员'], ['中共预备党员'], ['共青团员'], ['群众']]
@@ -101,7 +101,7 @@ Ext.define('school.view.basic.staff.StaffDetail', {
                 fieldLabel: '学历',
                 displayField: 'name',
                 valueField: 'name',
-                editable: false,
+                editable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name'],
                     data: [['博士后'], ['博士'], ['硕士'], ['研究生'], ['本科(统招)'], ['本科(成人高考)'], ['本科(专升本)'], ['大专'], ['高中'], ['职高'], ['初中'], ['小学']]

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

@@ -64,7 +64,7 @@ Ext.define('school.view.basic.student.StudentDetail', {
                 fieldLabel: '政治面貌',
                 displayField: 'name',
                 valueField: 'name',
-                editable: false,
+                editable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name'],
                     data: [

+ 5 - 1
frontend/pc-web/app/view/core/form/field/DetailGridField.js

@@ -64,7 +64,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
                     y: true
                 },
                 deferEmptyText: false,
-                emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
+                emptyText: (me.readOnly || !me.editable) ? '' : '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
             },
             listeners: {
                 boxready: function(g) {
@@ -395,6 +395,10 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
         me.editable = able;
 
+        lockGridEmptyText = !me.readOnly && able ? '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>' : '';
+
+        me.lockedGrid.setEmptyText(lockGridEmptyText)
+
         Ext.Array.each(columns, function(c) {
             if(typeof c.getEditor != 'undefined'){
                 var e = c.getEditor();

+ 1 - 0
frontend/pc-web/app/view/core/form/field/FileField.js

@@ -8,6 +8,7 @@ Ext.define('school.view.core.form.field.FileField', {
 	collapsible: true,
 	multi: true,
 	allowBlank:true,
+	isFormField: true,
 	initComponent: function() {
 		this.columnWidth = 1;//强制占一行
 		this.cls = '';

+ 6 - 15
frontend/pc-web/app/view/setting/operatelog/OperateLog.js

@@ -11,19 +11,14 @@ Ext.define('school.view.setting.operatelog.OperateLog', {
         var me = this;
         Ext.apply(this, {
             searchField: [{
-                width: 110,
-                name: 'obj',
-                xtype: 'textfield',
-                emptyText : '对象',
+                columnWidth: 0.5,
+                name: 'createTime',
+                xtype: 'condatefield',
+                fieldLabel : '时间',
+                labelWidth: 50
             }, {
-            //     // columnWidth: 0.5,
-            //     // name: 'time',
-            //     // xtype: 'condatefield',
-            //     // fieldLabel : '时间',
-            //     // labelWidth: 50
-            // }, {
                 width: 110,
-                name: 'man',
+                name: 'ml_man',
                 xtype: 'textfield',
                 emptyText : '操作人员',
             }],
@@ -45,10 +40,6 @@ Ext.define('school.view.setting.operatelog.OperateLog', {
                     text:'单据类型',
                     dataIndex : "ml_name",
                     width : 110.0, 
-                }, {
-                    text : "单据编号", 
-                    width : 150.0, 
-                    dataIndex : "ml_code", 
                 }, {
                     text : "操作", 
                     dataIndex : "ml_content", 

+ 53 - 3
frontend/pc-web/overrides/form/field/ComboBox.js

@@ -9,18 +9,21 @@ Ext.define("school.override.form.field.ComboBox", {
                 weight: -1,
                 cls: 'fa-times',
                 hidden: true,
+                lazyVisible: true,
                 onFieldFocus: function() {
-                    if(this.field.clearable) {
+                    var field = this.field;
+                    if(!field.readOnly && field.clearable) {
                         this.setHidden(false);
                     }
                 },
                 onFieldBlur: function() {
-                    if(this.field.clearable) {
+                    var field = this.field;
+                    if(!field.readOnly && field.clearable) {
                         this.setHidden(true);
                     }
                 },
                 handler: function() {
-                    if(this.clearable) {
+                    if(!this.readOnly && this.clearable) {
                         this.setValue(null)
                         this.triggers.clear.setHidden(true)
                         this.fireEvent('clear', this);
@@ -35,4 +38,51 @@ Ext.define("school.override.form.field.ComboBox", {
         }
     },
 
+    setReadOnly: function(readOnly) {
+        var me = this,
+            triggers = me.getTriggers(),
+            hideTriggers = me.getHideTrigger(),
+            oVisible = {},
+            trigger,
+            id;
+ 
+        readOnly = !!readOnly;
+ 
+        if (triggers) {
+            for (id in triggers) {
+                oVisible[id] = triggers[id].isVisible();
+            }
+        }
+
+        me.callParent([readOnly]);
+        if (me.rendered) {
+            me.setReadOnlyAttr(readOnly || !me.editable);
+        }
+ 
+        if (triggers) {
+            for (id in triggers) {
+                trigger = triggers[id];
+
+                /**
+                 * if trigger's 'lazyVisible' is true,this trigger's 'visible' will not controlled beed 'setReadOnly'
+                 */
+                if(trigger.lazyVisible) {
+                    trigger.setVisible(oVisible[id]);
+                    continue;
+                }
+
+                /*
+                 * Controlled trigger visibility state is only managed fully when 'hideOnReadOnly' is falsy.
+                 * Truth table:
+                 *   - If the trigger is configured/defaulted as 'hideOnReadOnly : true', it's readOnly-visibility
+                 *     is determined solely by readOnly state of the Field.
+                 *   - If 'hideOnReadOnly : false/undefined', the Fields.{link #hideTrigger hideTrigger} is honored.
+                 */
+                if (trigger.hideOnReadOnly === true || (trigger.hideOnReadOnly !== false && !hideTriggers)) {
+                    trigger.setVisible(!readOnly);
+                }
+            }
+        }
+    },
+
 });

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

@@ -138,7 +138,7 @@ export const API = {
     //出入校单次记录详情
 
     //更改手机号是获取验证码
-    SEND_CODEUPDATE:_baseURL +'/wxSchool/user/sendCodeUpdate',
+    SEND_CODEUPDATE: _baseURL + '/wxSchool/user/sendCodeUpdate',
 
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //获取用户是否绑定
@@ -163,7 +163,7 @@ export const API = {
     //获取学生班级列表
     GET_STU_CLASS_LIST: _baseURL + '/wxSchool/clazz/selectClazzByStu',
     //文件上传地址
-    UPLOAD_FILE: _baseURL + '/wxSchool/file/uploadFile',
+    UPLOAD_FILE: 'https://school-api.ubtob.com/api/file/upload',
     //新建相册
     NEW_CLASS_ALBUM: _baseURL + '/wxSchool/clazzAlbum/createAlbum',
     //修改相册

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

@@ -63,6 +63,7 @@ import ScoreNotification from '../modules/hiPages/scorenotification/ScoreNotific
 import AccessNoticeDetail from '../modules/hiPages/accessnoticedetail/AccessNoticeDetail';
 import ChartDemo from "../modules/chart/ChartDemo";
 import {connect} from "react-redux";
+import AccessNoticeDetail1 from "../modules/hiPages/accessnoticedetail/AccessNoticeDetail1";
 
 class RouteConfig extends Component {
 
@@ -137,7 +138,7 @@ class RouteConfig extends Component {
                         <Route path='/leavedetail/:role/:lvId' component={LeaveDetail}/> {/*学生请假详情*/}
                         <Route path="/changephonenumber" component={ChangePhoneNumber}/> {/*更换手机号码*/}
                         <Route path="/scorenotification/:stuId?" component={ScoreNotification}/> {/*成绩通知*/}
-                        <Route path="/accessnoticedetail/:stuId/:anId?" component={AccessNoticeDetail}/> {/*出入校通知详情*/}
+                        <Route path="/accessnoticedetail/:stuId/:anId?" component={AccessNoticeDetail1}/> {/*出入校通知详情*/}
                         {/*<Route path="/accessnoticedetail" component={AccessNoticeDetail}/> /!*出入校通知详情*!/*/}
                         <Route path='/leaveAddC' component={LeaveAddCPage}/>{/*老师请假*/}
                         <Route path='/leaveAdd' component={LeaveAddPage}/> {/*学生请假*/}

+ 81 - 8
frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail.css

@@ -1,17 +1,90 @@
-.an_student_name{
+.an_student_name {
     font-family: PingFangSC-Regular;
     color: #222222;
-    margin:20px 40px 10px 40px;text-align: left;
+    margin: 20px 40px 10px 40px;
+    text-align: left;
 }
-.an_student_photo{
-    height: 199px;border-radius: 10px;width: 300px;
+
+.an_student_photo {
+    height: 199px;
+    border-radius: 10px;
+    width: 300px;
 }
-.an_student_type{
+
+.an_student_type {
     font-family: PingFangSC-Regular;
     font-size: 15px;
     color: #666666;
-    letter-spacing: 1.25px;text-align: left;margin: 30px;
+    letter-spacing: 1.25px;
+    text-align: left;
+    margin: 30px;
 }
-.an_student_foot_time{
-    background-color: #F7F7F7;text-align: left;padding-left: 25px;
+
+.an_student_foot_time {
+    background-color: #F7F7F7;
+    text-align: left;
+    padding-left: 25px;
+}
+
+.access-notice-top-layout {
+    display: flex;
+    flex-direction: row;
+    padding: 15px;
+    background: white;
+    align-items: center;
+}
+
+.access-notice-icon-in, .access-notice-icon-out {
+    color: white;
+    font-size: 14px;
+    width: 36px;
+    height: 36px;
+    display: inline-block;
+    border-radius: 50%;
+    text-align: center;
+    line-height: 34px;
+    padding-bottom: 2px;
+}
+
+.access-notice-icon-in {
+    background: #43CEAF;
+}
+
+.access-notice-icon-out {
+    background: #589CFE;
+}
+
+.access-notice-name {
+    font-family: MicrosoftYaHei;
+    font-size: 18px;
+    color: #333333;
+    letter-spacing: 2.25px;
+    padding-left: 10px;
+}
+
+.access-notice-time {
+    font-family: MicrosoftYaHei;
+    font-size: 22px;
+    color: #222222;
+    letter-spacing: 2px;
+}
+
+.access-notice-date {
+    font-family: MicrosoftYaHei;
+    font-size: 12px;
+    color: #999999;
+    letter-spacing: 1px;
+    padding-left: 10px;
+}
+
+.access-notice-img-layout {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    padding: 10px 15px;
+}
+
+.access-notice-img {
+    max-width: 100%;
+    max-height: 200px;
 }

+ 0 - 3
frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail.js

@@ -28,15 +28,12 @@ class AccessNoticeDetail extends Component {
 
     componentDidMount() {
         let stuId = this.props.match.params.stuId
-        let role = this.props.match.params.role
         let anId = this.props.match.params.anId
 
-        console.log("stuId", stuId)
         if (!isObjEmpty(stuId)) {
             this.getANDetail(stuId, anId)
         }
 
-
         let curDay = new Date().getDay()
         if (curDay == 1) {
             curDay = '星期一'

+ 55 - 0
frontend/wechat-web/src/modules/hiPages/accessnoticedetail/AccessNoticeDetail1.jsx

@@ -0,0 +1,55 @@
+/**
+ * Created by RaoMeng on 2019/3/13
+ * Desc:出入校通知详情
+ */
+
+import React, {Component} from 'react'
+import {connect} from 'react-redux';
+
+class AccessNoticeDetail1 extends Component {
+
+    constructor() {
+        super()
+
+        this.state = {}
+    }
+
+    componentDidMount() {
+        document.title = '出入校通知'
+    }
+
+    componentWillUnmount() {
+
+    }
+
+    render() {
+        return (
+            <div className='common-flex-column' style={{background: 'white'}}>
+                <div className='access-notice-top-layout'>
+                    <div className='access-notice-icon-in'>进</div>
+                    <span className='access-notice-name'>陈小龙</span>
+                </div>
+
+                <div style={{padding: '6px 15px', background: '#f7f7f7'}}>
+                    <span className='access-notice-time'>12:07:06</span>
+                    <span className='access-notice-date'>2019-1-30</span>
+                    <span className='access-notice-date'>星期天</span>
+                </div>
+
+                <div className='access-notice-img-layout'>
+                    <img className='access-notice-img'
+                         src='http://pic.vjshi.com/2018-08-28/8b163ad1a98e567f26cea40f34d56a27/00001.jpg?x-oss-process=style/watermark'/>
+                </div>
+            </div>
+        )
+    }
+}
+
+
+let mapStateToProps = (state) => ({
+    userInfo: {...state.redUserInfo}
+})
+
+let mapDispatchToProps = (dispatch) => ({})
+
+export default connect(mapStateToProps, mapDispatchToProps)(AccessNoticeDetail1)

+ 1 - 1
frontend/wechat-web/src/modules/hiPages/approvel-detail/ItemApprovel.js

@@ -21,7 +21,7 @@ export default class ItemApprovel extends Component{
                     <div style={{width:10,height:10,background:'#BDBDBD',borderRadius:'30px'}}></div>
                     <div style={{marginLeft:10,width:"62%"}}>
                         <div ><span style={{color:'#000000',fontSize:15}}>{this.props.itemdata.value }</span><span style={{color:'#666666',fontSize:12,marginLeft:10}}>{this.props.approveDate}</span></div>
-                        <div style={{color:"#666666",fontSize:12,marginTop:5,wordWrap:'break-word'}}><span>{this.props.suggest.value==null?"":"(审批语:"+this.props.suggest.value+")"}</span></div>
+                        <div style={{color:"#666666",fontSize:12,marginTop:5,wordWrap:'break-word'}}><span>{(this.props.suggest.value==null || this.props.suggest.value==undefined)?"":"(审批语:"+this.props.suggest.value+")"}</span></div>
                     </div>
                     <div style={{fontSize:12,textAlign:'right'}} className={this.props.approveStatus == 1?'doing':'done'}>
                         {this.props.approveStatus == 1 ? '等待审批' : (this.props.approveStatus == 2 ? '已同意' : '已拒绝')}</div>

+ 6 - 0
frontend/wechat-web/src/modules/hiPages/approvel/Approvel.css

@@ -13,4 +13,10 @@
 }
 .done{
     color: #666666;
+}
+.no_data{
+    background: #F4F4F4;
+    background-size: 100% 100%;
+    height: 100vh;
+    text-align: center;
 }

+ 12 - 3
frontend/wechat-web/src/modules/hiPages/approvel/Approvel.js

@@ -20,7 +20,7 @@ import RefreshLayout from "../../../components/RefreshLayout";
 import {Skeleton, List} from 'antd';
 import {getIntValue, getStrValue, isObjEmpty} from "../../../utils/common";
 import {saveListState} from "../../../redux/actions/listState";
-
+import nodata_img from '../../../style/imgs/no_data.png';
 let myApplypageIndex = 0;
 let myApprovepageIndex = 0;
 const mPageSize = 10
@@ -169,10 +169,19 @@ class Approvel extends Component {
                      }}>
                     <div className="swiper-wrapper">
                         <div className="swiper-slide" >
-                            {isMyapplyItems}
+                            {
+                                this.state.applyList.length > 0 ? isMyapplyItems
+                                    :
+                                    <div className="no_data"><img src={nodata_img} alt="" style={{width:'100%',height:'100%'}}/></div>
+                            }
                         </div>
                         <div className="swiper-slide">
-                            {isMyapproveItems}
+                            {
+                                this.state.approvelList.length > 0 ? isMyapproveItems
+                                    :
+                                    <div className="no_data"><img src={nodata_img} alt=""
+                                                                  style={{width: '100%', height: 'auto'}}/></div>
+                            }
                         </div>
                     </div>
                 </div>

+ 4 - 4
frontend/wechat-web/src/modules/home/HomePage.jsx

@@ -20,7 +20,7 @@ import 'css/home-page.css'
 import {fetchGet, fetchPost} from "../../utils/fetchRequest";
 import {_baseURL, API} from "../../configs/api.config";
 import icon_home_change from "../../style/imgs/icon_home_change.png";
-
+let holly = 0
 const operation = Modal.operation;
 
 class HomePage extends Component {
@@ -35,7 +35,6 @@ class HomePage extends Component {
     }
 
     componentWillMount() {
-
     }
 
     componentDidMount() {
@@ -74,7 +73,8 @@ class HomePage extends Component {
             this.props.userInfo.parent.students.forEach((item, index) => {
                 if (this.props.userInfo.parent.student.stuId == item.stuId) {
                     this.setState({
-                        studentIndex: index
+                        studentIndex: index,
+                        selectStuName:this.props.userInfo.parent.student.stuName
                     })
                 }
             })
@@ -320,7 +320,7 @@ class HomePage extends Component {
                 {
                     userInfo.userRole === 1 ?
                         <div className='home-student-layout-root' style={{display:'flex',flexDirection:'column'}}>
-                            <div  className='home-top-msg-text'>{userName +' | ' + schoolName}</div>
+                            <div  className='home-top-msg-text'>{this.state.selectStuName +' | ' + schoolName}</div>
                         </div>
                         :
                         <div className='home-top-msg-root' style={{paddingBottom:10}}>

+ 22 - 11
frontend/wechat-web/src/modules/homework/AssignmentDetailPage.js

@@ -9,7 +9,7 @@ import '../../style/css/app-gloal.css'
 import {List, Input, Button} from 'antd';
 import {fetchPost, fetchGet} from '../../utils/fetchRequest';
 import {API, _baseURL} from '../../configs/api.config';
-import {getIntValue, getStrValue, isObjEmpty} from '../../utils/common';
+import {getIntValue, getSearchParams, getStrValue, isObjEmpty} from '../../utils/common';
 import ImagesViewer from "../../components/imagesVIewer/ImagesViewer";
 import {Toast} from 'antd-mobile'
 import {Avatar} from 'antd'
@@ -48,6 +48,17 @@ class AssignmentDetailPage extends React.Component {
     }
 
     componentDidMount() {
+        this.searchParams = getSearchParams(this.props.location.search)
+        this.stuId = this.props.userInfo.user.student.stuId
+        this.parentId = this.props.userInfo.user.userFunId
+        if (this.searchParams) {
+            if (this.searchParams.stuId) {
+                this.stuId = this.searchParams.stuId
+            }
+            if (this.searchParams.parentId) {
+                this.parentId = this.searchParams.parentId
+            }
+        }
         Toast.show('', 0)
         this.getHomeworkDetail()
     }
@@ -65,7 +76,7 @@ class AssignmentDetailPage extends React.Component {
     getHomeworkDetail = () => {
         fetchPost(API.HOMEWORK_DETAIL, {
             taskId: this.state.id,
-            stuId: this.props.userInfo.user.student.stuId
+            stuId: this.stuId
         }).then((response) => {
             Toast.hide()
             if (response && response.data) {
@@ -142,8 +153,8 @@ class AssignmentDetailPage extends React.Component {
             taskId: this.state.id,
             replyTitle: '这是作业的回复',
             replyContext: this.state.messageContent,
-            parentId: this.props.userInfo.user.userFunId,
-            stuId: this.props.userInfo.user.student.stuId
+            parentId: this.parentId,
+            stuId: this.stuId
         }
         fetchPost(API.HOMEWORK_REPLY, {
             taskRepayString: JSON.stringify(params)
@@ -194,7 +205,7 @@ class AssignmentDetailPage extends React.Component {
                         <div className="homework-detail-top-name">{this.state.teachName}老师</div>
                         <div className='homework-detail-top-time'>
                             <span>截止时间:</span>
-                            <span >{this.state.endTime}</span>
+                            <span>{this.state.endTime}</span>
                         </div>
                     </div>
                 </div>
@@ -213,9 +224,9 @@ class AssignmentDetailPage extends React.Component {
 
                 </div>
                 <div className="margin_top_bottom_10 homework-detail-leave-caption">
-                    <img src={leave_img} style={{height:18,width:21,marginRight:10}}/>
+                    <img src={leave_img} style={{height: 18, width: 21, marginRight: 10}}/>
                     {this.state.data.length != 0 ? (
-                    <span>
+                        <span>
                         ({this.state.data.length}条)
                     </span>) : (<div></div>)}</div>
                 <div id="page_horizontal_line"></div>
@@ -227,10 +238,10 @@ class AssignmentDetailPage extends React.Component {
                     locale={{emptyText: '暂无留言'}}
                     dataSource={this.state.data}
                     renderItem={item => (
-                            <div style={{display: 'flex',paddingTop:5,paddingBottom:5}}>
-                                <div className="homework-detail-leave-name">{item.name}:</div>
-                                <div className='homework-detail-leave-content'>{item.content}</div>
-                            </div>
+                        <div style={{display: 'flex', paddingTop: 5, paddingBottom: 5}}>
+                            <div className="homework-detail-leave-name">{item.name}:</div>
+                            <div className='homework-detail-leave-content'>{item.content}</div>
+                        </div>
                     )}/>
             </div>
             {this.state.role === "teacher" ? "" :

+ 2 - 2
frontend/wechat-web/src/modules/leave/LeaveItem.js

@@ -29,8 +29,8 @@ export default class LeaveItem extends Component {
                                         <div>
                                             {
                                                 item.leaveMessages.length == 0 ?
-                                                    <div style={{fontSize: 12, color: "#FA5200"}}>未查阅</div>
-                                                    : <div style={{fontSize: 12, color: "##686868"}}>已查阅</div>
+                                                    <div style={{fontSize: 12, color: "#FA5200"}}>未回复</div>
+                                                    : <div style={{fontSize: 12, color: "##686868"}}>已回复</div>
                                             }
                                         </div>
                                 }

+ 1 - 0
frontend/wechat-web/src/modules/leave/LeaveListPage.css

@@ -18,4 +18,5 @@
     background: #F4F4F4;
     background-size: 100% 100%;
     height: 100vh;
+    text-align: center;
 }

+ 1 - 1
frontend/wechat-web/src/modules/leave/LeaveListPage.js

@@ -88,7 +88,7 @@ class LeaveListPage extends React.Component{
                         </Skeleton>
                     </RefreshLayout>
                     :
-                    <div className="no_data"><img src={nodata_img} alt="" style={{width:'100%',height:'auto'}}/></div>
+                    <div className="no_data"><img src={nodata_img} alt="" style={{width:'100%',height:'100%'}}/></div>
             }
 
                     {

+ 2 - 2
frontend/wechat-web/src/style/css/consume-re.css

@@ -154,8 +154,8 @@
 }
 
 .notify-item-caption {
-    width: 70px;
-    margin: 0 10px;
+    width:80px;
+    margin: 0 0 0 10px;
     font-family: PingFangSC-Regular;
     font-size: 14px;
     color: #999999;

二进制
frontend/wechat-web/src/style/imgs/no_data.png


+ 1 - 1
frontend/wechat-web/src/utils/common.js

@@ -446,7 +446,7 @@ export function randomNum(minNum, maxNum) {
 //解析url的search参数
 export function getSearchParams(searchStr) {
     let params = new Object();
-    if (searchStr.indexOf("?") != -1) {
+    if (!isObjEmpty(searchStr) && searchStr.indexOf("?") != -1) {
         searchStr = searchStr.substr(1);
         const searchArray = searchStr.split("&");
         for (let i = 0; i < searchArray.length; i++) {