Browse Source

凭证查看页面、签约详细页面、新旧签处理

linehang 6 years ago
parent
commit
57ee702646

+ 24 - 0
api/sign_api.js

@ -55,6 +55,30 @@
		// 签约消息处理
		sign: function(data) {
			return httpRequest.post("doctor/family_contract/sign", {data: data})
		},
		// 个人签约记录
		patientSign: function(data) {
			return httpRequest.post("doctor/patient_group/patient", {data: data})
		},
		// 居民所在的团队
		patientTeam: function(data) {
			return httpRequest.get("doctor/admin-teams/team/members/" + data.code, {data: data})
		},
		// 修改居民签约信息
		saveChange: function(data) {
			return httpRequest.post("doctor/family_contract/sign_info_update", {data: data})
		},
		// 按类型获取居民签约上传的凭证doctor/sign/findPatientCertificateByType
		findPatientCertificateByType: function(data) {
			return httpRequest.get("doctor/sign/findPatientCertificateByType", {data: data})
		},
		// 获取签约居民的所以凭证doctor/sign/findPatientCertificate
		findPatientCertificate: function(data) {
			return httpRequest.get("doctor/sign/findPatientCertificate", {data: data})
		},
		// 获取当前签约的服务类型doctor/sign/findPatientSignServerBySignCode
		findPatientSignServerBySignCode: function(data) {
			return httpRequest.get("doctor/sign/findPatientSignServerBySignCode", {data: data})
		}
	}
    exports.signAPI = signAPI;

+ 5 - 0
app/sign/css/sign_handle.css

@ -1,5 +1,6 @@
.w40 {width: 40px;}
.h40 {height: 40px;}
.lh0 {line-height: 0;}
.lh40 {line-height: 40px;}
.lh80 {line-height: 81px;}
.b-r-50 {border-radius: 50%;}
@ -8,8 +9,11 @@ ul {list-style: none;}
.w-30-1 {width: calc(30% - 1px);}
.w-40 {width: 40%;}
.w-40-1 {width: calc(40% - 1px);}
.w-40-2 {width: calc(40% - 2px);}
.w-50 {width: 50%;}
.w-50-1 {width: calc(50% - 1px);}
.w-60-1 {width: calc(60% - 1px);}
.w-60 {width: 60%;}
.h60 {height: 60px;}
.btn-red, .btn-red:hover, .btn-red:focus {background-color: red; color: #fff;}
.w-100 {width: 100%;}
@ -26,3 +30,4 @@ ul {list-style: none;}
	outline: none;
	resize:none;
}
.cur-pit {cursor: pointer;}

+ 69 - 0
app/sign/html/photo_show.html

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>照片查看</title>
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<style>
			.img_list { position: fixed; bottom: 0; wdith: 100%; height: 40px;}
			.img_list img {opacity: 0.4;}
			.img_list img.active, .img_list img:hover {opacity: 1;}
			.w-20 {width: 20%;}
			.h100 {height: 100px;}
			.w-100 {width: 100%;}
			.h-100 {height: 100%;}
			.h-100-100 {height: calc(100% - 100px); }
			.left-arrow, .right-arrow {
				top: 50%;
				width: 34px;
				height: 50px;
				background: url(../../../images/left02_btn.png) no-repeat no-repeat center center;
				z-index: 99;
			}
			.left-arrow {
				left: 10px;
			}
			.right-arrow {
				right: 10px;
				background: url(../../../images/right02_btn.png) no-repeat no-repeat center center;
			}
			.left-arrow:hover {
				background: url(../../../images/left02_pre.png) no-repeat no-repeat center center;
			}
			.right-arrow:hover {
				background: url(../../../images/right02_pre.png) no-repeat no-repeat center center;
			}
			.bgc-999 {background-color: #999999;}
			.lh80 {line-height: 80px;}
		</style>
	</head>
	<body>
		<div id="app" class="h-100 bgc-999">
			<div v-if="photoList.length > 0" class="h-100">
				<div class="h-100-100 c-t-center c-position-r">
					<span v-if="curryIndex != 0" class="c-position-a left-arrow" @click="changeCurryIndex(curryIndex - 1)"></span>
					<img class="h-100" :src="setImg(photoList[curryIndex].certificatePath)" alt="图片">
					<span v-if="curryIndex != (photoList.length - 1)" class="c-position-a right-arrow" @click="changeCurryIndex(curryIndex + 1)"></span>
				</div>
				<div class="h100 c-t-center m0 p0 img_list clearfix">
				    <img class="w-20 h100" :class="curryIndex == index ? 'active' : ''" v-for="(img, index) in photoList" :key="index" :src="setImg(img.certificatePath)" alt="图片" @click="changeCurryIndex(index)">
				</div>
			</div>
			<div v-if="!photoList || photoList.length == 0" class="h-100">
				<h2 class="ptb30 c-t-center lh80 c-f18">该居民没有上传凭证</h2>
			</div>
		</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/jquery-2.2.4.js"></script>
        <script src="../../../plugins/layer/layer.min.js"></script>
        <script src="../../../js/bootstrap.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/util.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript"></script>
		<script src="../../../api/sign_api.js" type="text/javascript"></script>
		<script src="../js/photo_show.js" type="text/javascript"></script>
	</body>
</html>

+ 155 - 0
app/sign/html/sign_detail.html

@ -0,0 +1,155 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>签约申请详情</title>
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" href="../css/sign_manage.css" />
		<link rel="stylesheet" href="../css/sign_handle.css" />
		<style>
			.btn-ddd, .btn-ddd:hover, .btn-ddd.active {
				background-color: #ddd;
				color: #ffffff;
			}
			.btn-12b7f5, .btn-12b7f5:hover, .btn-12b7f5.active {
				background-color: #12b7f5;
				color: #ffffff;
			}
		</style>
	</head>
	<body>
		<div id="app" class="p20 mb10">
			<dl class="clearfix">
				<dt class="fl">
					<img class="fl w40 h40 b-r-50" :src="setPatImg(patientInfo.photo)" alt="居民头像" />
				</dt>
				<dd class="fl ml10 c-999">
					<p class="m0"><span class="c-333 c-f16">{{patientInfo.name}}</span><span class="ml10 c-f14">({{patientInfo.sex == 1 ? "男" : "女"}}&emsp;{{patientInfo.age && patientInfo.age > 0 ? patientInfo.age : "未知"}}岁{{handleExpensesStatus(patientInfo.expensesStatus)}})</span></p>
					<p class="c-f12 m0">
						<img class="mr5" v-if="!patientInfo.openid" height="18" src="../../../images/weixing_zihui_icon.png" alt="" />
						<img class="mr5" v-if="patientInfo.openid" height="18" src="../../../images/weixing_icon.png" alt="" />
						<img class="mr5" v-if="!patientInfo.deviceType || patientInfo.deviceType.indexOf('2') == -1" height="18" src="../../../images/icon_xueyaji_zhihui.png" alt="" />
						<img class="mr5" v-if="patientInfo.deviceType && patientInfo.deviceType.indexOf('2') > -1" height="18" src="../../../images/icon_xueyaji.png" alt="" />
						<img class="mr5" v-if="!patientInfo.deviceType || patientInfo.deviceType.indexOf('1') == -1" height="18" src="../../../images/icon_xuetangyi_zhihui.png" alt="" />
						<img class="mr5" v-if="patientInfo.deviceType && patientInfo.deviceType.indexOf('1') > -1" height="18" src="../../../images/icon_xuetangyi.png" alt="" />
					</p>
				</dd>
				<dd class="fr">
					<span class="c-fff btn" :class="isSaveBtn1 || isSaveBtn2 ? 'btn-12b7f5' : 'btn-ddd'" @click="saveChange()">保存改动</span>
				</dd>
			</dl>
			<h3>签约信息</h3>
			<ul class="m0 p0 mb20 lh40 c-border-t c-border-r c-border-l c-t-left c-333">
				<li class="c-border-b clearfix">
					<div class="fl w-50-1">
						<div class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">签约类型</span>
							<span class="fl w-60-1 c-border-r pl20">家庭医生</span>
						</div>
						<p class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">签约团队</span>
							<span class="fl w-60-1 c-border-r pl20">{{doctorTeam.teamName}}</span>
						</p>
						<div class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">全科医生</span>
							<span class="fl w-60-1 c-border-r pl20">{{doctorTeam.doctorName}}</span>
						</div>
						<div class="m0 clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">健康管理师</span>
							<div class="c-position-r fl w-60-1 c-border-r">
								<p class="pl20 w-100 cur-pit set-bg" @click="selectStatus(2)">{{doctorTeam.healthDoctorName}}</p>
								<ul class="pull-list m0 p0 c-border-l c-border-r c-border-b" v-if="isShowList2">
			                        <li class="cur-pit c-999" v-for="(dict, index) in memberList" :key="index" @click="selectLi(2, dict)">{{dict.name}}</li>
			                    </ul>
							</div>
						</div>
					</div>
					<div class="fl w-50-1">
						<div class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">缴费时间</span>
							<span class="fl w-60-1 pl20">{{patientInfo.jtSign.expensesTime}}</span>
						</div>
						<p class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">签约有效期</span>
							<span class="fl w-60-1 pl20">{{patientInfo.jtSign.beginDate}}~{{patientInfo.jtSign.endDate}}</span>
						</p>
						<div class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">政府补贴费</span>
							<div class="c-position-r fl w-60-1">
								<p class="pl20 w-100 cur-pit set-bg" @click="selectStatus(3)">{{showExpensesName(patientInfo.jtSign.expensesType)}}</p>
								<ul class="pull-list m0 p0 c-border-l c-border-r c-border-b" v-if="isShowList3">
			                        <li class="cur-pit c-999" v-for="(dict, index) in dictList" :key="index" @click="selectLi(3, dict)">{{dict.value}}</li>
			                    </ul>
							</div>
						</div>
						<p class="m0 clearfix">
							<!--<span class="fl w-40 c-border-r pl20 c-999">签约有效期</span>
							<span class="fl w-60-1 pl20">2</span>-->
						</p>
					</div>
				</li>
			</ul>
			<h3>居民信息</h3>
			<ul class="m0 p0 mb20 lh40 c-border-t c-border-r c-border-l c-t-left c-333">
				<li class="c-border-b clearfix">
					<span class="fl w-20-1 c-border-r pl20 c-999">身份证号</span>
					<span class="fl w-30-1 c-border-r pl20">{{patientInfo.idCard}}</span>
					<span class="fl w-20-1 c-border-r pl20 c-999">所属居委会</span>
					<span class="fl w-30-1 pl20">{{patientInfo.sickVillageName}}</span>
				</li>
				<li class="c-border-b clearfix">
					<span class="fl w-20-1 c-border-r pl20 c-999">医保卡号</span>
					<span class="fl w-30-1 c-border-r pl20">{{patientInfo.ssc || patientInfo.jtSign.ssc || ""}}</span>
					<span class="fl w-20-1 c-border-r pl20 c-999">服务类型</span>
					<span class="fl w-30-1 pl20">{{patientInfo.jtSign.serverTypeName}}</span>
				</li>
				<li class="c-border-b clearfix">
					<div class="fl w-50-1">
						<p class="m0 c-border-b clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">医疗保险号</span>
							<span class="fl w-60-1 c-border-r pl20">{{patientInfo.medicareNumber || "暂无"}}</span>
						</p>
						<p class="m0 clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">手机号</span>
							<span class="fl w-60-1 c-border-r pl20">{{patientInfo.jtSign.mobile}}</span>
						</p>
					</div>
					<div class="fl lh80 w-50">
						<span class="fl w-40-2 c-border-r pl20 c-999">已上传凭证</span>
						<div class="fl w-60 ptb10 pl20">
							<div class="fl mtb5 cur-pit lh0 c-t-center c-12b7f5" v-for="(lis, index) in fileList" :key="index" @click="lookPhoto(lis)">
								<p class="m0 lh24">{{lis.serverTypeName}}</p>
								<span class="lh24" style="text-decoration: underline;">查看</span>
							</div>
						</div>
					</div>
				</li>
				<li class="c-border-b clearfix">
					<span class="fl w-20-1 c-border-r pl20 c-999">详细地址</span>
					<span class="fl w-80-1 pl20">{{patientInfo.address || ""}}</span>
				</li>
			</ul>
			<h3>签约协议</h3>
			<div class="c-f14 c-border-t pt10">
				<h4 style="text-indent: 2em">家庭医生签约协议</h4>
				<p class="pb10" style="text-indent: 2em">乙方自愿邀请甲方为其家庭健康服务医生。为提高本社区居民健康管理水平,推行社区卫生服务契约化,甲乙双方本着平等、尊重和自愿的原则,签订此协议,接受以下条款的约定:</p>
				<p class="pb10"><b>一、</b>甲方作为服务的提供者,主要提供基本医疗、基本公共卫生服务和<a href="javascript:;" class="c-12b7f5" @click="showProject()">个性化服务项目</a>。</p>
				<p class="pb10"><b>二、</b>乙方自愿接受服务项目,将自己的身体健康状况及变化情况及时告知甲方,积极配合甲方的服务。</p>
				<p class="pb10"><b>三、</b>甲方提供上述约定的免费服务项目不得另行收取其他费用。提供非约定的医疗卫生服务或向非签约居民提供医疗卫生服务,按规定收取费用。协议双方可通过协商,增加、细化个性化服务项目,如涉及收费项目,则按照有关文件标准执行。</p>
				<p class="pb10">本协议书一式两份,甲方、乙方各执一份,自双方签字之日起生效,有效期为1年。有效期内,乙方如因居住地变更等特殊原因需解除协议的,可由乙方提出书面申请,经双方签字确认解约。有效期满后,乙方可选择续约或解约。</p>
			</div>
		</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/jquery-2.2.4.js"></script>
        <script src="../../../plugins/layer/layer.min.js"></script>
        <script src="../../../js/bootstrap.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/util.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript"></script>
		<script src="../../../api/sign_api.js" type="text/javascript"></script>
		<script src="../js/sign_detail.js" type="text/javascript"></script>
	</body>
</html>

+ 6 - 3
app/sign/html/sign_handle.html

@ -13,7 +13,7 @@
		<div id="app" class="p20 mb10">
			<dl class="clearfix">
				<dt class="fl">
					<img class="fl w40 h40 b-r-50" :src="patientInfo.photo" alt="居民头像" />
					<img class="fl w40 h40 b-r-50" :src="setPatImg(patientInfo.photo)" alt="居民头像" />
				</dt>
				<dd class="fl ml10 c-999">
					<p class="m0"><span class="c-333 c-f16">{{patientInfo.name}}</span><span class="ml10 c-f14">({{patientInfo.sex == 1 ? "男" : "女"}}&emsp;{{patientInfo.age && patientInfo.age > 0 ? patientInfo.age : "未知"}}岁)</span></p>
@ -92,8 +92,11 @@
						</div>
						<div class="lh80 clearfix">
							<span class="fl w-40 c-border-r pl20 c-999">已上传凭证</span>
							<div class="fl w-60-1 ptb10 pl20">
								<img class="fl h60" src="../../../images/d-default.png" alt="凭证" />
							<div class="fl w-60 ptb10 pl20">
								<div class="fl mtb5 cur-pit lh0 c-t-center c-12b7f5" v-for="(lis, index) in fileList" :key="index" @click="lookPhoto(lis)">
									<p class="m0 lh24">{{lis.serverTypeName}}</p>
									<span class="lh24" style="text-decoration: underline;">查看</span>
								</div>
							</div>
						</div>
					</div>

+ 19 - 3
app/sign/html/sign_manage.html

@ -227,19 +227,35 @@
			        	var status = list.renewFlag == 1 || list.renewFlag == 2 ? 1 : 0;
			        	layer.open({
							type: 2,
							//				  offset: ['100px'], //右下角弹出
							area: ['80%', '648px'],
							shade: 0.5,
							title: '签约申请处理',
							fixed: true, //不固定
							maxmin: false,
							maxmin: true,
							closeBtn: 1,
							shift: 5,
							shadeClose: false, //点击遮罩关闭层
							content: "sign_handle.html?patientCode="+list.patientCode+'&signCode='+list.code + '&msgId=' + list.id + '&status=' + status
						});
			        },
			        looking: function(list) {},
			        looking: function(list) {
			        	if(this.statusCode == 3) {
			        		layer.open({
								type: 2,
								area: ['80%', '648px'],
								shade: 0.5,
								title: '签约申请详情',
								fixed: true, //不固定
								maxmin: true,
								closeBtn: 1,
								shift: 5,
								shadeClose: false, //点击遮罩关闭层
								content: "sign_detail.html?patientCode="+list.patientCode+'&signCode='+list.code + '&msgId=' + list.id
							});
			        	} else {
			        		// 居民信息页 
			        	}
			        },
			        remainMoney: function(status, list) {
			        	var vm = this,
			        		loading = layer.load(0, {shade: false})

+ 62 - 0
app/sign/js/photo_show.js

@ -0,0 +1,62 @@
var httpData=GetRequest(),
	doctorInfo = JSON.parse(window.localStorage.getItem('wlyyAgent'));
function showSuccessMessage(msg) {
	layer.msg(msg, {
		icon: 1
	})
}
function showErrorMessage(msg) {
	layer.msg(msg, {
		icon: 5
	})
}
function showWarningMessage(msg) {
	layer.msg(msg, {
		icon: 2
	})
}
function showInfoMessage(msg) {
	layer.msg(msg, {
		icon: 6
	})
}
new Vue({
    el: "#app",
    data: {
    	photoList: null,
    	curryIndex: 0
    },
    mounted: function() {
    	this.findPatientCertificateByType();
    },
    methods: {
    	findPatientCertificateByType: function() {
    		var vm = this,
    			loadding = layer.load(0, {shade: false}),
    			params = {
    				patient: httpData.patientCode,
    				type: httpData.serverType
    			}
			signAPI.findPatientCertificateByType(params).then(function(res) {
				layer.close(loadding)
				if(res.status == 200) {
					vm.photoList = res.data
				} else {
					showErrorMessage(res.msg);
				}
			})
    	},
    	changeCurryIndex: function(index) {
    		this.curryIndex = index
    	},
    	setImg: function(str) {
        	return httpRequest.getImgUrl(str);
        },
    }
})

File diff suppressed because it is too large
+ 297 - 0
app/sign/js/sign_detail.js


+ 41 - 0
app/sign/js/sign_handle.js

@ -51,6 +51,7 @@ new Vue({
    	teamList: null,
    	memberList: null,
    	dictList: null,
    	fileList: null,
    	signInfo: {
            signType: 1,
            majorDoctor: null,
@ -83,6 +84,7 @@ new Vue({
    	}
    	this.getDictByDictName();
    	this.teamLimit();
    	this.findPatientSignServerBySignCode();
    },
    methods: {
    	signing: function() {
@ -150,6 +152,26 @@ new Vue({
				}
			})
    	},
    	findPatientSignServerBySignCode: function() {
    		var vm =this,
    			loadding = layer.load(0, {shade: false}),
    			params = {
					signCode: httpData.signCode
    			};
			signAPI.findPatientSignServerBySignCode(params).then(function(res) {
				layer.close(loadding)
				if(res.status == 200) {
					vm.fileList = []
					$.each(res.data, function(i, v) {
		                if(v.serverType == 8 || v.serverType == 9 || v.serverType == 11) {
		                    vm.fileList.push(v);
		                }
		            });
				} else {
					showErrorMessage(res.msg);
				}
			})
		},
    	teamMember: function() {
    		var vm = this,
    			loadding = layer.load(0, {shade: false}),
@ -230,6 +252,25 @@ new Vue({
        	}
        	return expensesName
        },
        setPatImg: function(str) {
        	var imgStr = httpRequest.getImgUrl(str);
        	if (imgStr == "") {
        		return '../../../images/p-female.png';
        	} else {
        		return imgStr;
        	}
        },
        lookPhoto: function(data) {
        	layer.open({
        		type: 2,
        		area: ['100%', '100%'],
        		title: "凭证预览",
        		shade: 0.5,
        		shadeClose: true,
        		shift: 2,
        		content: '../html/photo_show.html?serverType=' + data.serverType + '&patientCode=' + httpData.patientCode
        	})
        },
        refuse: function() {
        	var vm = this;
        	layer.open({

BIN
images/icon_xuetangyi.png


BIN
images/icon_xuetangyi_zhihui.png


BIN
images/icon_xueyaji.png


BIN
images/icon_xueyaji_zhihui.png


BIN
images/left02_btn.png


BIN
images/left02_pre.png


BIN
images/right02_btn.png


BIN
images/right02_pre.png


BIN
images/weixing_icon.png


BIN
images/weixing_zihui_icon.png