123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 |
- // 基本信息(包括userAgent)
- var baseInfo = null,
- // 基础环境信息(包括当前webview、encry相关)
- baseEnv = null;
- // 咨询医生
- var $yishengInput = $("#zixun_yisheng").find("input"),
- // 咨询问题
- $wentiInput = $("#goutong_info").find("textarea"),
- // 添加附件图标按钮
- $imgArea = $('.add-img'),
- // 提交咨询
- $sumit = $('#submit_btn');
- var self;
- var docInfo;
- var imgIndex, imgs, imgUrls;
-
- // 关闭重新登录检查(防止一个ajax error导致所有请求成功无法回调)
- var checkReload = false;
- //保存患者咨询的内容
- var consultLog = {};
-
- // 获取登录相关信息
- var getBaseInfo = function() {
- docInfo = JSON.parse(plus.storage.getItem("docInfo"));
- // 登录的相关信息
- var userAgent = JSON.parse(plus.storage.getItem("userAgent"));
- return {
- userAgent: userAgent,
- accessData: $.extend({},baseEnv.webview.accessData)
- }
- },
- // 获取基础环境信息
- getBaseEnvPromise = function () {
-
- var env = {
- webview: plus.webview.currentWebview()
- };
-
- // 因为有异步请求,需要等待数据返回之后进行处理,所以返回Promise
- return Promise.resolve().then(function(res) {
- return env;
- });
- },
- // 获取表单数据
- getInputs = function() {
- var data = {
- // docName: $yishengInput.val().trim(), // 姓名
- question: $wentiInput.val().trim(),
- images: null// 附件
- };
- return data;
- },
- // 必输验证
- validRequired = function(data) {
- var fieldsStr = "question",
- fieldMap = {
- question: "沟通情况"
- },
- fields = fieldsStr.split(","),
- invalidField;
- // 某个字段为""、null、undefined,则该字段不能通过必输校验
- invalidField = _.find(fields,function(key) {
- return !data[key]&&data[key]!==0;
- });
- if(invalidField) {
- mui.toast(fieldMap[invalidField]+'不能为空');
- return false;
- } else {
- return true;
- }
- },
- // 所有输入验证
- validInputsPromise = function() {
- // 表单数据
- var data = getInputs();
- return Promise.resolve()
- .then(function() {
- if(!(self.type == 1 || self.aa == 3)){ //健管求助全科时,求助内容非必填
- if(!validRequired(data)) throw new Error("必输校验失败");
- }
- })
- .then(function() {
- return data;
- });
- },
- // 图片缩放
- scaleRefresh = function (dom) {
- ImagesZoom.init({
- "elem": dom,
- "delBack": function(index) {
- $(".pic-count").text($(".pic-count").text() - 1); //删除图片后的回调
- $(dom).find("li").eq(index).remove();
- }
- });
- },
- //获取压缩图片路径
- uploadCompressImg = function (cb) {
- imgIndex = 0;
- imgs = document.querySelectorAll(".add-img li img");
- if(imgs.length > 0) {
- compressImg(cb);
- } else {
- cb();
- }
-
- },
- upImg = function(imgUrl, cb) {
- var task = plus.uploader.createUpload(server + "upload/chat", {
- method: "post"
- }, function(t, sta) {
- if(sta == 200) {
- var msg = t.responseText;
- var oImg = JSON.parse(msg);
- var imgUrl = oImg.urls;
- var re = new RegExp("\\\\", "g");
- imgUrl = imgUrl.replace(re, "/");
- self.type==1?
- imgUrls.push({content: imgUrl, type: 2})
- : imgUrls.push(imgUrl);
- cb();
- } else {
- mui.toast("上传图片失败!");
- }
- });
- task.addFile(imgUrl, {});
- task.start();
- },
- //压缩图片
- compressImg = function (cb) {
- if(imgIndex >= imgs.length){
- if(cb) cb();
- return;
- }
-
- var path, prepath = "_doc/press_img/";
- path = imgs[imgIndex].getAttribute("src");
-
- imgIndex++;
- var aImg = path.split("/");
- var imgName = aImg[aImg.length - 1];
-
- plus.zip.compressImage({
- src: path,
- dst: prepath + imgName,
- quality: 20,
- overwrite: true
- }, function(succ) {
- var url = succ.target;
- var size = succ.size;
- var width = succ.width;
- var height = succ.height;
- upImg(url, function(){
- compressImg(cb);
- });
- }, function(err) {
- console.error("压缩失败:" + err.message);
- if(err.message == "文件不存在") {
- mui.toast(err.message);
- plus.nativeUI.closeWaiting();
- plus.webview.currentWebview().reload();
- }
- });
- },
- // 上传并获取图片url地址(多张图片以“,”分割)
- getImagesPromise = function() {
- return new Promise(function(resolve, reject) {
- var uploadImgUrl = getCompressImg();
- if(uploadImgUrl) {
- resolve({urls:uploadImgUrl});
- } else {
- // 没有附件
- resolve({urls: null})
- }
- });
- },
- //获取患者咨询的内容
- getConsultLog = function(){
- sendPost("doctor/consult/getConsultLog", {
- consultCode:self.consultInfo.consult
- }, null, function(res){
- consultLog = res.data;
- });
- },
- // 发送消息
- sendMsg = function( data){
- Promise.all(_.map(imgUrls,function(msg){
- return new Promise(function(resolve, reject) {
- im.sendGroupMsg(docInfo.code, data.code, msg.content, msg.type,function() {
- resolve(true);
- }, 2, function() {
- resolve(true);
- })
- })
- })).then(function() {
- plus.nativeUI.closeWaiting();
- //跳转求助im
- var zhidingzixun = plus.webview.getWebviewById("zhidingzixun");
- if(zhidingzixun)
- mui.fire(zhidingzixun, 'refresh')
- mui.openWindow({
- url:"../../message/html/qiuzhuqunliao.html",
- id: "qiuzhuqunliao"+ new Date().getTime(),
- extras: {
- groupCode: data.code,
- groupName: data.members[0].groupName,
- openId: self.openId
- }
- })
- }).catch(function(){
- plus.nativeUI.closeWaiting();
- })
- },
- closeOpener = function(wv){
- if(wv){
- if(self.openId == wv.id){
- wv.close();
- } else {
- closeOpener(wv.opener());
- wv.close();
- }
- }
- },
- bindEvents = function() {
- // 添加附件
- $imgArea.on('tap', '.add', function() {
- showActionSheet($imgArea[0], this);
- });
- // 提交咨询
- $sumit.on('tap', function() {
- plus.nativeUI.showWaiting();
- validInputsPromise().then(function(data) {
- return data;
- }).then(function(data) {
- //type 1咨询 2求助
- if(self.type == 1){
- var parms = {
- type: self.type,
- talkDoctor: self.doctor,
- talkDoctorName: self.doctorName,
- doctorType: self.doctorType,
- consult: self.consultInfo.consult,
- patient: self.consultInfo.patient,
- patientName: self.consultInfo.name,
- patientInclude: self.type==1? 1: "",
- name: self.consultInfo.name + "咨询(" + new Date().format('MM-dd')+")"
- }
- sendPost("/doctor/talkgroup/create", parms, null, function(res1){
- if(res1.status == 200){
- //将患者的咨询信息也发布到讨论组里,类型值为8
- var c = 0;
- Promise.all(_.map(consultLog,function(log){
- //解决将健管的回复的内容也发布到讨论组中
- if(log.type != 1){
- //咨询的信息,文本类型值为8,图片类型值为9
- var type = 8;
- if(log.chatType == 2){
- type = 9;
- }
- c = c+1;
- return new Promise(function(resolve, reject) {
- im.sendGroupMsg(self.consultInfo.patient, res1.data.code, log.content, type,function() {
- console.log(c);
- resolve(true);
- }, 2, function() {
- resolve(true);
- })
- });
- }
- })).then(function() {
- im.sendPrivateMsg(
- docInfo.code,
- self.consultInfo.patient,
- docInfo.name+"已邀请"+ self.doctorName +"参与咨询:"+res1.data.code, 5,
- function(res){
- imgUrls = [];
- if(data.question){
- imgUrls.push({content: "沟通情况:"+data.question, type: 6});
- }
- uploadCompressImg(function() {
- sendMsg(res1.data);
- });
- }, function(res){
- plus.nativeUI.closeWaiting();
- mui.toast("发送求助信息失败!");
- throw new Error("发送求助信息失败!"+ JSON.stringify(res));
- })
- });
- } else {
- plus.nativeUI.closeWaiting();
- mui.toast("求助失败!");
- throw new Error("求助失败!"+ JSON.stringify(res1));
- }
- })
- } else {
- imgUrls = [];
- var isSwitch = $('#switch').hasClass('mui-active');
- uploadCompressImg(function() {
- sendPost("/doctor/consult/seekHelp", {
- symptoms: data.question,
- isSend: isSwitch? 1 : 0,
- doctorCode: self.doctor,
- images: imgUrls? imgUrls.join(",") : "",
- oldConsultCode: self.consultInfo.consult
- }, null, function(res){
- if(res.status == 200){
- mui.toast("求助成功!");
- //跳转求助im
- var zhidingzixun = plus.webview.getWebviewById("zhidingzixun");
- if(zhidingzixun)
- mui.fire(zhidingzixun, 'refresh')
- var wv = mui.openWindow({
- url:"../../message/html/p2p.html",
- id: "p2p",
- extras: {
- otherCode: self.doctor,
- otherName: self.doctorName,
- otherSex: self.doctorSex,
- otherPhoto: self.doctorPhoto,
- from: "faqiqiuzhu"
- }
- })
-
- mui.later(function(){
- closeOpener(self);
- }, 1000);
- wv.show();
- } else {
- plus.nativeUI.closeWaiting();
- mui.toast("求助失败!");
- throw new Error("求助失败!"+ JSON.stringify(res));
- }
- })
- });
-
-
- }
- }).catch(function(res){
- console.error("err:"+JSON.stringify(res))
- plus.nativeUI.closeWaiting();
- })
-
-
- });
-
- // 删除图片
- mui(".add-img").on("tap", ".icon-del", function() {
- var oli = this.parentElement;
- var oul = this.parentElement.parentElement;
- oul.removeChild(oli);
- });
-
- };
- // 页面业务处理流程开始
- new Promise(function(resolve, reject) {
- mui.init({
- beforeback: function() {
- if($('.imgzoom-pack').css("display")!=="none"){
- $('.imgzoom-x').trigger('click');
- return false;
- }
- }
- });
- mui.plusReady(function() {
- // plus已经准备好,可以往下执行
- resolve(true);
- });
- }).then(function() {
- // TODO 防止因为其它ajax error导致存在isLoginOut标识,所有请求回调无法执行的问题
- window.localStorage.removeItem("isLoginOut");
-
- // 获取基础环境信息
- return getBaseEnvPromise().then(function(env) {
- baseEnv = env;
- }).then(function() {
- self = plus.webview.currentWebview();
- if(self.type == 2){
- $('#oldConsultCheck').show();
- }
- // 获取登录医生信息
- baseInfo = getBaseInfo();
- // $yishengInput.val(baseInfo.accessData.name||"");
- $('#zixun_wenti textarea').val(self.consultInfo.title);
-
- if(self.type == 1 || self.aa == 3){
- $("#notice").show();
- //获得患者咨询的内容
- getConsultLog();
- }
-
-
- //图片缩放
- scaleRefresh(".upload-img");
- // 绑定页面事件
- bindEvents();
- })
- }).catch(function(e) {
- plus.nativeUI.closeWaiting();
- console && console.error(e);
- });
|