new_confirm.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. var info,
  2. code,
  3. sendAmount;
  4. mui.init();
  5. mui.plusReady(function(){
  6. var self = plus.webview.currentWebview();
  7. info = self.info;
  8. code = self.code;
  9. sendAmount = self.amount;
  10. fillInfo();
  11. bindEvents();
  12. sqlite.open('MyData','1.0','My Database', 1024*100);
  13. createTemplateTable();
  14. createTable();
  15. console.log(info)
  16. });
  17. function fillInfo(){
  18. var summary = info.summary_info,
  19. questions = info.question_info,
  20. survey_target = info.surveyTarget;
  21. $("#sendAmount").text(sendAmount);
  22. $(".sex").text(survey_target.sexText);
  23. $(".disease").text(survey_target.diseaseText);
  24. $(".service").text(survey_target.serviceText);
  25. $(".health").text(survey_target.healthText);
  26. $(".survey_title").text(summary.name);
  27. $(".comment").text(summary.comment);
  28. var labelTmp = template("label_tmp", {list: summary.label});
  29. $("#label_panel").append(labelTmp);
  30. var question_list = _.map(questions, function(o){
  31. if(!o.optionArr){
  32. o.optionArr = o.options;
  33. }
  34. return o;
  35. });
  36. var questionTmp = template("question_tmp", {list: question_list});
  37. $("#question_panel").append(questionTmp);
  38. }
  39. template.helper("setType", function(str){
  40. var value = "";
  41. switch(str){
  42. case 0 :
  43. value = "单选";
  44. break;
  45. case 1 :
  46. value = "多选";
  47. break;
  48. case 2:
  49. value = "填空";
  50. break;
  51. }
  52. return value;
  53. });
  54. function bindEvents(){
  55. $("#submit_btn").on('click', function(){
  56. dialog({
  57. content: "是否确认将编辑的问卷发送给选定的"+sendAmount+"人?发送后无法修改",
  58. okValue: "立即发送",
  59. ok: function(){
  60. sendRequest();
  61. },
  62. cancelValue: "我再看看",
  63. cancel: function(){}
  64. }).showModal();
  65. });
  66. }
  67. function sendRequest(){
  68. plus.nativeUI.showWaiting();
  69. var questions = [];
  70. for(i=0; i<info.question_info.length; i++){
  71. var item = info.question_info[i],
  72. obj={};
  73. obj.title = item.title;
  74. obj.comment = item.comment || "";
  75. obj.type = item.type;
  76. obj.qstCode = item.code || item.qstCode || getUUID();
  77. obj.isRequired = item.isRequired;
  78. obj.sort = i+1;
  79. obj.minOptions = item.minNum || parseInt(item.minOptions) || "";
  80. obj.maxOptions = item.maxNum || parseInt(item.maxOptions) || "";
  81. // obj.nextQuestion = item.nextQuestion || "";
  82. if(isNaN(parseInt(item.nextQuestion))){
  83. obj.nextQuestion = "";
  84. }else{
  85. obj.nextQuestion = parseInt(item.nextQuestion);
  86. }
  87. obj.options = [];
  88. if(item.optionArr){
  89. for(j=0; j<item.optionArr.length; j++){
  90. var op = item.optionArr[j];
  91. var nextCode = "";
  92. if(parseInt(op.nextQuestion)>=0){
  93. nextCode = op.nextQuestion;
  94. }
  95. obj.options.push({
  96. content: op.content,
  97. haveComment: op.haveComment,
  98. isRequired: op.isRequired,
  99. nextQuestion: nextCode,
  100. sort: j+1,
  101. optCode: op.optCode
  102. });
  103. }
  104. }
  105. questions.push(obj);
  106. }
  107. var label = [];
  108. for(i=0; i<info.summary_info.label.length; i++){
  109. var id = info.summary_info.label[i].id;
  110. label.push(parseInt(id));
  111. }
  112. var surveyTarget = {
  113. sex: info.surveyTarget.sexArr,
  114. disease: info.surveyTarget.diseaseArr,
  115. healthCondition: info.surveyTarget.healthArr,
  116. service: info.surveyTarget.serviceArr
  117. };
  118. var url="/doctor/questionnaire/createSurvey",
  119. params = {
  120. send: 1,
  121. surveyName: info.summary_info.name,
  122. comment: info.summary_info.comment,
  123. label: label,
  124. surveyTarget: surveyTarget,
  125. templateCode: code || "",
  126. questions: questions
  127. };
  128. sendPost(url, {jsonData:JSON.stringify(params)}, null, function(res){
  129. if(res.status == 200){
  130. plus.nativeUI.closeWaiting();
  131. //将数据库数据清空,并将自增列置0
  132. clearTableData();
  133. var surveyCode = res.surveyCode;
  134. //判断模板是否被修改了
  135. /*屏蔽保存功能*/
  136. var isEdit = plus.storage.getItem("isEdit");
  137. var content = "是否将问卷保存为新模板?";
  138. if(code){
  139. content = "是否将修改保存到模板中?";
  140. }
  141. if(isEdit == "1"){
  142. dialog({
  143. content: content,
  144. okValue: "立即保存",
  145. ok: function(){
  146. saveAsTemplate(surveyCode);
  147. plus.storage.setItem("isEdit", "0");
  148. },
  149. cancelValue: "不了,谢谢",
  150. cancel: function(){
  151. var self = plus.webview.currentWebview();
  152. backToListPage(self);
  153. }
  154. }).showModal();
  155. }else{
  156. var self = plus.webview.currentWebview();
  157. backToListPage(self);
  158. }
  159. }else{
  160. plus.nativeUI.closeWaiting();
  161. mui.toast(res.msg);
  162. }
  163. }, 'POST', '', true);
  164. }
  165. function saveAsTemplate(surveyCode, title){
  166. plus.nativeUI.showWaiting();
  167. var url = "doctor/questionnaire/savaSurveyAsTemplate",
  168. params = {code: surveyCode};
  169. if(title){
  170. params.title = title;
  171. }
  172. if(code){
  173. params.templateCode = code;
  174. }
  175. sendGet(url, params, null, function(res){
  176. if(res.status == 200){
  177. plus.nativeUI.closeWaiting();
  178. var self = plus.webview.currentWebview();
  179. backToListPage(self);
  180. }else{
  181. //处理标题名称重复的问题
  182. plus.nativeUI.closeWaiting();
  183. if(res.data.errorCode == "001"){ //标题重复时返回给前端的错误码
  184. var num = parseInt(res.data.number) > 10 ? (parseInt(res.data.number)+1) : "0"+(parseInt(res.data.number)+1);
  185. var newTitle = info.summary_info.name + (new Date().format("ddMMyy"))+num;
  186. dialog({
  187. title: '模板标题重复,请重新填写标题',
  188. content: '<input id="newTitle" type="text" autofocus value="'+newTitle+'"/>',
  189. okValue: "确定",
  190. ok: function(){
  191. var title = $("#newTitle").val();
  192. if($.trim(title).length == 0){
  193. dialog({
  194. content: "请输入标题",
  195. contentType: "tipsbox",
  196. skin: 'bk-popup',
  197. closeTime: 2000
  198. }).show();
  199. }else{
  200. saveAsTemplate(surveyCode, title);
  201. }
  202. }
  203. }).showModal();
  204. }else{
  205. mui.toast(res.msg);
  206. }
  207. }
  208. plus.nativeUI.closeWaiting();
  209. }, true);
  210. }
  211. function clearTableData(){
  212. var tables = ["template", "questions2"];
  213. sqlite.db.transaction(function(tx){
  214. for(i=0; i<tables.length; i++){
  215. tx.executeSql( "delete from "+tables[i], [], function(tx,rs){
  216. console.log("表清空数据成功");
  217. sqlite.executeSql("update sqlite_sequence SET seq = 0 where name IN ('template','questions2')",[],
  218. function(tx,rs){
  219. console.log("自增列置0成功");
  220. }, function(tx,rs){
  221. console.log("自增列置0失败");
  222. });
  223. }, function(tx, rs){
  224. console.log(tables[i]+"表清空数据失败");
  225. });
  226. }
  227. });
  228. }
  229. var closeList = [];
  230. function backToListPage(wv){
  231. if(wv.id == "survey_list"){
  232. var self = plus.webview.currentWebview();
  233. mui.fire(wv, "refresh");
  234. wv.show();
  235. mui.later(function(){
  236. for(i=0; i<closeList.length; i++){
  237. closeList[i].close();
  238. }
  239. self.close();
  240. }, 500);
  241. return false;
  242. }else{
  243. var opener = wv.opener();
  244. if(opener.id != "survey_list"){
  245. closeList.push(opener);
  246. }
  247. backToListPage(opener);
  248. }
  249. }
  250. function createTemplateTable(){
  251. sqlite.executeSql("create table if not exists template "+
  252. "(id INTEGER PRIMARY KEY, name TEXT, comment TEXT, label TEXT)",[],
  253. function(tx, rs){
  254. console.log("tempale 表创建成功");
  255. },
  256. function(tx, rs){
  257. console.error(rs)
  258. alert("创建缓存空间失败!");
  259. }
  260. )
  261. }
  262. function createTable(){
  263. sqlite.executeSql("create table if not exists questions2" +
  264. " (id INTEGER PRIMARY KEY AUTOINCREMENT, index1 INTEGER, code text, template_id INTEGER, comment TEXT, title TEXT,"+
  265. " type INTEGER, isRequired INTEGER, options TEXT, updateTime TEXT, sort INTEGER )", [],
  266. function(tx, rs){
  267. console.log("questions2创建存储空间成功");
  268. },
  269. function(tx, rs){
  270. console.error("questions2创建失败");
  271. console.error(rs)
  272. alert("创建缓存空间失败!");
  273. });
  274. }
  275. function getUUID(){//生成全局唯一标识符
  276. var d = new Date().getTime();
  277. var uuid = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  278. var r = (d + Math.random()*16)%16 | 0;
  279. d = Math.floor(d/16);
  280. return (c=='x' ? r : (r&0x3|0x8)).toString(16);
  281. });
  282. return uuid;
  283. }