tuandui.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. var myScroll,
  2. startScrollX,
  3. scrollX,
  4. $scrollDom,
  5. searchPage,
  6. lastTeamId,
  7. isTeamOwner,
  8. message,
  9. curDocCode,
  10. self,
  11. docInfo,
  12. members,
  13. teams,
  14. isL = false,
  15. thisTeamsId = 0,
  16. thisTeamCode;//当前账户团队code
  17. var xScroll = 0;
  18. var yOff = 0, xOff = 0;
  19. var $gzbg = $('#gzbg');
  20. mui.plusReady(function() {
  21. self = plus.webview.currentWebview();
  22. message = self.message;
  23. if(message){//“转发给”功能,需要返回按钮
  24. $(".mui-action-back").show();
  25. $(".lin-group-chat .lin-arrow").hide();
  26. }
  27. docInfo = JSON.parse(plus.storage.getItem("docInfo"));
  28. curDocCode = docInfo.code;
  29. // 修复bug#2321 团队选择显示有两个团队被选中状态
  30. // lastTeamId = plus.storage.getItem("teamId");
  31. // myScroll = $('#content').lscroll({pullDownAction: pullDownAction, top: 16,
  32. // scrollCallBack: function(s){
  33. // yOff += Math.abs(s.distY>>0);
  34. // xOff += Math.abs(s.distX>>0);
  35. // if(xScroll==0 && yOff<20 && xOff>yOff)
  36. // xScroll = true;
  37. // }, scrollEndCallBack: function(s){
  38. // xScroll = 0;
  39. // yOff = 0;
  40. // xOff = 0;
  41. // }
  42. // });
  43. teams = JSON.parse(plus.storage.getItem("teamInfo"));
  44. initTeams(teams);
  45. /**
  46. * 预加载查询页面
  47. */
  48. searchPage = mui.preload({
  49. url: 'search.html',
  50. id: 'search.html' + self.message
  51. });
  52. initScroller();
  53. });
  54. function initScroller(){
  55. //阻尼系数
  56. var deceleration = mui.os.ios?0.003:0.0009;
  57. mui('.mui-scroll-wrapper').scroll({
  58. scrollX: true,
  59. bounce: false,
  60. indicators: true, //是否显示滚动条
  61. deceleration:deceleration
  62. });
  63. myScroll = mui(".mui-scroll").pullToRefresh({
  64. down: {
  65. callback: function() {
  66. var self = this;
  67. setTimeout(function() {
  68. initMembers(lastTeamId, true);
  69. self.endPullDownToRefresh();
  70. }, 1000);
  71. }
  72. },
  73. scrollLeft: function(){
  74. xScroll = true;
  75. }
  76. });
  77. }
  78. // function pullDownAction(){
  79. // initMembers(lastTeamId, true);
  80. // }
  81. template.helper("setQyzs", function(level, qyzs) {
  82. if(level==1)
  83. return "";
  84. return "签约总数: "+ (qyzs? qyzs : '0');
  85. });
  86. template.helper("setInfo", function(info) {
  87. return JSON.stringify(info);
  88. });
  89. var qkys = [], zkys = [], jgs= [];
  90. /**
  91. * 初始化成员
  92. * @param {Object} teamId
  93. */
  94. function initMembers(teamId, isRefresh){
  95. // plus.nativeUI.showWaiting();
  96. getReqPromises(
  97. [
  98. {url: "/doctor/admin-teams/"+ teamId +"/members", reqType: "GET"}
  99. ],true
  100. ).then(function(datas) {
  101. if(datas[0].status==200){
  102. appendMembers(datas[0].data, isRefresh);
  103. } else
  104. mui.toast("获取成员数据失败!");
  105. // plus.nativeUI.closeWaiting();
  106. }).then(function () {
  107. //判断是否是团队长
  108. getReqPromises([{url: '/statistics/checkDoctorIsTeamLeder' ,reqType: 'GET'}]).then(function (res) {
  109. if (res[0].status == 200) {
  110. if ( res[0].data && res[0].data != null) {
  111. thisTeamCode = res[0].data.id;
  112. if (thisTeamsId == docInfo.adminTeamCode) {
  113. $gzbg.show();
  114. } else {
  115. $gzbg.hide();
  116. }
  117. isL = true;
  118. }
  119. } else {
  120. mui.toast(res[0].msg);
  121. }
  122. });
  123. })
  124. .catch(function(e){
  125. mui.toast(e.msg);
  126. });
  127. }
  128. /**
  129. * 初始化选择团队
  130. */
  131. function initTeams(data){
  132. var isCheck = false;
  133. template.helper("setChecked", function(id, i) {
  134. if(lastTeamId && lastTeamId==id)
  135. return "checked";
  136. return "";
  137. });
  138. thisTeamsId = data.data[0].id;
  139. $('.lin-sel-group').html(template('teams_tmpl', data));
  140. if(!isCheck){
  141. var $dom = $('.lin-sel-group li').eq(0).addClass("checked");
  142. }
  143. setCurTeamName();
  144. setTeamId();
  145. if(lastTeamId)
  146. initMembers(lastTeamId, true);
  147. }
  148. function setCurTeamName(name){
  149. $('.demo-comtop h1').html((name || $('.lin-sel-group li.checked').attr('data-name')) + '<label class="lin-down-arrow"></label>');
  150. }
  151. function setTeamId(){
  152. var $cTeam = $('.lin-sel-group li.checked');
  153. lastTeamId = $cTeam.attr('data-code');
  154. isTeamOwner = $cTeam.attr('data-leaderCode')==curDocCode;
  155. console.log("isTeamOwner = "+isTeamOwner);
  156. // 修复bug#2321 团队选择显示有两个团队被选中状态
  157. // plus.storage.setItem('teamId', lastTeamId);
  158. }
  159. /**
  160. * 删除成员
  161. */
  162. function removeMember(code, $dom){
  163. mui.confirm("删除医生后,该医生将不能进行代理签约等团队内的工作,是否确认继续删除?", "提示", ["不了", "继续删除"], function(e){
  164. if(e.index == 1){
  165. plus.nativeUI.showWaiting();
  166. sendPost("/doctor/admin-teams/"+ lastTeamId +"/members/"+ code +"/remove", {}, null,
  167. function(res){
  168. if(res.status==200){
  169. $dom.parent().parent().parent().remove();
  170. plus.nativeUI.closeWaiting();
  171. mui.toast('删除成功!');
  172. } else{
  173. plus.nativeUI.closeWaiting();
  174. mui.confirm(res.msg, "提示", ["我知道了"], function(e){});
  175. }
  176. },'POST','',true);
  177. }
  178. })
  179. }
  180. /**
  181. * 列表点击事件
  182. */
  183. var initListEvent = function(){
  184. $('.doc-list')
  185. .on('tap', 'div.zyjm', function(){ // 转移居民按钮
  186. var info = JSON.parse($(this).parent().parent().attr('data-info'));
  187. if(info.level == 3){
  188. mui.openWindow({
  189. id: "zhuanyijumin",
  190. url: "../../search/html/zhuanyijumin.html",
  191. extras: {
  192. level: info.level,
  193. teamCode: lastTeamId,
  194. docCode: info.code,
  195. type:'转移'
  196. }
  197. });
  198. } else {
  199. mui.openWindow({
  200. id: "zyjm-layer.html",
  201. url: "zyjm-layer.html",
  202. styles: {
  203. background: 'transparent'
  204. },
  205. show:{aniShow: "none"},
  206. waiting:{autoShow: false},
  207. extras: {
  208. teamCode: lastTeamId,
  209. docCode: info.code,
  210. type:'转移'
  211. }
  212. })
  213. }
  214. /*var docCode = $(this).parent().parent().attr('data-code');
  215. mui.openWindow({
  216. id: "xuanzezhuanyijumin.html",
  217. url: "xuanzezhuanyijumin.html",
  218. extras: {
  219. teamCode: lastTeamId,
  220. docCode: docCode
  221. }
  222. });*/
  223. return false;
  224. })
  225. .on('tap', 'div.sccy', function(){ // 删除成员按钮
  226. removeMember($(this).parent().parent().attr('data-code'), $(this));
  227. return false;
  228. })
  229. .on('touchstart', '.doc-item', function(e){ //左滑动作开始
  230. e.preventDefault();
  231. startScrollX = e.originalEvent.targetTouches[0].screenX;
  232. })
  233. .on('touchmove', '.doc-item', function(e){ //左滑动作移动
  234. if(!isTeamOwner) return;
  235. if(xScroll != true) return;
  236. e.preventDefault();
  237. scrollX = e.originalEvent.targetTouches[0].screenX - startScrollX;
  238. debugger
  239. var offLeft = $(e.currentTarget).find('div.operate').children('div').length * (-65);
  240. if(scrollX<0 && scrollX >= offLeft)
  241. $(e.currentTarget).css('left', scrollX + 'px');
  242. })
  243. .on('touchend', '.doc-item', function(e){ //左滑动作结束
  244. e.preventDefault();
  245. if(scrollX<-50){
  246. $scrollDom = $(e.currentTarget);
  247. var offLeft = $(e.currentTarget).find('div.operate').children('div').length * (-65);
  248. $scrollDom.animate({left: offLeft}, "fast");
  249. } else{
  250. startScrollX = undefined;
  251. $scrollDom = undefined;
  252. $(e.currentTarget).animate({left: '0px'}, "fast");
  253. }
  254. scrollX = undefined;
  255. xScroll = false;
  256. myScroll.options.isLeftScroll = false;
  257. })
  258. .on('tap', '.doc-item', function(){
  259. var oCode = $(this).attr("data-code");
  260. if(self.message){
  261. zf(1, oCode, $(this).attr("data-name"));
  262. } else {
  263. mui.openWindow('../../mine/html/zuyuanziliao.html', 'zuyuanziliao', {
  264. extras: {
  265. docCode: oCode,
  266. teamCode: lastTeamId,
  267. isTeamOwner: isTeamOwner
  268. }
  269. });
  270. }
  271. })
  272. }();
  273. function zf(type, code, name){
  274. mui.confirm("是否确认将消息逐条转发给"+name+"?", "提示", ["不了,谢谢", "确认转发"], function(e) {
  275. if(e.index == 0) {
  276. } else {
  277. Promise.all(_.map(self.imMessages,function(msg){
  278. return new Promise(function(resolve, reject) {
  279. if(type==1){
  280. imClient.Sessions.createP2pSession(curDocCode, code, name, function(res){
  281. if(res.status==200){
  282. imClient.Sessions.sendMessage(res.data.id, curDocCode, docInfo.name, msg.content, msg.type, function(){
  283. resolve(true);
  284. }, function(){
  285. console.log(JSON.stringify(msg))
  286. resolve(true);
  287. })
  288. }else{
  289. console.log(JSON.stringify(res))
  290. resolve(true);
  291. }
  292. }, function(msg){
  293. console.log(JSON.stringify(msg))
  294. resolve(true);
  295. })
  296. } else {
  297. imClient.Sessions.createGroupSession(code, name, members, function(res){
  298. if(res.status==200){
  299. imClient.Sessions.sendMessage(res.data.id, curDocCode, docInfo.name, msg.content, msg.type, function(){
  300. resolve(true);
  301. }, function(){
  302. console.log(JSON.stringify(msg))
  303. resolve(true);
  304. })
  305. }else{
  306. console.log(JSON.stringify(res))
  307. resolve(true);
  308. }
  309. }, function(msg){
  310. console.log(JSON.stringify(msg))
  311. resolve(true);
  312. })
  313. }
  314. })
  315. })).then(function() {
  316. mui.toast("转发成功");
  317. mui.fire(self.opener().opener(), "revertZf");
  318. self.opener().close();
  319. self.close();
  320. }).catch(function(e){
  321. console.log(e)
  322. })
  323. }
  324. })
  325. }
  326. /**
  327. * 搜索按钮点击
  328. */
  329. $('.lin-search').on('tap', function() {
  330. mui.fire(searchPage, "initSearch", {html: $('.doc-list').html(),message:self.message,imMessages:self.imMessages});
  331. searchPage.show();
  332. })
  333. /**
  334. * 取消左移块的事件
  335. */
  336. $('body').on('touchstart', function(e){
  337. if($scrollDom)
  338. $scrollDom.animate({left: '0px'}, "fast");
  339. }).on('touchmove', function(e){
  340. // if(!e.target.parentElement.classList.contains("lin-sel-group")){
  341. // e.preventDefault();
  342. // }else{
  343. // $("body").scrollTop(0);
  344. // mui('.mui-scroll').pullRefresh().setStopped(true);
  345. // }
  346. })
  347. $gzbg.on( 'tap', function () {
  348. var href = '../html/gongzuobaogao.html',
  349. hrefId = "gongzuobaogao"
  350. if(plus.os.name == "Android") {
  351. var wv = plus.webview.create( href, hrefId, {hardwareAccelerated:false}, {
  352. teamCode: thisTeamCode
  353. } );
  354. wv.show("slide-in-right",250);
  355. } else {
  356. mui.openWindow({
  357. url:href,
  358. id:hrefId,
  359. extras:{
  360. teamCode: thisTeamCode
  361. },
  362. })
  363. }
  364. });
  365. /**
  366. * 初始化头部点击事件
  367. */
  368. var initHeaderEvent = function(){
  369. /**
  370. * 显示团队选择
  371. */
  372. var showGroupSel = function(e, isShow){
  373. isShow = isShow || $('.lin-mask:hidden').length != 0;
  374. $('.lin-mask').toggle(isShow);
  375. $('.lin-sel-group').toggle(isShow);
  376. }
  377. $('.lin-mask').on('tap', showGroupSel);
  378. $('.demo-comtop h1').on('tap', showGroupSel);
  379. $('.lin-conf').on('tap', function(){
  380. mui.openWindow({
  381. url: "tuanduishezhi.html",
  382. extras: getTeamInfo()
  383. })
  384. })
  385. $('.lin-gp-add').on('tap', function(){
  386. mui.openWindow({
  387. url: "tianjiachengyuan.html",
  388. extras: getTeamInfo()
  389. })
  390. })
  391. $('.lin-sel-group').on('tap', 'li', function(){
  392. thisTeamsId = $(this).attr('data-code');
  393. showGroupSel(undefined, false);
  394. if(!$(this).hasClass('checked')){
  395. $(this).addClass('checked').siblings().removeClass('checked');
  396. setCurTeamName();
  397. setTeamId();
  398. initMembers(lastTeamId, true);
  399. }
  400. })
  401. $('.lin-group-chat').on('tap', function(){
  402. if(!self.message){
  403. var members = [];
  404. $.each($('.doc-item'), function(i, v) {
  405. members.push( JSON.parse($(v).attr('data-info')) );
  406. });
  407. var info = getTeamInfo();
  408. info.code = info.teamCode;
  409. info.members = members;
  410. mui.openWindow({
  411. url: "../../message/html/tuanduiqunliao.html",
  412. id: "tuanduiqunliao.html",
  413. extras: {
  414. info: info
  415. }
  416. })
  417. } else {
  418. zf(2, lastTeamId, $('.lin-sel-group li.checked').attr('data-name'));
  419. }
  420. })
  421. }();
  422. function getTeamInfo(){
  423. var $team = $('.lin-sel-group li.checked');
  424. return {teamName: $team.attr('data-name'), teamCode: $team.attr('data-code')}
  425. }
  426. function appendMembers(data, isRefresh){
  427. var resData = [];
  428. for(var i=0;i<data.length;i++){
  429. if(!(message && curDocCode==data[i].code)){//转发消息时,过滤掉当前登录者
  430. resData.push(data[i]);
  431. }
  432. }
  433. var html = template('doc_list_tmpl', {data: resData, isTeamOwner: isTeamOwner, curDocCode: curDocCode,imMessages:self.message});
  434. if(isRefresh){
  435. members = {}
  436. $.each(resData, function(i, v) {
  437. members[v.code] = v;
  438. });
  439. $('.doc-list').html(html);
  440. } else{
  441. $('.doc-list').append(html);
  442. }
  443. // myScroll.refresh(true);
  444. }
  445. /**
  446. * 更新团队名称
  447. */
  448. window.addEventListener("updateTeamName", function(e){
  449. var $cur = $('.lin-sel-group li[data-code="'+ e.detail.teamCode +'"]');
  450. var name = e.detail.teamName;
  451. $cur.attr('data-name', name).find('label').html(name);
  452. if($cur.hasClass('checked')){
  453. setCurTeamName(name);
  454. }
  455. })
  456. /**
  457. * 新增成员
  458. */
  459. window.addEventListener("updateTeamMember", function(e){
  460. var data = e.detail.data;
  461. var tmp = [];
  462. for(var k in data){
  463. tmp.push(data[k]);
  464. }
  465. appendMembers(tmp);
  466. })
  467. /*刷新事件*/
  468. window.addEventListener("refresh", function refresh(e) {
  469. $('.lin-mask').hide();
  470. $('.lin-sel-group').hide();
  471. });