question_list.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. var count = 0,
  2. q_num,
  3. table_tp_id,
  4. page = 1,
  5. pagesize = 15,
  6. searchKey = "",
  7. hasMore = true,
  8. checkedList = [];
  9. mui.init();
  10. mui.plusReady(function(){
  11. var self = plus.webview.currentWebview();
  12. table_tp_id = self.tp_id;
  13. getList(true);
  14. initScroll();
  15. bindEvents();
  16. });
  17. function initScroll(){
  18. //阻尼系数
  19. var deceleration = mui.os.ios?0.003:0.0009;
  20. mui('.mui-scroll-wrapper').scroll({
  21. bounce: false,
  22. indicators: true, //是否显示滚动条
  23. deceleration:deceleration
  24. });
  25. mui('.mui-scroll-wrapper').pullRefresh({
  26. down: {
  27. callback: function() {
  28. setTimeout(function() {
  29. getList(true);
  30. mui('.mui-scroll-wrapper').pullRefresh().endPulldownToRefresh();
  31. }, 1000);
  32. }
  33. },
  34. up:{
  35. contentrefresh: '正在加载...',
  36. callback: function(){
  37. var self = this;
  38. setTimeout(function() {
  39. getList(false);
  40. mui('.mui-scroll-wrapper').pullRefresh().endPullupToRefresh(!hasMore);
  41. }, 1000);
  42. }
  43. }
  44. });
  45. }
  46. function getList(isInit){
  47. page = isInit ? 1: page;
  48. searchKey = $("#search-input").val();
  49. var url = "/doctor/questionnaire/getQuestionList",
  50. params = {title: searchKey, pageNo: page, pageSize: pagesize};
  51. sendGet(url, params, null, function(res){
  52. if(res.status == 200){
  53. page ++;
  54. if(res.data.length == 0){
  55. $("#no_result_wrap").show();
  56. $(".mui-scroll-wrapper").hide();
  57. $(".footer").hide();
  58. }else{
  59. $("#no_result_wrap").hide();
  60. $(".mui-scroll-wrapper").show();
  61. $(".footer").show();
  62. var list = _.map(res.data.questions, function(o){
  63. for(var i=0; i<count; i++){
  64. if(o.code == checkedList[i].code){
  65. o.checked = true;
  66. break;
  67. }
  68. }
  69. o.jsonStr = JSON.stringify(o);
  70. return o;
  71. });
  72. console.log(list);
  73. var html = template("question_tmp", {list: list});
  74. if(list.length < pagesize){
  75. hasMore = false;
  76. isInit && mui(".mui-scroll-wrapper").pullRefresh().endPullupToRefresh(!hasMore);
  77. }else{
  78. hasMore = true;
  79. }
  80. if(isInit){
  81. $(".mui-scroll").empty().append(html);
  82. }else{
  83. $(".mui-scroll").append(html);
  84. }
  85. if(searchKey){
  86. ellipsisText($(".mui-scroll-wrapper").find('.question'),searchKey);
  87. }
  88. }
  89. }else{
  90. mui.toast(res.msg);
  91. }
  92. }, true);
  93. }
  94. template.helper('setType', function(str){
  95. if(str == 0){
  96. return "单选";
  97. }
  98. if(str == 1){
  99. return "多选";
  100. }
  101. return "填空";
  102. });
  103. function bindEvents(){
  104. $('#cancel').on('click', function(){
  105. mui.back();
  106. });
  107. $("#search-input").on('input', function(){
  108. var html = $(this).val();
  109. var reg = new RegExp("<"+"(?!>)","gi");
  110. html = html.replace(reg,'&lt');
  111. var reg = new RegExp(">"+"(?!>)","gi");
  112. html = html.replace(reg,'&gt');
  113. $(".searchbar-clear").toggle($(this).val() != "");
  114. }).on('keyup',function(e) {
  115. if (e.which === 13) {
  116. getList(true);
  117. }
  118. });
  119. $("form").on('submit', function(){
  120. getList(true);
  121. return false;
  122. });
  123. $(".searchbar-clear").on('click', function(){
  124. $(this).hide();
  125. $("#search-input").val("");
  126. });
  127. $("body").on('change', ".q_checkbox", function(){
  128. var $parent = $(this).parent(),
  129. jsonData = $parent.attr("data-json");
  130. jsonData = JSON.parse(jsonData);
  131. if(this.checked){
  132. count ++;
  133. checkedList.push(jsonData);
  134. }else{
  135. for(i=0; i<count; i++){
  136. if(jsonData.code == checkedList[i].code){
  137. checkedList.splice(i, 1);
  138. break;
  139. }
  140. }
  141. count --;
  142. }
  143. $(".count").text(count);
  144. });
  145. $("#submit_btn").on('tap', function(){
  146. if(count == 0){
  147. dialog({
  148. content: "请选择您要添加的问题",
  149. contentType: "tipsbox",
  150. skin: 'bk-popup',
  151. closeTime: 2000
  152. }).showModal();
  153. }else{
  154. //获取选中的题目列表
  155. // var q_list = $("input[name=question]:checked"),
  156. // len = q_list.length;
  157. //将数据存储到表中
  158. var self = plus.webview.currentWebview(),
  159. opener = self.opener();
  160. // list = [];
  161. // for(i=0; i<len; i++){
  162. // var $parent = $(q_list[i]).parent(),
  163. // jsonData = $parent.attr("data-json");
  164. // jsonData = JSON.parse(jsonData);
  165. // list.push(jsonData);
  166. // }
  167. mui.fire(opener, "multiInsert", {list: checkedList});
  168. mui.back();
  169. }
  170. });
  171. }
  172. function getRowProps($el) {
  173. var $textEllipsis = $el,
  174. $text = $textEllipsis.eq(0),
  175. $chart = $text.text('a'),
  176. enWidth = $chart.width(),
  177. $chart = $text.text('中'),
  178. zhWidth = $chart.width(),
  179. lineHeight = parseFloat($chart.css("lineHeight"), 10),
  180. rowHeight = $chart.height();
  181. $chart.text('');
  182. return {
  183. chartWidth: {
  184. zh: zhWidth,
  185. en: enWidth
  186. },
  187. rowHeight: Math.max(rowHeight, lineHeight),
  188. rowWidth: $el.width()
  189. };
  190. }
  191. function replaceAll(text, arr) {
  192. var html = text;
  193. _.each(arr,function(kw) {
  194. var reg = new RegExp(kw+"(?!>)","gi");
  195. html = html.replace(reg,'<em>'+kw+'</em>');
  196. });
  197. return html;
  198. }
  199. function highlineKeyword($el,searchText) {
  200. var props = getRowProps($el),
  201. chartWidth = props.chartWidth,
  202. rowHeight = props.rowHeight,
  203. rowWidth = props.rowWidth,
  204. // 每行显示字符数(以中文字符为标准计算)
  205. chartNum = Math.floor(rowWidth / chartWidth.zh),
  206. // 排除指定数量字符所占宽度
  207. exceptNum = 0,
  208. // 行数
  209. rowNum = 1,
  210. // 预计显示总字符数
  211. expectedNum = chartNum * rowNum - exceptNum,
  212. $target = $el,
  213. // 目标文本
  214. text = $.trim($target.attr('data-text')),
  215. length = text.length,
  216. // 关键字数组
  217. kws = $.trim(searchText).replace(/\s+/g," ").split(" ");
  218. var fidx = 0,preFidx,diff = 0;
  219. $target.html(replaceAll(text, kws));
  220. if(Math.floor($target.height() / rowHeight) <= rowNum) {
  221. return ;
  222. }
  223. if(text.length > expectedNum) {
  224. fidx = text.indexOf(kws[0])+kws[0].length-1;
  225. diff = fidx - expectedNum + 1;
  226. preFidx = fidx;
  227. diff = (diff<0)?0:diff;
  228. var preChar = (diff>0)?"...":"";
  229. $target.html(preChar+replaceAll(text.slice(diff,preFidx+1), kws)+"...");
  230. while((Math.floor($target.height() / rowHeight) <= rowNum) && (preFidx < length)) {
  231. preFidx++;
  232. $target.html(preChar+replaceAll(text.slice(diff,preFidx+1), kws)+"...");
  233. }
  234. if(preFidx == length && (Math.floor($target.height() / rowHeight) <= rowNum)) {
  235. diff = diff>0?(diff - 1):0;
  236. $target.html(preChar+replaceAll(text.slice(diff,preFidx), kws));
  237. } else if((Math.floor($target.height() / rowHeight) > rowNum)) {
  238. $target.html(preChar+replaceAll(text.slice(diff,preFidx), kws)+"...");
  239. }
  240. }
  241. }
  242. function ellipsisText($elements, searchText) {
  243. //$el.ellipsis({ row: 2});
  244. _.each($elements,function(el) {
  245. var $textEl = $(el).find(".j-text-ellipsis");
  246. _.each($textEl, function(t){
  247. highlineKeyword($(t),searchText);
  248. });
  249. });
  250. }