Browse Source

预约挂号页面接口对接修改

raolu 7 years ago
parent
commit
a4936a7d96

+ 12 - 1
api/patient/appointment-api.js

@ -59,7 +59,18 @@
        queryRegOrderInfos: function(data){
            return httpRequest.fzPost("TradeMgmt/Open/queryRegOrderInfos", data);
        },
        //
        //新增挂号单
        createRegistration: function(data){
            return httpRequest.post("basic/api/v1.0/appointment/registration/save", {data: data})
        },
        //修改挂号单信息
        updateRegistrationOrder: function(data){
            return httpRequest.post("basic/api/v1.0/appointment/registration/update", {data: data});
        },
        //修改挂号单状态
        updateOrderState: function(data){
            return httpRequest.post("basic/api/v1.0/appointment/registration/updateState", {data: data});
        }
    } 
    exports.appointmentAPI = appointmentAPI;

+ 90 - 62
component/appointment/date-source.js

@ -4,25 +4,25 @@
                    <p class="c-f18">就诊日期</p>\
                    <div class="div-table">\
                        <div class="table-row">\
                            <div class="table-cell arrow-cell"><i class="fa fa-caret-left c-f20 c-909090"></i></div>\
                            <div class="table-cell arrow-cell" :class="{\'active\': page!=1}" @click="prePage"><i class="fa fa-caret-left c-f20 c-909090"></i></div>\
                            <div v-for="d in planDate" class="table-cell">{{d.date}} {{d.day}}</div>\
                            <div class="table-cell arrow-cell active"><i class="fa fa-caret-right c-f20 c-909090"></i></div>\
                            <div class="table-cell arrow-cell" :class="{\'active\': page!=totalPage}" @click="nextPage"><i class="fa fa-caret-right c-f20 c-909090"></i></div>\
                        </div>\
                        <div class="table-row">\
                            <div class="table-cell c-f16 bgc-ebf4f3">上午</div>\
                            <div class="table-cell arrow-cell c-f16 bgc-ebf4f3">上午</div>\
                            <div class="table-cell" v-for="(item, index) in amData" :class="{\'active\': item.arrangeID == arrangeid && arrangeid!=undefined}" @click="getNumbers(item.arrangeID)">\
                                <span :class="getColor(item.arrangeStatus, item.numberStatus)">{{getStatusName(item.arrangeStatus, item.numberStatus)}}</span><br/>\
                                <span class="yy-tag" :class="{\'active\': item.arrangeStatus==1 && item.numberStatus==1}">预约</span>\
                            </div>\
                            <div class="table-cell"></div>\
                            <div class="table-cell arrow-cell"></div>\
                        </div>\
                        <div class="table-row">\
                            <div class="table-cell c-f16 bgc-ebf4f3">下午</div>\
                            <div class="table-cell arrow-cell c-f16 bgc-ebf4f3">下午</div>\
                            <div class="table-cell" v-for="(item, index) in pmData" :class="{\'active\': item.arrangeID == arrangeid && arrangeid!=undefined}" @click="getNumbers(item.arrangeID)">\
                                <span :class="getColor(item.arrangeStatus, item.numberStatus)">{{getStatusName(item.arrangeStatus, item.numberStatus)}}</span><br/>\
                                <span class="yy-tag" :class="{\'active\': item.arrangeStatus==1 && item.numberStatus==1}">预约</span>\
                            </div>\
                            <div class="table-cell"></div>\
                            <div class="table-cell arrow-cell"></div>\
                        </div>\
                    </div>\
                    <p class="c-f18 mt30">就诊时间</p>\
@ -49,23 +49,12 @@
                modeId: '', //号源池模式:1:实时号源池, 0:非实时号源池
                baseInfo: {}, //记录医生医院等基础信息
                specialPrice: 0, //挂号费(单位:分)
                page: 1 , //日期分页,当有号源的日期数超过了7天,则需要分页展示
                totalPage: 1,
                pageSize: 7
            }
        },
        mounted: function(){
            var now = new Date(),
                d = new Date();
            //默认只有7天的号源
            for(i=1; i<8; i++){
                var nDate = now.getDate();
                d.setDate(nDate + i);
                var obj = {
                    date: d.format("MM/dd"),
                    day: getWeekDay(d.getDay()),
                    fullDate: d.format("yyyy-MM-dd")
                }
                this.planDate.push(obj);
            }
            
            getDoctorInfo(this);
            getNumbers(this.arrangeid, this);
        },
@ -86,6 +75,16 @@
                this.registerNumber = id;
                this.modeId = modeId;
            },
            prePage: function(){
                if(this.page > 1){
                    this.page --;
                }
            },
            nextPage: function(){
                if(this.page < this.totalPage){
                    this.page ++;
                }
            },
            submitForm: function(){
                if(!this.arrangeid){
                    dialog({
@ -151,7 +150,6 @@
    
    //获取医生排班信息
    function getArrangeDate(vm, docInfo){
        console.log(vm);
        var params = {
            hospitalId: docInfo.hospitalId, //'2h+klDvGn+Q=',
            hosDeptId: docInfo.hosDeptId, //'vp0N0lqGZgA=',
@ -164,46 +162,42 @@
            if(res.successFlg){
                if(res.obj.Code == "10000"){
                    var list = res.obj.Result;
                    //获取每天上午和下午的数据
                    for(i=0; i<7; i++){
                        var d = vm.planDate[i].fullDate;
                        var objArr = _.where(list, {registerDate: d});
                        if(objArr.length > 0){
                            if(objArr.length == 1){
                                var obj = objArr[0];
                    //先groupby结果,判断有几天号源
                    var dateGroup = _.groupBy(list, 'registerDate');
                    console.log(dateGroup);
                    for(key in dateGroup){
                        var d = new Date(key);
                        vm.planDate.push({
                            date: d.format("MM/dd"),
                            day: getWeekDay(d.getDay())
                        }); //日期记录
                        
                        var objArr = dateGroup[key];
                        if(objArr.length == 1){
                            var obj = objArr[0];
                            if(obj.timeId == 1){ //1 上午 2下午 3 晚上
                                vm.amData.push(obj);
                                vm.pmData.push({
                                    arrangeID: '', //没有排号
                                    arrangeStatus: 0,
                                });
                            }else{
                                vm.pmData.push(obj);
                                vm.amData.push({
                                    arrangeID: '', //没有排号
                                    arrangeStatus: 0,
                                });
                            }
                        }else if(objArr.length == 2){
                            for(j=0; j<objArr.length; j++){
                                var obj = objArr[j];
                                if(obj.timeId == 1){ //1 上午 2下午 3 晚上
                                    vm.amData.push(obj);
                                    vm.pmData.push({
                                        arrangeID: '', //没有排号
                                        arrangeStatus: 0,
                                    });
                                }else{
                                    vm.pmData.push(obj);
                                    vm.amData.push({
                                        arrangeID: '', //没有排号
                                        arrangeStatus: 0,
                                    });
                                }
                            }else if(objArr.length == 2){
                                for(j=0; j<objArr.length; j++){
                                    var obj = objArr[j];
                                    if(obj.timeId == 1){ //1 上午 2下午 3 晚上
                                        vm.amData.push(obj);
                                    }
                                    if(obj.timeId == 2 || obj.timeId == 3){
                                        vm.pmData.push(obj);
                                    }
                                if(obj.timeId == 2 || obj.timeId == 3){
                                    vm.pmData.push(obj);
                                }
                            }
                        }else{
                            vm.amData.push({
                                arrangeID: '', //没有排号
                                arrangeStatus: 0, //自定义状态,0无安排,1-4系统定义:1正常 2停诊 3已取消 4暂停预约
                            })
                            vm.pmData.push({
                                arrangeID: '', //没有排号
                                arrangeStatus: 0, //自定义状态,0无安排,1-4系统定义:1正常 2停诊 3已取消 4暂停预约
                            })
                        }
                    }
                }else{
@ -242,14 +236,48 @@
        }
        dateInfo = arr[0];
        var numberInfo = _.findWhere(vm.numberSource, {numberSN: vm.registerNumber});
        var patientInfo = JSON.parse(window.sessionStorage.getItem("oauthInfo"));
        
        //请求接口提交挂号单(我们自己系统)
        var params = {
            patientName: patientInfo.realName,
            userId: patientInfo.id,
            cardType: 1, //默认身份证
            cardNo: patientInfo.idCardNo,
            phoneNo: patientInfo.telephone,
            hospitalName: vm.baseInfo.hosName,
            hospitalId: vm.baseInfo.hospitalId,
            deptName: vm.baseInfo.deptName,
            deptId: vm.baseInfo.hosDeptId,
            doctorName: vm.baseInfo.doctorName,
            doctorId: vm.baseInfo.doctorSn,
            lczcName: vm.baseInfo.lczcName,
            photoUri: vm.baseInfo.photoUri,
            registerDate: dateInfo.registerDate,
            timeId: dateInfo.timeId,
            commendTime: numberInfo.commendTime || numberInfo.commendScope,
            serialNo: numberInfo.serialNo,
            invalidDate: dateInfo.invalidDate,
            originType: 1, //来源类型,1:PC,2:APP,
            registerType: 1 //挂号方式,1:预约挂号,2:现场挂号 
        };
        
        appointmentAPI.createRegistration({entityJson: JSON.stringify(params)}).then(function(res){
            if(res.successFlg){
                var id = res.obj.id;
                //存储这些数据传递去确认页面
                window.localStorage.setItem("dateInfo", JSON.stringify(dateInfo));
                window.localStorage.setItem("numberInfo", JSON.stringify(numberInfo));
                window.localStorage.setItem("baseInfo", JSON.stringify(vm.baseInfo));
        
                //跳转去确认信息页面
                window.location.href = "confirm-info.html?id="+id;
            }else{
                console.log(res.errorMsg);
            }
        })
        
        //存储这些数据传递去确认页面
        window.localStorage.setItem("dateInfo", JSON.stringify(dateInfo));
        window.localStorage.setItem("numberInfo", JSON.stringify(numberInfo));
        window.localStorage.setItem("baseInfo", JSON.stringify(vm.baseInfo));
        
        //跳转去确认信息页面
        window.location.href = "confirm-info.html";
    }
    
    function getWeekDay(val){

+ 1 - 1
page/appointment/html/select-time.html

@ -20,7 +20,7 @@
    <body>
        <div id="main">
            <page-header></page-header>
            <div class="container mt20">
            <div class="container mt20" v-cloak>
                <div class="ui-grid">
                    <div class="ui-col-0 mr15">
                        <appointment-step></appointment-step>

+ 45 - 6
page/appointment/js/confirm-info.js

@ -1,3 +1,5 @@
var request = GetRequest(),
    id = request.id;
new Vue({
    el: "#main",
    data: {
@ -52,21 +54,58 @@ new Vue({
                doctorName: baseInfo.doctorName,
                numberSn: numberInfo.numberSN,
                numberPrice: dateInfo.specialPrice,
                thirdPartyOrderId: "",
                thirdPartyOrderId: id,
                registerDate: dateInfo.registerDate,
                timeId: dateInfo.timeId,
                commendTime: numberInfo.commendTime,
                serialNo: numberInfo.serialNo
            }
            appointmentAPI.createRegOrderForOpen(params).then(function(res){
                
                if(res.successFlg){
                    if(res.obj.Code == "10000"){
                        var orderId = res.obj.orderId;
                        //更新我们自己系统的挂号单信息
                        var params2 = {
                            id: res.obj.thirdPartyOrderId,
                            userId: userInfo.id
                        };
                        appointmentAPI.updateRegistrationOrder(params2).then(function(res){
                            console.log(res);
                            if(res.successFlg){
                                window.localStorage.removeItem("dateInfo");
                                window.localStorage.removeItem("numberInfo");
                                window.localStorage.removeItem("baseInfo");
                                
                                window.location.href = "success-info.html?orderId="+orderId+"&hospitalId="+baseInfo.hospitalId+"&deptId="+baseInfo.hosDeptId;
                            }else{
                                console.log(res.errorMsg);
                            }
                        })
                    }else{
                        console.log(res.obj.Message);
                    }
                }else{
                    console.log(res.errorMsg);
                }
            });
        },
        cancel: function(){
            window.localStorage.removeItem("dateInfo");
            window.localStorage.removeItem("numberInfo");
            window.localStorage.removeItem("baseInfo");
            document.history.back();
            var params = {
                id: id,
                state: 99 //订单状态: 1-待付款,2-待就诊,11-预约中,22-退款中,99-已退号,-1-系统取消,3-已就诊
            };
            appointmentAPI.updateOrderState(params).then(function(res){
                if(res.successFlg){
                    window.localStorage.removeItem("dateInfo");
                    window.localStorage.removeItem("numberInfo");
                    window.localStorage.removeItem("baseInfo");
            
                    document.history.back();
                }else{
                    console.log(res.errorMsg);
                }
            })
            
        }
    }
})