Przeglądaj źródła

Merge branch 'master' of http://wcollector.idatabank.com:5230/dbs289/LifeCenter.git

huiwon.seo 4 lat temu
rodzic
commit
eaddcf8e07

+ 13 - 4
src/main/java/com/lemon/lifecenter/common/LifeCenterInterCeptor.java

@@ -34,20 +34,29 @@ public class LifeCenterInterCeptor extends HandlerInterceptorAdapter {
         Object session  = request.getSession().getAttribute( "sesId" );
         Object groupIdx = request.getSession().getAttribute( "sesGroupIdx" );
         
+        Object sesMId = request.getSession().getAttribute("sesMId");
+        System.out.println( "######################## sesMId : " + sesMId );
         System.out.println( "######################## groupIDX : " + groupIdx );
         
+        logger.error("url -- > " + url);
+        logger.error("url -- > " + url.contains( "/mobile" ));
+        
+        if (url.contains( "/error" )) {
+            return true;
+        }
+        
         if( url.contains( "/mobile" ) ) {
             
-            if( !url.equals( "/mobile/login" ) && !url.equals( "/mobile/chekc" ) ) {
-                if( session == null ) {
+            if( !url.equals( "/mobile/login" ) && !url.equals( "/mobile/check" ) ) {
+                if( sesMId == null ) {
                     response.sendRedirect( "/mobile/login" );
                     return false;
                 } else {
-                    logger.info( "IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + session.toString() + "  URL : " + url + " Port : " + port );
+                    logger.info( "IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + sesMId.toString() + "  URL : " + url + " Port : " + port );
                 }
                 
             } else if( url.equals( "/mobile/login" ) ) {
-                if( session != null ) {
+                if( sesMId != null ) {
                     response.sendRedirect( "/mobile/menu" );
                     return false;
                 }

+ 40 - 0
src/main/java/com/lemon/lifecenter/controller/MobileHistoryController.java

@@ -0,0 +1,40 @@
+package com.lemon.lifecenter.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.lemon.lifecenter.common.LifeCenterController;
+import com.lemon.lifecenter.common.LifeCenterSessionController;
+
+@Controller
+@RequestMapping("/mobile")
+public class MobileHistoryController  extends LifeCenterController {
+    
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    
+    @RequestMapping("/history")
+    public ModelAndView history(
+            HttpServletRequest request, HttpServletResponse response) {
+        String patientId = LifeCenterSessionController.getSession(request, "sesMId");
+        String roomId = LifeCenterSessionController.getSession(request, "sesMRoomNum");
+        String patientName = LifeCenterSessionController.getSession(request, "sesMName");
+        
+        ModelAndView mv = setMobileMV("history/history");
+        mv.addObject("patientId", patientId);
+        mv.addObject("roomId", roomId);
+        mv.addObject("name", patientName);
+        return mv;
+    }
+    
+    @RequestMapping("/serveyhistory")
+    public ModelAndView serveyhistory() {
+        ModelAndView mv = setMobileMV("history/serveyhistory");
+        return mv;
+    }
+}

+ 81 - 3
src/main/java/com/lemon/lifecenter/controller/MobileLoginController.java

@@ -1,23 +1,101 @@
 package com.lemon.lifecenter.controller;
 
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.lemon.lifecenter.common.LifeCenterConfigVO;
 import com.lemon.lifecenter.common.LifeCenterController;
+import com.lemon.lifecenter.common.LifeCenterFunction;
+import com.lemon.lifecenter.common.LifeCenterSessionController;
+import com.lemon.lifecenter.dto.CenterInfoDTO;
+import com.lemon.lifecenter.dto.PatientDTO;
+import com.lemon.lifecenter.service.MobilePatientService;
+import com.lemon.lifecenter.service.StaffService;
 
 @Controller
 @RequestMapping("/mobile")
 public class MobileLoginController extends LifeCenterController {
     
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    
+    @Autowired
+    private StaffService memberService;
+    
+    @Autowired
+    private MobilePatientService patientService;
+    
+    @Autowired
+    private LifeCenterConfigVO config;
+    
     @RequestMapping("/login")
     public ModelAndView login() {
+        List<CenterInfoDTO> centerList = memberService.selectCenterList();
+        
         ModelAndView mv = setMobileMV("login/login");
+        mv.addObject("centerList", centerList);
         return mv;
     }
     
-    @RequestMapping("/login/check")
-    public String loginCheck() {
-        return "";
+    @RequestMapping( value="/check", method = RequestMethod.POST )
+    @ResponseBody
+    public String loginCheck(
+            @ModelAttribute("dto") PatientDTO dto,
+            HttpServletRequest request, HttpServletResponse response) throws Exception {
+        
+        String resultCode = "99";
+        String message = "";
+        JSONObject object = new JSONObject();
+        
+        dto.setPw(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, dto.getPw()));
+        
+        int cnt = patientService.selectMPatientCount(dto);
+        if (cnt == 0) {
+            resultCode = "01";
+            message = "사용자정보가 일치하지 않습니다.";
+        } else {
+            dto = patientService.selectMPatientInfo(dto);
+            
+            LifeCenterSessionController.sessionInvalidate( request );
+            
+            LifeCenterSessionController.setSession(request, "sesMpIdx",String.valueOf(dto.getPatientIdx()));
+            LifeCenterSessionController.setSession(request, "sesMId", dto.getId());
+            LifeCenterSessionController.setSession(request, "sesMName", dto.getPatientName());
+            LifeCenterSessionController.setSession(request, "sesMGender", dto.getGender());
+            LifeCenterSessionController.setSession(request, "sesMWardNum", dto.getWardNumber());
+            LifeCenterSessionController.setSession(request, "sesMRoomNum", dto.getRoomNumber());
+            LifeCenterSessionController.setSession(request, "sesMCenterCode", dto.getCenterCode());
+            
+            resultCode = "00";
+        }
+        
+        object.put("code", resultCode);
+        object.put("message", message);
+        
+        return object.toString();
+    }
+    
+    @RequestMapping("/logout")
+    public String patientLogout( HttpServletRequest request, HttpServletResponse response ) {
+        String remoteIp  = LifeCenterFunction.getRemoteAddr( request );
+        String sesMId     = LifeCenterSessionController.getSession( request, "sesMId" );
+        
+        LifeCenterSessionController.sessionInvalidate( request );
+        
+        logger.error( "[PATIENT LOGOUT] RemoteIP : " + remoteIp + " UserId : " + sesMId );
+        
+        return "redirect:/mobile/login";
     }
 }

+ 17 - 1
src/main/java/com/lemon/lifecenter/controller/MobileMenuController.java

@@ -1,18 +1,34 @@
 package com.lemon.lifecenter.controller;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.lemon.lifecenter.common.LifeCenterController;
+import com.lemon.lifecenter.common.LifeCenterSessionController;
 
 @Controller
 @RequestMapping("/mobile")
 public class MobileMenuController extends LifeCenterController {
     
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    
     @RequestMapping("/menu")
-    public ModelAndView menu() {
+    public ModelAndView menu(
+            HttpServletRequest request, HttpServletResponse response) {
+        String patientId = LifeCenterSessionController.getSession(request, "sesMId");
+        String roomId = LifeCenterSessionController.getSession(request, "sesMRoomNum");
+        String patientName = LifeCenterSessionController.getSession(request, "sesMName");
+        
         ModelAndView mv = setMobileMV("menu/menu");
+        mv.addObject("patientId", patientId);
+        mv.addObject("roomId", roomId);
+        mv.addObject("name", patientName);
         return mv;
     }
 }

+ 15 - 11
src/main/java/com/lemon/lifecenter/controller/MobileNonFaceController.java

@@ -2,22 +2,21 @@ package com.lemon.lifecenter.controller;
 
 import java.util.HashMap;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.lemon.lifecenter.common.LifeCenterConfigVO;
 import com.lemon.lifecenter.common.LifeCenterController;
 import com.lemon.lifecenter.common.LifeCenterFunction;
-import com.lemon.lifecenter.dto.StaffDTO;
-
+import com.lemon.lifecenter.common.LifeCenterSessionController;
 @Controller
 @RequestMapping("/mobile")
 public class MobileNonFaceController extends LifeCenterController {
@@ -28,19 +27,24 @@ public class MobileNonFaceController extends LifeCenterController {
     private LifeCenterConfigVO config;
     
     @RequestMapping("/nonface")
-    public ModelAndView nonFace() throws Exception {
+    public ModelAndView nonFace(
+            HttpServletRequest request, HttpServletResponse response) throws Exception {
         
         String salt = LifeCenterFunction.getSalt();
         String timeStamp = LifeCenterFunction.getTimestamp();
         String signature = LifeCenterFunction.getSignature(config.nonFaceApiSecret, salt, timeStamp);
         
+        String patientId = LifeCenterSessionController.getSession( request, "sesMId" );
+        String roomId = LifeCenterSessionController.getSession(request, "sesMRoomNum");
+        String patientName = LifeCenterSessionController.getSession(request, "sesMName");
+        
         HashMap<String, String> data = new HashMap<String, String>();
         data.put("api_key", config.nonFaceApiKey);
         data.put("salt", salt);
         data.put("timestamp", timeStamp);
         data.put("signature", signature);
         data.put("client_id", config.nonFaceClientId);
-        data.put("member_id", "1503101");
+        data.put("member_id", patientId);
         
         String result = LifeCenterFunction.httpUrlConnection(config.nonFaceApiTokenUrl, data);
         JSONObject object = new JSONObject(result);
@@ -59,14 +63,14 @@ public class MobileNonFaceController extends LifeCenterController {
             //error
         }
         
-        String hashData = LifeCenterFunction.getSignature(config.nonFaceApiSecret, config.nonFaceApiKey, "1011503101");
+        String hashData = LifeCenterFunction.getSignature(config.nonFaceApiSecret, config.nonFaceApiKey, roomId + patientId); //"1011503101"
         
         ModelAndView mv = setMobileMV("nonface/nonface");
         mv.addObject("api_key", config.nonFaceApiKey);
-        mv.addObject("member_id", "1503101");
+        mv.addObject("member_id", patientId);
         mv.addObject("token", token);
-        mv.addObject("room_id", "101");
-        mv.addObject("member_name", "홍길동");
+        mv.addObject("room_id", roomId);
+        mv.addObject("member_name", patientName);
         mv.addObject("classify", "p");
         mv.addObject("hashData", hashData);
         

+ 18 - 0
src/main/java/com/lemon/lifecenter/controller/MobileServeyController.java

@@ -0,0 +1,18 @@
+package com.lemon.lifecenter.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.lemon.lifecenter.common.LifeCenterController;
+
+@Controller
+@RequestMapping("/mobile")
+public class MobileServeyController extends LifeCenterController {
+    
+    @RequestMapping("/servey")
+    public ModelAndView login() {
+        ModelAndView mv = setMobileMV("servey/servey");
+        return mv;
+    }
+}

+ 13 - 0
src/main/java/com/lemon/lifecenter/mapper/MobilePatientMapper.java

@@ -0,0 +1,13 @@
+package com.lemon.lifecenter.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import com.lemon.lifecenter.dto.PatientDTO;
+
+@Repository
+@Mapper
+public interface MobilePatientMapper {
+    public int selectMPatientCount(PatientDTO dto);
+    public PatientDTO selectMPatientInfo(PatientDTO dto);
+}

+ 22 - 0
src/main/java/com/lemon/lifecenter/service/MobilePatientService.java

@@ -0,0 +1,22 @@
+package com.lemon.lifecenter.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.lemon.lifecenter.dto.PatientDTO;
+import com.lemon.lifecenter.mapper.MobilePatientMapper;
+
+@Service
+public class MobilePatientService {
+    
+    @Autowired
+    private MobilePatientMapper mapper;
+    
+    public int selectMPatientCount(PatientDTO dto) {
+        return mapper.selectMPatientCount(dto);
+    }
+    
+    public PatientDTO selectMPatientInfo(PatientDTO dto) {
+        return mapper.selectMPatientInfo(dto);
+    }
+}

+ 32 - 0
src/main/resources/mybatis/mapper/mobile/login.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.lemon.lifecenter.mapper.MobilePatientMapper">
+    <select id="selectMPatientCount" parameterType="PatientDTO" resultType="int">
+        <![CDATA[
+            SELECT COUNT(*) total
+              FROM PATIENT_CARE
+             WHERE 1 = 1
+               AND ID = #{id}
+               AND PW = #{pw}
+               AND CENTER_CODE = #{centerCode}
+        ]]>
+    </select>
+    
+    <select id="selectMPatientInfo" parameterType="PatientDTO" resultType="PatientDTO">
+        <![CDATA[
+            SELECT PATIENT_IDX  AS patientIdx,
+                   PATIENT_NAME AS patientName,
+                   GENDER       AS gender,
+                   WARD_NUMBER  AS wardNumber,
+                   ROOM_NUMBER  AS roomNumber,
+                   CENTER_CODE  AS centerCode,
+                   ID           AS id
+              FROM PATIENT_CARE
+             WHERE 1 = 1
+               AND ID = #{id}
+               AND PW = #{pw}
+               AND CENTER_CODE = #{centerCode}
+        ]]>
+    </select>
+</mapper>

+ 117 - 1
src/main/webapp/WEB-INF/jsp/mobile/history/history.jsp

@@ -1,3 +1,119 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <%@ page language="java" contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>
+    pageEncoding="UTF-8"%>
+<jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+</head>
+<body>
+    <div id="sub">
+        <div class="container">
+            <div class="header">
+                <div class="previous">
+                    <a href="./menu">이전</a>
+                </div>
+                <div class="title">
+                    기록보기
+                </div>
+            </div>
+            <div class="examination">
+                <div class="daily">
+                    <a href="javascript:;" class="previous">이전</a>
+                    2020.09.09
+                    <a href="javascript:;" class="next active">다음</a>
+                </div>
+                <div class="history">
+                    <a href="./serveyhistory">문진 내역 보기 ▶</a>
+                </div>
+                <div class="data">
+                    <div class="point">
+                        건강기록
+                    </div>
+                    <div class="table">
+                        <table>
+                            <colgroup>
+                                <col style="width: 30%;">
+                                <col style="width: 35%;">
+                                <col style="width: 35%;">
+                            </colgroup>
+                            <thead class="gray">
+                                <tr>
+                                    <th>구분</th>
+                                    <th>오전</th>
+                                    <th>오후</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr>
+                                    <th>체온</th>
+                                    <td>
+                                        <div class="check">36.6 ℃</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                    <td>
+                                        <div class="check">36.6 ℃</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <th>맥박수/혈압</th>
+                                    <td>
+                                        <div class="check">00bpm</div>
+                                        <div class="mini">수축기 000mmHg</div>
+                                        <div class="mini">이완기 000mmHg</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                    <td>
+                                        <div class="check">00bpm</div>
+                                        <div class="mini">수축기 000mmHg</div>
+                                        <div class="mini">이완기 000mmHg</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <th>산소포화도</th>
+                                    <td>
+                                        <div class="check">95% / 63bpm</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                    <td>
+                                        <div class="check">95% / 63bpm</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <th>혈당</th>
+                                    <td>
+                                        <div class="check">00mg/dl</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                    <td>
+                                        <div class="check">00mg/dl</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <th>임상증상</th>
+                                    <td>
+                                        <div class="check">기침/두통</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                    <td>
+                                        <div class="check">기침/두통</div>
+                                        <div class="date">2020.09.09 10:20</div>
+                                    </td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
+            <div class="btn_group">
+                <ul>
+                    <li>
+                        <a href="./menu" class="confirm"><span class="check">확인</span></a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</body>
+</html>

+ 171 - 0
src/main/webapp/WEB-INF/jsp/mobile/history/serveyhistory.jsp

@@ -0,0 +1,171 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+</head>
+<body>
+    <div id="sub">
+        <div class="container">
+            <div class="header">
+                <div class="previous">
+                    <a href="./history">이전</a>
+                </div>
+                <div class="title">
+                    문진내역보기
+                </div>
+            </div>
+            <div class="check_list">
+                <div class="part">
+                    <div class="title">
+                        1. 입원일을 입력 하세요.
+                    </div>
+                    <div class="date">
+                        2020년 11월 11일
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        2. 코로나 19 확진일을 입력 하세요
+                    </div>
+                    <div class="date">
+                        2020년 11월 11일
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        3. 증상 시작일을 입력 하세요.
+                    </div>
+                    <div class="date">
+                        2020년 11월 11일
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        4. 성별을 입력하세요.
+                    </div>
+                    <div class="list">
+                        남자
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        5. 생년월일을 입력 하세요
+                    </div>
+                    <div class="date">
+                        1978년 11월 11일
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        6. 기저질환 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        예
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        7. 6번의 ”예“인 경우 해당되는 기저질환을 모두 체크해주세요
+                    </div>
+                    <div class="list">
+                        고혈압, 호흡기질환
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        8. 현재 증상을 체크하세요 
+                    </div>
+                    <div class="list">
+                        기침, 가래
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        9. 체온을 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            우측 37.1 ℃
+                        </label>
+                        <label class="inline">
+                            좌측 36.5 ℃
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        10. 맥박수를 입력하세요.
+                    </div>
+                    <div class="data">
+                        78 회/분
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        11. 호흡수를 입력하세요.
+                    </div>
+                    <div class="data">
+                        67 회/분
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        12. 혈압을 입력하세요.
+                    </div>
+                    <div class="data">
+                        수축기 124mmHg / 이완기 13mmHg
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        13. 산소포화도를 입력하세요.
+                    </div>
+                    <div class="data">
+                        78%
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        14. 최근 24시간 이내 약 복용 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        예
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        15. 14번의 ”예“인 경우 약명을 입력 하세요
+                    </div>
+                    <div class="data">
+                        후시딘
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        16. 임신 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        예
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        17. 16번의 ”예“인 경우 임신 주차를 입력 하세요
+                        <span class="mini">(만일 ”아니오“ 경우에는 입력하지 마세요)</span>
+                    </div>
+                    <div class="data">
+                        임신 주차 : 4주차
+                    </div>
+                </div>
+            </div>
+            <div class="btn_group">
+                <ul>
+                    <li>
+                        <a href="./history" class="confirm"><span class="check">확인</span></a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</body>
+</html>

+ 2 - 1
src/main/webapp/WEB-INF/jsp/mobile/include/header.jsp

@@ -11,5 +11,6 @@
 <title><c:out value="${data._TITLE}"/></title>
 <link rel="stylesheet" type="text/css" href="/resources/css/mobile/style.css" />
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
-<script type="text/javascript" src="/resources/js/mobile/jquery-1.12.4.min.js"></script>
+<!-- <script type="text/javascript" src="/resources/js/mobile/jquery-1.12.4.min.js"></script> -->
+<script type="text/javascript" src="/resources/js/mobile/app.js"></script>
 <script type="text/javascript" src="/resources/js/mobile/common.js"></script>

+ 96 - 31
src/main/webapp/WEB-INF/jsp/mobile/login/login.jsp

@@ -1,7 +1,63 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+<script type="text/javascript">
+$( function(){
+    $( "#id" ).focus();
+    
+    $( "#loginForm" ).validate({
+        onfocusout: function (element) {
+            $( element ).valid();
+//             $( "#msg" ).remove();
+        },
+        messages : {
+            id : {
+                required : "아이디를 입력해주세요."
+            },
+            pw : {
+                required : "비밀번호를 입력해주세요."
+            }
+        },
+        submitHandler: function(form) {
+//             $( "#submitLoading" ).toggleClass( "d-none", false );
+//             $( "#submitBtn" ).toggleClass( "d-none", true );
+            
+            $.ajax({
+                url      : "./check",
+                data     : $("#loginForm").serialize(),
+                method   : "POST",
+                dataType : "json",
+                success  : function( data ){
+                    console.log("data -- > " + JSON.stringify(data));
+                    var resultCode = data.code;
+                    var resultMsg  = data.message;
+                    
+                    if( data.code == "00" ) {
+                        location.href="/mobile/menu";
+                    } else {
+                    	$("#errMsg").text(resultMsg);
+//                         $( "#submitLoading" ).toggleClass( "d-none", true );
+//                         $( "#submitBtn" ).toggleClass( "d-none", false );
+                    };
+                },
+                error : function(){
+//                     $("#errMsg").attr("")
+//                     $( "#submitLoading" ).toggleClass( "d-none", true );
+//                     $( "#submitBtn" ).toggleClass( "d-none", false );
+                }
+            }).done( function(){
+//                 if( $( "#saveId" ).is( ":checked" ) ) {
+//                     setCookie( "userInputId", $( "#id" ).val(), 365 );
+//                 } else {
+//                     deleteCookie( "userInputId" );
+//                 }
+            });
+        }
+    });
+});
+</script>
 </head>
 <body>
     <div id="login">
@@ -9,44 +65,53 @@
             <div class="title">
                 생활치료센터
             </div>
-            <div class="login_box">
-                <div class="visual">
-                    <img src="/resources/images/mobile/login_visual.png" />
-                </div>
-                <div class="form">
-                    <div class="part">
-                        <div class="selectbox">
-                            <label for="ex_select">치료센터 확인</label>
-                            <select id="ex_select">
-                                <option selected>치료센터 확인</option>
-                                <option>레몬병원</option>
-                                <option>레몬병원</option>
-                                <option>레몬병원</option>
-                            </select>
-                        </div>
+            <form id="loginForm" action="./check" method="post">
+                <div class="login_box">
+                    <div class="visual">
+                        <img src="/resources/images/mobile/login_visual.png" />
                     </div>
-                    <div class="part">
-                        <div class="input">
-                            <input type="text" name="" class="number" placeholder="병동번호">
+                    <div class="form">
+                        <div class="part">
+                            <div class="selectbox">
+                                <label for="ex_select">치료센터 확인</label>
+                                <select id="ex_select" name="centerCode">
+                                    <c:forEach var="i" items="${centerList}">
+                                        <option value="${i.centerCode}"><c:out value="${i.centerName}" /></option> 
+                                    </c:forEach>
+    <!--                                 <option selected>치료센터 확인</option> -->
+    <!--                                 <option>레몬병원</option> -->
+    <!--                                 <option>레몬병원</option> -->
+    <!--                                 <option>레몬병원</option> -->
+                                </select>
+                            </div>
                         </div>
-                    </div>
-                    <div class="part">
-                        <div class="input">
-                            <input type="text" name="" class="date" placeholder="생년월일 6자리">
+                        <div class="part">
+                            <div class="input">
+                                <input type="text" name="id" class="number1" placeholder="병동번호" tabindex="1" maxlength="20" required>
+                            </div>
                         </div>
-                    </div>
-                    <div class="part">
-                        <div class="alert">
-                            입력하신 정보가 일치하지 않습니다.
+                        <div class="part">
+                            <div class="input">
+                                <input type="password" name="pw" class="date1" placeholder="생년월일 6자리" autocomplete="off" tabindex="2" maxlength="15" required>
+                            </div>
                         </div>
-                    </div>
-                    <div class="part">
-                        <div class="button">
-                            <a href="javascript:;">로그인</a>
+                        <div class="part">
+                            <div class="alert" id="errMsg">
+<!--                                 입력하신 정보가 일치하지 않습니다. -->
+                            </div>
+                        </div>
+                        <div class="part">
+                            <div class="button">
+                                <!-- <button id="submitBtn">로그인</button> -->
+                                <button id="submitBtn" type="submit" class="btn btn-lg btn-primary">로그인</button>
+                                <div id="submitLoading" class="d-none align-bottom spinner-border text-primary" role="status">
+                                  <span class="sr-only">Loading...</span>
+                                </div>
+                            </div>
                         </div>
                     </div>
                 </div>
-            </div>
+            </form>
         </div>
     </div>
 </body>

+ 9 - 9
src/main/webapp/WEB-INF/jsp/mobile/menu/menu.jsp

@@ -1,4 +1,5 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
@@ -13,12 +14,11 @@
                             <span></span>
                             <span></span>
                             <span></span>
-                            <span></span>
                         </a>
                     </div>
                     <div class="name">
-                        <span>김수철</span> 님
-                        <a href="javascript:;" class="logout">로그아웃</a>
+                        <span><c:out value="${name}" /></span> 님
+                        <a href="./logout" class="logout">로그아웃</a>
                     </div>
                     <div class="category">
                         <ul>
@@ -26,16 +26,16 @@
                                 <a href="javascript:;">건강정보기록</a>
                             </li>
                             <li>
-                                <a href="javascript:;">문진</a>
+                                <a href="./servey">문진</a>
                             </li>
                             <li>
                                 <a href="javascript:;">건강 기기 관리</a>
                             </li>
                             <li>
-                                <a href="javascript:;">My 기록보기</a>
+                                <a href="./history">My 기록보기</a>
                             </li>
                             <li>
-                                <a href="javascript:;">비대면 진료</a>
+                                <a href="./nonface">비대면 진료</a>
                             </li>
                             <li>
                                 <a href="javascript:;">생활치료센터 이용 안내</a>
@@ -83,7 +83,7 @@
                         </a>
                     </li>
                     <li>
-                        <a href="javascript:;">
+                        <a href="./servey">
                             <div class="image">
                                 <div class="new_icon">NEW</div>
                                 <img src="/resources/images/mobile/quick_2.png" />
@@ -94,7 +94,7 @@
                         </a>
                     </li>
                     <li>
-                        <a href="javascript:;">
+                        <a href="./history">
                             <div class="image">
                                 <img src="/resources/images/mobile/quick_3.png" />
                             </div>
@@ -104,7 +104,7 @@
                         </a>
                     </li>
                     <li>
-                        <a href="javascript:;">
+                        <a href="./nonface">
                             <div class="image">
                                 <div class="new_icon">NEW</div>
                                 <img src="/resources/images/mobile/quick_4.png" />

+ 3 - 9
src/main/webapp/WEB-INF/jsp/mobile/nonface/nonface.jsp

@@ -11,20 +11,14 @@ $( function() {
 </head>
 <body>
     
-    <form id="nonface" action="https://lemon.medihere.com/app/vc" method="POST" style="margin: auto;
-    text-align: center;
-    position: fixed;
-    top: 20%;
-    left: 50%;
-    transform: translateX(-50%);">
+    <form id="nonface" action="https://lemon.medihere.com/app/vc" method="POST">
         <input type="hidden" name="member_name" value="${member_name}" />
         <input type="hidden" name="member_id" value="${member_id}" />
         <input type="hidden" name="room_id" value="${room_id}" />
-        <input type="hidden" name="token"
-            value="${token}">
+        <input type="hidden" name="token" value="${token}">
         <input type="hidden" name="api_key" value="${api_key}" />
         <input type="hidden" name="hashData" value="${hashData}">
-        <input type="hidden" name="classify" value="d">
+        <input type="hidden" name="classify" value="p"> <!-- 환자는 p 의료진은 d -->
     </form>
     
     <div id="displayphone">

+ 393 - 0
src/main/webapp/WEB-INF/jsp/mobile/servey/servey.jsp

@@ -0,0 +1,393 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+
+<script type="text/javascript">
+
+</script>
+</head>
+<body>
+    <div id="sub">
+        <div class="container">
+            <div class="header">
+                <div class="previous">
+                    <a href="javascript:;">이전</a>
+                </div>
+                <div class="title">
+                    문진
+                </div>
+            </div>
+            <div class="alert">
+                생활치료센터 만족도 조사 
+            </div>
+            <div class="check_list" id="check_list1">
+                <div class="part">
+                    <div class="title">
+                        1. 입원일을 입력 하세요.
+                    </div>
+                    <div class="date">
+                        <div class="year">
+                            <select>
+                                <option>1900</option>
+                            </select> 년
+                        </div>
+                        <div class="month">
+                            <input type="text" name=""> 월
+                        </div>
+                        <div class="day">
+                            <input type="text" name=""> 일
+                        </div>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        2. 코로나 19 확진일을 입력 하세요
+                    </div>
+                    <div class="date">
+                        <div class="year">
+                            <select>
+                                <option>1900</option>
+                            </select> 년
+                        </div>
+                        <div class="month">
+                            <input type="text" name=""> 월
+                        </div>
+                        <div class="day">
+                            <input type="text" name=""> 일
+                        </div>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        3. 증상 시작일을 입력 하세요.
+                    </div>
+                    <div class="date">
+                        <div class="year">
+                            <select>
+                                <option>1900</option>
+                            </select> 년
+                        </div>
+                        <div class="month">
+                            <input type="text" name=""> 월
+                        </div>
+                        <div class="day">
+                            <input type="text" name=""> 일
+                        </div>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        4. 성별을 입력하세요.
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="radio" id="a1" name="aa" />
+                                <label for="a1"><span></span>남</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="a2" name="aa" />
+                                <label for="a2"><span></span>여</label>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        5. 생년월일을 입력 하세요
+                    </div>
+                    <div class="date">
+                        <div class="year">
+                            <select>
+                                <option>1900</option>
+                            </select> 년
+                        </div>
+                        <div class="month">
+                            <input type="text" name=""> 월
+                        </div>
+                        <div class="day">
+                            <input type="text" name=""> 일
+                        </div>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        6. 기저질환 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="radio" id="b1" name="bb" />
+                                <label for="b1"><span></span>예</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="b2" name="bb" />
+                                <label for="b2"><span></span>아니오</label>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        7. 6번의 ”예“인 경우 해당되는 기저질환을 모두 체크해주세요
+                        <span class="mini">(만일 ”아니오“ 경우에는 입력하지 마세요)</span>
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="radio" id="c1" name="cc" />
+                                <label for="c1"><span></span>고혈압</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c2" name="cc" />
+                                <label for="c2"><span></span>저혈압</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c3" name="cc" />
+                                <label for="c3"><span></span>장기이식(신장,간등)</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c4" name="cc" />
+                                <label for="c4"><span></span>당뇨병</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c5" name="cc" />
+                                <label for="c5"><span></span>호흡기질환</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c6" name="cc" />
+                                <label for="c6"><span></span>면역질환(류마티스 등)</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c7" name="cc" />
+                                <label for="c8"><span></span>심장질환</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c9" name="cc" />
+                                <label for="c9"><span></span>간질환</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c10" name="cc" />
+                                <label for="c10"><span></span>수술</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c11" name="cc" />
+                                <label for="c11"><span></span>알레르기</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="c11" name="cc" />
+                                <label for="c11"><span></span>암</label>
+                            </li>
+                            <li class="full">
+                                <input type="radio" id="c12" name="cc" />
+                                <label for="c12"><span></span>기타</label>
+                                <div class="comment">
+                                    <input type="text" placeholder="기타 증상 및 암명/수술명을 입력하세요.">
+                                </div>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        8. 현재 증상을 체크하세요 
+                        <span class="mini">(모두 체크하세요)</span>
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="checkbox" id="d1" name="dd" />
+                                <label for="d1"><span></span>열감(열나는 느낌)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d2" name="dd" />
+                                <label for="d2"><span></span>기침</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d3" name="dd" />
+                                <label for="d3"><span></span>복통(배아픔)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d4" name="dd" />
+                                <label for="d4"><span></span>오한(추운 느낌)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d5" name="dd" />
+                                <label for="d5"><span></span>가래</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d6" name="dd" />
+                                <label for="d6"><span></span>오심(구역질)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d7" name="dd" />
+                                <label for="d7"><span></span>흉통(가슴 통증)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d8" name="dd" />
+                                <label for="d8"><span></span>콧물 또는 코 막힘</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d9" name="dd" />
+                                <label for="d9"><span></span>구토</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d10" name="dd" />
+                                <label for="d10"><span></span>근육통(몸살)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d11" name="dd" />
+                                <label for="d11"><span></span>인후통(목 아픔)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d12" name="dd" />
+                                <label for="d12"><span></span>설사</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d13" name="dd" />
+                                <label for="d13"><span></span>두통(머리아픔)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d14" name="dd" />
+                                <label for="d14"><span></span>호흡곤란(숨 가쁨)</label>
+                            </li>
+                            <li>
+                                <input type="checkbox" id="d15" name="dd" />
+                                <label for="d15"><span></span>권태감(피곤함)</label>
+                            </li>
+                            <li class="full">
+                                <input type="checkbox" id="d16" name="dd" />
+                                <label for="d16"><span></span>기타</label>
+                                <div class="comment">
+                                    <input type="text" placeholder="기타 증상 및 암명/수술명을 입력하세요.">
+                                </div>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        9. 체온을 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            우측 ( <input type="text" name=""> ) ℃
+                        </label>
+                        <label class="inline">
+                            좌측 ( <input type="text" name=""> ) ℃
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        10. 맥박수를 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            ( <input type="text" name=""> ) 회/분
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        11. 호흡수를 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            ( <input type="text" name=""> ) 회/분
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        12. 혈압을 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            수축기( <input type="text" name=""> )mmHg
+                        </label>
+                        <label class="inline">
+                            이완기( <input type="text" name=""> )mmHg
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        13. 산소포화도를 입력하세요.
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            ( <input type="text" name=""> )%
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        14. 최근 24시간 이내 약 복용 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="radio" id="e1" name="ee" />
+                                <label for="e1"><span></span>예</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="e2" name="ee" />
+                                <label for="e2"><span></span>아니오</label>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        15. 14번의 ”예“인 경우 약명을 입력 하세요
+                        <span class="mini">(만일 ”아니오“ 경우에는 입력하지 마세요)</span>
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            약명 ( <input type="text" name=""> )
+                        </label>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        16. 임신 여부를 체크하세요.
+                    </div>
+                    <div class="list">
+                        <ul class="circle half">
+                            <li>
+                                <input type="radio" id="f1" name="ff" />
+                                <label for="f1"><span></span>예</label>
+                            </li>
+                            <li>
+                                <input type="radio" id="f2" name="ff" />
+                                <label for="f2"><span></span>아니오</label>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+                <div class="part">
+                    <div class="title">
+                        17. 16번의 ”예“인 경우 임신 주차를 입력 하세요
+                        <span class="mini">(만일 ”아니오“ 경우에는 입력하지 마세요)</span>
+                    </div>
+                    <div class="data">
+                        <label class="inline">
+                            임신 주차 ( <input type="text" name=""> ) 주
+                        </label>
+                    </div>
+                </div>
+            </div>
+            
+            <div class="btn_group">
+                <ul>
+                    <li>
+                        <a href="javascript:;" class="confirm">제출</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</body>
+</html>

+ 0 - 3
src/main/webapp/WEB-INF/jsp/mobile/survey/servey.jsp

@@ -1,3 +0,0 @@
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>

+ 52 - 11
src/main/webapp/resources/css/mobile/style.css

@@ -83,7 +83,7 @@ caption {text-align:left;}
 #login .input input.number { background-image: url('../../images/mobile/login_number_icon.png'); background-position: left 5px center; background-repeat: no-repeat; }
 #login .input input.date { background-image: url('../../images/mobile/login_date_icon.png'); background-position: left 5px center; background-repeat: no-repeat; }
 #login .alert { font-size: 13px; color:#D70000; margin: 10px 0px 15px 0px; }
-#login .button a { display: block; background-color: #426DDB; font-size: 15px; font-weight: 700; color:#FFFFFF; text-align: center; line-height: 50px; height: 50px; border-radius: 25px; }
+#login .button button { display: block; background-color: #426DDB; font-size: 15px; font-weight: 700; color:#FFFFFF; text-align: center; line-height: 50px; height: 50px; width: 100%; border-radius: 25px; }
 
 /* MAIN PAGE */
 #main {}
@@ -138,11 +138,11 @@ caption {text-align:left;}
 #sub .header .title { font-size: 18px; font-weight: 500; color:#FFFFFF; text-align: center; }
 #sub .alert { background-color: #FAFAFA; font-size: 14px; font-weight: 500; color:#428ADC; padding: 15px 20px; border-bottom: 1px solid #CCCCCC; }
 .list input[type="checkbox"] { display:none; }
-.list input[type="checkbox"] + label { font-size: 15px; }
+.list input[type="checkbox"] + label { font-size: 14px; letter-spacing: -1px; }
 .list input[type="checkbox"] + label span { display:inline-block; width:19px; height:19px; margin:-2px 10px 0 0; vertical-align:middle; background-image:url('../../images/mobile/check_circle_icon.png'); background-repeat: no-repeat; background-position: center; background-size: 19px; cursor:pointer; }
 .list input[type="checkbox"]:checked + label span {  background-image:url('../../images/mobile/check_circle_icon_check.png'); background-repeat: no-repeat; background-position: center; background-size: 19px; }
 input[type="radio"] { display:none; }
-input[type="radio"] + label { font-size: 15px; }
+input[type="radio"] + label { font-size: 14px; letter-spacing: -1px; }
 input[type="radio"] + label span { display:inline-block; width:19px; height:19px; margin:-2px 10px 0 0; vertical-align:middle; background-image:url('../../images/mobile/check_circle_icon.png'); background-repeat: no-repeat; background-position: center; background-size: 19px; cursor:pointer; }
 input[type="radio"]:checked + label span {  background-image:url('../../images/mobile/check_circle_icon_check.png'); background-repeat: no-repeat; background-position: center; background-size: 19px; }
 .btn_group { position: fixed; left: 0px; right: 0px; bottom: 0px; background-color: #FFFFFF; border-top: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; }
@@ -159,7 +159,18 @@ input[type="radio"]:checked + label span {  background-image:url('../../images/m
 .check_list {}
 .check_list .part { padding: 20px; border-bottom: 1px solid #DDDDDD; }
 .check_list .title { font-size: 16px; font-weight: 500; margin-bottom: 15px; }
-.check_list .title .mini { display: block; font-size: 13px; color:#666666; }
+.check_list .title .mini { display: block; font-size: 13px; color:#666666; margin-top: 5px; }
+.check_list .data {}
+.check_list .data label { display: inline-block; margin-right: 10px; }
+.check_list .data label:last-child { margin-right: 0px; }
+.check_list .data label input[type="text"] { max-width: 60px; height: 30px; line-height: 30px; }
+.check_list .date {}
+.check_list .date:after { display: block; content: ''; clear: both; }
+.check_list .date input[type="text"] {width: calc(100% - 30px); width: -webkit-calc(100% - 30px); width: -moz-calc(100% - 30px); width: -o-calc(100% - 30px); width: -ms-calc(100% - 30px); line-height: 30px; height: 30px; border: 1px solid #EAEAEA; }
+.check_list .date select { width: calc(100% - 30px); width: -webkit-calc(100% - 30px); width: -moz-calc(100% - 30px); width: -o-calc(100% - 30px); width: -ms-calc(100% - 30px); line-height: 30px; height: 30px; border: 1px solid #EAEAEA; }
+.check_list .date .year { float: left; width: 40%; font-size: 14px; line-height: 30px; height: 30px; }
+.check_list .date .month { float: left; width: 30%; }
+.check_list .date .day { float: left; width: 30%; }
 .check_list .list ul:after { display: block; content: ''; clear: both; }
 .check_list .list li { float: left; width: 100%; margin: 10px 0px;}
 .check_list .list .half:after { display: block; content: ''; clear: both; } 
@@ -287,19 +298,20 @@ input[type="radio"]:checked + label span {  background-image:url('../../images/m
 .health { padding: 20px; }
 .health .part { margin-bottom: 15px; }
 .health .part .title { font-size: 16px; font-weight: 500; margin-bottom: 5px; }
-.health .part .input {}
+.health .part .input { position: relative; }
 .health .part .input input[type="text"]{ width: 100%; font-size: 15px; color:#427BDC; padding: 10px; border: 0px; border-bottom: 1px solid #DDDDDD; }
 .health .part .input input[type="text"]::placeholder { color:#427BDC; }
-.health .part .input.day input[type="text"] { background-image: url('../../images/mobile/health_calendar.png'); background-repeat: no-repeat; background-position: right 10px center; }
-.health .part .input.time input[type="text"] { background-image: url('../../images/mobile/health_time.png'); background-repeat: no-repeat; background-position: right 10px center; }
+.health .part .input.day a { background-image: url('../../images/mobile/health_calendar.png'); background-repeat: no-repeat; background-position: center; width: 20px; height: 20px; position: absolute; right: 10px; top: 50%; margin-top: -10px; z-index: 10; text-indent: -9999px; }
+.health .part .input.time a { background-image: url('../../images/mobile/health_time.png'); background-repeat: no-repeat; background-position: center; width: 20px; height: 20px; position: absolute; right: 10px; top: 50%; margin-top: -10px; z-index: 10; text-indent: -9999px; }
 .health .data { background-color: #404C60; text-align: center; padding: 20px; border-radius: 10px; }
 .health .data.link { color:#FFFFFF; }
-.health .data.unlink{ color:#8B909A; }
-.health .data .point { font-size: 28px; margin-bottom: 5px; }
+.health .data.unlink{ color:#FFFFFF; }
+.health .data .point { font-size: 18px;  }
+.health .data input[type="text"] { background-color: inherit; max-width: 80px; color: #FFFFFF; height: 30px; line-height: 30px; text-align: center; padding: 0px 4px; font-size: 18px; border: 1px solid #999999; }
 .health .data .point span.mini { position: relative; margin-left: 10px; font-size: 20px; }
 .health .data .point span.line { padding-left: 10px; }
 .health .data .point span.line:after { position: absolute; left: 0px; top: 50%; margin-top:-5px; display: block; content: ''; clear: both; width: 1px; height: 10px; background-color: rgba(255,255,255,0.5); }
-.health .data .table { margin-bottom: 15px; }
+.health .data .table { margin-top: 20px; margin-bottom: 15px; }
 .health .data .table th { font-size: 13px; color:#8EB8FF; }
 .health .data .table td { font-size: 30px; color:#FFFFFF; }
 .health .data .table th:first-child { border-right: 1px solid rgba(255,255,255,0.4); }
@@ -307,5 +319,34 @@ input[type="radio"]:checked + label span {  background-image:url('../../images/m
 .health .data .table td .mini { display: block; font-size: 13px; }
 .health .data .guide { font-size: 12px; margin-top: 5px; }
 
-
+.popup { display: none; position: fixed; left: 0px; right: 0px; top: 0px; bottom: 0px; background-color: rgba(0,0,0,0.4); z-index: 100; }
+.pop_inner { max-width: 700px; width: 90%; padding: 20px; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); box-shadow: 0px 2px 6px rgba(0,0,0,1); border-radius: 3px; background: #fff; } }
+.pop_inner ul {list-style-type: none;}
+.pop_inner .month { padding: 20px 25px; width: 100%; background: #1abc9c; text-align: center; }
+.pop_inner .month ul { margin: 0; padding: 0; }
+.pop_inner .month ul li { color: white; font-size: 18px; text-transform: uppercase; letter-spacing: 2px; }
+.pop_inner .month ul li span { display: block; font-size: 14px; margin-bottom: 5px; }
+.pop_inner .month .prev { float: left; padding-top: 10px; }
+.pop_inner .month .prev a { color:#FFFFFF; }
+.pop_inner .month .next { float: right; padding-top: 10px; }
+.pop_inner .month .next a { color:#FFFFFF; }
+.pop_inner .weekdays { margin: 0; padding: 10px 0; background-color:#ddd; }
+.pop_inner .weekdays:after { display: block; content: ''; clear: both; }
+.pop_inner .weekdays li { float: left; width: 14.28%; color: #666; text-align: center; }
+.pop_inner .days { padding: 10px 0; margin: 0; }
+.pop_inner .days:after { display: block; content: ''; clear: both; }
+.pop_inner .days li { float: left; list-style-type: none; width: 14.28%; text-align: center; margin-bottom: 5px; font-size:12px; color: #777; }
+.pop_inner .days li span.active {  background-color: #1abc9c; color: white !important }
+.pop_inner .days li span:hover { color: #1abc9c; }
+.pop_inner .days li span { display: block; padding: 5px; }
+.pop_inner .time {}
+.pop_inner .time:after { display: block; content: ''; clear: both; }
+.pop_inner .time label { float: left; width: 32%; margin-right: 2% }
+.pop_inner .time label:last-child { margin-right: 0px; }
+.pop_inner .time select { width: 100%; height: 40px; font-size: 16px; line-height: 40px; padding: 0px 10px; }
+.pop_inner .btn { text-align: right; margin-top: 10px;}
+.pop_inner .btn ul li { display: inline-block; }
+.pop_inner .btn ul li a { display: block; width: 70px; height: 30px; line-height: 30px; text-align: center; }
+.pop_inner .btn ul li a.cancle { background-color: #666666; color:#FFFFFF; }
+.pop_inner .btn ul li a.confirm { background-color: #1abc9c; color:#FFFFFf; }
 

Plik diff jest za duży
+ 453 - 0
src/main/webapp/resources/js/mobile/app.js