tools.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. const qs = require('qs');
  2. // const imageUrlPrefix = 'http://192.168.2.241:82' //后台图片地址
  3. const imageUrlPrefix = 'http://192.168.2.236:82' //后台图片地址
  4. const getUrlArgObject = (parm) => {
  5. let query = window.location.search;
  6. let args = qs.parse(query.substr(1));
  7. return args[parm];//返回对象
  8. }
  9. const deepClone = (arr) =>{
  10. let newArr = [];
  11. for(let i in arr){
  12. newArr.push(arr[i]);
  13. }
  14. return newArr;
  15. }
  16. // 带输入框选项
  17. const getExpStr = (str) =>{
  18. let result = {}
  19. if(str.match(/\${number_(.*})/)){//数字输入框
  20. let matchStr = str.match(/\${number_(.*})/)[0]
  21. result = {
  22. type:'number',
  23. placeholder:matchStr.split('${number_')[1].split('}')[0],
  24. prefix:str.split(matchStr)[0]||'',
  25. suffix:str.split(matchStr)[1]||''
  26. }
  27. }else if(str.match(/\${input_(.*})/)){
  28. let matchStr = str.match(/\${input_(.*})/)[0]
  29. result = {
  30. type:'text',
  31. placeholder:matchStr.split('${input_')[1].split('}')[0],
  32. prefix:str.split(matchStr)[0]||'',
  33. suffix:str.split(matchStr)[1]||''
  34. }
  35. }
  36. return result
  37. }
  38. // 多行输入 多个输入框
  39. const getModelExpStr = (str,txt) =>{
  40. let result = {}
  41. console.log(str,txt,44444)
  42. if(str.match(/\${number_(.*})/)){//数字输入框
  43. let matchStr = str.match(/\${number_(.*})/)[0]
  44. let tmpHolder = matchStr.split('${number_')[1].split('}')[0]
  45. let iptLis = [],join='';
  46. if(tmpHolder.indexOf('/') != -1){
  47. let tmpHolderArr = tmpHolder.split('/')
  48. for(let i = 0;i < tmpHolderArr.length;i++){
  49. let obj={placeholder:'',value:''}
  50. let tmpData = tmpHolderArr[i];
  51. obj.placeholder=tmpData
  52. if(txt){
  53. obj.value=txt.split('/')[i]
  54. }
  55. iptLis.push(obj)
  56. }
  57. join = '/'
  58. }else{
  59. let obj={placeholder:'tmpHolder',value:txt}
  60. iptLis.push(obj)
  61. }
  62. result = {
  63. type:'number',
  64. placeholder:tmpHolder,
  65. iptLis:iptLis,
  66. join:join,
  67. prefix:str.split(matchStr)[0]||'',
  68. suffix:str.split(matchStr)[1]||'',
  69. }
  70. }else if(str.match(/\${input_(.*})/)){
  71. let matchStr = str.match(/\${input_(.*})/)[0]
  72. let tmpHolder = matchStr.split('${input_')[1].split('}')[0]
  73. let iptLis = [],join='';
  74. if(tmpHolder.indexOf('/') != -1){
  75. let tmpHolderArr = tmpHolder.split('/')
  76. for(let i = 0;i < tmpHolderArr.length;i++){
  77. let obj={placeholder:'',value:''}
  78. let tmpData = tmpHolderArr[i];
  79. obj.placeholder=tmpData
  80. if(txt){
  81. obj.value=txt.split('/')[i]
  82. }
  83. iptLis.push(obj)
  84. }
  85. join = '/'
  86. }else{
  87. let obj={placeholder:'tmpHolder',value:txt}
  88. iptLis.push(obj)
  89. }
  90. result = {
  91. type:'text',
  92. placeholder:tmpHolder,
  93. iptLis:iptLis,
  94. join:join,
  95. prefix:str.split(matchStr)[0]||'',
  96. suffix:str.split(matchStr)[1]||'',
  97. }
  98. }
  99. return result
  100. }
  101. const getAllStr = (allData) =>{//获取界面数据,拼接字符串
  102. let allStr = '',data = allData.data;
  103. for(let i = 0;i < data.length;i++){
  104. if(data[i].controlType != 3&&data[i].value){
  105. allStr += (data[i].value).replace('{','').replace('}','')+';'
  106. }
  107. if(data[i].controlType == 3){//多列选择
  108. let tmpStr = '';
  109. for(let j = 0;j < data[i].questionDetailList.length;j++){
  110. let tmpName = data[i].questionDetailList[j]
  111. if(tmpName&&tmpName.value){
  112. let obj = getModelExpStr(tmpName.name)
  113. tmpStr+=obj.prefix+tmpName.value+obj.suffix+(j ==(data[i].questionDetailList.length-1)?';':',')
  114. }
  115. }
  116. allStr+=tmpStr
  117. }
  118. }
  119. return allStr;
  120. }
  121. const moduleCP = {
  122. 'symp':1, //症状情况
  123. 'diagT':51, //诊疗情况
  124. 'other':3, //其他史
  125. 'suplement':52,//补充内容
  126. }
  127. const moduleConfig = (config,modules) => {
  128. let activeModule = []
  129. for(let i = 0;i < config.length;i++){
  130. let tmpCode = config[i].code
  131. for(let j = 0;j < modules.length;j++){
  132. let tmpType = modules[j].type
  133. if(tmpCode=="symptoms_show"&&tmpType==moduleCP['symp']){
  134. activeModule.push(modules[j])
  135. }else if(tmpCode=="diagnosis_show"&&tmpType==moduleCP['diagT']){
  136. activeModule.push(modules[j])
  137. }else if(tmpCode=="omhistory_show"&&tmpType==moduleCP['other']){
  138. activeModule.push(modules[j])
  139. }else if(tmpCode=="replenish_show"&&tmpType==moduleCP['suplement']){
  140. activeModule.push(modules[j])
  141. }
  142. }
  143. }
  144. return {
  145. data:activeModule,
  146. len:activeModule.length||0,
  147. order:activeModule.length>0?activeModule[0].type:''
  148. }
  149. }
  150. // 替换输入框占位符
  151. const patt = /\$\{[^\]]+\}/g;
  152. module.exports = {
  153. imageUrlPrefix,
  154. getUrlArgObject,
  155. deepClone,
  156. getModelExpStr,
  157. getAllStr,
  158. moduleConfig,
  159. patt,
  160. moduleCP,
  161. getExpStr
  162. }