123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583 |
- //var myScroll;
- var recordTimeObj = recordTimeObj(); // 录音倒计时
- var userInfo = JSON.parse(localStorage.getItem(agentName));
- var ct_id;
- var pb_id=0;
- var type = 0;
- var quesNum = 1;
- var quesArray=[]; //用于上一题的访问
- var MIN_SOUND_TIME = 500;
- var startTimestamp = null;
- var recordTimer = null;
- var realStartTime = 0;
- $(function(){
- getPermission();
- getWechatInfo();
- $('.questionnaire-list').delegate('.questionnaire-box input[type="radio"]', 'click', function(){
- quesNum ++;
- var dc_answer = [$(this).val()];
- var pb_id = quesArray[quesArray.length-1];
- submitQuestion(pb_id, dc_answer);
- });
- $('#prev_question').on('click',function(){
- quesNum --;
- getQuestion('prev')
- });
- $('#next_question').on('click',function(){
- quesNum ++;
- var $inputs = $('.questionnaire-box input[name="question"]:checked');
- if($inputs.length < 1){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'未选择答案'}).show();
- }else{
- var dc_answer = [];
- $.each($inputs, function(i,input){
- dc_answer.push($(input).val());
- });
- var pb_id = quesArray[quesArray.length-1];
- //getQuestion();
- submitQuestion(pb_id, dc_answer);
- }
- });
- $('.btn-more-questionnaire').on('click', function(){
- // 展开更多检测
- //$('.questionnaire-more').hide();
- $('.questionnaire-more-box').show();
- });
-
- $('#btnRecord').on('click', function(){
- // 显示录音界面
- resetRecordSeconds();
- $('.record-dialog').addClass('fadeIn');
- setTimeout(function() {
- $('.record-dialog').removeClass('hidden');
- }, 0);
- setTimeout(function() {
- $('.record-dialog').removeClass('fadeIn');
- }, 800);
- });
- $('.record-btn').find('.back').on('click', function(){
- // 关闭录音界面
- closeRecord();
- });
- $('.record-btn').find('.start').on('click', function(){
- // 开始录音
- var that = $(this);
- startTimestamp = new Date().getTime();
- recordTimer = setTimeout(function(){
- wx.startRecord({
- success: function(){
- realStartTime = new Date().getTime();
- that.hide();
- $('.record-btn').find('.stop').show();
- //中间秒数的样式
- recordTimeObj.recordTime('start', function(){
- });
- },
- fail: function(){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'录音失败!请重试'}).show();
- }
- });
- wx.onVoiceRecordEnd({
- // 录音时间超过15秒没有停止的时候会执行 complete 回调
- complete: function (res) {
- serverId = res.localId;
- $('.record-result').show();
- },
- fail: function(){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'录音失败!请重试'}).show();
- }
- });
- },MIN_SOUND_TIME);
- stopRecordTimer = setTimeout(function(){
- wx.stopRecord({
- success: function (res) {
- serverId = res.localId;
- recordTimeObj.recordTime('stop');
- $('.record-result').show();
- },
- fail: function(){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'录音失败!请重试'}).show();
- //重置样式
- resetRecordSeconds();
- }
- });
- },15500)
- });
- $('.record-btn').find('.stop').on('click', function(){
- // 停止录音
- var that = $(this);
- stopRecordTimer && clearTimeout(stopRecordTimer);
- var endTimestamp = new Date().getTime();
- var times = endTimestamp - startTimestamp;
- var realTimes = endTimestamp - realStartTime;
- if(times < MIN_SOUND_TIME || realTimes < MIN_SOUND_TIME){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'录音时间太短!'}).show();
- //重置样式
- resetRecordSeconds();
- startTimestamp = 0;
- realStartTime = 0;
- //小于300ms,不录音
- recordTimer && clearTimeout(recordTimer);
- wx.stopRecord({
- success: function (res) {
- },
- fail: function(){}
- });
- }else{
- wx.stopRecord({
- success: function (res) {
- serverId = res.localId;
- recordTimeObj.recordTime('stop');
- $('.record-result').show();
- },
- fail: function(){
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'录音失败!请重试'}).show();
- //重置样式
- resetRecordSeconds();
- }
- });
- }
- });
- $('.record-result-btn').find('.cancel').on('click', function(){
- // 重新录音
- $('.record-result').hide();
- resetRecordSeconds();
- //如果录音是在播放的状态,停止播放
- if($('.record-result-btn').find('.btn-action').hasClass('pause')){
- wx.stopVoice({
- localId: serverId // 需要停止的音频的本地ID,由stopRecord接口获得
- });
- }
-
- });
- $('.record-result-btn').find('.ok').on('click', function(){
- // 确认录音
- var st = $('.record-time .time').find('span').html();
- var st1 = st.split('.')[0];
- var st2 = st.split('.')[1];
- var et1 = 14 - st1;
- var et2 = 10 - st2;
- var t = et2 < 10 ? ( et1 + '.0' + et2 ) : ( (et1 + 1) + '.00' );
- closeRecord();
- setTimeout(function() {
- $('.record-result').hide();
- }, 10);
-
- // 录音展示
- $('#recordContent').find('.seconds').html(t);
- $('#recordContent').find('.upload').hide();
- $('#recordContent').find('.file').show();
- //如果录音在播放状态下,停止播放
- if($('.record-result-btn').find('.btn-action').hasClass('pause')){
- wx.stopVoice({
- localId: serverId // 需要停止的音频的本地ID,由stopRecord接口获得
- });
- }
- });
- //播放录音
- $('.record-result-btn').find('.btn-action').on('click', function(){
- var that = $(this);
- if(that.hasClass('play')){//播放
- that.removeClass('play').addClass('pause');
- wx.playVoice({
- localId: serverId // 需要播放的音频的本地ID,由stopRecord接口获得
- });
- }else if(that.hasClass('pause')){
- that.removeClass('pause').addClass('play');
- wx.pauseVoice({//暂停
- localId: serverId // 需要暂停的音频的本地ID,由stopRecord接口获得
- });
- }
- //录音播放完毕
- wx.onVoicePlayEnd({
- success: function (res) {
- var localId = res.localId; // 返回音频的本地ID
- that.removeClass('pause').addClass('play');
- }
- });
- });
- $('.questionnaire-more-box').on('click', '.remove', function(){
- // 删除文件,重新上传
- var that = $(this);
- var pObj = that.parents('.file');
- var loadBox = pObj.siblings('.upload');
- pObj.find('img').attr('src', ' ');
- pObj.find('img').attr('data-src', ' ');
- pObj.hide();
- loadBox.show();
- });
- $('#uploadFace').on('change', function(){
- // 面部图片上传
- var that = $(this);
- $('.btn-bar').addClass('hidden');
- clip_photo(that, 1);
- });
- $('#uploadTongue').on('change', function(){
- // 舌部图片上传
- var that = $(this);
- $('.btn-bar').addClass('hidden');
- clip_photo(that, 2);
- });
- //点击提交,提交录音
- $('#btn_submit').on('click',function(){
- wx.uploadVoice({
- localId: serverId, // 需要上传的音频的本地ID,由stopRecord接口获得
- isShowProgressTips: 1, // 默认为1,显示进度提示
- success: function (res) {
- var wechatServerId = res.serverId; // 返回音频的服务器端ID
- submitVoice(wechatServerId);
- }
- });
- });
- });
- function closeRecord(){
- // 关闭录音界面
- $('.record-dialog').addClass('bounceOutRight');
- setTimeout(function() {
- $('.record-dialog').addClass('hidden');
- $('.record-dialog').removeClass('bounceOutRight');
- }, 800);
- }
- function resetRecordSeconds(){
- // 重置倒计时样式
- $('.record-time .time').find('span').html('15.00');
- $('.record-time').find('.pie').attr('style', '');
- $('.record-btn').find('.stop').hide();
- $('.record-btn').find('.start').show();
- }
- //剪切图片
- function clip_photo(obj, type){
- $('#wrapper').addClass('hidden');
- var photo = obj[0];
- var code = userInfo.uid;
- lrz(photo.files[0]).then(function (rst) {
- var url = rst.base64;
- new AlloyCrop({
- image_src: url,
- width: document.documentElement.clientWidth - 100,
- height: document.documentElement.clientWidth - 100,
- ok_text: "保存",
- cancel_text: "取消",
- output: 1,
- ok: function (base64, canvas) {
- $("#wrapper").removeClass("hidden");
- setTimeout(function(){
- $('.btn-bar').removeClass('hidden')
- },0);
- var data=base64.split(',')[1];
- data=window.atob(data);
- var ia = new Uint8Array(data.length);
- for (var i = 0; i < data.length; i++) {
- ia[i] = data.charCodeAt(i);
- }
- var blob=new Blob([ia],{type:"image/png",endings:'transparent'});
- var fd=new FormData();
- fd.append('ct_id',ct_id);
- fd.append('type',type);
- fd.append('patientCode',code);
- fd.append('file',blob,'image.png');
- var new_url = URL.createObjectURL(blob);
- appendFile(new_url, obj);
- obj.val('');
- $.ajax(server_jm+'/medicine/physicalExamination/dillphoneimgdata', {
- data: fd,
- dataType: 'json',
- contentType: false,
- cache: false,
- processData: false,
- beforeSend: function(request) {
- //request.setRequestHeader("userAgent", userAgent);
- },
- type: 'post',
- error: function(res) {
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'图片上传失败!'}).show();
- if(res.status == 999 || res.status == 998 || res.status == 997){
- loginUrl(res.status);
- return;
- }
- clickCount = 0;
- },
- success: function(res) {
- if(res.status == 999 || res.status == 998 || res.status == 997){
- loginUrl(res.status);
- return;
- }
- var params = {};
- params.photo = res.urls;
- var patientUrl = res.urls;
- clickCount = 0;
- }
- });
- },
- cancel: function () {
- $("#wrapper").removeClass("hidden");
- obj.val('');
- setTimeout(function(){
- $('.btn-bar').removeClass('hidden')
- },0);
- return;
- }
- });
- })
- .catch(function (err){
- // 处理失败会执行
- //console.log(err)
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:err}).show();
- });
-
- }
- function appendFile(p, obj) {
- var pObj = obj.parents('.upload');
- var fileBox = pObj.siblings('.file');
- pObj.hide();
- fileBox.show();
- fileBox.find('img').attr('src', p);
- fileBox.find('img').attr("data-src",p);
- //iscrollRefresh();
- }
- //验证权限
- function getPermission(){
- var code = userInfo.uid;
- //判断是否有访问权限,若有,则进入答题页面
- var loading = dialog({contentType:'load', skin:'bk-popup'});
- loading.show();
- sendPost(server_jm+"/medicine/physicalExamination/insertslip", {patientCode: code}, "json", "get", function(){
- }, function(data){
- loading.close();
- if(data.isSignJM==2){//已签约的集美市民---->>进入第一题试题
- ct_id = data.recordset.ct_id;//咨询编号 ,需要保存下来,之后接口有用到
- //获取题目
- getQuestion();
- }else if(data.isSignJM==0 || data.isSignJM==3){ //未签约集美,且非厦门居民--->>跳转到敬请期待页面
- // window.location.href='./expectancy-page.html';
- }else{//跳转到签约说明页面 data.isSignJM==1
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'只有与集美区进行家庭医生签约的用户才可享受此签约特色服务'}).show();
- //window.location.href='http://www.xmtyw.cn/wlyy/wx/html/qygl/html/signing-share2.html';
- }
- });
- }
- function getQuestion(quesType){
- var code = userInfo.uid;
- var pbId = pb_id;
- if(quesType == 'prev'){
- if(quesArray.length<=2){
- pbId = 0;
- }else{
- pbId = quesArray[quesArray.length-3];
- }
- }
- if(quesNum >= 2 && $('#prev_question').hasClass('hidden')){
- $('#prev_question').removeClass('hidden');
- }else if(quesNum < 2){
- $('#prev_question').addClass('hidden');
- }
- var loading = dialog({contentType:'load', skin:'bk-popup'});
- loading .show();
- var width = parseFloat($('.questionnaire-progress').css('width'));
- var left = parseFloat($('.progress-box').css('left'));
- sendPost(server_jm+"/medicine/physicalExamination/findQuestion", {
- pb_id:pbId,
- ct_id:ct_id,
- patientCode:code
- }, "json", "get", function(){
- }, function(data){
- loading.close();
- if(data.status==200){
- var question = data.recordset;//这边还需要判断是否是最后一题 最后一题会返回空对象 {} 返回空对象,跳转到面部等检查页面
- var pb_code = question.pb_id; //查找 第一题的题目pb_id为0 ,但是提交第一题的答案是提交这个pb_code
- if(pb_code){
- pb_id = pb_code;
- if(quesType == 'prev'){
- quesArray.pop();
- var minLeft = -parseFloat($('.progress-box').css('margin-left'));
- if(quesNum>1 && left > minLeft+30){
- left -= 30;
- $('.progress-box').css('left',left+'px');
- }else if(quesNum == 1){
- $('.progress-box').css('left',minLeft+'px');
- }
- }else{
- if(quesNum>1 && left < width-30){
- left += 30;
- $('.progress-box').css('left',left+'px');
- }
- quesArray.push(pb_code);
- }
- $('#questionnaire_list').html('');
- var choice = question.pb_alternative.split(/\r+|\s+/);
- var title = question.pb_title;
- var cHtml = '';
- var ctype = '';
- var className = '';
- if(question.i_multiselect == '1'){
- cHtml = '(单选)';
- ctype = 'radio';
- className = 'single-choice';
- }else{
- cHtml = '(多选)';
- ctype = 'checkbox';
- className = 'multi-choice';
- type = 1;
- }
- if(choice && choice.length>0){
- var sHtml = '';
- $.each(choice, function(i, item){
- sHtml += '<li>'
- +'<label>'
- +'<input value="'+item+'" type="'+ctype+'" name="question">'
- +'<span></span>'
- +item
- +'</label>'
- +'</li>'
- })
- }
- var html = '<div class="questionnaire-box '+className+'">'
- +'<div class="title">'
- +quesNum+'.'+title+'<span>'+cHtml+'</span><font>*</font>'
- +'</div>'
- +'<div class="answer">'
- +'<ul>'
- +sHtml
- +'</ul>'
- +'</div>'
- +'</div>';
- $('#questionnaire_list').append(html);
- }else{//不是最后一题
- //dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'最后一题了!'}).show();
- $('#questionnaire_list').html('');
- $('.btn-bar').removeClass('hidden');
- $('.bottom-btn').addClass('hidden');
- $('.questionnaire-more-box').show();
- $('.progress-box').css('left',width+'px');
- }
- }else{
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:data.msg}).show();
- }
- });
- }
- //提交试卷
- function submitQuestion(pb_id, dc_answer, quesType){
- var code = userInfo.uid;
- sendPost(server_jm+"/medicine/physicalExamination/handleExam", {
- ct_id: ct_id,
- pb_id: pb_id,
- type: type,
- dc_answer: JSON.stringify(dc_answer),
- patientCode: code
- }, "json", "get", function(){
- }, function(data){
- if(data.status==200){
- getQuestion(quesType);
- }else{
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'提交失败!'+data.msg}).show();
- }
- });
- }
- //提交录音
- function submitVoice(mediaId){
- var code = userInfo.uid;
- var loading = dialog({contentType:'load', skin:'bk-popup'});
- loading .show();
- sendPost(server_jm+"/medicine/physicalExamination/dealVoice", {
- mediaId: mediaId,
- ct_id: ct_id,
- patientCode: code,
- type: 3
- }, "json", "get", function(){
- }, function(data){
- loading.close();
- if(data.status==200){
- window.location.href='./medical-examination-result.html?ctId='+ct_id;
- }else{
- window.location.href='./submit-fail.html';
- dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'提交失败!'+data.msg}).show();
- }
- });
- }
- function getWechatInfo(){
- //从后台那边获取签名等信息
- var params = {};
- var url1 = window.location.href;
- params.pageUrl = url1;
- $.ajax("/wlyy/weixin/getSign", {
- data: params,
- dataType: "json",
- type: "post",
- success: function(res){
- if (res.status == 200) {
- var t = res.data.timestamp;
- var noncestr = res.data.noncestr;
- var signature = res.data.signature;
- wx.config({
- appId: appId, // 必填,公众号的唯一标识
- timestamp: t, // 必填,生成签名的时间戳
- nonceStr: noncestr, // 必填,生成签名的随机串
- signature: signature,// 必填,签名,见附录1
- jsApiList: [
- 'chooseImage',
- 'uploadImage',
- 'startRecord',
- 'stopRecord',
- 'onVoiceRecordEnd',
- 'playVoice',
- 'pauseVoice',
- 'stopVoice',
- 'onVoicePlayEnd',
- 'uploadVoice',
- 'getNetworkType'
- ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
- });
- // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
- wx.ready(function(){
- wx.getNetworkType({
- success: function (res) {
- networkStatus = res.networkType; // 返回网络类型2g,3g,4g,wifi
- }
- });
- });
- }
- }
- });
- }
|