浏览代码

Merge branch 'master' of http://192.168.1.220:10080/raolu/PC-application

chenyue 5 年之前
父节点
当前提交
0dbcd9191c

+ 338 - 326
api/http-request.js

@ -1,327 +1,339 @@
(function($) {
    var publish_version = false;
    var isInner = false; //发布线上后有内外网的配置
    var docInfo = "app_storage";
    var agentName = "wlyyAgentForDoc";
    var docAgentName = "wlyyAgent";
    var server, userAgent, loginUrl, imserver, socketUrl, imgServer;
    var IMEI = localStorage.getItem('WLYY_IMEI') || uuid(16, 16)
    localStorage.setItem('WLYY_IMEI', IMEI)
    $.support.cors = true;
    if(publish_version) { // 生产环境配置
        server = "http://www.xmtyw.cn/wlyy/"
        imserver = "http://27.155.101.77:3000/api/v2";
        socketUrl = "http://27.155.101.77:3000";
        articleServer = "http://www.xmtyw.cn/wlyytest/"
        loginUrl = "../../login/login.html";
        imgServer = "http://www.xmtyw.cn/";
        if(isInner){
            server = "http://10.95.22.10:8011/wlyy/"
            imserver = "http://10.95.22.138:3000/api/v2";
            socketUrl = "http://10.95.22.138:3000";
            articleServer = "http://10.95.22.10:8011/wlyy/"
            loginUrl = "../../login/login.html";
            imgServer = "http://10.95.22.10:8011/";
        }
    } else { // 测试环境配置
        server = "http://172.26.0.118:9092/wlyy/"
        imserver = "http://172.26.0.118:3000/api/v2";
        socketUrl = "http://172.26.0.118:3000";
//      server = "http://192.168.131.154:8080/"
        articleServer="http://172.26.0.118:9092/wlyy/"
//   server = "http://192.168.131.130:8080/";
//		server = "http://192.168.131.123:8080/"; // 明芬
//      server = "http://192.168.131.127:8060/"; //逸祥
//      server = "http://192.168.131.24:8080/"; //仕杰
//      server = "http://192.168.131.143:8080/"; // 志南
//      server = "http://192.168.131.24:8082/"; // 文彬
//      imserver = "http://192.168.131.24:3000/api/v2"
//      socketUrl = "http://192.168.131.24:3000";
//		server = "http://192.168.131.144:8080/";//冬梅
        loginUrl = "../../login/login.html";
//      loginUrl = "/PC-prescription/login.html"; //自己本地测试时的路径
        imgServer = "http://172.19.103.54/";
    }
    var baseInfo = window.localStorage.getItem(docInfo);
    
    userAgent = window.localStorage.getItem(agentName)
    if(userAgent || baseInfo) {
        try {
            if(baseInfo){
                baseInfo = JSON.parse(baseInfo);
                window.localStorage.setItem(docAgentName, JSON.stringify(baseInfo.api_login_doctor));
                userAgent = {
                    'id': baseInfo.api_login_doctor.id,
                    'uid': baseInfo.api_login_doctor.uid,
                    'imei': baseInfo.IMEI,
                    'token': baseInfo.api_login_doctor.token,
                    'platform': '4'
                };
                window.localStorage.setItem(agentName, JSON.stringify(userAgent));
                localStorage.setItem('WLYY_IMEI', baseInfo.IMEI)
            }else{
                userAgent = JSON.parse(userAgent)
            }
        } catch(e) {
            toastr && toastr.warning("登录失效,请关闭当前弹窗前往PC IM重新登录")
//          toLoginPage()
        }
    } else {
        toLoginPage()
    }
    var isRelogined = sessionStorage.getItem('wlyy_relogin')
    if(isRelogined && location.href.indexOf("login.html") < 0){
        sessionStorage.removeItem('wlyy_relogin')
    }
	
    function httpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI'),
                            platform: 4
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
	function articleGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(articleServer + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI'),
                            platform: 4
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function httpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI')
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function articlePost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(articleServer + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI')
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function imHttpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function imHttpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function toLoginPage() {
        if(location.href.indexOf('login.html') > -1) {
            return;
        }
        setTimeout(function() {
            sessionStorage.setItem("wlyy_relogin", 1)
//          var path = top.location.pathname,
//              rootPath = path.split("/")[1];
            top.location.replace(loginUrl + '?redirect_url=' + encodeURIComponent(top.location.href))
        }, 2000)
    }
    var count = 0;
    function failCodeHandle(res) {
        var tip = "";
        if(res.status == 999) {
            tip = "此账号已在别处登录,请关闭当前弹窗前往PC IM重新登录";
        } else if(res.status == 998) {
            tip = "登录超时,请关闭当前弹窗前往PC IM重新登录";
        } else if(res.status == 997) {
            tip = "此账号未登录,请先登录"
        }
        if(tip) {
            count ++;
            if(count == 1){
//          	console.log(tip)
				toastr && toastr.warning(tip)
//          	toLoginPage()
            }
        }
    }
    function uuid(len, radix) {
        var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
        var uuid = [],
            i;
        radix = radix || chars.length;
        if(len) {
            // Compact form  
            for(i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
        } else {
            // rfc4122, version 4 form  
            var r;
            // rfc4122 requires these characters  
            uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
            uuid[14] = '4';
            // Fill in random data.  At i==19 set the high bits of clock sequence as  
            // per rfc4122, sec. 4.1.5  
            for(i = 0; i < 36; i++) {
                if(!uuid[i]) {
                    r = 0 | Math.random() * 16;
                    uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
                }
            }
        }
        return uuid.join('');
    }
    /*
     * 获取图片路径方法修改
     */
    function getImgUrl(str) {
        if(typeof str != 'string') {
            return "";
        }
        if(str.length == 0) {
            return "";
        } else {
            if(str.indexOf("../") > -1) {
                //访问本地路径
                return str;
            } else if((str.indexOf("http://") > -1) || (str.indexOf("https://") > -1)) {
                return str;
            } else {
                //服务器上的图片路径
                return imgServer + str;
            }
        }
    }
    httpRequest = {
        agentName: agentName,
        server: server,
        imserver: imserver,
        socketUrl: socketUrl,
        userAgent: userAgent,
        get: httpGet,
        post: httpPost,
        imHttpGet: imHttpGet,
        imHttpPost: imHttpPost,
        getImgUrl: getImgUrl,
        imgServer:imgServer,
        articleGet:articleGet,
        articlePost:articlePost,
        failCodeHandle: failCodeHandle,
        loginIm: function(data){
            return imHttpPost('/users/login', data);
        },
        getDoctorInfo: function() {
            return httpGet('doctor/baseinfo');
        }
    }
    window.httpRequest = httpRequest;
(function($) {
    var publish_version = false;
    var isInner = false; //发布线上后有内外网的配置
    var docInfo = "app_storage";
    var agentName = "wlyyAgentForDoc";
    var docAgentName = "wlyyAgent";
    var server, userAgent, loginUrl, imserver, socketUrl, imgServer;

    var IMEI = localStorage.getItem('WLYY_IMEI') || uuid(16, 16)
    localStorage.setItem('WLYY_IMEI', IMEI)
    $.support.cors = true;
    if(publish_version) { // 生产环境配置
        server = "http://www.xmtyw.cn/wlyy/"
        imserver = "http://27.155.101.77:3000/api/v2";
        socketUrl = "http://27.155.101.77:3000";
        articleServer = "http://www.xmtyw.cn/wlyytest/"
        loginUrl = "../../login/login.html";
        imgServer = "http://www.xmtyw.cn/";
        videoChatIntranetFlag = false;
        if(isInner){
            server = "http://10.95.22.10:8011/wlyy/"
            imserver = "http://10.95.22.138:3000/api/v2";
            socketUrl = "http://10.95.22.138:3000";
            articleServer = "http://10.95.22.10:8011/wlyy/"
            loginUrl = "../../login/login.html";
            imgServer = "http://10.95.22.10:8011/";
        }
    } else { // 测试环境配置
        server = "http://172.26.0.118:9092/wlyy/"
//      server = "http://192.168.131.144:8080/" //冬梅
        imserver = "http://172.26.0.118:3000/api/v2";
        socketUrl = "http://172.26.0.118:3000";
//      server = "http://192.168.131.154:8080/"
        articleServer="http://172.26.0.118:9092/wlyy/"
//   server = "http://192.168.131.130:8080/";
//		server = "http://192.168.131.123:8080/"; // 明芬
//      server = "http://192.168.131.127:8060/"; //逸祥
//      server = "http://192.168.131.24:8080/"; //仕杰
//      server = "http://192.168.131.143:8080/"; // 志南
//      server = "http://192.168.131.24:8082/"; // 文彬
//      imserver = "http://192.168.131.24:3000/api/v2"
//      socketUrl = "http://192.168.131.24:3000";
//		server = "http://192.168.131.144:8080/";//冬梅
        loginUrl = "../../login/login.html";
//      loginUrl = "/PC-prescription/login.html"; //自己本地测试时的路径
        imgServer = "http://172.19.103.54/";
        videoChatIntranetFlag = false;
    }

    var baseInfo = window.localStorage.getItem(docInfo);
    
    userAgent = window.localStorage.getItem(agentName)


    if(userAgent || baseInfo) {
        try {
            if(baseInfo){
                baseInfo = JSON.parse(baseInfo);
                window.localStorage.setItem(docAgentName, JSON.stringify(baseInfo.api_login_doctor));
                userAgent = {
                    'id': baseInfo.api_login_doctor.id,
                    'uid': baseInfo.api_login_doctor.uid,
                    'imei': baseInfo.IMEI,
                    'token': baseInfo.api_login_doctor.token,
                    'platform': '4'
                };
                window.localStorage.setItem(agentName, JSON.stringify(userAgent));
                localStorage.setItem('WLYY_IMEI', baseInfo.IMEI)
            }else{
                userAgent = JSON.parse(userAgent)
            }
        } catch(e) {
            toastr && toastr.warning("登录失效,请关闭当前弹窗前往PC IM重新登录")
//          toLoginPage()
        }
    } else {
        toLoginPage()
    }

    var isRelogined = sessionStorage.getItem('wlyy_relogin')
    if(isRelogined && location.href.indexOf("login.html") < 0){
        sessionStorage.removeItem('wlyy_relogin')
    }
	
    function httpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI'),
                            platform: 4
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
	function articleGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(articleServer + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI'),
                            platform: 4
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function httpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI')
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    function articlePost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(articleServer + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var agent = userAgent || {
                            imei: localStorage.getItem('WLYY_IMEI')
                        }
                        request.setRequestHeader("userAgent", JSON.stringify(agent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

    function imHttpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

    function imHttpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

	function videoChatPost(url, options) {
		if(options && options.data){
			options.data.intranetFlag = videoChatIntranetFlag
		}
		return httpPost(url, options);
    }

    function toLoginPage() {
        if(location.href.indexOf('login.html') > -1) {
            return;
        }
        setTimeout(function() {
            sessionStorage.setItem("wlyy_relogin", 1)
//          var path = top.location.pathname,
//              rootPath = path.split("/")[1];
            top.location.replace(loginUrl + '?redirect_url=' + encodeURIComponent(top.location.href))
        }, 2000)
    }

    var count = 0;
    function failCodeHandle(res) {
        var tip = "";
        if(res.status == 999) {
            tip = "此账号已在别处登录,请关闭当前弹窗前往PC IM重新登录";
        } else if(res.status == 998) {
            tip = "登录超时,请关闭当前弹窗前往PC IM重新登录";
        } else if(res.status == 997) {
            tip = "此账号未登录,请先登录"
        }
        if(tip) {
            count ++;
            if(count == 1){
//          	console.log(tip)
				toastr && toastr.warning(tip)
//          	toLoginPage()
            }
        }
    }

    function uuid(len, radix) {
        var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
        var uuid = [],
            i;
        radix = radix || chars.length;

        if(len) {
            // Compact form  
            for(i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
        } else {
            // rfc4122, version 4 form  
            var r;

            // rfc4122 requires these characters  
            uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
            uuid[14] = '4';

            // Fill in random data.  At i==19 set the high bits of clock sequence as  
            // per rfc4122, sec. 4.1.5  
            for(i = 0; i < 36; i++) {
                if(!uuid[i]) {
                    r = 0 | Math.random() * 16;
                    uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
                }
            }
        }

        return uuid.join('');
    }

    /*
     * 获取图片路径方法修改
     */
    function getImgUrl(str) {
        if(typeof str != 'string') {
            return "";
        }
        if(str.length == 0) {
            return "";
        } else {
            if(str.indexOf("../") > -1) {
                //访问本地路径
                return str;
            } else if((str.indexOf("http://") > -1) || (str.indexOf("https://") > -1)) {
                return str;
            } else {
                //服务器上的图片路径
                return imgServer + str;
            }
        }
    }

    httpRequest = {
        agentName: agentName,
        server: server,
        imserver: imserver,
        socketUrl: socketUrl,
        userAgent: userAgent,
        get: httpGet,
        post: httpPost,
        imHttpGet: imHttpGet,
        imHttpPost: imHttpPost,
        getImgUrl: getImgUrl,
        imgServer:imgServer,
        articleGet:articleGet,
        articlePost:articlePost,
        failCodeHandle: failCodeHandle,
        uuid: uuid,
        videoChatPost: videoChatPost,
        loginIm: function(data){
            return imHttpPost('/users/login', data);
        },
        getDoctorInfo: function() {
            return httpGet('doctor/baseinfo');
        }
    }

    window.httpRequest = httpRequest;
})(jQuery)

+ 41 - 0
api/videochat-api.js

@ -0,0 +1,41 @@
(function(exports) {
    var videoChatAPI = {
    	/**
    	 * 添加医生
    	 * @param {Object} data
    	 * participants  [{
		 *	"mobile":"手机号",
		 *	"name":"医生姓名",
		 *	"sex":"性别代码,男1,女2",
		 *	"birthdate":"1980-10-12",
		 *	"level":"固定值3",
		 *	"hospital_name":"所在医院",
		 *	"idcard":"身份证号"}]
    	 */
		addDoctor: function(data) {
			return httpRequest.videoChatPost("/doctor/zsVideo/addDoctor",{data:data}) 
		},

		/**
		 * 发起远程会诊
		 * @param {Object} data
		 * session_id 会话IM,建议为GUID全球唯一码
		 * session_type 会话类型,固定值:4
		 * session_name  会话名称,例如:张三的远程会诊
		 * participants 与会人员,{手机号1:角色, 手机号2:角色2},其中角色:0为主持人, 1为普通参与者
		 * videoconferencing 是否视频会议,固定值:1
		 * idcard 18位患者身份证号
		 */
		sessions: function(data) {
			return httpRequest.videoChatPost("/doctor/zsVideo/createSessions",{data:data})
		},
		//添加会话成员 
		//sessionId  
		//participantId  医生手机号码 多个用逗号隔开
		addingSessionMembers: function(data) {
			return httpRequest.videoChatPost("/doctor/zsVideo/addingSessionMembers",{data:data})
		},
		
	}
    exports.videoChatAPI = videoChatAPI;
})(window)

+ 36 - 0
app/followup/css/fangshi-detail.css

@ -0,0 +1,36 @@
body {
	font-size: 14px;
}
.table>tbody>tr>td{
	vertical-align: middle;
}
.c-t-center {
	text-align: center;
}
.col-w80 {
	width: 80px;
}
.col-w100 {
	width: 80px;
}
.col-w120 {
	width: 120px;
}
.el-input--prefix .el-input__inner , .el-input__inner{
	border: 0;
    height: 20px;
}
.el-input__icon {
	line-height: 20px;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner {
	width: 100%;
}
.el-textarea__inner {
	border: 0;
}

+ 104 - 0
app/followup/html/fangshi-detail-3.html

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>产后访视详情</title>
		<meta name="author" content="yihu.com" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <link rel="shortcut icon" href="../../../favicon.ico">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
        <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css"  />
        <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link href="../css/fangshi-detail.css" rel="stylesheet">
	</head>
	<body>
		<div id="app">
			<table class="table table-bordered">
				<tr>
					<td class="col-w120 c-t-center">随访日期</td>
					<td colspan="3">
						<el-date-picker
							:readonly="!editable"
					      v-model="data2"
					      type="date"
					      placeholder="选择日期">
					    </el-date-picker>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">分娩日期</td>
					<td>
						<el-date-picker
							:readonly="!editable"
					      v-model="data2"
					      type="date"
					      placeholder="选择日期">
					    </el-date-picker>
					</td>
					<td class="col-w120 c-t-center">出院日期</td>
					<td>
						<el-date-picker
							:readonly="!editable"
					      v-model="data2"
					      type="date"
					      placeholder="选择日期">
					    </el-date-picker>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">体 温(℃)</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">一般健康情况</td>
					<td colspan="3">
						<el-input type="textarea" :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">一般心理状况</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">血 压(mmHg)</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">乳 房</td>
					<td colspan="3">
						<el-radio :disabled="!editable" v-model="radio" label="1">未见异常</el-radio>
  						<el-radio :disabled="!editable" v-model="radio" label="2">异常</el-radio>
					</td>
				</tr>
			</table>
		</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/jquery-2.2.4.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../plugins/toastr/toastr.min.js"></script>
        <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
        <!--<script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>-->
		<script>
			new Vue({
				el: "#app",
				data: function() {
					return {
						editable: true,
						data2: "",
						radio: ""
					}
				}
			})
		</script>
	</body>
</html>

+ 467 - 0
app/followup/html/fangshi-detail-8.html

@ -0,0 +1,467 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>健康体检表</title>
		<meta name="author" content="yihu.com" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <link rel="shortcut icon" href="../../../favicon.ico">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
        <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css"  />
        <link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
        <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link href="../css/fangshi-detail.css" rel="stylesheet">
		<style>
			.p8 {padding: 8px;}
			.col-w60 {width: 60px;}
			.col-w120 {width: 130px;}
			.mb0 {margin-bottom: 0;}
			.setinput .el-input--suffix .el-input__inner {
				padding: 0;
				border-bottom: 1px solid #e1e1e1;
			}
			.el-checkbox, .el-radio {
			    margin-left: 30px;
			}
			.el-radio__label {display: inline-block;}
		</style>
	</head>
	<body>
		<div id="app">
			<table class="table table-bordered mb0">
				<tr>
					<td class="col-w120 c-t-center">体检日期</td>
					<td>
						<el-date-picker
							:readonly="!editable"
					      v-model="data1"
					      type="date"
					      placeholder="选择日期">
					    </el-date-picker>
					</td>
					<td class="col-w120 c-t-center">责任医生</td>
					<td>
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
			</table>
			<div class="ui-grid">
				<div class="ui-col-0 p8 c-border-l col-w60 c-t-center">内&emsp;容</div>
				<div class="ui-col-1 p8 c-border-l c-border-r c-t-center">检&emsp;查&emsp;项&emsp;目</div>
			</div>
			<table class="table table-bordered mb0">
				<tr>
					<td class="col-w60 c-t-center">症<br>状</td>
					<td colspan="4">
						<el-checkbox-group v-model="checkList">
						    <el-checkbox label="1 无症状"key=""></el-checkbox>
						    <el-checkbox label="2 头痛"></el-checkbox>
						    <el-checkbox label="3 头晕"></el-checkbox>
						    <el-checkbox label="4 心悸"></el-checkbox>
						    <el-checkbox label="5 胸闷"></el-checkbox>
						    <el-checkbox label="6 胸痛"></el-checkbox>
						    <el-checkbox label="7 慢性咳嗽"></el-checkbox>
						    <el-checkbox label="8 咳痰"></el-checkbox>
						    <el-checkbox label="9 呼吸困难"></el-checkbox>
						    <el-checkbox label="10 多饮"></el-checkbox>
						    <el-checkbox label="11 多尿"></el-checkbox>
						    <el-checkbox label="12 体重下降"></el-checkbox>
						    <el-checkbox label="13 乏力"></el-checkbox>
						    <el-checkbox label="14 关节肿痛"></el-checkbox>
						    <el-checkbox label="15 视力模糊"></el-checkbox>
						    <el-checkbox label="16 手脚麻木"></el-checkbox>
						    <el-checkbox label="17 尿急"></el-checkbox>
						    <el-checkbox label="18 尿痛"></el-checkbox>
						    <el-checkbox label="19 便秘   "></el-checkbox>
						    <el-checkbox label="20 腹泻"></el-checkbox>
						    <el-checkbox label="21 恶心呕吐"></el-checkbox>
						    <el-checkbox label="22 眼花"></el-checkbox>
						    <el-checkbox label="23 耳鸣 "></el-checkbox>
						    <el-checkbox label="24 乳房胀痛"></el-checkbox>
						    <el-checkbox class="setinput" label="25">
						    	<el-input :readonly="!editable" v-model="input" placeholder="其他" clearable></el-input>
						    </el-checkbox>
						 </el-checkbox-group>
					</td>
				</tr>
				<!--一般状况-->
				<tr>
					<td rowspan="9" class="col-w60 c-t-center">一<br>般<br>状<br>况</td>
					<td class="col-w120 c-t-center">体&emsp;&emsp;温</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">°C</div>
					</td>
					<td class="col-w120 c-t-center">脉&emsp;&emsp;率</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">次/分钟</div>
					</td>
				</tr>
				<tr>
					<td rowspan="2" class="col-w120 c-t-center">呼吸频率</td>
					<td rowspan="2">
						<div class="ui-grid">
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">次/分钟</div>
						</div>
					</td>
					<td rowspan="2" class="col-w120 c-t-center">血&emsp;压</td>
					<td class="ui-grid">
						<div class="ui-ciol-0 col-w60 c-border-r">左&emsp;侧</div>
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">mmHg</div>
					</td>
				</tr>
				<tr>
					<td class="ui-grid">
						<div class="ui-ciol-0 col-w60 c-border-r">右&emsp;侧</div>
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">mmHg</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">身&emsp;&emsp;高</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">cm</div>
					</td>
					<td class="col-w120 c-t-center">体&emsp;&emsp;重</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">kg</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">腰&emsp;&emsp;围</td>
					<td>
						<div class="ui-grid">
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">cm</div>
						</div>
					</td>
					<td class="col-w120 c-t-center">体质指数(BMI)</td>
					<td>
						<div class="ui-grid">
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">kg/m²</div>
						</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">老年人健康状态自我评估*</td>
					<td colspan="3">
						 <el-radio-group v-model="radio">
						    <el-radio :label="1">1  满意</el-radio>
						    <el-radio :label="2">2 基本满意</el-radio>
						    <el-radio :label="3">3 说不清楚</el-radio>
						    <el-radio :label="4">4 不太满意</el-radio>
						    <el-radio :label="5">5 胸闷</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">老年人生活自理自我评估*</td>
					<td colspan="3">
						 <el-radio-group v-model="radio">
						    <el-radio :label="1">1  可自理(0 ~ 3 分)</el-radio>
						    <el-radio :label="2">2 轻度依赖(4 ~ 8 分)</el-radio>
						    <el-radio :label="3">3 中度依赖(9 ~ 18 分)</el-radio>
						    <el-radio :label="4">4 不能自理(≥19 分)</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">老年人认知功能*</td>
					<td colspan="3">
						 <el-radio-group v-model="radio">
						    <el-radio :label="1">1 粗筛阴性</el-radio>
						    <el-radio :label="2">2 粗筛阳性, 简易智力状态检查,总分</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">老年人情感状态*</td>
					<td colspan="3">
						 <el-radio-group v-model="radio">
						    <el-radio :label="1">1 粗筛阴性</el-radio>
						    <el-radio :label="2">2 粗筛阳性, 简易智力状态检查,总分</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<!--生活方式-->
			</table>
			<table class="table table-bordered">
				<tr>
					<td rowspan="13" class="col-w60 c-t-center">生<br>活<br>方<br>式</td>
					<td rowspan="3" class="col-w120 c-t-center">体育锻炼</td>
					<td class="col-w120 c-t-center">锻炼频率</td>
					<td colspan="3">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1   每天</el-radio>
						    <el-radio :label="2">2 每周一次以上</el-radio>
						    <el-radio :label="3">3 偶尔</el-radio>
						    <el-radio :label="4">4 不锻炼</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">每次锻炼时间</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">分钟</div>
					</td>
					<td class="col-w120 c-t-center">坚持锻炼时间</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">年</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">锻炼方式</td>
					<td colspan="3">
						<div class="ui-grid">
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">年</div>
						</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">饮食习惯</td>
					<td colspan="4">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 荤素均衡</el-radio>
						    <el-radio :label="2">2 荤食为主</el-radio>
						    <el-radio :label="3">3 素食为主</el-radio>
						    <el-radio :label="4">4 嗜盐</el-radio>
						    <el-radio :label="5">5 嗜油</el-radio>
						    <el-radio :label="6">6 嗜糖</el-radio>
						  </el-radio-group>
					</td>
				</tr>
				<tr>
					<td rowspan="3" class="col-w120 c-t-center">吸烟情况</td>
					<td class="col-w120 c-t-center">吸烟状况</td>
					<td colspan="3">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 从不吸烟</el-radio>
						    <el-radio :label="2">2 已戒烟</el-radio>
						    <el-radio :label="3">3 吸烟</el-radio>
						 </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">日吸烟量</td>
					<td colspan="3">
						<div class="ui-grid">
							<div class="ui-col-0">平均</div>
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">次</div>
						</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">平均吸烟年龄</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">岁</div>
					</td>
					<td class="col-w120 c-t-center">戒烟年龄</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">岁</div>
					</td>
				</tr>
				<tr>
					<td rowspan="5" class="col-w120 c-t-center">饮酒情况</td>
					<td class="col-w120 c-t-center">饮酒频率</td>
					<td colspan="3">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 从不</el-radio>
						    <el-radio :label="2">2 偶尔</el-radio>
						    <el-radio :label="3">3 经常</el-radio>
						    <el-radio :label="4">4 每天</el-radio>
						 </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">日饮酒量</td>
					<td colspan="3">
						<div class="ui-grid">
							<div class="ui-col-0">平均</div>
							<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
							<div class="ui-col-0">两</div>
						</div>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">是否戒酒</td>
					<td colspan="3">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 未戒酒</el-radio>
						    <el-radio :label="2">
						    	<div class="ui-grid">
						    		<div class="ui-col-0">2 已借酒,戒酒年龄:</div>
						    		<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						    		<div class="ui-col-0">岁</div>
						    	</div>
						   	</el-radio>
						 </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">平均饮酒年龄</td>
					<td class="ui-grid">
						<div class="ui-col-1"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						<div class="ui-col-0">岁</div>
					</td>
					<td class="col-w120 c-t-center">近一年是否曾醉酒</td>
					<td>
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 是</el-radio>
						    <el-radio :label="2">2 否</el-radio>
						 </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">饮酒种类</td>
					<td colspan="3">
						<el-radio-group v-model="radio">
						    <el-radio :label="1">1 白酒</el-radio>
						    <el-radio :label="2">2 啤酒</el-radio>
						    <el-radio :label="3">3 红酒</el-radio>
						    <el-radio :label="4">4 黄酒</el-radio>
						    <el-checkbox class="setinput" label="5">
						    	<el-input :readonly="!editable" v-model="input" placeholder="其他" clearable></el-input>
						    </el-checkbox>
						 </el-radio-group>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">职业病危害因素接触史</td>
					<td colspan="4">
						<div>
							<el-radio :label="1">1 无</el-radio>
						    <el-radio :label="2">
						    	<div class="ui-grid">
						    		<div class="ui-col-0">2 有 (工种</div>
						    		<div class="ui-col-0"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						    		<div class="ui-col-0">从业时间</div>
						    		<div class="ui-col-0"><el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input></div>
						    		<div class="ui-col-0">年)</div>
						    	</div>
						   	</el-radio>
						</div>
						<div class="ui-grid">
							<div class="ui-col-0 mr10">毒物种类</div>
							<div class="ui-col-1">
								<div class="ui-grid">
									<div class="ui-col-0">粉尘防范措施</div>
									<div class="ui-col-1">
										<el-radio-group v-model="radio">
										    <el-radio :label="1">1 无</el-radio>
										    <el-radio :label="2">2 有</el-radio>
										 </el-radio-group>
									</div>
								</div>
								<div class="ui-grid">
									<div class="ui-col-0">放射物质防范措施</div>
									<div class="ui-col-1">
										<el-radio-group v-model="radio">
										    <el-radio :label="1">1 无</el-radio>
										    <el-radio :label="2">2 有</el-radio>
										 </el-radio-group>
									</div>
								</div>
								<div class="ui-grid">
									<div class="ui-col-0">物理因素防范措施</div>
									<div class="ui-col-1">
										<el-radio-group v-model="radio">
										    <el-radio :label="1">1 无</el-radio>
										    <el-radio :label="2">2 有</el-radio>
										 </el-radio-group>
									</div>
								</div>
								<div class="ui-grid">
									<div class="ui-col-0">化学物质防范措施</div>
									<div class="ui-col-1">
										<el-radio-group v-model="radio">
										    <el-radio :label="1">1 无</el-radio>
										    <el-radio :label="2">2 有</el-radio>
										 </el-radio-group>
									</div>
								</div>
								<div class="ui-grid">
									<div class="ui-col-0">其他防范措施</div>
									<div class="ui-col-1">
										<el-radio-group v-model="radio">
										    <el-radio :label="1">1 无</el-radio>
										    <el-radio :label="2">2 有</el-radio>
										 </el-radio-group>
									</div>
								</div>
							</div>
						</div>
					</td>
				</tr>
				<!-- <tr>
					<td class="col-w120 c-t-center">体 温(℃)</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">一般健康情况</td>
					<td colspan="3">
						<el-input type="textarea" :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">一般心理状况</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">血 压(mmHg)</td>
					<td colspan="3">
						<el-input :readonly="!editable" v-model="input" placeholder="" clearable></el-input>
					</td>
				</tr>
				<tr>
					<td class="col-w120 c-t-center">乳 房</td>
					<td colspan="3">
						<el-radio :disabled="!editable" v-model="radio" label="1">未见异常</el-radio>
  						<el-radio :disabled="!editable" v-model="radio" label="2">异常</el-radio>
					</td>
				</tr>-->
			</table>
			<follow-bottom></follow-bottom>
		</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/jquery-2.2.4.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../plugins/toastr/toastr.min.js"></script>
        <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/followup/follow-bottom.js"></script>
        <!--<script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>-->
		<script>
			new Vue({
				el: "#app",
				data: function() {
					return {
						editable: true,
						checkList: [],
						data1: "",
						input: null,
						radio: ""
					}
				}
			})
		</script>
	</body>
</html>

+ 1 - 1
app/followup/js/follow-up.js

@ -37,7 +37,7 @@ new Vue({
  		}
  	}
  },
  mounted(){
  mounted: function (){
  	this.patient = localStorage.getItem("severPatientCode");
  	this.teamCode = JSON.parse(localStorage.getItem("severPatientTeam")).id;
  	this.msgListView(this.currentPage);

+ 791 - 765
app/rehabilitation/css/rehabilitation_management.css

@ -1,765 +1,791 @@
.flex-box {
	display: -webkit-box;
	/* OLD - iOS 6-, Safari 3.1-6 */
	/* OLD - Firefox 19- (buggy but mostly works) */
	display: -ms-flexbox;
	/* TWEENER - IE 10 */
	/* NEW - Chrome */
	display: flex;
	/* NEW, Spec - Opera 12.1, Firefox 20+ */
	-webkit-box-pack: center;
	-ms-flex-pack: center;
	justify-content: center;
	-webkit-box-align: center;
	-ms-flex-align: center;
	align-items: center;
	-ms-flex-wrap: wrap;
	flex-wrap: wrap;
}
.flex-box-item {
	-webkit-box-flex: 1;
	/* OLD - iOS 6-, Safari 3.1-6 */
	-moz-box-flex: 1;
	/* OLD - Firefox 19- */
	-webkit-flex: 1;
	/* Chrome */
	-ms-flex: 1;
	/* IE 10 */
	width: 50%;
	/* For old syntax, otherwise collapses. */
	flex: 1;
	/* NEW, Spec - Opera 12.1, Firefox 20+ */
	position: relative;
}
[flex-grow="2"] {
	-webkit-box-flex: 2;
	-ms-flex-positive: 2;
	flex-grow: 2;
}
[flex-grow="5"] {
	-webkit-box-flex: 5;
	-ms-flex-positive: 5;
	flex-grow: 5;
}
body,
html,
.c-container {
	height: 100%;
}
.rehabilition {
	/*height: 100%;*/
	overflow: hidden;
	/*overflow-y: scroll;*/
	/*padding-top: 49px;*/
	/*max-width: 1620px;*/
	margin: 0 auto;
	padding-bottom: 50px;
}
.nav-content-right {
	height: 100%;
	overflow: auto;
}
.search-left {
	border-right: solid 1px #d7dce6;
	background-color: #f5f5f5;
	height: 100%;
}
.mw400 {
	max-width: 400px;
}
.search-condition {
	padding: 20px 10px;
	border-bottom: solid 1px #d7dce6;
}
.search-condition p {
	font-size: 14px;
	margin-bottom: 15px;
}
.task-list {
	padding-left: 10px;
	overflow: hidden;
}
.task-list li {
	width: 90px;
	cursor: pointer;
	text-align: center;
	display: block;
	float: left;
	border-radius: 14px;
	font-size: 14px;
	margin-left: 20px;
	margin-bottom: 20px;
	color: #333333;
	border: solid 1px #d7dce6;
	padding: 3px;
}
.task-list li.active {
	background-color: #12b7f5;
	color: #fff;
}
.btn-search {
	background-color: #12b7f5;
	color: #fff;
	border-radius: 0;
	width: 120px;
	margin-top: 30px;
}
.btn-search:hover,
.btn-search:focus,
.btn-search:active,
.btn-search:hover:active {
	background-color: #1c9aca;
	color: #fff;
	outline: none;
	outline-color: transparent;
}
/*日历*/
.calendar-content {
	margin: 0 auto;
	height: 100%;
}
/*图例注释*/
.calendar-descript {
	padding: 15px 20px;
	background-color: #fff;
}
.calendar-descript span {
	vertical-align: middle;
}
.icon {
	width: 12px;
	height: 12px;
	vertical-align: middle;
	background-size: 100% 100%;
	background-repeat: no-repeat;
	display: inline-block;
}
.icon-blue {
	background-color: #12b7f5;
	border-radius: 2px;
}
.icon-green {
	background-color: #2dbe55;
	border-radius: 2px;
}
.icon-flag {
	background-image: url(../images/woderenwu_icon.png);
	background-size: 100% 100%;
}
.icon-shuaxin {
	background-image: url(../images/icon/shuaxin.png);
}
.icon-shuaxin:hover {
	background-image: url(../images/icon/shuaxin1.png);
}
.icon-back {
	background-image: url(../images/icon/fanhui_icon.png);
}
.icon-back:hover {
	background-image: url(../images/icon/fanhui02_icon.png);
}
.icon-check {
	background-image: url(../images/wancheng_icon.png);
	background-size: 100% 100%;
}
.icon-prev {
	background-image: url(../images/icon/houtui_icon.png);
}
.icon-next {
	background-image: url(../images/icon/qianjing_icon.png);
}
.icon-rili {
	background-image: url(../images/icon/rilibiao02_icon.png);
}
.rili:hover .icon-rili,
.active .icon-rili {
	background-image: url(../images/icon/rilibiao_icon.png);
}
.icon-liebiao {
	background-image: url(../images/icon/shijianzhou_icon.png);
}
.shijianzhou:hover .icon-liebiao,
.active .icon-liebiao {
	background-image: url(../images/icon/shijianzhou02_icon.png);
}
.icon-20 {
	width: 20px;
	height: 20px;
}
.icon-16 {
	width: 16px;
	height: 16px;
}
/*周期*/
.calendar-week {
	background-color: #ebebf5;
	border: solid 1px #d7dce6;
	padding: 11px;
}
/*日期*/
.calendar-days>.flex-box {
	border-bottom: 1px solid #d7dce6;
	border-right: 1px solid #D7DCE6;
	/*border-left: 1px solid #D7DCE6;*/
}
.calendar-day {
	height: 135px;
	border-left: 1px solid #d7dce6;
	cursor: pointer;
	position: relative;
	padding: 5px;
	width: 14.28571428%;
	/*border-bottom: 1px solid #d7dce6;*/
}
.calendar-days .calendar-day:first-child {
	border-left-width: 0;
}
.calendar-day:hover {
	-webkit-box-shadow: 0 0 0 1px #12b7f5 inset;
	box-shadow: 0 0 0 1px #12b7f5 inset;
}
.calendar-day.current-day {
	background-color: #ddf6fe;
}
.no-server {
	text-align: center;
	top: 50%;
	position: absolute;
	left: 0;
	right: 0;
	color: #c8c8c8;
	font-size: 18px;
}
/*彩带*/
.coloured-ribbon {
	font-size: 12px;
	width: 22px;
	text-align: center;
	height: 40px;
	display: inline-block;
	padding-top: 8px;
	line-height: 1;
	color: #fff;
}
.coloured-box {
	top: 0;
	position: absolute;
	right: 5px;
}
.coloured-ribbon-blue {
	background-image: url(../images/biaoqian-lanse_img.png);
	background-position: center center;
	background-size: 100% 100%;
	background-repeat: no-repeat;
}
.coloured-ribbon-green {
	background-image: url(../images/biaoqian-lvse_img.png);
	background-position: center center;
	background-size: 100% 100%;
	background-repeat: no-repeat;
	margin-left: 5px;
}
.task-icon {
	position: absolute;
	left: 50px;
	top: 10px;
	min-height: 20px;
}
.task-icon .icon-check {
	position: absolute;
	right: -3px;
	bottom: 0;
	width: 15px;
	height: 15px;
}
.day-number {
	font-size: 28px;
	color: #999999;
	margin-bottom: 0;
	line-height: 1;
}
/*进度条*/
.progress-box {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 10px 5px;
	text-align: center;
}
.progress-box .progress {
	margin-bottom: 9px;
	background-color: #d7dce6;
	border-radius: 10px;
	position: relative;
}
.progress-box .progress>span {
	position: absolute;
	left: 0;
	right: 0;
	text-align: center;
	color: #333333;
	top: 2px;
}
.progress-box .progress-bar {
	background-color: #12b7f5;
	border-radius: 10px;
}
.progress-box .progress-bar-success {
	background-color: #2dbe55;
	border-radius: 10px;
}
/*页头*/
/*max-width: 1620px;*/
.page-title {
	/*position: fixed;
    top: 0;
    left: 0;
    right: 0;*/
	padding: 9px;
	border-bottom: 1px solid #d7dce6;
	z-index: 5;
	/*margin: 0 auto;*/
	background-color: #fff
}
.page-title-name {
	padding-right: 15px;
	font-size: 14px;
	border-right: 1px solid #d7dce6;
	display: inline-block;
	margin-right: 10px;
}
.page-title span {
	vertical-align: middle;
}
.mr10 {
	margin-right: 10px;
}
.page-title .icon {
	cursor: pointer;
}
.currentDay {
	font-size: 16px;
	margin: 0 25px;
	vertical-align: middle;
	width: 100px;
	text-align: justify;
	text-align-last: justify;
	display: inline-block;
}
.switch-list {
	border: solid 1px #12b7f5;
	border-radius: 6px;
	overflow: hidden;
}
.switch-list .icon {
	position: relative;
	top: 3px;
}
.rili,
.shijianzhou {
	width: 40px;
	height: 28px;
	display: inline-block;
	float: left;
	background-color: #fff;
}
.rili.active,
.shijianzhou.active,
.rili:hover,
.shijianzhou:hover {
	background-color: #12b7f5;
	border-radius: 5px;
}
/*列表展示*/
.time-axis td {
	border: none !important;
	color: inherit;
}
.time-axis th {
	background-color: #f5f5fa;
	border-bottom: solid 1px #d7dce6;
}
.time-axis td p {
	color: inherit;
}
.ellipsis {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.time {
	position: relative;
}
.time-box {
	position: relative;
	padding: 8px 50px 8px 8px!important;
}
.cur-status {
	position: absolute;
	z-index: 3;
	right: 5px;
	top: 50%;
	padding: 8px;
	line-height: 1;
	margin-top: -12.5px;
	border-radius: 100%;
	color: #fff;
}
.cur-status:empty {
	margin-top: -8px;
	right: 12.5px;
	background-color: #d7dce6;
}
.time-axis [is-future="1"] {
	background-color: #dff5fc;
	color: #12b7f5;
}
/*.time-axis [is-future="1"] td p,.time-axis [is-future="1"] td{}*/
.time-axis tr:hover {
	background-color: #f5f5fa;
	color: #333333;
}
/*.time-axis tr:hover p{}*/
[is-future="1"] .cur-status,
[is-future="2"] .cur-status {
	background-color: #12b7f5;
}
[is-future="-1"] .cur-status {
	background-color: #ff3b30;
}
.c-ff3b30 {
	color: #ff3b30!important;
}
[is-future="1"] .day-number {
	color: #12B6F4;
}
[is-future="2"] .day-number {
	color: #333;
}
[is-future="3"] .cur-status {
	background-color: #5cb85c;
}
.calendar-day[is-future="0"] {
	background-color: #f5f5fa;
}
.calendar-day[is-future="1"] {
	background-color: rgba(18, 182, 244, 0.25);
}
.calendar-day[is-future="3"] {
	background-color: #efefef;
}
.time-box:after {
	content: '';
	position: absolute;
	right: 0;
	z-index: 2;
	right: 19px;
	height: 100%;
	width: 1px;
	background-color: #d7dce6;
	top: 50%;
}
.time-axis tr:nth-last-of-type(1) .time-box:after {
	display: none;
}
.view-task {
	text-align: center;
	cursor: pointer;
}
.task-status {
	text-align: center;
}
[v-cloak] {
	display: none;
}
.visibility-hide {
	visibility: hidden;
}
.c-666 {
	color: #666!important;
}
.w-80 {
	width: 80%;
	margin: 0 auto;
}
.w400 {
	width: 400px;
}
.bgc-f5f5f5 {
	background-color: #f5f5f5;
}
.search-left {
	height: 100%;
	right: -400px;
	z-index: 999;
}
.tac{
	text-align: center;
}
.c-h100 {
	height: 100%;
}
.set-open {
	width: 40px;
	left: -40px;
	top: 0;
	cursor: pointer;
}
.set-close {
	width: 14px;
	height: 14px;
	top: 15px;
	right: 15px;
	background: url(../../../images/guanbi_icon.png) no-repeat no-repeat center center;
	background-size: 12px 12px;
	cursor: pointer;
}
.div-kuaisu-task {
	width: 98px;
	height: 28px;
	line-height: 28px;
	background-color: #ffffff;
	border-radius: 2px;
	border: solid 1px #d7dce6;
	position: absolute;
	right: 102px;
}
.calendar-descript {
	text-align: right;
}
.div-left {
	width: 460px;
	background-color: #ffffff;
	border-right: 1px solid #E1E1E1;
}
.div-right {
	width: calc(100% - 460px);
}
.rehabilition {
	height: calc(100% - 49px);
	padding-bottom: 0;
}
.tag {
	display: inline-block;
	/*background-image: url(../images/yuanjiao_biaoqian_img.png);*/
	background-repeat: no-repeat;
	background-size: 100%;
	width: 60px;
	height: 17px;
	line-height: 17px;
	font-size: 12px;
	color: #fff;
	padding-left: 15px;
	position: absolute;
	left: 191px;
	top: 46px;
}
.tag-1 {
	background-image: url(../images/yuanjiao_biaoqian02_img.png);
}
.tag-2 {
	background-image: url(../images/yuanjiao_biaoqian03_img.png);
}
.tag-3 {
	background-image: url(../images/yuanjiao_biaoqian04_img.png);
}
.tag-4 {
	background-image: url(../images/yuanjiao_biaoqian01_img.png);
}
.div-patient-home {
	width: 98px;
	height: 26px;
	line-height: 26px;
	text-align: center;
	border-radius: 2px;
	border: solid 1px #d7dce6;
	margin-top: 5px;
	cursor: pointer;
}
.div-patient-comfirm {
	width: 98px;
	height: 26px;
	line-height: 26px;
	text-align: center;
	border-radius: 2px;
	border: solid 1px #12b7f5;
	margin-top: -4px;
	cursor: pointer;
}
.progress-bar {
	position: relative;
	width: 100%;
	height: 28px;
	border-radius: 28px;
	background-color: #ebebf5;
}
.progress-bar .progress {
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	height: 28px;
	border-radius: 28px;
}
.progress-bar .p-text {
	display: inline-block;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	text-align: center;
	font-size: 14px;
	height: 28px;
	line-height: 28px;
	z-index: 2;
}
.progress-bar.h15,
.progress-bar.h15 .progress,
.progress-bar.h15 .p-text {
	height: 15px;
	border-radius: 15px;
	line-height: 15px;
	font-size: 12px;
}
.bgc-ff9526 {
	background-color: #ff9526;
}
.bgc-12b7f5 {
	background-color: #12b7f5;
}
.flex-box {
	display: -webkit-box;
	/* OLD - iOS 6-, Safari 3.1-6 */
	/* OLD - Firefox 19- (buggy but mostly works) */
	display: -ms-flexbox;
	/* TWEENER - IE 10 */
	/* NEW - Chrome */
	display: flex;
	/* NEW, Spec - Opera 12.1, Firefox 20+ */
	-webkit-box-pack: center;
	-ms-flex-pack: center;
	justify-content: center;
	-webkit-box-align: center;
	-ms-flex-align: center;
	align-items: center;
	-ms-flex-wrap: wrap;
	flex-wrap: wrap;
}

.flex-box-item {
	-webkit-box-flex: 1;
	/* OLD - iOS 6-, Safari 3.1-6 */
	-moz-box-flex: 1;
	/* OLD - Firefox 19- */
	-webkit-flex: 1;
	/* Chrome */
	-ms-flex: 1;
	/* IE 10 */
	width: 50%;
	/* For old syntax, otherwise collapses. */
	flex: 1;
	/* NEW, Spec - Opera 12.1, Firefox 20+ */
	position: relative;
}

[flex-grow="2"] {
	-webkit-box-flex: 2;
	-ms-flex-positive: 2;
	flex-grow: 2;
}

[flex-grow="5"] {
	-webkit-box-flex: 5;
	-ms-flex-positive: 5;
	flex-grow: 5;
}

body,
html,
.c-container {
	height: 100%;
}

.rehabilition {
	/*height: 100%;*/
	overflow: hidden;
	/*overflow-y: scroll;*/
	/*padding-top: 49px;*/
	/*max-width: 1620px;*/
	margin: 0 auto;
	padding-bottom: 50px;
}

.nav-content-right {
	height: 100%;
	overflow: auto;
}

.search-left {
	border-right: solid 1px #d7dce6;
	background-color: #f5f5f5;
	height: 100%;
}

.mw400 {
	max-width: 400px;
}

.search-condition {
	padding: 20px 10px;
	border-bottom: solid 1px #d7dce6;
}

.search-condition p {
	font-size: 14px;
	margin-bottom: 15px;
}

.task-list {
	padding-left: 10px;
	overflow: hidden;
}

.task-list li {
	width: 90px;
	cursor: pointer;
	text-align: center;
	display: block;
	float: left;
	border-radius: 14px;
	font-size: 14px;
	margin-left: 20px;
	margin-bottom: 20px;
	color: #333333;
	border: solid 1px #d7dce6;
	padding: 3px;
}

.task-list li.active {
	background-color: #12b7f5;
	color: #fff;
}

.btn-search {
	background-color: #12b7f5;
	color: #fff;
	border-radius: 0;
	width: 120px;
	margin-top: 30px;
}

.btn-search:hover,
.btn-search:focus,
.btn-search:active,
.btn-search:hover:active {
	background-color: #1c9aca;
	color: #fff;
	outline: none;
	outline-color: transparent;
}


/*日历*/

.calendar-content {
	margin: 0 auto;
	height: 100%;
}


/*图例注释*/

.calendar-descript {
	padding: 15px 20px;
	background-color: #fff;
}

.calendar-descript span {
	vertical-align: middle;
}

.icon {
	width: 12px;
	height: 12px;
	vertical-align: middle;
	background-size: 100% 100%;
	background-repeat: no-repeat;
	display: inline-block;
}

.icon-blue {
	background-color: #12b7f5;
	border-radius: 2px;
}

.icon-green {
	background-color: #2dbe55;
	border-radius: 2px;
}

.icon-flag {
	background-image: url(../images/woderenwu_icon.png);
	background-size: 100% 100%;
}

.icon-shuaxin {
	background-image: url(../images/icon/shuaxin.png);
}

.icon-shuaxin:hover {
	background-image: url(../images/icon/shuaxin1.png);
}

.icon-back {
	background-image: url(../images/icon/fanhui_icon.png);
}

.icon-back:hover {
	background-image: url(../images/icon/fanhui02_icon.png);
}

.icon-check {
	background-image: url(../images/wancheng_icon.png);
	background-size: 100% 100%;
}

.icon-prev {
	background-image: url(../images/icon/houtui_icon.png);
}

.icon-next {
	background-image: url(../images/icon/qianjing_icon.png);
}

.icon-rili {
	background-image: url(../images/icon/rilibiao02_icon.png);
}

.rili:hover .icon-rili,
.active .icon-rili {
	background-image: url(../images/icon/rilibiao_icon.png);
}

.icon-liebiao {
	background-image: url(../images/icon/shijianzhou_icon.png);
}

.shijianzhou:hover .icon-liebiao,
.active .icon-liebiao {
	background-image: url(../images/icon/shijianzhou02_icon.png);
}

.icon-20 {
	width: 20px;
	height: 20px;
}

.icon-16 {
	width: 16px;
	height: 16px;
}


/*周期*/

.calendar-week {
	background-color: #ebebf5;
	border: solid 1px #d7dce6;
	padding: 11px;
}


/*日期*/

.calendar-days>.flex-box {
	border-bottom: 1px solid #d7dce6;
	border-right: 1px solid #D7DCE6;
	/*border-left: 1px solid #D7DCE6;*/
}

.calendar-day {
	height: 135px;
	border-left: 1px solid #d7dce6;
	cursor: pointer;
	position: relative;
	padding: 5px;
	width: 14.28571428%;
	/*border-bottom: 1px solid #d7dce6;*/
}

.calendar-days .calendar-day:first-child {
	border-left-width: 0;
}

.calendar-day:hover {
	-webkit-box-shadow: 0 0 0 1px #12b7f5 inset;
	box-shadow: 0 0 0 1px #12b7f5 inset;
}

.calendar-day.current-day {
	background-color: #ddf6fe;
}

.no-server {
	text-align: center;
	top: 50%;
	position: absolute;
	left: 0;
	right: 0;
	color: #c8c8c8;
	font-size: 18px;
}


/*彩带*/

.coloured-ribbon {
	font-size: 12px;
	width: 22px;
	text-align: center;
	height: 40px;
	display: inline-block;
	padding-top: 8px;
	line-height: 1;
	color: #fff;
}

.coloured-box {
	top: 0;
	position: absolute;
	right: 5px;
}

.coloured-ribbon-blue {
	background-image: url(../images/biaoqian-lanse_img.png);
	background-position: center center;
	background-size: 100% 100%;
	background-repeat: no-repeat;
}

.coloured-ribbon-green {
	background-image: url(../images/biaoqian-lvse_img.png);
	background-position: center center;
	background-size: 100% 100%;
	background-repeat: no-repeat;
	margin-left: 5px;
}

.task-icon {
	position: absolute;
	left: 50px;
	top: 10px;
	min-height: 20px;
}

.task-icon .icon-check {
	position: absolute;
	right: -3px;
	bottom: 0;
	width: 15px;
	height: 15px;
}

.day-number {
	font-size: 28px;
	color: #999999;
	margin-bottom: 0;
	line-height: 1;
}


/*进度条*/

.progress-box {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 10px 5px;
	text-align: center;
}

.progress-box .progress {
	margin-bottom: 9px;
	background-color: #d7dce6;
	border-radius: 10px;
	position: relative;
}

.progress-box .progress>span {
	position: absolute;
	left: 0;
	right: 0;
	text-align: center;
	color: #333333;
	top: 2px;
}

.progress-box .progress-bar {
	background-color: #12b7f5;
	border-radius: 10px;
}

.progress-box .progress-bar-success {
	background-color: #2dbe55;
	border-radius: 10px;
}


/*页头*/


/*max-width: 1620px;*/

.page-title {
	/*position: fixed;
    top: 0;
    left: 0;
    right: 0;*/
	padding: 9px;
	border-bottom: 1px solid #d7dce6;
	z-index: 5;
	/*margin: 0 auto;*/
	background-color: #fff
}

.page-title-name {
	padding-right: 15px;
	font-size: 14px;
	border-right: 1px solid #d7dce6;
	display: inline-block;
	margin-right: 10px;
}

.page-title span {
	vertical-align: middle;
}

.mr10 {
	margin-right: 10px;
}

.page-title .icon {
	cursor: pointer;
}

.currentDay {
	font-size: 16px;
	margin: 0 25px;
	vertical-align: middle;
	width: 100px;
	text-align: justify;
	text-align-last: justify;
	display: inline-block;
}

.switch-list {
	border: solid 1px #12b7f5;
	border-radius: 6px;
	overflow: hidden;
}

.switch-list .icon {
	position: relative;
	top: 3px;
}

.rili,
.shijianzhou {
	width: 40px;
	height: 28px;
	display: inline-block;
	float: left;
	background-color: #fff;
}

.rili.active,
.shijianzhou.active,
.rili:hover,
.shijianzhou:hover {
	background-color: #12b7f5;
	border-radius: 5px;
}


/*列表展示*/

.time-axis td {
	border: none !important;
	color: inherit;
}

.time-axis th {
	background-color: #f5f5fa;
	border-bottom: solid 1px #d7dce6;
}

.time-axis td p {
	color: inherit;
}

.ellipsis {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.time {
	position: relative;
}

.time-box {
	position: relative;
	padding: 8px 50px 8px 8px!important;
}

.cur-status {
	position: absolute;
	z-index: 3;
	right: 5px;
	top: 50%;
	padding: 8px;
	line-height: 1;
	margin-top: -12.5px;
	border-radius: 100%;
	color: #fff;
}

.cur-status:empty {
	margin-top: -8px;
	right: 12.5px;
	background-color: #d7dce6;
}

.time-axis [is-future="1"] {
	background-color: #dff5fc;
	color: #12b7f5;
}


/*.time-axis [is-future="1"] td p,.time-axis [is-future="1"] td{}*/

.time-axis tr:hover {
	background-color: #f5f5fa;
	color: #333333;
}


/*.time-axis tr:hover p{}*/

[is-future="1"] .cur-status,
[is-future="2"] .cur-status {
	background-color: #12b7f5;
}

[is-future="-1"] .cur-status {
	background-color: #ff3b30;
}

.c-ff3b30 {
	color: #ff3b30!important;
}

[is-future="1"] .day-number {
	color: #12B6F4;
}

[is-future="2"] .day-number {
	color: #333;
}

[is-future="3"] .cur-status {
	background-color: #5cb85c;
}

.calendar-day[is-future="0"] {
	background-color: #f5f5fa;
}

.calendar-day[is-future="1"] {
	background-color: rgba(18, 182, 244, 0.25);
}

.calendar-day[is-future="3"] {
	background-color: #efefef;
}

.time-box:after {
	content: '';
	position: absolute;
	right: 0;
	z-index: 2;
	right: 19px;
	height: 100%;
	width: 1px;
	background-color: #d7dce6;
	top: 50%;
}

.time-axis tr:nth-last-of-type(1) .time-box:after {
	display: none;
}

.view-task {
	text-align: center;
	cursor: pointer;
}

.task-status {
	text-align: center;
}

[v-cloak] {
	display: none;
}

.visibility-hide {
	visibility: hidden;
}

.c-666 {
	color: #666!important;
}

.w-80 {
	width: 80%;
	margin: 0 auto;
}

.w400 {
	width: 400px;
}

.bgc-f5f5f5 {
	background-color: #f5f5f5;
}

.search-left {
	height: 100%;
	right: -400px;
	z-index: 999;
}

.tac{
	text-align: center;
}
.c-h100 {
	height: 100%;
}

.set-open {
	width: 40px;
	left: -40px;
	top: 0;
	cursor: pointer;
}

.set-close {
	width: 14px;
	height: 14px;
	top: 15px;
	right: 15px;
	background: url(../../../images/guanbi_icon.png) no-repeat no-repeat center center;
	background-size: 12px 12px;
	cursor: pointer;
}

.div-kuaisu-task {
	width: 98px;
	height: 28px;
	line-height: 28px;
	background-color: #ffffff;
	border-radius: 2px;
	border: solid 1px #d7dce6;
	position: absolute;
	right: 102px;
}

.calendar-descript {
	text-align: right;
}

.div-left {
	width: 460px;
	background-color: #ffffff;
	border-right: 1px solid #E1E1E1;
}

.div-right {
	width: calc(100% - 460px);
}

.rehabilition {
	height: calc(100% - 49px);
	padding-bottom: 0;
}

.tag {
	display: inline-block;
	/*background-image: url(../images/yuanjiao_biaoqian_img.png);*/
	background-repeat: no-repeat;
	background-size: 100%;
	width: 60px;
	height: 17px;
	line-height: 17px;
	font-size: 12px;
	color: #fff;
	padding-left: 15px;
	position: absolute;
	left: 191px;
	top: 46px;
}

.tag-1 {
	background-image: url(../images/yuanjiao_biaoqian02_img.png);
}

.tag-2 {
	background-image: url(../images/yuanjiao_biaoqian03_img.png);
}

.tag-3 {
	background-image: url(../images/yuanjiao_biaoqian04_img.png);
}

.tag-4 {
	background-image: url(../images/yuanjiao_biaoqian01_img.png);
}

.div-patient-home {
	width: 98px;
	height: 26px;
	line-height: 26px;
	text-align: center;
	border-radius: 2px;
	border: solid 1px #d7dce6;
	margin-top: 5px;
	cursor: pointer;
}

.div-patient-comfirm {
	width: 98px;
	height: 26px;
	line-height: 26px;
	text-align: center;
	border-radius: 2px;
	border: solid 1px #12b7f5;
	margin-top: -4px;
	cursor: pointer;
}
.progress-bar {
	position: relative;
	width: 100%;
	height: 28px;
	border-radius: 28px;
	background-color: #ebebf5;
}

.progress-bar .progress {
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	height: 28px;
	border-radius: 28px;
}

.progress-bar .p-text {
	display: inline-block;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	text-align: center;
	font-size: 14px;
	height: 28px;
	line-height: 28px;
	z-index: 2;
}

.progress-bar.h15,
.progress-bar.h15 .progress,
.progress-bar.h15 .p-text {
	height: 15px;
	border-radius: 15px;
	line-height: 15px;
	font-size: 12px;
}

.bgc-ff9526 {
	background-color: #ff9526;
}
.bgc-12b7f5 {
	background-color: #12b7f5;
}

.ui-grid .ui-col-0 .i-icon{
	width: 20px;
	height: 20px;
	margin-left: 12px;
}

.faqi-btn{
	background: #12b7f5;
    display: inline-block;
    padding: 0px 4px;
    font-size: 12px;
    line-height: 21px;
    color: #fff;
    cursor: pointer;
}

.faqi-btn>img{
    width: 12px;
    vertical-align: initial;
    margin-right: 4px;
}

.wkp-end{
	-webkit-box-pack: end;
}

+ 307 - 303
app/rehabilitation/html/rehabilitation_management.html

@ -1,304 +1,308 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>康复管理</title>
		<link rel="shortcut icon" href="../../favicon.ico">
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link rel="stylesheet" type="text/css" href="../css/date.css" />
		<link rel="stylesheet" href="../css/rehabilitation_management.css" />
		<style>
			.plr11{
				padding-left: 11px;
				padding-right: 11px;
			}
			.div-line{
				width: 4px; height: 20px;background: #12b7f5;
				margin-right: 9px;
				margin-top: 5px;
			}
			.lh30{
				height: 30px;
				line-height: 30px;
			}
			.mr21{
				margin-right: 21px;
			}
			.c-ff9630{
				color: #ff9630;
			}
			.pb23{
				padding-bottom: 23px;
			}
			.plr13{
				padding-left: 13px;
				padding-right: 13px;
			}
			.dialos-textarea{
				padding: 25px 10px 25px 15px;
				min-height: 140px;
				width: 100%;
				background: #F5F5FA;
				border: 0;
				margin-top: 5px;
				text-indent: 28px;
				resize: none;
				line-height: 28px;
			}
			.bgc-2dbe55 {background-color: #2dbe55;}
		</style>
	</head>
	<body>
		<div class="c-container ui-grid ui-grid-vertical" id="app" v-cloak>
			<div class="page-title flex-box ui-col-0">
				<div class="flex-box-item mw400" flex-grow="2">
					<span class="page-title-name">康复计划</span>
					<a class="icon icon-back icon-16 mr10" href="javascript:history.back();"></a><i class="icon icon-shuaxin icon-16" @click="refreshPage"></i>
				</div>
				<div class="flex-box-item text-center" flex-grow="5">
					<div class="div-kuaisu-task" @click="changeSearch(1)" v-show="tabStatus!=3">快速找任务</div>
					<div class="pull-right switch-list" v-show="tabStatus!=3">
						<span class="rili" :class="{active:(tabStatus==1)}" @click="tabStatus=1"><i class="icon icon-rili icon-20"></i></span>
						<span class="shijianzhou" :class="{active:(tabStatus==2)}" @click="tabStatus=2"><i class="icon icon-liebiao icon-20"></i></span>
					</div>
				</div>
			</div>
			<div class="rehabilition c-position-r bgc-f5f5f5 ui-col-1">
				<div class="search-left w400 c-position-a">
					<span class="c-position-a set-close" @click="changeSearch(-1)"></span>
					<div class="search-condition">
						<p>快速找任务</p>
						<ul class="task-list">
							<li :class="{'active':(searchTask==task.code)}" v-for="task in taskArr" @click="changeTask(task)">{{task.name}}</li>
						</ul>
						<p>任务状态</p>
						<ul class="task-list">
							<li :class="{'active':(status==sts.code)}" v-for="sts in statusArr" @click="changeStatus(sts.code)">{{sts.name}}</li>
						</ul>
					</div>
					<div class="text-center">
						<button class="btn btn-search" @click="goToLoadData">确认</button>
					</div>
				</div>
				<div class="ui-grid c-h100">
					<div class="div-left ui-col-0 plr11" style="position: fixed;height: 100%;overflow: auto;">
						<div class="ui-grid c-border-b lh30">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">居民信息</div>
						</div>
						<div class="ui-grid c-border-b pb15 pt15">
							<div class="ui-col-0 mr10">
								<img :src="setImgSrc(planInfo.patientPhoto)" width="40" class="c-images-cycle">
							</div>
							<div class="ui-col-1">
								<div class="mt10"><span class="c-f16 mr5">{{planInfo.patientName}}</span><span class="c-f16 c-999">({{planInfo.sex}} {{planInfo.age}}岁)</span></div>
								<div class="tag mt10 tag-1 ml20"></div>
							</div>
							<div class="ui-col-0 div-patient-home c-f14 c-333">进入居民首页</div>
						</div>
						<div class="ui-grid mt15 pb15">
							<div class="ui-col-1 c-f16 c-333">冠心病康复计划</div>
							<div class="ui-col-1 c-f14 c-999">总进度:</div>
							<div class="ui-col-0 div-patient-comfirm c-f14 c-fff bgc-12b7f5" v-show="planInfo.status==2 && !planInfo.patientImg" @tap="weiXinConfirmClick">邀请居民确认</div>
						</div>
						<div class="ui-grid">
							<div class="ui-col-1">
								<div class="progress-bar">
									<span class="progress bgc-ff9526" :style="{width: (planInfo.finishedCount/planInfo.allCount*100)+'%'}"></span>
									<span class="p-text">{{planInfo.finishedCount}}/{{planInfo.allCount}}</span>
								</div>
							</div>
						</div>
						<div class="ui-grid c-border-b lh30 mt15">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">服务医生</div>
						</div>
						<div class="ui-grid pt15" v-for="(doc, index) in docList" :key="index">
							<div class="ui-col-0 ml30 mr21">
								<img :src="setImgSrc(doc.doctorPhoto)" width="40" class="c-images-cycle">
							</div>
							<div class="ui-col-0" style="width: 150px;">
								<div class="c-f16 c-333">{{doc.doctorName}}</div>
								<div class="c-f14 c-999">{{doc.type}}</div>
							</div>
							<div class="ui-col-1" style="width: 200px;">
								<div class="c-f14 c-333">完成项目:<span class="c-f14 c-ff9630">{{doc.finishedItem}}</span></div>
								<div class="c-f14 c-333">服务次数:<span class="c-f14 c-ff9630">{{doc.serviceCount}}</span></div>
							</div>
						</div>
						<div class="ui-grid c-border-b lh30 mt15">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">医嘱小结</div>
						</div>
						<div class="w-100 c-border pb23 plr13 mt10 mb50">
							<div class="ui-grid pt20">
								<div class="ui-col-1" v-if="diagnosisInformation">
									<div class="ui-grid">
										<div class="c-f14 c-999 ui-col-1">{{diagnosisInformation.dischargeDiagnosis}}</div>
										<div class="c-f14 c-999 ui-col-0">{{diagnosisInformation.dischargeTime}}</div>
									</div>
									<div class="dialos-textarea c-f14 c-333">{{diagnosisInformation.advice}}</div>
								</div>
								<div class="ui-col-1 c-t-center" v-if="!diagnosisInformation">无医嘱小结</div>
							</div>
						</div>
					</div>
					<div class="nav-content-center bgc-fff c-position-r c-h100 div-right ui-col-1" style="margin-left: 460px;height: 100%;" v-show="tabStatus==3">
						<iframe id="framePage" src="" style="width: 100%;height: 100%;border: 0;"></iframe>
					</div>
					<div class="nav-content-center bgc-fff c-position-r c-h100 div-right ui-col-1" style="margin-left: 460px;" v-show="tabStatus!=3">
						<span v-if="!isFastSearch" style="position: absolute;top: 15px;left: 101px;">
						<i class="icon icon-prev icon-20" @click="preMonth"></i>
						<span class="currentDay">{{currentDay}}</span>
						<i class="icon icon-next icon-20" @click="nextMonth"></i></span>
						<div class="calendar-content ui-grid ui-grid-vertical" v-show="tabStatus==1">
							<div class="calendar-descript">
								<span>图例注释: </span><i class="icon icon-blue"></i> <span>专科团队</span>&emsp;<i class="icon icon-green"></i> <span>家医团队</span>&emsp; <i class="icon icon-flag"></i> <span>我的任务</span>
							</div>
							<!--快速查找-->
							<div class="ui-col-1 c-border-t" style="overflow: hidden; overflow-y: scroll;" v-if="isFastSearch">
								<div class="calendar-days" v-for="searchData1 in searchData">
                                    <div v-for="items in searchData1" class="flex-box clearfix">
                                    	<div class="fl flex-box calendar-day c-fff c-f28 bgc-2dbe55">
                                    		<p class="p0">{{items[0].mounth}}月</p>
                                    	</div>
										<div class="fl calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">
		                                    <span class="day-number">{{item.day}}</span>
		                                    <div class="task-icon">
		                                        <i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>
		                                        <i v-if="item.finishFlag" class="icon icon-check"></i>
		                                    </div>
		                                    <div class="coloured-box">
		                                        <span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>
		                                        <span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>
		                                    </div>
		                                    <div class="progress-box">
		                                        <div class="progress" :style="{opacity:item.specialist?'1':'0'}">
		                                            <span>{{(item.specialist && item.specialist.finish)+'/'+(item.specialist && item.specialist.all)}}</span>
		                                            <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+'%'}"></div>
		                                        </div>
		                                        <div class="progress" :style="{opacity:item.family?'1':'0'}">
		                                            <span>{{(item.family && item.family.finish)+'/'+(item.family && item.family.all)}}</span>
		                                            <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+'%'}"></div>
		                                        </div>
		                                        <p v-if="!item.noService" class="mb0 f12" :class="{'visibility-hide':!curTask}" style="line-height: 1;">{{curTaskName || '&emsp;'}}</p>
		                                    </div>
		                                    <p v-if="item.noService" class="no-server">无服务项</p>
		                                </div>
		                            </div>
		                       </div>
							</div>
							<!--无快速查找-->
							<div class="ui-col-1" style="overflow: hidden; overflow-y: scroll;" v-if="!isFastSearch">
							    <div class="calendar-week">
                                    <div class="flex-box text-center">
                                        <div class="flex-box-item">
                                            周一
                                        </div>
                                        <div class="flex-box-item">
                                            周二
                                        </div>
                                        <div class="flex-box-item">
                                            周三
                                        </div>
                                        <div class="flex-box-item">
                                            周四
                                        </div>
                                        <div class="flex-box-item">
                                            周五
                                        </div>
                                        <div class="flex-box-item">
                                            周六
                                        </div>
                                        <div class="flex-box-item">
                                            周日
                                        </div>
                                    </div>
                                </div>
                                <div class="calendar-days">
                                    <div v-for="items in calendarData" class="flex-box">
                                        <!--
                                    -->
                                        <div class="calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">
                                            <span class="day-number">{{item.day}}</span>
                                            <div class="task-icon">
                                                <i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>
                                                <i v-if="item.finishFlag" class="icon icon-check"></i>
                                            </div>
                                            <div class="coloured-box">
                                                <span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>
                                                <span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>
                                            </div>
                                            <div class="progress-box">
                                                <div class="progress" :style="{opacity:item.specialist?'1':'0'}">
                                                    <span>{{(item.specialist && item.specialist.finish)+'/'+(item.specialist && item.specialist.all)}}</span>
                                                    <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+'%'}"></div>
                                                </div>
                                                <div class="progress" :style="{opacity:item.family?'1':'0'}">
                                                    <span>{{(item.family && item.family.finish)+'/'+(item.family && item.family.all)}}</span>
                                                    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+'%'}"></div>
                                                </div>
                                                <p v-if="!item.noService" class="mb0 f12" :class="{'visibility-hide':!curTask}" style="line-height: 1;">{{curTaskName || '&emsp;'}}</p>
                                            </div>
                                            <p v-if="item.noService" class="no-server">无服务项</p>
                                        </div>
                                    </div>
    							</div>
							</div>
						</div>
						<div class="time-axis mt50" v-show="tabStatus==2">
							<table class="table">
								<tr>
									<th style="padding-right: 50px;text-align: right;">时间</th>
									<th>项目</th>
									<th>执行人员</th>
									<th>执行地点</th>
									<th class="text-center">相关记录</th>
									<th class="text-center">状态</th>
								</tr>
								<tr v-for="item in timeAxisData" :is-future="item.future">
									<td class="time text-right time-box">
										<p class="mb5">{{item.date}}</p>
										<p class="mb0">{{item.time}}</p>
										<span class="cur-status">{{item.html}}</span>
									</td>
									<td class="project-name mw400">
										<p class="mb5">{{item.title}}</p>
										<p class="ellipsis mb0">{{item.content}}</p>
									</td>
									<td class="executor">{{item.doctor_name}}</td>
									<td class="place-of-execution">{{item.hospital_name}}</td>
									<td class="view-task" @click="viewDetail(item.id,item.status,1)">查看</td>
									<td class="task-status" :class="item.future==-1?'c-ff3b30':(item.status==0?'c-666':'')">{{item.status==0?'未完成':(item.status==1?'已完成':'已预约')}}</td>
								</tr>
								<tr v-if="!timeAxisData.length">
									<td colspan="6" class="f16 ptb10 text-center">
										<img src="../../../images/wushuju_img.png" />
										<p class="c-666">暂无数据</p>
									</td>
								</tr>
						</div>
					</div>
				</div>
			</div>
		</div>
		</div>
		<script type="text/javascript" src="../../../js/vue.js"></script>
		<script type="text/javascript" src="../../../js/jquery-2.2.4.js"></script>
		<script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../api/http-request.js"></script>
		<script type="text/javascript" src="../../../plugins/layer/layer.min.js"></script>
		<script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
		<script type="text/javascript" src="../../../api/recover_api.js"></script>
		<script type="text/javascript" src="../../../js/underscore-1.9.1.js"></script>
		<script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript" src="../js/rehabilitation_management.js"></script>
	</body>
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>康复管理</title>
		<link rel="shortcut icon" href="../../favicon.ico">
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link rel="stylesheet" type="text/css" href="../css/date.css" />
		<link rel="stylesheet" href="../css/rehabilitation_management.css" />
		<style>
			.plr11{
				padding-left: 11px;
				padding-right: 11px;
			}
			.div-line{
				width: 4px; height: 20px;background: #12b7f5;
				margin-right: 9px;
				margin-top: 5px;
			}
			.lh30{
				height: 30px;
				line-height: 30px;
			}
			.mr21{
				margin-right: 21px;
			}
			.c-ff9630{
				color: #ff9630;
			}
			.pb23{
				padding-bottom: 23px;
			}
			.plr13{
				padding-left: 13px;
				padding-right: 13px;
			}
			.dialos-textarea{
				padding: 25px 10px 25px 15px;
				min-height: 140px;
				width: 100%;
				background: #F5F5FA;
				border: 0;
				margin-top: 5px;
				text-indent: 28px;
				resize: none;
				line-height: 28px;
			}
			.bgc-2dbe55 {background-color: #2dbe55;}
		</style>
	</head>

	<body>
		<div class="c-container ui-grid ui-grid-vertical" id="app" v-cloak>
			<div class="page-title flex-box ui-col-0">
				<div class="flex-box-item mw400" flex-grow="2">
					<span class="page-title-name">康复计划</span>
					<a class="icon icon-back icon-16 mr10" href="javascript:history.back();"></a><i class="icon icon-shuaxin icon-16" @click="refreshPage"></i>
				</div>
				<div class="flex-box-item text-center" flex-grow="5">
					<div class="div-kuaisu-task" @click="changeSearch(1)" v-show="tabStatus!=3">快速找任务</div>
					<div class="pull-right switch-list" v-show="tabStatus!=3">
						<span class="rili" :class="{active:(tabStatus==1)}" @click="tabStatus=1"><i class="icon icon-rili icon-20"></i></span>
						<span class="shijianzhou" :class="{active:(tabStatus==2)}" @click="tabStatus=2"><i class="icon icon-liebiao icon-20"></i></span>
					</div>
				</div>
			</div>
			<div class="rehabilition c-position-r bgc-f5f5f5 ui-col-1">
				<div class="search-left w400 c-position-a">
					<span class="c-position-a set-close" @click="changeSearch(-1)"></span>
					<div class="search-condition">
						<p>快速找任务</p>
						<ul class="task-list">
							<li :class="{'active':(searchTask==task.code)}" v-for="task in taskArr" @click="changeTask(task)">{{task.name}}</li>
						</ul>
						<p>任务状态</p>
						<ul class="task-list">
							<li :class="{'active':(status==sts.code)}" v-for="sts in statusArr" @click="changeStatus(sts.code)">{{sts.name}}</li>
						</ul>
					</div>
					<div class="text-center">
						<button class="btn btn-search" @click="goToLoadData">确认</button>
					</div>
				</div>
				<div class="ui-grid c-h100">
					<div class="div-left ui-col-0 plr11" style="position: fixed;height: 100%;overflow: auto;">
						<div class="ui-grid c-border-b lh30">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">居民信息</div>
						</div>
						<div class="ui-grid c-border-b pb15 pt15">
							<div class="ui-col-0 mr10">
								<img :src="setImgSrc(planInfo.patientPhoto)" width="40" class="c-images-cycle">
							</div>
							<div class="ui-col-1">
								<div class="mt10"><span class="c-f16 mr5">{{planInfo.patientName}}</span><span class="c-f16 c-999">({{planInfo.sex}} {{planInfo.age}}岁)</span></div>
								<div class="tag mt10 tag-1 ml20"></div>
							</div>
							<div class="ui-col-0 div-patient-home c-f14 c-333">进入居民首页</div>
						</div>
						<div class="ui-grid mt15 pb15">
							<div class="ui-col-1 c-f16 c-333">冠心病康复计划</div>
							<div class="ui-col-1 c-f14 c-999">总进度:</div>
							<div class="ui-col-0 div-patient-comfirm c-f14 c-fff bgc-12b7f5" v-show="planInfo.status==2 && !planInfo.patientImg" @tap="weiXinConfirmClick">邀请居民确认</div>
						</div>
						<div class="ui-grid">
							<div class="ui-col-1">
								<div class="progress-bar">
									<span class="progress bgc-ff9526" :style="{width: (planInfo.finishedCount/planInfo.allCount*100)+'%'}"></span>
									<span class="p-text">{{planInfo.finishedCount}}/{{planInfo.allCount}}</span>
								</div>
							</div>
						</div>
						<div class="ui-grid mt15 wkp-end" >
							<div class="ui-col-1 faqi-btn" @click="openVideoChat()"><img src="../images/icon/msg_icon.png">发起会诊</div>
						</div>
						<div class="ui-grid c-border-b lh30">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">服务医生</div>
						</div>
						<div class="ui-grid pt15" v-for="(doc, index) in docList" :key="index">
							<div class="ui-col-0 ml30 mr21">
								<img :src="setImgSrc(doc.doctorPhoto)" width="40" class="c-images-cycle">
							</div>
							<div class="ui-col-0" style="width: 150px;">
								<div class="c-f16 c-333">{{doc.doctorName}}<img v-if="doc.doctorCode!=curDoc.code" @click="openVideoChat(doc)" class="i-icon" src="../../../images/shiping_icon_pre.png"></div>
								<div class="c-f14 c-999">{{doc.type}}</div>
							</div>
							<div class="ui-col-1" style="width: 200px;">
								<div class="c-f14 c-333">完成项目:<span class="c-f14 c-ff9630">{{doc.finishedItem}}</span></div>
								<div class="c-f14 c-333">服务次数:<span class="c-f14 c-ff9630">{{doc.serviceCount}}</span></div>
							</div>
						</div>
						<div class="ui-grid c-border-b lh30 mt15">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">医嘱小结</div>
						</div>
						<div class="w-100 c-border pb23 plr13 mt10 mb50">
							<div class="ui-grid pt20">
								<div class="ui-col-1" v-if="diagnosisInformation">
									<div class="ui-grid">
										<div class="c-f14 c-999 ui-col-1">{{diagnosisInformation.dischargeDiagnosis}}</div>
										<div class="c-f14 c-999 ui-col-0">{{diagnosisInformation.dischargeTime}}</div>
									</div>
									<div class="dialos-textarea c-f14 c-333">{{diagnosisInformation.advice}}</div>
								</div>
								<div class="ui-col-1 c-t-center" v-if="!diagnosisInformation">无医嘱小结</div>
							</div>
						</div>
					</div>
					<div class="nav-content-center bgc-fff c-position-r c-h100 div-right ui-col-1" style="margin-left: 460px;height: 100%;" v-show="tabStatus==3">
						<iframe id="framePage" src="" style="width: 100%;height: 100%;border: 0;"></iframe>
					</div>
					<div class="nav-content-center bgc-fff c-position-r c-h100 div-right ui-col-1" style="margin-left: 460px;" v-show="tabStatus!=3">
						<span v-if="!isFastSearch" style="position: absolute;top: 15px;left: 101px;">
						<i class="icon icon-prev icon-20" @click="preMonth"></i>
						<span class="currentDay">{{currentDay}}</span>
						<i class="icon icon-next icon-20" @click="nextMonth"></i></span>
						<div class="calendar-content ui-grid ui-grid-vertical" v-show="tabStatus==1">
							<div class="calendar-descript">
								<span>图例注释: </span><i class="icon icon-blue"></i> <span>专科团队</span>&emsp;<i class="icon icon-green"></i> <span>家医团队</span>&emsp; <i class="icon icon-flag"></i> <span>我的任务</span>
							</div>
							<!--快速查找-->
							<div class="ui-col-1 c-border-t" style="overflow: hidden; overflow-y: scroll;" v-if="isFastSearch">
								<div class="calendar-days" v-for="searchData1 in searchData">
                                    <div v-for="items in searchData1" class="flex-box clearfix">
                                    	<div class="fl flex-box calendar-day c-fff c-f28 bgc-2dbe55">
                                    		<p class="p0">{{items[0].mounth}}月</p>
                                    	</div>
										<div class="fl calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">
		                                    <span class="day-number">{{item.day}}</span>
		                                    <div class="task-icon">
		                                        <i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>
		                                        <i v-if="item.finishFlag" class="icon icon-check"></i>
		                                    </div>
		                                    <div class="coloured-box">
		                                        <span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>
		                                        <span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>
		                                    </div>
		                                    <div class="progress-box">
		                                        <div class="progress" :style="{opacity:item.specialist?'1':'0'}">
		                                            <span>{{(item.specialist && item.specialist.finish)+'/'+(item.specialist && item.specialist.all)}}</span>
		                                            <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+'%'}"></div>
		                                        </div>
		                                        <div class="progress" :style="{opacity:item.family?'1':'0'}">
		                                            <span>{{(item.family && item.family.finish)+'/'+(item.family && item.family.all)}}</span>
		                                            <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+'%'}"></div>
		                                        </div>
		                                        <p v-if="!item.noService" class="mb0 f12" :class="{'visibility-hide':!curTask}" style="line-height: 1;">{{curTaskName || '&emsp;'}}</p>
		                                    </div>
		                                    <p v-if="item.noService" class="no-server">无服务项</p>
		                                </div>
		                            </div>
		                       </div>
							</div>
							<!--无快速查找-->
							<div class="ui-col-1" style="overflow: hidden; overflow-y: scroll;" v-if="!isFastSearch">
							    <div class="calendar-week">
                                    <div class="flex-box text-center">
                                        <div class="flex-box-item">
                                            周一
                                        </div>
                                        <div class="flex-box-item">
                                            周二
                                        </div>
                                        <div class="flex-box-item">
                                            周三
                                        </div>
                                        <div class="flex-box-item">
                                            周四
                                        </div>
                                        <div class="flex-box-item">
                                            周五
                                        </div>
                                        <div class="flex-box-item">
                                            周六
                                        </div>
                                        <div class="flex-box-item">
                                            周日
                                        </div>
                                    </div>
                                </div>
                                <div class="calendar-days">
                                    <div v-for="items in calendarData" class="flex-box">
                                        <!--
                                    -->
                                        <div class="calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">
                                            <span class="day-number">{{item.day}}</span>
                                            <div class="task-icon">
                                                <i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>
                                                <i v-if="item.finishFlag" class="icon icon-check"></i>
                                            </div>
                                            <div class="coloured-box">
                                                <span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>
                                                <span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>
                                            </div>
                                            <div class="progress-box">
                                                <div class="progress" :style="{opacity:item.specialist?'1':'0'}">
                                                    <span>{{(item.specialist && item.specialist.finish)+'/'+(item.specialist && item.specialist.all)}}</span>
                                                    <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+'%'}"></div>
                                                </div>
                                                <div class="progress" :style="{opacity:item.family?'1':'0'}">
                                                    <span>{{(item.family && item.family.finish)+'/'+(item.family && item.family.all)}}</span>
                                                    <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+'%'}"></div>
                                                </div>
                                                <p v-if="!item.noService" class="mb0 f12" :class="{'visibility-hide':!curTask}" style="line-height: 1;">{{curTaskName || '&emsp;'}}</p>
                                            </div>
                                            <p v-if="item.noService" class="no-server">无服务项</p>
                                        </div>
                                    </div>
    							</div>
							</div>
						</div>
						<div class="time-axis mt50" v-show="tabStatus==2">
							<table class="table">
								<tr>
									<th style="padding-right: 50px;text-align: right;">时间</th>
									<th>项目</th>
									<th>执行人员</th>
									<th>执行地点</th>
									<th class="text-center">相关记录</th>
									<th class="text-center">状态</th>
								</tr>
								<tr v-for="item in timeAxisData" :is-future="item.future">
									<td class="time text-right time-box">
										<p class="mb5">{{item.date}}</p>
										<p class="mb0">{{item.time}}</p>
										<span class="cur-status">{{item.html}}</span>
									</td>
									<td class="project-name mw400">
										<p class="mb5">{{item.title}}</p>
										<p class="ellipsis mb0">{{item.content}}</p>
									</td>
									<td class="executor">{{item.doctor_name}}</td>
									<td class="place-of-execution">{{item.hospital_name}}</td>
									<td class="view-task" @click="viewDetail(item.id,item.status,1)">查看</td>
									<td class="task-status" :class="item.future==-1?'c-ff3b30':(item.status==0?'c-666':'')">{{item.status==0?'未完成':(item.status==1?'已完成':'已预约')}}</td>
								</tr>
								<tr v-if="!timeAxisData.length">
									<td colspan="6" class="f16 ptb10 text-center">
										<img src="../../../images/wushuju_img.png" />
										<p class="c-666">暂无数据</p>
									</td>
								</tr>
						</div>
					</div>
				</div>
			</div>
		</div>
		</div>
		<script type="text/javascript" src="../../../js/vue.js"></script>
		<script type="text/javascript" src="../../../js/jquery-2.2.4.js"></script>
		<script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../api/http-request.js"></script>
		<script type="text/javascript" src="../../../plugins/layer/layer.min.js"></script>
		<script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
		<script type="text/javascript" src="../../../api/recover_api.js"></script>
		<script type="text/javascript" src="../../../api/videochat-api.js"></script>
		<script type="text/javascript" src="../../../js/underscore-1.9.1.js"></script>
		<script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript" src="../js/rehabilitation_management.js"></script>
	</body>

</html>

二进制
app/rehabilitation/images/icon/msg_icon.png


+ 575 - 517
app/rehabilitation/js/rehabilitation_management.js

@ -1,518 +1,576 @@
!function(){
				var httpData=GetRequest();
				var currentGMT=new Date();//当前时间GMT
	new Vue({
		el:"#app",
		data:{
			ynow: currentGMT.getFullYear(),//年份
			mnow: currentGMT.getMonth(),//月份(比实际少一个月---0开始至11)
			dnow: currentGMT.getDate(),//当前日
			currentDay:null,//带中文格式的当前年月
			currentDayForEn:null,//不带中文格式年月日2018/10/01如果写成/的话  转换成时间戳会变成北京时间8点
			calendarData:[],//日历数据
			timeAxisData:[],//时间轴数据
			__Data:[],//当前的年月(日历)
			__xData:[],//当前的年月(时间轴)
			isFastSearch: false, // 是否是快速查找任务
			status:null,//任务状态(0未完成,1已完成,2已预约)
			searchTask:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
			searchTaskName:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
			planId: httpData['planId'],
			patientCode: httpData['patientCode'],
			taskArr:[
				{code:1,name:'我的任务'},
				{code:2,name:'健康教育'},
				{code:3,name:'健康指导'},
				{code:4,name:'随访'},
				{code:5,name:'复诊'},
			],
			statusArr:[
				{code:0,name:'未完成'},
				{code:1,name:'已完成'},
				{code:2,name:'已预约'},
			],
			curTask:'',//快速查找是否点击了搜索按钮
			curTaskName:'',//快速查找是否点击了搜索按钮
			tabStatus:null,
			planInfo:{},
			docList:[],
			diagnosisInformation: null,
			searchData: [], // 搜索计划安排(去年、今年、明年)
		},
		mounted:function(){
			if(!this.planId){
				layer.msg('未传入计划id(planId)',{icon:2})
			}else{							
				this.tabStatus=1;
			}
			this.planSchedule();
			this.serviceDoctorList();//获取服务医生列表
			this.bindEvents();
			// 获取最新的诊疗信息1条
            this.findDiagnosisInformationByPlanId()
		},
		methods:{
			//获取计划表
			planSchedule:function(){
				var vm = this;
				var  params = {
		            planId: this.planId,
		            patientCode: this.patientCode
		        };
				rehaAPI.planSchedule(params).then(function(res){
					 if(res.status == 200){
			            vm.planInfo = res.data;
			            vm.planInfo.tagClass = "tag-"+res.data.healthyConditionType;
			            //patientImg:居民签名照/证件照,如果不为null的话说明居民已确认,显示康复完成明细
			            if(vm.planInfo.status==2 && !vm.planInfo.patientImg){//任务全部完成时,显示完成提示框
							vm.showCompleteDailog();
			            }else if(vm.planInfo.status==2 && vm.planInfo.patientImg){//居民已确认计划完成
			            	vm.tabStatus=3;
							$("#framePage").attr("src","stop_special_service.html?planids="+vm.planId+"&planStatus="+vm.planInfo.status)
			            }
			        }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			// 获取最新的诊疗消息
			findDiagnosisInformationByPlanId: function() {
				var vm = this,
					loading = layer.load(0, {shade: false}),
					params = {
						planId: vm.planId
					}
				recoverAPI.findDiagnosisInformationByPlanId(params).then(function(res) {
					layer.close(loading)
					if(res.status == 200) {
						vm.diagnosisInformation = res.data
					} else {
						showErrorMessage(res.msg);
					}
				})
			},
			serviceDoctorList:function(){
				var vm = this;
				rehaAPI.serviceDoctorList({patientCode: this.patientCode}).then(function(res){
					 if(res.status == 200){
					 	vm.docList = res.data;
					 }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			weiXinConfirmClick:function(){
				var vm = this;
				rehaAPI.sendWxMsg({planId: this.planId}).then(function(res){
					 if(res.status == 200){
					 	layer.msg("发送成功,等待居民确认");
					 	setTimeout(function(){
					 		vm.tabStatus=3;
							$("#framePage").attr("src","stop_special_service.html?planids="+vm.planId+"&planStatus="+vm.planInfo.status)
					 	},1000)
					 }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			setImgSrc: function (src) {
                var str = httpRequest.getImgUrl(src)
                return str
            },
			showCompleteDailog:function(){
				layer.confirm('<div class="mt10 tac"><image src="../images/yiwancheng_icon.png" width="100" height="100"/><div class="mt20 c-f20 c-333 mb40">本次康复计划已完成</div><div class="div-patient-comfirm c-f14 c-fff bgc-12b7f5" style="margin:40px auto 20px;">邀请居民确认</div></div>', { 
		    		btn: [],
		    		area: ["400px", "340px"],
		    		title: "完成提示"
		    	}, function (index) {
		    		
	//	            layer.close(index);
		        });
			},
			refreshPage:function(){
				if(!this.planId){
					layer.msg('未传入计划id(planId)',{icon:2})
					return ;
				}
				this.goToLoadData(true);
			},
			bindEvents:function(){
				var vm = this;
				$("body").on("click",".div-patient-comfirm",function(){
					layer.closeAll();
					vm.weiXinConfirmClick();
				}).on("click", ".div-patient-home", function() {
					location.href = "../../recover/html/personal-manage.html?patientCode=" + vm.patientCode
				})
			},
			viewDetail:function(planids,status,type){
				var vm=this;
				if(!planids){
					layer.msg('无服务项',{icon:5})
					return ;
				}
				if(status==1 && type==1){
					top.layer.open({
					  type: 2,
					  area: ['800px', '650px'],
					  shade: 0.5,
					  title: '完成项目确认',
					  fixed: true, //不固定
					  maxmin: true,
					  closeBtn:1,
					  shift: 5,
					  shadeClose: false, //点击遮罩关闭层
					  content: '../../rehabilitation/html/guide_the_message.html?planid='+planids
					});
					return ;
				}
//							planids='402803f6657f195301657f4c4ce70000';
				layer.open({
				  type: 2,
				  area: ['800px', '650px'],
				  shade: 0.5,
				  title: '服务项目内容',
				  fixed: true, //不固定
				  maxmin: true,
				  closeBtn:1,
				  shift: 5,
				  shadeClose: false, //点击遮罩关闭层
				  content: '../../rehabilitation/html/service_item_content.html?planids='+planids,
				  end:function(){
				  	vm.goToLoadData(true);	
				  }
					
				});
			},
			changeStatus:function(val){
				this.status=this.status==val?null:val;
			},
			changeTask:function(val){
				this.searchTask=this.searchTask==val.code?null:val.code;
				this.searchTaskName=this.searchTaskName==val.name?null:val.name;
			},
			monDetail:function(){
			  this.currentDay = this.ynow + '年'+ (this.mnow + 1) +'月';
			  this.currentDayForEn=this.ynow+'/'+(this.mnow>=9?(this.mnow+1):"0"+(this.mnow+1))+'/'+(this.dnow>=9?this.dnow:"0"+this.dnow)
			},
			is_leap:function(year) {  //判断是否为闰年
			   return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));
			},
			preMonth:function(){  //上一个月
			  if(this.mnow<=0){
			    this.mnow=11;
			    this.ynow=this.ynow-1;
			  }else{
			    this.mnow--;
			  }
			  this.monDetail();
			  this.goToLoadData(true);
			},
			getPreMouth:function(){
				var pMnow,pYnow;
				if(this.mnow<=0){
				    pMnow=11;
				    pYnow=this.ynow-1;
				  }else{
				    pMnow=this.mnow-1;
				    pYnow=this.ynow;
				  }
				var m_days=new Array(31,(28+this.is_leap(pYnow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
				return {
						days:m_days[pMnow],
						date:pYnow+'-'+(++pMnow>=10?pMnow:"0"+pMnow)
					}
			},
			nextMonth:function(){   //下一个月
			  if(this.mnow>=11){
			    this.mnow=0;
			    this.ynow=this.ynow+1;
			  }else{
			     this.mnow++;
			  }
			  this.monDetail();
			  this.goToLoadData(true);			
			},
			getNextMouth:function(){
				var nMnow,nYnow;
				if(this.mnow>=11){
				    nMnow=0;
				    nYnow=this.ynow+1;
				  }else{
				     nMnow=this.mnow+1;
				     nYnow=this.ynow;
				  }
				var m_days=new Array(31,(28+this.is_leap(nYnow)),31,30,31,01,31,31,30,31,30,31);  //每个月的天数
				return {
						days:m_days[nMnow],
						date:nYnow+'-'+(++nMnow>=10?nMnow:"0"+nMnow)
					}
			},
			goToLoadData:function(flag){//flag是否更新数据
				this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
				this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();
				this.changeSearch(-1)
			},
			calendar:function(){
			  var nlstr = new Date(this.ynow,this.mnow,1);  //当月第一天
			  var firstday = nlstr.getDay()-1;//第一天星期几,默认是周日  我们改成周一
			  firstday=firstday==-1?6:firstday;//如果是-1,说明当月的第一天是周日
			  var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
			  var tr_str=Math.ceil((m_days[this.mnow] + firstday)/7);   //当前月天数+第一天是星期几的数值   获得 表格行数
			  var c_days=m_days[this.mnow];//当前月份的天数
			  var p_arr=this.getPreMouth();
			  var n_arr=this.getNextMouth();
			  var i,k,idx,date_str;
			  var dataArr=[];//天数/年月
			  for(i=0;i<tr_str;i++) { //表格的行
			     for(k=0;k<7;k++) { //表格每行的单元格
			        idx=i*7+k; //单元格自然序列号
			        date_str=idx-firstday+1; //计算日期
			        var __ym;
			        if(date_str<=0){//过滤无效日期(小于等于零的、大于月总天数的)
			        	date_str=date_str+p_arr['days'];//当前日期+上个月的天数就是上个月的日期
			        	__ym=p_arr['date'];
			        }else if(date_str>c_days){
			        	date_str=date_str-c_days;//下个月的日期就是这个月的天数-当月的天数
			        	__ym=n_arr['date'];
			        }else{
			        	__ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
			        }
			        dataArr.push({
			        	day:date_str,
			        	date:__ym
			        });
			     }
			  }
			  this.__Data=dataArr;
			  this.monDetail();
			  this.calenderPlanDetail();
			},
			daysSort: function(arr) {
				var getArr = JSON.parse(JSON.stringify(arr)),
					returnArr = []
				for(var i = 1; i < 31; i++) {
					for(var j = 0, len = getArr.length; j < len; j++) {
						var stri = i > 9 + '' ? i : '0'+i
						if(getArr[j].day == stri) {
							returnArr.push(getArr[j])
							getArr.splice(j,1)
							break;
						}
					}
				}
				return returnArr
			},
			// 日历有计划数据处理
			planHandleData: function(data, day, mounth) {
				var item = data;
				item.day = day;
				if(mounth) {item.mounth = mounth}
				var finishFlag=false
				var sFlag=false;
				var fFlag=false;
				if(item.specialist){
					if(item.specialist.all==item.specialist.finish){
						sFlag=true;
					}
				}else{
					sFlag = true;
				}
				if(item.family){
					if(item.family.all==item.family.finish){
						fFlag = true;
					}
				}else{
					fFlag = true;
				}
				finishFlag = sFlag && fFlag;
				item.finishFlag=finishFlag;
				return item
			},
//						日历请求
			calenderPlanDetail:function(){
				var vm=this;
				var __days=vm.__Data;
				var lastDay=(__days.concat()).pop().day;
				lastDay=lastDay>9?lastDay:'0'+lastDay;
				if(vm.searchTask || vm.status || vm.status == 0) {
					vm.isFastSearch = true
				} else {
					vm.isFastSearch = false
				}
				var params={
					executeStartTime: vm.isFastSearch ? '' : __days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
					executeEndTime: vm.isFastSearch ? '' : (__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
					planId:vm.planId,//计划id
					searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
					status:vm.status,//任务状态(0未完成,1已完成,2已预约)
				}
				rehaAPI.calendarPlanDetail(params).then(function(res){
					vm.curTask=vm.searchTask;
					vm.curTaskName=vm.searchTaskName;
					vm.calendarData=[];
					var list = [];
					if(res.status==200){
						var data=res.data
						// 快速查找
						if(vm.isFastSearch) {
							vm.searchData = []
							var searchData0 = [],
								searchData1 = [],
								searchData2 = [];
							for(var setM = 1; setM <= 12; setM++) {
								var _setM = setM > 9 ? setM : '0' + setM,
									_setY = new Date().getFullYear();
								var data0 = [],
									data1 = [],
									data2 = [];
								for(var i in data) {
									var getY = i.split("-")[0],
										getM = i.split("-")[1],
										getD = i.split("-")[2];
									// 去年
									if(_setY - 1 == getY && _setM == getM) {
										var item = vm.planHandleData(data[i], getD, getM)
										data0.push(item)
										data.length && data.splice(i,1);
									} else if(_setY == getY && _setM == getM) { // 今年
										var item = vm.planHandleData(data[i], getD, getM)
										data1.push(item)
										data.length && data.splice(i,1);
									} else if(_setY + 1 == getY && _setM == getM) { // 明年
										var item = vm.planHandleData(data[i], getD, getM)
										data2.push(item)
										data.length && data.splice(i,1);
									}
								}
								if(data0.length) {
									var dataSort = vm.daysSort(data0)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData0.push(dataSort)
								}
								if(data1.length) {
									var dataSort = vm.daysSort(data1)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData1.push(dataSort)
								}
								if(data2.length) {
									var dataSort = vm.daysSort(data2)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData2.push(dataSort)
								}
							}
							if(searchData0.length) {vm.searchData.push(searchData0)}
							if(searchData1.length) {vm.searchData.push(searchData1)}
							if(searchData2.length) {vm.searchData.push(searchData2)}
							return false;
						}
						// 正常日历
						var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0));
						for(var i in __days){
							var _key=__days[i].date+'-'+(__days[i].day>9?__days[i].day:'0'+__days[i].day);
							var item={
									noService:true,
									day:__days[i].day
								};
							for(var j in data){
								if(_key==j){
									item = vm.planHandleData(data[j], __days[i].day)
									data.length && data.splice(j,1);
									break;
								}
							}
							var thatTime=+new Date(_key)-8*60*60*1000;
							var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
							item.future=future;
							list.push(item);
//							vm.calendarData.push(item);
						}
						vm.calendarData = _.chunk(list, 7)
					}
				})
			},
//						时间轴请求
			timeAxis:function(){
				var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
				var c_days=m_days[this.mnow];//当前月份的天数
				var __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
				var dataArr=[];//天数/年月
				for(;c_days>0;c_days--){
					dataArr.push({
			        	day:c_days,
			        	date:__ym
			        });
				}
				this.__xData=dataArr;
				this.monDetail();
				this.calendarPlanDetailList();
			},
//						时间轴请求
			calendarPlanDetailList:function(){
				var vm=this;
				var __days=vm.__xData;
				var lastDay=(__days.concat()).pop().day;
				lastDay=lastDay>9?lastDay:'0'+lastDay;
				var params={
					executeEndTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
					executeStartTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
					planId:vm.planId,//计划id
					searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)
					status:vm.status,//任务状态(0未完成,1已完成,2已预约)
				}
				rehaAPI.calendarPlanDetailList(params).then(function(res){
					if(res.status==200){
						var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0))
						vm.timeAxisData=_.map(res.data||{},function(o){
							var _time=o.executeTime.split(' ');
							var thatTime=+new Date(_time[0]);
							var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
							(o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
							var _html=o.status==2?'预':(future==-1?'逾':'');
							_html=future==1?'今':_html;
							if(_html=='预') future=3;
							o.html=_html
							o.date=_time[0];
							o.time=_time[1];
							o.future=future;
							return o;
						})||[];
					}
				})
			},
			changeSearch: function(status) {
				var i = status == 1 ? -400 : 0;
				var timer1 = setInterval(function() {
					i += (5 * status)
					$(".search-left").css("right", i + "px")
					if(status == 1 && i >= 0) {
						clearInterval(timer1)
					}
					if(status == -1 && i <= -400) {
						clearInterval(timer1)
					}
				}, 5)
			}
		},
		watch:{
			tabStatus:function(){
				this.goToLoadData();
			}
		}
	})
!function(){
				var httpData=GetRequest();
				var currentGMT=new Date();//当前时间GMT
	new Vue({
		el:"#app",
		data:{
			ynow: currentGMT.getFullYear(),//年份
			mnow: currentGMT.getMonth(),//月份(比实际少一个月---0开始至11)
			dnow: currentGMT.getDate(),//当前日
			currentDay:null,//带中文格式的当前年月
			currentDayForEn:null,//不带中文格式年月日2018/10/01如果写成/的话  转换成时间戳会变成北京时间8点
			calendarData:[],//日历数据
			timeAxisData:[],//时间轴数据
			__Data:[],//当前的年月(日历)
			__xData:[],//当前的年月(时间轴)
			isFastSearch: false, // 是否是快速查找任务
			status:null,//任务状态(0未完成,1已完成,2已预约)
			searchTask:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
			searchTaskName:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
			planId: httpData['planId'],
			patientCode: httpData['patientCode'],
			curDoc: JSON.parse(localStorage.docInfo),
			taskArr:[
				{code:1,name:'我的任务'},
				{code:2,name:'健康教育'},
				{code:3,name:'健康指导'},
				{code:4,name:'随访'},
				{code:5,name:'复诊'},
			],
			statusArr:[
				{code:0,name:'未完成'},
				{code:1,name:'已完成'},
				{code:2,name:'已预约'},
			],
			curTask:'',//快速查找是否点击了搜索按钮
			curTaskName:'',//快速查找是否点击了搜索按钮
			tabStatus:null,
			planInfo:{},
			docList:[],
			diagnosisInformation: null,
			searchData: [], // 搜索计划安排(去年、今年、明年)
		},
		mounted:function(){
			if(!this.planId){
				layer.msg('未传入计划id(planId)',{icon:2})
			}else{							
				this.tabStatus=1;
			}
			this.planSchedule();
			this.serviceDoctorList();//获取服务医生列表
			this.bindEvents();
			// 获取最新的诊疗信息1条
            this.findDiagnosisInformationByPlanId()
		},
		methods:{
			//获取计划表
			planSchedule:function(){
				var vm = this;
				var  params = {
		            planId: this.planId,
		            patientCode: this.patientCode
		        };
				rehaAPI.planSchedule(params).then(function(res){
					 if(res.status == 200){
			            vm.planInfo = res.data;
			            vm.planInfo.tagClass = "tag-"+res.data.healthyConditionType;
			            //patientImg:居民签名照/证件照,如果不为null的话说明居民已确认,显示康复完成明细
			            if(vm.planInfo.status==2 && !vm.planInfo.patientImg){//任务全部完成时,显示完成提示框
							vm.showCompleteDailog();
			            }else if(vm.planInfo.status==2 && vm.planInfo.patientImg){//居民已确认计划完成
			            	vm.tabStatus=3;
							$("#framePage").attr("src","stop_special_service.html?planids="+vm.planId+"&planStatus="+vm.planInfo.status)
			            }
			        }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			// 获取最新的诊疗消息
			findDiagnosisInformationByPlanId: function() {
				var vm = this,
					loading = layer.load(0, {shade: false}),
					params = {
						planId: vm.planId
					}
				recoverAPI.findDiagnosisInformationByPlanId(params).then(function(res) {
					layer.close(loading)
					if(res.status == 200) {
						vm.diagnosisInformation = res.data
					} else {
						showErrorMessage(res.msg);
					}
				})
			},
			serviceDoctorList:function(){
				var vm = this;
				rehaAPI.serviceDoctorList({patientCode: this.patientCode}).then(function(res){
					 if(res.status == 200){
					 	vm.docList = res.data;
					 }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			weiXinConfirmClick:function(){
				var vm = this;
				rehaAPI.sendWxMsg({planId: this.planId}).then(function(res){
					 if(res.status == 200){
					 	layer.msg("发送成功,等待居民确认");
					 	setTimeout(function(){
					 		vm.tabStatus=3;
							$("#framePage").attr("src","stop_special_service.html?planids="+vm.planId+"&planStatus="+vm.planInfo.status)
					 	},1000)
					 }else{
			        	layer.msg(res.msg,{icon:5});
			        }
				})
			},
			setImgSrc: function (src) {
                var str = httpRequest.getImgUrl(src)
                return str
            },
			showCompleteDailog:function(){
				layer.confirm('<div class="mt10 tac"><image src="../images/yiwancheng_icon.png" width="100" height="100"/><div class="mt20 c-f20 c-333 mb40">本次康复计划已完成</div><div class="div-patient-comfirm c-f14 c-fff bgc-12b7f5" style="margin:40px auto 20px;">邀请居民确认</div></div>', { 
		    		btn: [],
		    		area: ["400px", "340px"],
		    		title: "完成提示"
		    	}, function (index) {
		    		
	//	            layer.close(index);
		        });
			},
			refreshPage:function(){
				if(!this.planId){
					layer.msg('未传入计划id(planId)',{icon:2})
					return ;
				}
				this.goToLoadData(true);
			},
			bindEvents:function(){
				var vm = this;
				$("body").on("click",".div-patient-comfirm",function(){
					layer.closeAll();
					vm.weiXinConfirmClick();
				}).on("click", ".div-patient-home", function() {
					location.href = "../../recover/html/personal-manage.html?patientCode=" + vm.patientCode
				})
			},
			viewDetail:function(planids,status,type){
				var vm=this;
				if(!planids){
					layer.msg('无服务项',{icon:5})
					return ;
				}
				if(status==1 && type==1){
					top.layer.open({
					  type: 2,
					  area: ['800px', '650px'],
					  shade: 0.5,
					  title: '完成项目确认',
					  fixed: true, //不固定
					  maxmin: true,
					  closeBtn:1,
					  shift: 5,
					  shadeClose: false, //点击遮罩关闭层
					  content: '../../rehabilitation/html/guide_the_message.html?planid='+planids
					});
					return ;
				}
//							planids='402803f6657f195301657f4c4ce70000';
				layer.open({
				  type: 2,
				  area: ['800px', '650px'],
				  shade: 0.5,
				  title: '服务项目内容',
				  fixed: true, //不固定
				  maxmin: true,
				  closeBtn:1,
				  shift: 5,
				  shadeClose: false, //点击遮罩关闭层
				  content: '../../rehabilitation/html/service_item_content.html?planids='+planids,
				  end:function(){
				  	vm.goToLoadData(true);	
				  }
					
				});
			},
			changeStatus:function(val){
				this.status=this.status==val?null:val;
			},
			changeTask:function(val){
				this.searchTask=this.searchTask==val.code?null:val.code;
				this.searchTaskName=this.searchTaskName==val.name?null:val.name;
			},
			monDetail:function(){
			  this.currentDay = this.ynow + '年'+ (this.mnow + 1) +'月';
			  this.currentDayForEn=this.ynow+'/'+(this.mnow>=9?(this.mnow+1):"0"+(this.mnow+1))+'/'+(this.dnow>=9?this.dnow:"0"+this.dnow)
			},
			is_leap:function(year) {  //判断是否为闰年
			   return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));
			},
			preMonth:function(){  //上一个月
			  if(this.mnow<=0){
			    this.mnow=11;
			    this.ynow=this.ynow-1;
			  }else{
			    this.mnow--;
			  }
			  this.monDetail();
			  this.goToLoadData(true);
			},
			getPreMouth:function(){
				var pMnow,pYnow;
				if(this.mnow<=0){
				    pMnow=11;
				    pYnow=this.ynow-1;
				  }else{
				    pMnow=this.mnow-1;
				    pYnow=this.ynow;
				  }
				var m_days=new Array(31,(28+this.is_leap(pYnow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
				return {
						days:m_days[pMnow],
						date:pYnow+'-'+(++pMnow>=10?pMnow:"0"+pMnow)
					}
			},
			nextMonth:function(){   //下一个月
			  if(this.mnow>=11){
			    this.mnow=0;
			    this.ynow=this.ynow+1;
			  }else{
			     this.mnow++;
			  }
			  this.monDetail();
			  this.goToLoadData(true);			
			},
			getNextMouth:function(){
				var nMnow,nYnow;
				if(this.mnow>=11){
				    nMnow=0;
				    nYnow=this.ynow+1;
				  }else{
				     nMnow=this.mnow+1;
				     nYnow=this.ynow;
				  }
				var m_days=new Array(31,(28+this.is_leap(nYnow)),31,30,31,01,31,31,30,31,30,31);  //每个月的天数
				return {
						days:m_days[nMnow],
						date:nYnow+'-'+(++nMnow>=10?nMnow:"0"+nMnow)
					}
			},
			goToLoadData:function(flag){//flag是否更新数据
				this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
				this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();
				this.changeSearch(-1)
			},
			calendar:function(){
			  var nlstr = new Date(this.ynow,this.mnow,1);  //当月第一天
			  var firstday = nlstr.getDay()-1;//第一天星期几,默认是周日  我们改成周一
			  firstday=firstday==-1?6:firstday;//如果是-1,说明当月的第一天是周日
			  var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
			  var tr_str=Math.ceil((m_days[this.mnow] + firstday)/7);   //当前月天数+第一天是星期几的数值   获得 表格行数
			  var c_days=m_days[this.mnow];//当前月份的天数
			  var p_arr=this.getPreMouth();
			  var n_arr=this.getNextMouth();
			  var i,k,idx,date_str;
			  var dataArr=[];//天数/年月
			  for(i=0;i<tr_str;i++) { //表格的行
			     for(k=0;k<7;k++) { //表格每行的单元格
			        idx=i*7+k; //单元格自然序列号
			        date_str=idx-firstday+1; //计算日期
			        var __ym;
			        if(date_str<=0){//过滤无效日期(小于等于零的、大于月总天数的)
			        	date_str=date_str+p_arr['days'];//当前日期+上个月的天数就是上个月的日期
			        	__ym=p_arr['date'];
			        }else if(date_str>c_days){
			        	date_str=date_str-c_days;//下个月的日期就是这个月的天数-当月的天数
			        	__ym=n_arr['date'];
			        }else{
			        	__ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
			        }
			        dataArr.push({
			        	day:date_str,
			        	date:__ym
			        });
			     }
			  }
			  this.__Data=dataArr;
			  this.monDetail();
			  this.calenderPlanDetail();
			},
			daysSort: function(arr) {
				var getArr = JSON.parse(JSON.stringify(arr)),
					returnArr = []
				for(var i = 1; i < 31; i++) {
					for(var j = 0, len = getArr.length; j < len; j++) {
						var stri = i > 9 + '' ? i : '0'+i
						if(getArr[j].day == stri) {
							returnArr.push(getArr[j])
							getArr.splice(j,1)
							break;
						}
					}
				}
				return returnArr
			},
			// 日历有计划数据处理
			planHandleData: function(data, day, mounth) {
				var item = data;
				item.day = day;
				if(mounth) {item.mounth = mounth}
				var finishFlag=false
				var sFlag=false;
				var fFlag=false;
				if(item.specialist){
					if(item.specialist.all==item.specialist.finish){
						sFlag=true;
					}
				}else{
					sFlag = true;
				}
				if(item.family){
					if(item.family.all==item.family.finish){
						fFlag = true;
					}
				}else{
					fFlag = true;
				}
				finishFlag = sFlag && fFlag;
				item.finishFlag=finishFlag;
				return item
			},
//						日历请求
			calenderPlanDetail:function(){
				var vm=this;
				var __days=vm.__Data;
				var lastDay=(__days.concat()).pop().day;
				lastDay=lastDay>9?lastDay:'0'+lastDay;
				if(vm.searchTask || vm.status || vm.status == 0) {
					vm.isFastSearch = true
				} else {
					vm.isFastSearch = false
				}
				var params={
					executeStartTime: vm.isFastSearch ? '' : __days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
					executeEndTime: vm.isFastSearch ? '' : (__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
					planId:vm.planId,//计划id
					searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
					status:vm.status,//任务状态(0未完成,1已完成,2已预约)
				}
				rehaAPI.calendarPlanDetail(params).then(function(res){
					vm.curTask=vm.searchTask;
					vm.curTaskName=vm.searchTaskName;
					vm.calendarData=[];
					var list = [];
					if(res.status==200){
						var data=res.data
						// 快速查找
						if(vm.isFastSearch) {
							vm.searchData = []
							var searchData0 = [],
								searchData1 = [],
								searchData2 = [];
							for(var setM = 1; setM <= 12; setM++) {
								var _setM = setM > 9 ? setM : '0' + setM,
									_setY = new Date().getFullYear();
								var data0 = [],
									data1 = [],
									data2 = [];
								for(var i in data) {
									var getY = i.split("-")[0],
										getM = i.split("-")[1],
										getD = i.split("-")[2];
									// 去年
									if(_setY - 1 == getY && _setM == getM) {
										var item = vm.planHandleData(data[i], getD, getM)
										data0.push(item)
										data.length && data.splice(i,1);
									} else if(_setY == getY && _setM == getM) { // 今年
										var item = vm.planHandleData(data[i], getD, getM)
										data1.push(item)
										data.length && data.splice(i,1);
									} else if(_setY + 1 == getY && _setM == getM) { // 明年
										var item = vm.planHandleData(data[i], getD, getM)
										data2.push(item)
										data.length && data.splice(i,1);
									}
								}
								if(data0.length) {
									var dataSort = vm.daysSort(data0)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData0.push(dataSort)
								}
								if(data1.length) {
									var dataSort = vm.daysSort(data1)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData1.push(dataSort)
								}
								if(data2.length) {
									var dataSort = vm.daysSort(data2)
									var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
									for(var i = 0; i < 7 - addlen; i++) {
										dataSort.push({
											noService:true
										})	
									}
									searchData2.push(dataSort)
								}
							}
							if(searchData0.length) {vm.searchData.push(searchData0)}
							if(searchData1.length) {vm.searchData.push(searchData1)}
							if(searchData2.length) {vm.searchData.push(searchData2)}
							return false;
						}
						// 正常日历
						var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0));
						for(var i in __days){
							var _key=__days[i].date+'-'+(__days[i].day>9?__days[i].day:'0'+__days[i].day);
							var item={
									noService:true,
									day:__days[i].day
								};
							for(var j in data){
								if(_key==j){
									item = vm.planHandleData(data[j], __days[i].day)
									data.length && data.splice(j,1);
									break;
								}
							}
							var thatTime=+new Date(_key)-8*60*60*1000;
							var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
							item.future=future;
							list.push(item);
//							vm.calendarData.push(item);
						}
						vm.calendarData = _.chunk(list, 7)
					}
				})
			},
//						时间轴请求
			timeAxis:function(){
				var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
				var c_days=m_days[this.mnow];//当前月份的天数
				var __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
				var dataArr=[];//天数/年月
				for(;c_days>0;c_days--){
					dataArr.push({
			        	day:c_days,
			        	date:__ym
			        });
				}
				this.__xData=dataArr;
				this.monDetail();
				this.calendarPlanDetailList();
			},
//						时间轴请求
			calendarPlanDetailList:function(){
				var vm=this;
				var __days=vm.__xData;
				var lastDay=(__days.concat()).pop().day;
				lastDay=lastDay>9?lastDay:'0'+lastDay;
				var params={
					executeEndTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
					executeStartTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
					planId:vm.planId,//计划id
					searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)
					status:vm.status,//任务状态(0未完成,1已完成,2已预约)
				}
				rehaAPI.calendarPlanDetailList(params).then(function(res){
					if(res.status==200){
						var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0))
						vm.timeAxisData=_.map(res.data||{},function(o){
							var _time=o.executeTime.split(' ');
							var thatTime=+new Date(_time[0]);
							var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
							(o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
							var _html=o.status==2?'预':(future==-1?'逾':'');
							_html=future==1?'今':_html;
							if(_html=='预') future=3;
							o.html=_html
							o.date=_time[0];
							o.time=_time[1];
							o.future=future;
							return o;
						})||[];
					}
				})
			},
			changeSearch: function(status) {
				var i = status == 1 ? -400 : 0;
				var timer1 = setInterval(function() {
					i += (5 * status)
					$(".search-left").css("right", i + "px")
					if(status == 1 && i >= 0) {
						clearInterval(timer1)
					}
					if(status == -1 && i <= -400) {
						clearInterval(timer1)
					}
				}, 5)
			},
			//邀请视频聊天
			openVideoChat: function(otherDoc){
				var vm = this;
				var loading = layer.load(0);

				var participants = []
				var participantsMobile = {}
				var docInfo = JSON.parse(localStorage.docInfo);

				//发起人
				participants.push({mobile: docInfo.mobile, name: docInfo.name, sex: docInfo.sex==1? 1 : 2, birthdate: "", level: 3, hospital_name: docInfo.hospitalName, idcard: ""});
				participantsMobile[docInfo.mobile] = 1;
				
				if(otherDoc){
					//被邀请人
					participants.push({
						mobile: otherDoc.doctorMobile, 
						name: otherDoc.doctorName, 
						sex: otherDoc.doctorSex==1? 1 : 2,
						birthdate: "", 
						level: 3, 
						hospital_name: otherDoc.doctorHospitalName, 
						idcard: otherDoc.doctorIdcard})
					participantsMobile[otherDoc.doctorMobile] = 0;
				}
				
				videoChatAPI.addDoctor({participants : JSON.stringify(participants)}).then(function(res){
				 	if(res.status == 200){
			            videoChatAPI.sessions({
			            	sessionId: httpRequest.uuid(24, 16),
			            	sessionType: 4,
			            	sessionName: vm.planInfo.patientName +"的远程门诊",
			            	participants: JSON.stringify(participantsMobile),
			            	videoconferencing: 1,
			            	idcard: vm.planInfo.idcard
			            }).then(function(res1){
			            	layer.close(loading)
			            	if(res1.status == 200){
			            		layer.msg("发起会话成功",{icon:6});
			            	} else{
			            		layer.msg("发起会话失败",{icon:5});
			            	}
			            }).catch(function(){
							layer.close(loading)
							layer.msg("系统繁忙",{icon:5});
						})
			        }else{
			        	layer.close(loading)
			        	layer.msg(res.msg,{icon:5});
			        }
				}).catch(function(){
					layer.close(loading)
					layer.msg("系统繁忙",{icon:5});
				})

			}
		
		},
		watch:{
			tabStatus:function(){
				this.goToLoadData();
			}
		}
	})
}();

+ 34 - 0
component/followup/follow-bottom.js

@ -0,0 +1,34 @@
Vue.component('follow-bottom', {
	template: '<div class="plr30 ptb10">\
		<p class="c-f16 c-37a6ed">签到信息</p>\
		<div class="plr30">\
			<div class="ui-grid mt10">\
				<div class="ui-col-1">签到方式:&emsp;定位签到</div>\
				<div class="ui-col-1">签到时间:&emsp;2019-01-01 10:10:10</div>\
			</div>\
			<div class="mt10">签到位置:&emsp;福建省厦门市思明区软件园望海路</div>\
			<div class="ui-grid mt10">\
				<div class="ui-col-0">签到拍照:&emsp;</div>\
				<div class="ui-col-0"><img width="40" height="40"></div>\
			</div>\
		</div>\
	</div>',
	data: function() {
		return {
			followUpList:[],
			curPage:1
		}
	},
	props:[],
	methods: {
		method: function() {
		}
	},
	watch:{
		followUpData:function(val){
			this.followUpList=this.followUpData;
		}
	},
	mounted: function() {
	}
})

二进制
images/shiping_icon_pre.png