Browse Source

Merge remote-tracking branch 'origin/dev'

chenw 6 years ago
parent
commit
716b6a2319

+ 1 - 1
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/mapper/IcCardMapper.java

@@ -15,5 +15,5 @@ public interface IcCardMapper {
 
 
     SysSchoolDTO getSchoolIdByName(@Param("name") String name);
     SysSchoolDTO getSchoolIdByName(@Param("name") String name);
 
 
-    String selectTemplateId(@Param("schoolId") Long schoolId);
+    String selectTemplateId(@Param("schoolId") Long schoolId, @Param("code") String code);
 }
 }

+ 40 - 28
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/service/impl/IcCardServiceImpl.java

@@ -7,10 +7,13 @@ import com.usoftchina.smartschool.device.mapper.IcCardMapper;
 import com.usoftchina.smartschool.device.po.Transaction;
 import com.usoftchina.smartschool.device.po.Transaction;
 import com.usoftchina.smartschool.device.service.IcCardService;
 import com.usoftchina.smartschool.device.service.IcCardService;
 import com.usoftchina.smartschool.school.dto.SysSchoolDTO;
 import com.usoftchina.smartschool.school.dto.SysSchoolDTO;
+import com.usoftchina.smartschool.school.enums.NoticeTemplate;
 import com.usoftchina.smartschool.utils.ObjectUtils;
 import com.usoftchina.smartschool.utils.ObjectUtils;
 import com.usoftchina.smartschool.utils.http.HmacUtils;
 import com.usoftchina.smartschool.utils.http.HmacUtils;
 import com.usoftchina.smartschool.wechat.api.WechatApi;
 import com.usoftchina.smartschool.wechat.api.WechatApi;
 import com.usoftchina.smartschool.wechat.dto.MessageInfoDTO;
 import com.usoftchina.smartschool.wechat.dto.MessageInfoDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -30,15 +33,14 @@ import java.util.List;
 @Service
 @Service
 public class IcCardServiceImpl implements IcCardService {
 public class IcCardServiceImpl implements IcCardService {
 
 
-    @Autowired
-    private RestTemplate restTemplate;
-
     @Autowired
     @Autowired
     private IcCardMapper icCardMapper;
     private IcCardMapper icCardMapper;
 
 
     @Autowired
     @Autowired
     private WechatApi wechatApi;
     private WechatApi wechatApi;
 
 
+    private static final Logger logger = LoggerFactory.getLogger(AccessControlServiceImpl.class);
+
     @Value("${smartschool.wechat.pushUrl}")
     @Value("${smartschool.wechat.pushUrl}")
     private String targetURL;
     private String targetURL;
 
 
@@ -49,38 +51,46 @@ public class IcCardServiceImpl implements IcCardService {
             String appId = sysSchoolDTO.getSchool_appid();
             String appId = sysSchoolDTO.getSchool_appid();
             String secret = sysSchoolDTO.getSchool_secret();
             String secret = sysSchoolDTO.getSchool_secret();
             Long schoolId = sysSchoolDTO.getSchool_id();
             Long schoolId = sysSchoolDTO.getSchool_id();
-            String templateId = icCardMapper.selectTemplateId(schoolId);
+            String templateId = icCardMapper.selectTemplateId(schoolId, NoticeTemplate.MONEY_NOTICE.getCode());
+            if(!StringUtils.hasText(templateId)){
+                logger.error("学校[{}] 模板[{}]未设置",schoolId,NoticeTemplate.MONEY_NOTICE.getCode());
+                return null;
+            }
             StringBuilder sb = new StringBuilder();
             StringBuilder sb = new StringBuilder();
             accTransDetailList.forEach(accTransDetail -> {
             accTransDetailList.forEach(accTransDetail -> {
-                sb.append(accTransDetail.getGuid() + ",");
                 String oldType = accTransDetail.getAccTransType();
                 String oldType = accTransDetail.getAccTransType();
                 accTransDetail.setAccTransType(Transaction.getName(accTransDetail.getAccTransType()));
                 accTransDetail.setAccTransType(Transaction.getName(accTransDetail.getAccTransType()));
                 //构造messageInfo对象
                 //构造messageInfo对象
-                MessageInfoDTO messageInfo = new MessageInfoDTO();
-                messageInfo.setMsgId(accTransDetail.getGuid());
                 String openId = icCardMapper.SelectParentOpenId(accTransDetail.getEmpNo(), schoolId);
                 String openId = icCardMapper.SelectParentOpenId(accTransDetail.getEmpNo(), schoolId);
-                messageInfo.setTouser(openId);
-                messageInfo.setAppId(appId);
-                messageInfo.setSecret(secret);
-                //messageInfo.setUserType(2);
-                messageInfo.setTemplateId(templateId);
-                String accNo = accTransDetail.getAccNo();
-                String cardNo = StringUtils.isEmpty(accNo) ? null : accNo.substring(accTransDetail.getAccNo().length() - 4);
-                String header = "您好,您的小孩" + accTransDetail.getEmpName() + "在校的校园卡(卡号:*** " + cardNo + ")发生如下交易";
-                messageInfo.setTitle(header);
-                Date accTransDay = accTransDetail.getAccTransDay();
-                if (null != accTransDay) {
-                    messageInfo.setKeyword1(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(accTransDetail.getAccTransDay()));
+                if(!StringUtils.hasText(openId)){
+                    MessageInfoDTO messageInfo = new MessageInfoDTO();
+                    messageInfo.setMsgId(accTransDetail.getGuid());
+                    sb.append(accTransDetail.getGuid() + ",");
+                    messageInfo.setTouser(openId);
+                    messageInfo.setAppId(appId);
+                    messageInfo.setSecret(secret);
+                    messageInfo.setTemplateId(templateId);
+                    String accNo = accTransDetail.getAccNo();
+                    String cardNo = StringUtils.isEmpty(accNo) ? null : accNo.substring(accTransDetail.getAccNo().length() - 4);
+                    String header = "您好,您的小孩" + accTransDetail.getEmpName() + "在校的校园卡(卡号:*** " + cardNo + ")发生如下交易";
+                    messageInfo.setTitle(header);
+                    Date accTransDay = accTransDetail.getAccTransDay();
+                    if (null != accTransDay) {
+                        messageInfo.setKeyword1(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(accTransDetail.getAccTransDay()));
+                    }
+                    if (Integer.parseInt(oldType) > 15) {
+                        messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getoMoneyValue()));
+                    } else {
+                        messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getiMoneyValue()));
+                    }
+                    messageInfo.setKeyword3(accTransDetail.getAccTransType());
+                    messageInfo.setKeyword4(String.format("%.2f", accTransDetail.getCardMoneyValue()));
+                    messageInfo.setRemark("感谢您使用!");
+                    messageInfoList.add(messageInfo);
+                }else {
+                    logger.info("GUID={}未找到对应的推送人", accTransDetail.getGuid());
                 }
                 }
-                if (Integer.parseInt(oldType) > 15) {
-                    messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getoMoneyValue()));
-                } else {
-                    messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getiMoneyValue()));
-                }
-                messageInfo.setKeyword3(accTransDetail.getAccTransType());
-                messageInfo.setKeyword4(String.format("%.2f", accTransDetail.getCardMoneyValue()));
-                messageInfo.setRemark("感谢您使用");
-                messageInfoList.add(messageInfo);
+
             });
             });
             //3.传输
             //3.传输
             Result result = wechatApi.sendOutMessages(JSON.toJSONString(messageInfoList));
             Result result = wechatApi.sendOutMessages(JSON.toJSONString(messageInfoList));
@@ -106,6 +116,8 @@ public class IcCardServiceImpl implements IcCardService {
                     return ids;
                     return ids;
                 }
                 }
             }*/
             }*/
+        }else {
+            logger.error("对应学校名{}或学校{}未找到",sysSchoolDTO.getSchool_name(),sysSchoolDTO.getSchool_id());
         }
         }
         return null;
         return null;
     }
     }

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

@@ -2,6 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.smartschool.device.mapper.AccessControlRecordMapper" >
 <mapper namespace="com.usoftchina.smartschool.device.mapper.AccessControlRecordMapper" >
     <insert id="insertRecordSelective" parameterType="com.usoftchina.smartschool.device.po.AccessControlRecord" >
     <insert id="insertRecordSelective" parameterType="com.usoftchina.smartschool.device.po.AccessControlRecord" >
+        <selectKey  resultType="java.lang.Long" keyProperty="record_id">
+          SELECT LAST_INSERT_ID() AS ID
+        </selectKey>
         insert into out_in_record
         insert into out_in_record
         <trim prefix="(" suffix=")" suffixOverrides="," >
         <trim prefix="(" suffix=")" suffixOverrides="," >
             <if test="record_name != null" >
             <if test="record_name != null" >

+ 2 - 2
applications/device/device-server/src/main/resources/mapper/IcCardMapper.xml

@@ -6,7 +6,7 @@
   </resultMap>
   </resultMap>
 
 
   <select id="getSchoolIdByName" resultType="com.usoftchina.smartschool.school.dto.SysSchoolDTO">
   <select id="getSchoolIdByName" resultType="com.usoftchina.smartschool.school.dto.SysSchoolDTO">
-    SELECT * FROM SYS_SCHOOL WHERE SCHOOL_NAME = #{name} or school_id = #[name]
+    SELECT * FROM SYS_SCHOOL WHERE SCHOOL_NAME = #{name} or school_id = #{name}
   </select>
   </select>
 
 
   <select id="SelectParentOpenId" resultType="string">
   <select id="SelectParentOpenId" resultType="string">
@@ -19,6 +19,6 @@
   </select>
   </select>
 
 
   <select id="selectTemplateId" resultType="string">
   <select id="selectTemplateId" resultType="string">
-    SELECT st_templateid FROM school_template WHERE ST_SCHOOLID = #{schoolId} and st_code = 'iccard'
+    SELECT st_templateid FROM school_template WHERE ST_SCHOOLID = #{schoolId} and st_code = #{code}
   </select>
   </select>
 </mapper>
 </mapper>

+ 1 - 1
applications/school/school-dto/src/main/java/com/usoftchina/smartschool/school/enums/NoticeTemplate.java

@@ -10,7 +10,7 @@ public enum NoticeTemplate {
     SCORE_NOTICE("score", "成绩通知"),
     SCORE_NOTICE("score", "成绩通知"),
     UNAUDIT_NOTICE("unAudit", "待审批通知"),
     UNAUDIT_NOTICE("unAudit", "待审批通知"),
     MEETING_NOTICE("meeting", "会议提醒"),
     MEETING_NOTICE("meeting", "会议提醒"),
-    MONEY_NOTICE("money", "资金异动提醒");
+    MONEY_NOTICE("iccard", "资金异动提醒");
 
 
     private String code;
     private String code;
 
 

+ 1 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/HomeWorkServiceImpl.java

@@ -149,6 +149,7 @@ public class HomeWorkServiceImpl implements HomeWorkService{
             msg.setKeyword2(DateUtils.format());
             msg.setKeyword2(DateUtils.format());
             msg.setKeyword3(data.getTask_context());
             msg.setKeyword3(data.getTask_context());
             msg.setTouser(noticer.getOpenid());
             msg.setTouser(noticer.getOpenid());
+            msg.setRemark("谢谢使用!");
             msg.setAppId(school.getSchool_appid());
             msg.setAppId(school.getSchool_appid());
             msg.setSecret(school.getSchool_secret());
             msg.setSecret(school.getSchool_secret());
             msg.setTemplateId(template.getSt_templateid());
             msg.setTemplateId(template.getSt_templateid());

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/NoticeServiceImpl.java

@@ -154,7 +154,7 @@ public class NoticeServiceImpl implements NoticeService{
             msg.setKeyword2("校办公室");
             msg.setKeyword2("校办公室");
             msg.setKeyword3(DateUtils.format());
             msg.setKeyword3(DateUtils.format());
             msg.setKeyword4(data.getNotify_details());
             msg.setKeyword4(data.getNotify_details());
-            msg.setRemark(data.getNotify_remarks());
+            msg.setRemark("谢谢使用!");
             msg.setTemplateId(template.getSt_templateid());
             msg.setTemplateId(template.getSt_templateid());
             msg.setTouser(noticer.getOpenid());
             msg.setTouser(noticer.getOpenid());
             msg.setAppId(school.getSchool_appid());
             msg.setAppId(school.getSchool_appid());

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

@@ -3,6 +3,7 @@ package com.usoftchina.smartschool.wechat.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.usoftchina.smartschool.base.Result;
 import com.usoftchina.smartschool.base.Result;
+import com.usoftchina.smartschool.utils.StringUtils;
 import com.usoftchina.smartschool.wechat.po.MessageInfo;
 import com.usoftchina.smartschool.wechat.po.MessageInfo;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import com.usoftchina.smartschool.wechat.wxUtils.ObjectUtils;
 import com.usoftchina.smartschool.wechat.wxUtils.ObjectUtils;
@@ -29,7 +30,7 @@ public class WxPushServiceImpl implements WxPushService{
         if (ObjectUtils.isNotEmpty(openid)){
         if (ObjectUtils.isNotEmpty(openid)){
                 String json="{\"touser\":\""+openid+"\","
                 String json="{\"touser\":\""+openid+"\","
                         + "\"template_id\":\""+templateId+"\","
                         + "\"template_id\":\""+templateId+"\","
-                        + "\"url\":\""+""+url+""+"\","
+                        + "\"url\":\""+""+ (StringUtils.isEmpty(url) ? "" : url) +""+"\","
                         + "\"data\":{"
                         + "\"data\":{"
                         + "\"first\":{\"value\":\""+title+"\",\"color\":\"#173177\"},"
                         + "\"first\":{\"value\":\""+title+"\",\"color\":\"#173177\"},"
                         + "\"keyword1\":{\"value\":\""+keyword1+"\",\"color\":\"#173177\"},"
                         + "\"keyword1\":{\"value\":\""+keyword1+"\",\"color\":\"#173177\"},"
@@ -37,6 +38,7 @@ public class WxPushServiceImpl implements WxPushService{
                         + "\"keyword3\":{\"value\":\""+keyword3+"\",\"color\":\"#173177\"},"
                         + "\"keyword3\":{\"value\":\""+keyword3+"\",\"color\":\"#173177\"},"
                         + "\"keyword4\":{\"value\":\""+keyword4+"\",\"color\":\"#173177\"},"
                         + "\"keyword4\":{\"value\":\""+keyword4+"\",\"color\":\"#173177\"},"
                         + "\"remark\":{\"value\":\""+remark+"\",\"color\":\"#173177\"}}}";
                         + "\"remark\":{\"value\":\""+remark+"\",\"color\":\"#173177\"}}}";
+                logger.info("send to wechat, data={}", json);
                 HashMap<String, Object> params=new HashMap<>();
                 HashMap<String, Object> params=new HashMap<>();
                 params.put("appid", appId);
                 params.put("appid", appId);
                 params.put("secret", secret);
                 params.put("secret", secret);
@@ -77,7 +79,7 @@ public class WxPushServiceImpl implements WxPushService{
         if (ObjectUtils.isNotEmpty(info.getTouser())){
         if (ObjectUtils.isNotEmpty(info.getTouser())){
             String json="{\"touser\":\"" + info.getTouser() + "\","
             String json="{\"touser\":\"" + info.getTouser() + "\","
                     + "\"template_id\":\"" + info.getTemplateId() + "\","
                     + "\"template_id\":\"" + info.getTemplateId() + "\","
-                    + "\"url\":\"" + "" + info.getUrl() + "" + "\","
+                    + "\"url\":\"" + "" + (StringUtils.isEmpty(info.getUrl()) ? "" : info.getUrl()) + "" + "\","
                     + "\"data\":{"
                     + "\"data\":{"
                     + "\"first\":{\"value\":\"" + info.getTitle() + "\","
                     + "\"first\":{\"value\":\"" + info.getTitle() + "\","
                     +"\"color\":\"#173177\"},"
                     +"\"color\":\"#173177\"},"
@@ -87,7 +89,7 @@ public class WxPushServiceImpl implements WxPushService{
                     + "\"keyword4\":{\"value\":\"" + info.getKeyword4() + "\",\"color\":\"#173177\"},"
                     + "\"keyword4\":{\"value\":\"" + info.getKeyword4() + "\",\"color\":\"#173177\"},"
                     + "\"keyword5\":{\"value\":\"" + info.getKeyword5() + "\",\"color\":\"#173177\"},"
                     + "\"keyword5\":{\"value\":\"" + info.getKeyword5() + "\",\"color\":\"#173177\"},"
                     + "\"remark\":{\"value\":\"" + info.getRemark() + "\",\"color\":\"#173177\"}}}";
                     + "\"remark\":{\"value\":\"" + info.getRemark() + "\",\"color\":\"#173177\"}}}";
-
+            logger.info("send to wechat, data={}", json);
             HashMap<String, Object> params=new HashMap<>();
             HashMap<String, Object> params=new HashMap<>();
             params.put("appid", info.getAppId());
             params.put("appid", info.getAppId());
             params.put("secret", info.getSecret());
             params.put("secret", info.getSecret());

+ 2 - 12
base-servers/file/file-storage-fdfs/src/main/java/com/usoftchina/smartschool/file/storage/fdfs/FdfsFileStorageClient.java

@@ -4,8 +4,6 @@ import com.github.tobato.fastdfs.domain.StorePath;
 import com.github.tobato.fastdfs.service.FastFileStorageClient;
 import com.github.tobato.fastdfs.service.FastFileStorageClient;
 import com.usoftchina.smartschool.file.storage.FileMetadata;
 import com.usoftchina.smartschool.file.storage.FileMetadata;
 import com.usoftchina.smartschool.file.storage.FileStorageClient;
 import com.usoftchina.smartschool.file.storage.FileStorageClient;
-import com.usoftchina.smartschool.file.storage.util.FileType;
-import com.usoftchina.smartschool.file.storage.util.FileTypeUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
@@ -24,16 +22,8 @@ public class FdfsFileStorageClient implements FileStorageClient{
 
 
     @Override
     @Override
     public String uploadFile(InputStream inputStream, FileMetadata metadata) {
     public String uploadFile(InputStream inputStream, FileMetadata metadata) {
-        FileType type = FileTypeUtils.getFileType(metadata.getMime(), metadata.getExt());
-        StorePath storePath;
-        if (FileType.IMAGE == type) {
-            // 保存图片 + 生成缩略图
-            storePath = storageClient.uploadImageAndCrtThumbImage(inputStream, metadata.getSize(),
-                    metadata.getExt(), null);
-        } else {
-            storePath = storageClient.uploadFile(inputStream, metadata.getSize(),
-                    metadata.getExt(), null);
-        }
+        StorePath storePath = storageClient.uploadFile(inputStream, metadata.getSize(),
+                metadata.getExt(), null);
         return storePath.getFullPath();
         return storePath.getFullPath();
     }
     }
 
 

+ 18 - 14
frontend/wechat-web/src/modules/hiPages/approvel/Approvel.js

@@ -114,16 +114,18 @@ class Approvel extends Component {
                 height={this.state.height}>
                 height={this.state.height}>
                 <Skeleton loading={this.state.isMyapplyding} active paragraph={{rows: 3}}>
                 <Skeleton loading={this.state.isMyapplyding} active paragraph={{rows: 3}}>
                     {
                     {
+                        this.state.applyList.length > 0 ?
                         this.state.applyList.map((itemdata,index) =>
                         this.state.applyList.map((itemdata,index) =>
                             <ApprovelItem itemdata={itemdata} isMyApply={true}   index={index} onItemClick={this.onItemClick.bind(this)}/>
                             <ApprovelItem itemdata={itemdata} isMyApply={true}   index={index} onItemClick={this.onItemClick.bind(this)}/>
-                        )
+                        ) :
+                            <List dataSource={this.state.applyList}
+                                  renderItem={(applyListBean,index) => (
+                                      <List.Item>
+                                          <ApprovelItem itemdata={applyListBean} isMyApply={true}   index={index} onItemClick={this.onItemClick.bind(this)}/>
+                                      </List.Item>
+                                  )}/>
                     }
                     }
-                    {/*<List dataSource={this.state.applyList}*/}
-                          {/*renderItem={(applyListBean,index) => (*/}
-                              {/*<List.Item>*/}
-                                  {/*<ApprovelItem itemdata={applyListBean} isMyApply={true}   index={index} onItemClick={this.onItemClick.bind(this)}/>*/}
-                              {/*</List.Item>*/}
-                          {/*)}/>*/}
+
                 </Skeleton>
                 </Skeleton>
             </RefreshLayout>
             </RefreshLayout>
 
 
@@ -137,16 +139,18 @@ class Approvel extends Component {
                 height={this.state.height}>
                 height={this.state.height}>
                 <Skeleton loading={this.state.isMyapprovedload} active paragraph={{rows: 3}}>
                 <Skeleton loading={this.state.isMyapprovedload} active paragraph={{rows: 3}}>
                     {
                     {
+                        this.state.approvelList.length > 0 ?
                         this.state.approvelList.map((itemdata,index) =>
                         this.state.approvelList.map((itemdata,index) =>
                             <ApprovelItem itemdata={itemdata}isMyApply={false}  index={index} onItemClick={this.onItemClick.bind(this)}/>
                             <ApprovelItem itemdata={itemdata}isMyApply={false}  index={index} onItemClick={this.onItemClick.bind(this)}/>
-                        )
+                        ) :
+                        <List dataSource={this.state.approvelList}
+                        renderItem={(approvelListBean,index) => (
+                        <List.Item>
+                            <ApprovelItem itemdata={approvelListBean}isMyApply={false}  index={index} onItemClick={this.onItemClick.bind(this)}/>
+                        </List.Item>
+                    )}/>
                     }
                     }
-                    {/*<List dataSource={this.state.approvelList}*/}
-                          {/*renderItem={(approvelListBean,index) => (*/}
-                              {/*<List.Item>*/}
-                                  {/*<ApprovelItem itemdata={approvelListBean}isMyApply={false}  index={index} onItemClick={this.onItemClick.bind(this)}/>*/}
-                              {/*</List.Item>*/}
-                          {/*)}/>*/}
+
                 </Skeleton>
                 </Skeleton>
             </RefreshLayout>
             </RefreshLayout>
 
 

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

@@ -68,28 +68,29 @@ class LeaveListPage extends React.Component{
 
 
     render(){
     render(){
         return <div   style={{background: '#F2F2F2'}}>
         return <div   style={{background: '#F2F2F2'}}>
-            {
-                this.state.data.length > 0 ?
+
                     <RefreshLayout
                     <RefreshLayout
                         refreshing={this.state.isRefreshing}
                         refreshing={this.state.isRefreshing}
                         ref={el => {
                         ref={el => {
                             this.container = el
                             this.container = el
                         }}
                         }}
                         onRefresh={this.getListData}>
                         onRefresh={this.getListData}>
+                        {
+                            this.state.data.length > 0 ?
+                                this.state.data.map((itemdata,index) =>  <LeaveItem itemdata={itemdata} role={this.state.role} index = {index} onItemClick={this.onItemClick.bind(this)}></LeaveItem>)
+                                :
+                                <List dataSource={this.state.data}
+                                      renderItem={(itemdata,index) =>(
+                                          <List.Item  >
+                                              <LeaveItem itemdata={itemdata} role={this.state.role} index = {index} onItemClick={this.onItemClick.bind(this)}></LeaveItem>
+                                          </List.Item>
+                                      )}/>
+                        }
                         <Skeleton loading={this.state.isLoading} active paragraph={{rows: 3}}>
                         <Skeleton loading={this.state.isLoading} active paragraph={{rows: 3}}>
                             {this.state.data.map((itemdata,index) =>  <LeaveItem itemdata={itemdata} role={this.state.role} index = {index} onItemClick={this.onItemClick.bind(this)}></LeaveItem>
                             {this.state.data.map((itemdata,index) =>  <LeaveItem itemdata={itemdata} role={this.state.role} index = {index} onItemClick={this.onItemClick.bind(this)}></LeaveItem>
                             )}
                             )}
-                            {/*  <List dataSource={this.state.data}
-                                  renderItem={(itemdata,index) =>(
-                                      <List.Item  >
-                                          <LeaveItem itemdata={itemdata} role={this.state.role} index = {index} onItemClick={this.onItemClick.bind(this)}></LeaveItem>
-                                      </List.Item>
-                                  )}/>*/}
                         </Skeleton>
                         </Skeleton>
                     </RefreshLayout>
                     </RefreshLayout>
-                    :
-                    <div className="no_data"><img src={nodata_img} alt="" style={{width:'100%',height:'100%'}}/></div>
-            }
 
 
                     {
                     {
                         this.state.role=="teacher"?(""):(<Icon type="plus-circle" theme='filled' className='common-add-icon'
                         this.state.role=="teacher"?(""):(<Icon type="plus-circle" theme='filled' className='common-add-icon'
@@ -173,6 +174,7 @@ class LeaveListPage extends React.Component{
                 }
                 }
                 this.setState({
                 this.setState({
                     data: this.state.data,
                     data: this.state.data,
+                    // data:[],
                     isRefreshing: false,
                     isRefreshing: false,
                     isLoading: false
                     isLoading: false
                 })
                 })