Browse Source

防止挂号重复提交

hurugang 5 years ago
parent
commit
d0b5cf5516

+ 14 - 0
src/main/java/cn/hnthyy/thmz/controller/NavigationController.java

@@ -321,4 +321,18 @@ public class NavigationController {
         }
         return "request-config";
     }
+
+    /**
+     * 医技预约科室设置页面页面
+     * @return
+     */
+    @RequestMapping("/schedule-of-medical")
+    public String scheduleOfMedical(HttpServletRequest httpServletRequest) throws Exception {
+        List<String> urls = getUrls(httpServletRequest);
+        if(!urls.contains("/thmz/schedule-of-medical")){
+            throw new Exception("您没有此模块的权限,请联系管理员开通!");
+        }
+        return "schedule-of-medical";
+    }
+
 }

+ 10 - 0
src/main/java/cn/hnthyy/thmz/entity/his/MzyReqrec.java

@@ -1,5 +1,6 @@
 package cn.hnthyy.thmz.entity.his;
 
+import cn.hnthyy.thmz.Utils.DateUtil;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -84,4 +85,13 @@ public class MzyReqrec {
     private Integer printDcountNo;
     //发票结帐日期
     private Date printClosingDate;
+    //挂号日期字符串格式  yyyy-MM-dd 格式
+    private String requestDayStr;
+
+    public void setRequestDay(Date requestDay) {
+        this.requestDay = requestDay;
+        if(requestDay!=null){
+            requestDayStr=DateUtil.fomart(requestDay,"yyyy-MM-dd");
+        }
+    }
 }

+ 1 - 1
src/main/java/cn/hnthyy/thmz/mapper/his/MzPatientMiMapper.java

@@ -53,7 +53,7 @@ public interface MzPatientMiMapper {
      * @param mzPatientMi
      * @return
      */
-    @Insert("if  not exists (select  * from mz_patient_mi where ic_card_no=#{icCardNo,jdbcType=CHAR}) " +
+    @Insert("if  not exists (select  patient_id from mz_patient_mi where ic_card_no=#{icCardNo,jdbcType=CHAR}) " +
             "INSERT INTO mz_patient_mi(social_no,name,sex,lv_date,patient_id,response_type,charge_type,times,age,birth_day,ic_card_no,phone_no,adress,rel_name,contract_name,contract_hz) " +
             "VALUES(#{socialNo,jdbcType=CHAR},#{name,jdbcType=CHAR},#{sex,jdbcType=CHAR},#{lvDate,jdbcType=TIMESTAMP},#{patientId,jdbcType=CHAR},#{responseType,jdbcType=CHAR}," +
             "#{chargeType,jdbcType=CHAR},#{times,jdbcType=INTEGER},#{age,jdbcType=TINYINT},#{birthDay,jdbcType=TIMESTAMP},#{icCardNo,jdbcType=CHAR},#{phoneNo,jdbcType=CHAR}," +

+ 2 - 1
src/main/java/cn/hnthyy/thmz/mapper/his/MzyReqrecMapper.java

@@ -15,7 +15,8 @@ import java.util.Map;
  * 门诊挂号记录
  */
 public interface MzyReqrecMapper {
-    @Insert("INSERT INTO mzy_reqrec(patient_id,times,name,req_type,request_day,ampm,unit_code,group_code,doctor_code,charge_type,req_order,req_fee,oth_fee,cancel_mark,admiss_time,op_id," +
+    @Insert("if not exists (select patient_id  from mzy_reqrec where patient_id=#{patientId,jdbcType=CHAR} and ampm = #{ampm,jdbcType=CHAR} and unit_code=#{unitCode,jdbcType=CHAR} and charge_type=#{chargeType,jdbcType=CHAR} and doctor_code=#{doctorCode,jdbcType=CHAR} and CONVERT(varchar(100), request_day, 23)=#{requestDayStr} and cancel_mark=0) " +
+            "INSERT INTO mzy_reqrec(patient_id,times,name,req_type,request_day,ampm,unit_code,group_code,doctor_code,charge_type,req_order,req_fee,oth_fee,cancel_mark,admiss_time,op_id," +
             "op_day,clinic_fee,visited_mark,plus_mark,closing_date,printer_id,print_flag,windows_no,serial_no,receipt_bill,dcount_no,brochure_fee,dept_no,visit_dept,visit_doctor,visit_date,paymode,psordnum,agtordnum,bl_fee,ck_fee,print_closing_date,print_dcount_no)" +
             " VALUES (#{patientId,jdbcType=CHAR},#{times,jdbcType=INTEGER},#{name,jdbcType=CHAR},#{reqType,jdbcType=CHAR},#{requestDay,jdbcType=TIMESTAMP},#{ampm,jdbcType=CHAR}," +
             "#{unitCode,jdbcType=CHAR},#{groupCode,jdbcType=CHAR},#{doctorCode,jdbcType=CHAR},#{chargeType,jdbcType=CHAR},#{reqOrder,jdbcType=INTEGER},#{reqFee,jdbcType=DOUBLE}," +

+ 4 - 1
src/main/java/cn/hnthyy/thmz/service/impl/his/MzyReqrecServiceImpl.java

@@ -116,7 +116,10 @@ public class MzyReqrecServiceImpl implements MzyReqrecService {
         MzVisitTable newMzVisitTable = getMzVisitTable(mzyReqrecPageDto, mzyReqrec, mzPatientMi, windows, times, serialNo, now);
         mzVisitTableMapper.insertMzVisitTable(newMzVisitTable);
         fomartReqrec(mzyReqrec, mzPatientMi, windows, mzyZdChargeType, times, serialNo, now, mzyRequest);
-        mzyReqrecMapper.insertMzyReqrec(mzyReqrec);
+        int num=mzyReqrecMapper.insertMzyReqrec(mzyReqrec);
+        if(num<=0){
+            throw new MzException("当前病人已经挂号成功,请不要重复挂号!");
+        }
         MzfzPatientOrder mzfzPatientOrder = getMzfzPatientOrder(mzyReqrec, mzPatientMi, times, serialNo, now);
         mzfzPatientOrderMapper.insertMzfzPatientOrder(mzfzPatientOrder);
         MzPatientMi updateMzPatientMi= new MzPatientMi();

+ 4 - 0
src/main/resources/otherSource/t_mzmxsr.sql

@@ -41,3 +41,7 @@ CREATE TABLE `t_mzmxsr`  (
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
 SET FOREIGN_KEY_CHECKS = 1;
+
+
+
+ALTER TABLE t_mzmxsr ADD INDEX t_mzmxsr_index (dcount_date,charge_date,jz_sq_dept,exec_dept,jz_sq_doctor)

+ 0 - 1
src/main/resources/static/js/mzsrmx.js

@@ -320,7 +320,6 @@ function queryParams(params) {
         amount:amount,
         total:total
     };
-
     return temp;
 };
 

+ 685 - 0
src/main/resources/static/js/schedule-of-medical.js

@@ -0,0 +1,685 @@
+//@ sourceURL=schedule-of-medical.js
+$(function () {
+    daterangepickerWithIdAndCallBack('sourceRange', initSourceList);
+    // initDaterangepickerWithId('sourceRange');
+    // initDaterangepickerWithId('newRange');
+    initSourceList();
+    //  initFeeTable();
+    //重置查询参数
+    $('#btn_clean').click(function () {
+        cleanParams();
+    });
+
+    // $("#btn_query").click(function (t) {
+    //     initSourceList();
+    // });
+
+    $(".selectpicker").selectpicker({
+        dropuAuto: false
+    });
+    $("#btn_creat").click(function (t) {
+        initSourceList();
+        $("#btn_creat").removeClass('in').addClass('hide');
+        $("#btn_cancel").removeClass('hide').addClass('in');
+        $("#tb_table_1").css("display", "block");
+        $("#tb_table_2").css("display", "block");
+    });
+    $("#btn_cancel").click(function (t) {
+        initSourceList();
+        $("#btn_cancel").removeClass('in').addClass('hide');
+        $("#btn_creat").removeClass('hide').addClass('in');
+        $("#tb_table_1").css("display", "none");
+        $("#tb_table_2").css("display", "none");
+    });
+
+    $("#btn_add").click(function (t) {
+        $("#editModal").modal();
+        $("#classTitle").text("新增");
+        clearInput();
+    });
+
+    $("#btn_save").click(function (t) {
+        if (showTwoTable) {
+            //保存临时生成的新号表数据
+            saveRequest();
+        }
+    });
+
+    $("#saveEdit").click(function (t) {
+        if (showTwoTable) {
+            //保存临时生成的新号表数据
+            saveTempRequest();
+        } else {
+            //单独添加一个排班,直接保存
+            saveRequest();
+        }
+    });
+
+
+
+
+    $("#editDay").change(function (e) {
+        var editDay = $("#editDay").val();
+        if (editDay.length == 8 && editDay.indexOf("-") <= 0) {
+            if (editDay.substring(4, 6) > 12) {
+                new PNotify({
+                    title: '错误提示',
+                    text: '号表日期错误,月份不能大于12',
+                    type: 'error',
+                    hide: true,
+                    styling: 'bootstrap3'
+                });
+                $("#editDay").val(null);
+                return;
+            }
+            if (editDay.substring(6) > 31) {
+                new PNotify({
+                    title: '错误提示',
+                    text: '号表日期错误,天数不能大于31',
+                    type: 'error',
+                    hide: true,
+                    styling: 'bootstrap3'
+                });
+                $("#editDay").val(null);
+                return;
+            }
+            editDay = editDay.substring(0, 4) + "-" + editDay.substring(4, 6) + "-" + editDay.substring(6);
+            $("#editDay").val(editDay);
+        }
+        var dateFormat = /^(\d{4})-(\d{2})-(\d{2})$/;
+        if (!dateFormat.test(editDay)) {
+            new PNotify({
+                title: '错误提示',
+                text: '号表日期错误',
+                type: 'error',
+                hide: true,
+                styling: 'bootstrap3'
+            });
+        }
+        var arr = editDay.split("-");
+        if (!checkDate(arr[0], arr[1], arr[2])) {
+            new PNotify({
+                title: '错误提示',
+                text: '表表日期错误',
+                type: 'error',
+                hide: true,
+                styling: 'bootstrap3'
+            });
+        }
+    });
+    initDeptSelect();
+});
+
+/**
+ * 清空输入框
+ */
+function clearInput() {
+    $("#requestId").val(null);
+    $("#editDay").val(null);
+    $('#ampm').selectpicker('val', null);
+    $('#ampm').selectpicker('refresh');
+    $('#deptNo').selectpicker('val', null);
+    $('#deptNo').selectpicker('refresh');
+    $('#doctorParam').selectpicker('val', null);
+    $('#doctorParam').selectpicker('refresh');
+    $('#chargeType').selectpicker('val', null);
+    $('#chargeType').selectpicker('refresh');
+    $("#checkFee").val(null);
+    $("#totalNum").val(null);
+}
+
+
+
+
+
+
+/**
+ * 查询源号表信息
+ */
+function initSourceList() {
+    $('#tb_table').bootstrapTable("destroy");
+    $('#tb_table').bootstrapTable({
+        url: '/thmz/getRequestByTimes',         //请求后台的URL(*)
+        method: 'post',                      //请求方式(*)
+        toolbar: '#toolbar',                //工具按钮用哪个容器
+        striped: true,                      //是否显示行间隔色
+        cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        pagination: true,                   //是否显示分页(*)
+        sortable: true,                     //是否启用排序
+        sortOrder: "asc",                   //排序方式
+        queryParams: queryParams,           //传递参数(*)
+        sidePagination: "client",           //分页方式:client客户端分页,server服务端分页(*)
+        pageNumber: 1,                       //初始化加载第一页,默认第一页
+        pageSize: 15,                       //每页的记录行数(*)
+        pageList: [10, 15, 25, 50, 100],        //可供选择的每页的行数(*)
+        search: false,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
+        strictSearch: true,
+        showColumns: false,                  //是否显示所有的列
+        showRefresh: false,                  //是否显示刷新按钮
+        minimumCountColumns: 2,             //最少允许的列数
+        clickToSelect: true,                //是否启用点击选中行
+        uniqueId: "ID",                     //每一行的唯一标识,一般为主键列
+        showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
+        cardView: false,                    //是否显示详细视图
+        detailView: false,
+        //rowStyle:rowStyle,//通过自定义函数设置行样式
+        ajaxOptions: {
+            headers: {
+                'Accept': 'application/json',
+                'Authorization': 'Bearer ' + localStorage.getItem("token")
+            }
+        },
+        columns: [
+            {
+                title: '操作',
+                field: 'op',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    var str = '<button type="button" class="btn btn-primary  btn-sm" onclick="updateRequest(' + row.id + ')">编辑</button>';
+                    return [str].join('');
+                }
+            },
+            {
+                field: 'depNo',
+                title: '科室编码',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'roomNum',
+                title: '诊室号码',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'recordDate',
+                title: '日期',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    return format(value, "yyyy-MM-dd");
+                }
+            }, {
+                field: 'beginTime',
+                title: '开始时间',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'endTime',
+                title: '结束时间',
+                align: "center",
+                valign: 'middle'
+            }
+        ],
+        onLoadSuccess: function () {
+
+        },
+        responseHandler: function (res) {
+            if (res == '401' || res == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            var ress = eval(res);
+            if (ress.code == -1) {
+                if (ress.message != null && ress.message != '') {
+                    new PNotify({
+                        title: '错误提示',
+                        text: ress.message,
+                        type: 'error',
+                        hide: true,
+                        styling: 'bootstrap3'
+                    });
+                }
+                return {
+                    "total": 0,//总页数
+                    "rows": {}   //数据
+                };
+            }
+            return {
+                "total": ress.data.length,//总页数
+                "rows": ress.data   //数据
+            };
+        },
+    });
+}
+
+
+/**
+ * 构建列表查询参数
+ * @param params
+ * @returns {{mzChargeDetail: {patientId: string | number | string[] | undefined | jQuery, warnDept: string | number | string[] | undefined | jQuery, doctorCode: string | number | string[] | undefined | jQuery, name: string | number | string[] | undefined | jQuery, payMark: number}, beginTime: Date, endTime: Date, pageSize: *, pageIndex: number}}
+ */
+function queryParams(params) {
+    var rePortRangeArr = getSourceRangeArr();
+    var temp = {
+        beginDate: rePortRangeArr[0],
+        endDate: rePortRangeArr[1],
+        unitCode: $("#unitCode").val(),
+        ampm: $("#ampmParams").val()
+    };
+    return temp;
+};
+
+
+
+
+/**
+ * 生成新号表的通用方法
+ * @param url
+ * @param newParams
+ */
+function initNewListCommon(url, newParams) {
+    $('#tb_table_2').bootstrapTable("destroy");
+    $('#tb_table_2').bootstrapTable({
+        url: url,                            //请求后台的URL(*)
+        method: 'post',                      //请求方式(*)
+        toolbar: '#toolbar',                //工具按钮用哪个容器
+        striped: true,                      //是否显示行间隔色
+        cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        pagination: true,                   //是否显示分页(*)
+        sortable: true,                     //是否启用排序
+        sortOrder: "asc",                   //排序方式
+        queryParams: newParams,           //传递参数(*)
+        sidePagination: "client",           //分页方式:client客户端分页,server服务端分页(*)
+        pageNumber: 1,                       //初始化加载第一页,默认第一页
+        pageSize: 15,                       //每页的记录行数(*)
+        pageList: [10, 15, 25, 50, 100],        //可供选择的每页的行数(*)
+        search: false,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
+        strictSearch: true,
+        showColumns: false,                  //是否显示所有的列
+        showRefresh: false,                  //是否显示刷新按钮
+        minimumCountColumns: 2,             //最少允许的列数
+        clickToSelect: true,                //是否启用点击选中行
+        uniqueId: "ID",                     //每一行的唯一标识,一般为主键列
+        showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
+        cardView: false,                    //是否显示详细视图
+        detailView: false,
+        //rowStyle:rowStyle,//通过自定义函数设置行样式
+        ajaxOptions: {
+            headers: {
+                'Accept': 'application/json',
+                'Authorization': 'Bearer ' + localStorage.getItem("token")
+            }
+        },
+        columns: [
+            {
+                title: '操作',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    var str = '<button type="button" class="btn btn-primary  btn-sm" onclick="updateRequestByIndex(' + index + ')">编辑</button>';
+                    return [str].join('');
+                }
+            },
+            {
+                field: 'requestDay',
+                title: '日期',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    return format(value, "yyyy-MM-dd");
+                }
+            }, {
+                field: 'ampm',
+                title: '号段',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    var text = '上午';
+                    if (value == 'p') {
+                        text = '下午';
+                    } else if (value == 'd') {
+                        text = '全天';
+                    }
+                    return text;
+                }
+            }, {
+                field: 'unitName',
+                title: '科室',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'doctorName',
+                title: '医生',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'chargeTypeName',
+                title: '号别',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'checkFee',
+                title: '检查费',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    return value.toFixed(2);
+                }
+            }, {
+                field: 'totalNum',
+                title: '总号数',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'leftNum',
+                title: '剩余号数',
+                align: "center",
+                valign: 'middle'
+            }, {
+                field: 'bespeakNo',
+                title: '当前号数',
+                align: "center",
+                valign: 'middle'
+            }
+        ],
+        responseHandler: function (res) {
+            if (res == '401' || res == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            var ress = eval(res);
+            if (ress.code == -1) {
+                if (ress.message != null && ress.message != '') {
+                    new PNotify({
+                        title: '错误提示',
+                        text: ress.message,
+                        type: 'error',
+                        hide: true,
+                        styling: 'bootstrap3'
+                    });
+                }
+                // return {
+                //     "total": 0,//总页数
+                //     "rows": {}   //数据
+                // };
+            }
+            //临时保存新号表数据
+            tempData = ress.data;
+            return {
+                "total": ress.data.length,//总页数
+                "rows": ress.data   //数据
+            };
+        },
+    });
+}
+
+
+/**
+ * 构建列表查询参数
+ * @param params
+ * @returns {{mzChargeDetail: {patientId: string | number | string[] | undefined | jQuery, warnDept: string | number | string[] | undefined | jQuery, doctorCode: string | number | string[] | undefined | jQuery, name: string | number | string[] | undefined | jQuery, payMark: number}, beginTime: Date, endTime: Date, pageSize: *, pageIndex: number}}
+ */
+function newListQueryParams(params) {
+    var newRangeArr = getNewRangeArr();
+    if (baseList) {
+        var temp = {
+            beginDate: "2012-02-13 00:00:00",
+            endDate: "2012-02-19 23:59:59",
+            newBeginDate: newRangeArr[0],
+            newEndDate: newRangeArr[1],
+        };
+        return temp;
+    }
+    var rePortRangeArr = getSourceRangeArr();
+    var temp = {
+        beginDate: rePortRangeArr[0],
+        endDate: rePortRangeArr[1],
+        newBeginDate: newRangeArr[0],
+        newEndDate: newRangeArr[1],
+    };
+    return temp;
+};
+
+
+/**
+ * 设置病人id
+ */
+function setPatientId() {
+    var patientId_or_cardNo = $("#patientId_or_cardNo").val();
+    $.ajax({
+        type: "GET",
+        url: '/thmz/getByIcCardNo?icCardNo=' + patientId_or_cardNo,
+        contentType: "application/json;charset=UTF-8",
+        dataType: "json",
+        headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+        success: function (res) {
+            if (res == '401' || res == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            if (res.code == 0) {
+                if (res.data != null) {
+                    $("#patientId").val(res.data.patientId);
+                } else {
+                    $("#patientId").val(patientId_or_cardNo);
+                }
+            }
+        }
+    });
+}
+
+
+/**
+ * 获取源号表时间选择器的时间数组
+ * @returns {string[]}
+ */
+function getSourceRangeArr() {
+    var rePortRange = $('#sourceRange span').html();
+    var rePortRangeArr = rePortRange.split(" - ");
+    rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
+    rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
+    return rePortRangeArr;
+}
+
+
+
+
+/**
+ * 清空查询条件
+ */
+function cleanParams() {
+    $('#sourceRange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
+    $('#newRange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
+    $('#ampmParams').selectpicker('val', null);
+    $('#ampmParams').selectpicker('refresh');
+    $('#unitCode').selectpicker('val', null);
+    $('#unitCode').selectpicker('refresh');
+    initSourceList();
+}
+
+
+/**
+ * 保存临时生成的新号表数据
+ */
+function saveTempRequest() {
+    var index = $("#requestId").val();
+    var realParams = JSON.parse('{"mzyRequests":""}');
+    var tempJson = JSON.parse('{"requestDay":"","ampm":"","unitCode":"","doctorCode":"","chargeType":"","totalNum":"","leftNum":"","bespeakNo":"1","checkFee":""}');
+    tempJson.requestDay = $("#editDay").val();
+    tempJson.ampm = $("#ampm").val();
+    tempJson.unitCode = $("#deptNo").val();
+    tempJson.doctorCode = $("#doctorParam").val();
+    tempJson.chargeType = $("#chargeType").val();
+    tempJson.totalNum = $("#totalNum").val();
+    tempJson.leftNum = $("#totalNum").val();
+    tempJson.checkFee = $("#checkFee").val();
+    if (index == null || index == "") {
+        tempData[tempData.length] = tempJson;
+    } else {
+        tempData[index] = tempJson;
+    }
+    realParams.mzyRequests = tempData;
+    $("#editModal").modal("hide");
+    initNewListCommon("/thmz/formatRequest", realParams);
+
+}
+
+
+/**
+ * 保存号表数据
+ */
+function saveRequest() {
+    var data = null;
+    if (showTwoTable) {
+        var realParams = JSON.parse('{"mzyRequests":[]}');
+        for (var i = 0; i < tempData.length; i++) {
+            var thisData = tempData[i];
+            var tempJson = JSON.parse('{"requestDay":"","ampm":"","unitCode":"","doctorCode":"","chargeType":"","totalNum":"","leftNum":"","bespeakNo":"1","checkFee":""}');
+            tempJson.requestDay = thisData.requestDay;
+            tempJson.ampm = thisData.ampm;
+            tempJson.unitCode = thisData.unitCode;
+            tempJson.doctorCode = thisData.doctorCode;
+            tempJson.chargeType = thisData.chargeType;
+            tempJson.totalNum = thisData.totalNum;
+            tempJson.leftNum = thisData.leftNum;
+            tempJson.checkFee = thisData.checkFee;
+            realParams.mzyRequests[i] = tempJson;
+        }
+        data = JSON.stringify(realParams);
+    } else {
+        data = JSON.stringify({
+            mzyRequests: [{
+                id: $("#requestId").val(),
+                requestDay: $("#editDay").val(),
+                ampm: $("#ampm").val(),
+                unitCode: $("#deptNo").val(),
+                doctorCode: $("#doctorParam").val(),
+                chargeType: $("#chargeType").val(),
+                totalNum: $("#totalNum").val(),
+                leftNum: $("#totalNum").val(),
+                bespeakNo: 1,
+                checkFee: $("#checkFee").val()
+            }]
+        });
+    }
+    $.ajax({
+        type: "POST",
+        url: '/thmz/saveRequest',
+        contentType: "application/json;charset=UTF-8",
+        dataType: "json",
+        headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+        data: data,
+        success: function (res) {
+            if (res == '401' || res == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            if (res.code == 0) {
+                $("#editModal").modal("hide");
+                clearInput();
+                if(showTwoTable){
+                    initSourceList();
+                }else {
+                    $('#tb_table').bootstrapTable('refresh');
+                }
+                successMesage(res);
+                if (showTwoTable) {
+                    $('#sourceRange span').html($('#newRange span').html());
+                    $("#btn_cancel").click();
+                }
+            } else {
+                errorMesage(res);
+            }
+        }
+    });
+}
+
+
+
+
+
+/**
+ * 挂号列表中的科室列表
+ */
+function initDeptSelect() {
+    //科室列表
+    $.ajax({
+        type: "GET",
+        url: '/thmz/allMzUnitCode',
+        dataType: "json",
+        headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+        success: function (data) {
+            if (data == '401' || data == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            var html = '';
+            $.each(data.data, function (commentIndex, comment) {
+                html += '<option value="' + comment.code + '">' + comment.name + '(' + comment.pyCode + ')</option>';
+            });
+            $('#deptNo').empty();
+            $('#deptNo').html(html);
+            $('#deptNo').selectpicker('refresh');
+
+            $('#unitCode').empty();
+            $('#unitCode').html(html);
+            $('#unitCode').selectpicker('refresh');
+        }
+    });
+}
+
+
+
+
+
+
+/**
+ * 修改号表信息
+ * @param id
+ */
+function updateRequest(id) {
+    $("#requestId").val(id);
+    $.ajax({
+        type: "GET",
+        url: '/thmz/getRequestById?id=' + id,
+        dataType: "json",
+        headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+        success: function (res) {
+            if (res == '401' || res == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            if (res.code == 0) {
+                $("#classTitle").text("修改");
+                $("#editDay").val(format(res.data.requestDay, "yyyy-MM-dd"));
+                $('#ampm').selectpicker('val', res.data.ampm);
+                $('#ampm').selectpicker('refresh');
+                $('#deptNo').selectpicker('val', res.data.unitCode);
+                $('#deptNo').selectpicker('refresh');
+                //initDoctorSelect();
+                $('#doctorParam').selectpicker('val', res.data.doctorCode);
+                $('#doctorParam').selectpicker('refresh');
+                $('#chargeType').selectpicker('val', res.data.chargeType);
+                $('#chargeType').selectpicker('refresh');
+                $("#totalNum").val(res.data.totalNum);
+                $("#totalNum").val(res.data.leftNum);
+                $("#checkFee").val(res.data.checkFee);
+                $("#editModal").modal();
+            }
+        }
+    });
+}
+
+/**
+ * 临时新号表修改
+ * @param index
+ */
+function updateRequestByIndex(index) {
+    $("#requestId").val(index);
+    var data = tempData[index];
+    $("#classTitle").text("修改");
+    $("#editDay").val(format(data.requestDay, "yyyy-MM-dd"));
+    $('#ampm').selectpicker('val', data.ampm);
+    $('#ampm').selectpicker('refresh');
+    $('#deptNo').selectpicker('val', data.unitCode);
+    $('#deptNo').selectpicker('refresh');
+    $('#doctorParam').selectpicker('val', data.doctorCode);
+    $('#doctorParam').selectpicker('refresh');
+    $('#chargeType').selectpicker('val', data.chargeType);
+    $('#chargeType').selectpicker('refresh');
+    $("#totalNum").val(data.totalNum);
+    $("#totalNum").val(data.leftNum);
+    $("#checkFee").val(data.checkFee);
+    $("#editModal").modal();
+}
+

+ 169 - 0
src/main/resources/templates/schedule-of-medical.html

@@ -0,0 +1,169 @@
+<link rel="stylesheet" href="/thmz/css/bootstrap/css/bootstrap-select.css"/>
+<link rel="stylesheet" href="/thmz/css/bootstrap/css/daterangepicker.css"/>
+<link rel="stylesheet" href="/thmz/css/custom.min.css">
+<link rel="stylesheet" href="/thmz/css/toll_administration.css">
+<script src="/thmz/js/bootstrap-select.js"></script>
+<script src="/thmz/js/daterangepicker.js"></script>
+<script src="/thmz/js/schedule-of-medical.js"></script>
+<div class="row">
+    <div class="col-md-12 col-sm-12 col-xs-12">
+        <div class="x_panel">
+            <div class="panel-body">
+                <form id="formSearch" class="form-horizontal" autocomplete="off">
+                    <div class="form-group col-md-5 col-sm-5 col-xs-12"></div>
+                    <div class="form-group col-md-7 col-sm-7 col-xs-12">
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="unitCode">科室
+                            </label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <select class="form-control selectpicker show-tick" data-live-search="true" required="required"
+                                        title="请选择" onchange="initSourceList()"
+                                        id="unitCode">
+                                </select>
+                            </div>
+                        </div>
+                        <label class="control-label col-md-1 col-sm-1 col-xs-12" for="sourceRange"> 日期
+                        </label>
+                        <div class="col-md-7 col-sm-7 col-xs-12">
+                            <div id="sourceRange" class="pull-right"
+                                 style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc">
+                                <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
+                                <span>December 30, 2014 - January 28, 2015</span> <b class="caret"></b>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group col-md-5 col-sm-5 col-xs-12"></div>
+                    <div class="form-group col-md-7 col-sm-7 col-xs-12">
+                        <div class="btn-group col-md-4 col-sm-4 col-xs-12"></div>
+                        <div class="col-md-8 col-sm-8 col-xs-12" style="text-align:right;    padding-left: 50px;">
+                            <button type="button" style="margin-left:20px" id="btn_clean" class="btn btn-primary"
+                                    title="重置"><i class="fa fa-rotate-left"></i>
+                            </button>
+                            <!--<button type="button" style="margin-left:3px" id="btn_query" class="btn btn-primary"-->
+                            <!--title="查询"><i class="fa fa-search"></i>-->
+                            <!--</button>-->
+                            <button type="button" style="margin-left:3px" id="btn_add" class="btn btn-primary"
+                                    title="新增排班"><i class="fa fa-plus"></i>
+                            </button>
+                            <button type="button" style="margin-left:3px" id="btn_creat" class="btn btn-primary"
+                                    title="生成新号表">生成新号表
+                            </button>
+                            <button type="button" style="margin-left:3px" id="btn_cancel" class="btn btn-primary hide"
+                                    title="取消生成新号表">取消生成新号表
+                            </button>
+                            <button type="button" style="margin-left:3px" id="btn_save" class="btn btn-primary"
+                                    title="保存号表信息"><i class="fa fa-check"></i>
+                            </button>
+                        </div>
+                    </div>
+                </form>
+            </div>
+
+            <div class="row" style="margin-top: -20px;">
+                <div>
+                    <table id="tb_table"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+
+<!--新增或者编辑号表信息弹窗开始-->
+<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="editModal">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content" style="width: 420px;margin-left: 250px;">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
+                </button>
+                <h4 class="modal-title">号表排班【<span id="classTitle">新增</span>】</h4>
+            </div>
+            <div class="modal-body">
+                <form class="form-horizontal form-label-left" novalidate id="editUserForm" autocomplete="off">
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="editDayGroup">日期
+                            <span
+                                    class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <div class='input-group date input-group-own' id='editDayGroup'>
+                                <input type='text' class="form-control" id="editDay"/>
+                                <span class="input-group-addon"><span
+                                        class="glyphicon glyphicon-calendar"></span></span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="ampm">号段 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <select class="form-control selectpicker show-tick" required="required" title="请选择"
+                                    id="ampm">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="deptNo">科室 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <select class="form-control selectpicker show-tick" data-live-search="true" required="required"
+                                    title="请选择"  id="deptNo" >
+                            </select>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="doctorParam">医生
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <select class="form-control selectpicker show-tick" data-live-search="true" title="请选择"
+                                    id="doctorParam">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="chargeType">号别 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <select class="form-control selectpicker show-tick" required="required" title="请选择"
+                                    id="chargeType">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="checkFee">检查费 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <input id="checkFee" class="form-control optional" type="number"
+                                   data-validate-length-range="0,10"
+                                   placeholder="请输入">
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="totalNum">总号数 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <input id="totalNum" class="form-control optional" type="number"
+                                   data-validate-length-range="0,10"
+                                   placeholder="请输入">
+                        </div>
+                    </div>
+                </form>
+            </div>
+            <div class="modal-footer">
+                <input id="requestId" type="hidden"/>
+                <button type="button" class="btn btn-primary" id="saveEdit">保存</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!--新增或者编辑号表信息弹窗结尾-->
+
+