inspect.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. import {
  2. SEARCH_LIST,
  3. SET_LABEL,
  4. FILL_ACTIVE,
  5. GET_EXCEL,
  6. CHECK_VALUE_IS_CHANGE,
  7. CLEAR_LABEL,
  8. RESET_LABEL,
  9. CLEAR_ALL_LABEL,
  10. DEL_PART_ITEM,
  11. DEL_EXCEL_LIST,
  12. ADD_LABEL
  13. } from '../types/inspect';
  14. const initSearchList = {
  15. list: [], //搜索的结果
  16. labelList: [], //选中的结果,也是需要保存的数据
  17. labelListActive: [], //缓存值
  18. fillActive: {}, //选中的标签的填写单
  19. getExcelData: {}, //导入的数据
  20. inspectStrPlus:'',
  21. getExcelDataList: [], //导入的数据
  22. pushItem:[], //推送的数据
  23. }
  24. export default (state = initSearchList, action) => {
  25. if (action.type == SEARCH_LIST) {
  26. const newState = Object.assign({}, state);
  27. newState.list = action.list
  28. return newState;
  29. }
  30. if (action.type == SET_LABEL) { //选中的结果
  31. const newState = Object.assign({}, state);
  32. const tempArr = newState.list;
  33. const tempArrs = newState.labelList;
  34. for (let i = 0; i < tempArr.length; i++) {
  35. if (i == action.idx) {
  36. tempArrs.push(tempArr[i])
  37. newState.labelList = [...tempArrs]
  38. }
  39. }
  40. return newState;
  41. }
  42. if (action.type == RESET_LABEL) { //选中的结果重组
  43. const newState = Object.assign({}, state);
  44. const tempArr = newState.labelList;
  45. tempArr[tempArr.length-1].details = action.list;
  46. return newState;
  47. }
  48. if (action.type == ADD_LABEL) { //右侧推送的化验辅检项,点击开单放到左侧化验辅检的位置上
  49. const newState = Object.assign({}, state);
  50. const tempArr = newState.labelList;
  51. for(let i = 0;i <action.lis.length;i++){
  52. tempArr.push(action.lis[i]);
  53. }
  54. newState.labelList = [...tempArr]
  55. return newState;
  56. }
  57. if (action.type == FILL_ACTIVE) { //点击标签放到暂存里
  58. const newState = Object.assign({}, state);
  59. const tempArr = newState.labelList;
  60. for (let i = 0; i < tempArr.length; i++) {
  61. if (i == action.idx) {
  62. newState.fillActive = tempArr[i]
  63. }
  64. }
  65. return newState;
  66. }
  67. if (action.type == CLEAR_LABEL) { //清空数据填写
  68. const newState = Object.assign({}, state);
  69. const tempArrs = newState.fillActive;
  70. const tempArr = newState.fillActive.details;
  71. let tmpArr = newState.getExcelDataList;
  72. let tmpArr2 = newState.labelList;
  73. for (let i = 0; i < tempArr.length; i++) {
  74. // tempArr[i].value = ''
  75. }
  76. tempArrs.show = false;
  77. newState.pushItem = getPushList(tmpArr,tmpArr2);
  78. newState.inspectStrPlus = getStringPlus(newState.pushItem)
  79. return newState;
  80. }
  81. if (action.type == GET_EXCEL) { //导入数据
  82. const newState = Object.assign({}, state);
  83. let tmpArr = newState.getExcelDataList;
  84. let tmpArr2 = newState.labelList;
  85. let temPush = newState.pushItem;
  86. // if(action.data && action.data.lisExcelRes){ //前面五条数据显示,超出折叠
  87. // for(let i = 0;i < action.data.lisExcelRes.length;i++){
  88. // let tmpEx = action.data.lisExcelRes[i]
  89. // if(tmpEx && tmpEx.lisExcelItem){
  90. // if(tmpEx.lisExcelItem.length > 4){ //数据超过四条的,显示展开true,点击展开后改变值为false,用于判断页面展开还是收起
  91. // tmpEx.slideDir = true
  92. // }
  93. // for(let k = 0;k < tmpEx.lisExcelItem.length;k++){
  94. // let tmpLisItm = tmpEx.lisExcelItem[k]
  95. // if(k > 3){
  96. // tmpLisItm.isShow = false
  97. // }else{
  98. // tmpLisItm.isShow = true
  99. // }
  100. // }
  101. // }
  102. // }
  103. // }
  104. newState.getExcelData = action.data
  105. tmpArr.push(action.data)
  106. newState.getExcelDataList = [...tmpArr]
  107. getExcelString(action,newState,tmpArr,tmpArr2)
  108. return newState;
  109. }
  110. if(action.type == DEL_EXCEL_LIST){ //删除excel列表的某个数据
  111. const newState = Object.assign({}, state);
  112. const tempArr2 = newState.labelList;
  113. let tmpArr = newState.getExcelDataList;
  114. tmpArr.splice(action.idx,1);
  115. newState.getExcelDataList = [...tmpArr];
  116. let tempArr1 = newState.getExcelDataList;
  117. newState.pushItem = getPushList(tempArr1,tempArr2);
  118. newState.inspectStrPlus = getStringPlus(newState.pushItem)
  119. return newState;
  120. }
  121. if (action.type == CHECK_VALUE_IS_CHANGE) { //数据添加后显示与否
  122. const newState = Object.assign({}, state);
  123. // const tempArrAct = newState.fillActive;
  124. const tempArr = action.arr;
  125. tempArr.time = action.time;
  126. let tmpArr = newState.getExcelDataList;
  127. const tempArrs = newState.labelList;
  128. tempArrs[action.idx] = tempArr;
  129. newState.fillActive = tempArr;
  130. newState.labelList = tempArrs;
  131. // tempArrAct.show = true;
  132. newState.pushItem = getPushList(tmpArr,tempArrs);
  133. newState.inspectStrPlus = getStringPlus(newState.pushItem)
  134. return newState;
  135. }
  136. if (action.type == CLEAR_ALL_LABEL) { //清空所有数据
  137. const newState = Object.assign({}, state);
  138. newState.labelList =action.data;
  139. newState.getExcelDataList = action.dataExcel;
  140. let tmpArr = action.dataExcel;
  141. const tempArrs = action.data;
  142. newState.pushItem = getPushList(tmpArr,tempArrs);
  143. newState.inspectStrPlus = action.saveTextData;
  144. return newState;
  145. }
  146. if (action.type == DEL_PART_ITEM) { //清空填寫数据
  147. const newState = Object.assign({}, state);
  148. const tempArr = newState.labelList;
  149. tempArr.splice(action.idx,1);
  150. newState.labelList = [...tempArr];
  151. let tmpArr = newState.getExcelDataList;
  152. newState.pushItem = getPushList(tmpArr,tempArr);
  153. newState.inspectStrPlus = getStringPlus(newState.pushItem)
  154. return newState;
  155. }
  156. return state;
  157. }
  158. function getExcelString(action,newState,tmpArr,tmpArr2) {
  159. let tmpString = '';
  160. if(JSON.stringify(action.data||{}) != '{}' && action.data.lisExcelRes.length > 0){
  161. action.data.lisExcelRes.map((item)=>{
  162. item.lisExcelItem.map((part)=>{
  163. if(part.type == 1){
  164. if(part.max != '' && (part.value-0) > (part.max-0) ) {
  165. let rate = (part.value/part.max).toFixed(2);
  166. let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'升高'+rate+';'
  167. tmpString += tmpStr;
  168. }else if(part.min != '' && (part.value-0) < (part.min-0) ){
  169. let rate = (part.value/part.min).toFixed(2);
  170. let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'降低'+rate+';'
  171. tmpString += tmpStr;
  172. }else{
  173. let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'异常;'
  174. tmpString += tmpStr;
  175. }
  176. }else{
  177. let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'正常;'
  178. tmpString += tmpStr;
  179. }
  180. })
  181. })
  182. newState.pushItem = getPushList(tmpArr,tmpArr2);
  183. newState.inspectStrPlus = getStringPlus(newState.pushItem)
  184. }else{
  185. newState.inspectStrPlus = '';
  186. newState.pushItem = []
  187. }
  188. }
  189. function getString(lists) {
  190. let tmpString = '';
  191. lists.map((item)=>{
  192. if(item.show == true){
  193. item.details.map((part)=>{
  194. if(part.value){
  195. if(typeof(part.value) == "number"){
  196. if(part.maxValue != '' && (part.value-0) > (part.maxValue-0) ) {
  197. let rate = (part.value/part.maxValue).toFixed(2);
  198. let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+'升高'+rate+';'
  199. tmpString += tmpStr;
  200. }else if(part.minValue != '' && (part.value-0) < (part.minValue-0) ){
  201. let rate = (part.value/part.minValue).toFixed(2);
  202. let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+'降低'+rate+';'
  203. tmpString += tmpStr;
  204. }else{
  205. let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+';'
  206. tmpString += tmpStr;
  207. }
  208. }else{
  209. tmpString += item.name+','+part.name+','+part.value+' '+part.labelSuffix+';'
  210. }
  211. }
  212. })
  213. }
  214. })
  215. return tmpString;
  216. }
  217. function getStringPlus(dataList){
  218. let strPlus = '';
  219. dataList && dataList.map((item)=>{
  220. let strTmp = item.name + ',' + item.detailName + ',' + (item.otherValue ? item.otherValue : (item.value + item.units)) +';'
  221. strPlus += strTmp;
  222. })
  223. return strPlus;
  224. }
  225. /**
  226. *
  227. * @param {data1} excel导入的数据 getExcelDataList
  228. * @param {data2} 填写单数据 labelList
  229. */
  230. function getPushList(data1,data2){ //推送数据
  231. let tmpArr1 = [];
  232. let tmpArr2 = [];
  233. let totalTmpArr = [];
  234. data1.length>0 && data1.map((items)=>{ //excel导入的数据拼接
  235. items.lisExcelRes.map((item)=>{
  236. item.lisExcelItem.map((part)=>{
  237. let tmpObj = {};
  238. tmpObj.name = part.mealName || '';//套餐名
  239. tmpObj.detailName = part.itemName || '';//化验项名
  240. tmpObj.uniqueName = part.uniqueName || '';//公表名称
  241. tmpObj.source = '1';//数据来源
  242. tmpObj.maxValue = part.max || '';
  243. tmpObj.minValue = part.min || '';
  244. tmpObj.units = part.unit || '';//单位
  245. tmpObj.value = (part.value-0) === (part.value-0) ? part.value:'';//值
  246. tmpObj.otherValue = (part.value-0) === (part.value-0) ?'':part.value; //阴性阳性
  247. tmpArr1.push(tmpObj);
  248. })
  249. })
  250. })
  251. data2.length>0 && data2.map((item)=>{ //填写单数据拼接
  252. item.details.map((val)=>{
  253. if(val.value != undefined && val.value != ''){
  254. let tmpObj = {};
  255. tmpObj.name = item.name || '';
  256. tmpObj.detailName = val.name || '';
  257. tmpObj.uniqueName = val.uniqueName || '';//公表名称
  258. tmpObj.source = '0'; //数据来源
  259. tmpObj.maxValue = val.maxValue ? val.maxValue : '';
  260. tmpObj.minValue = val.minValue ? val.minValue : '';
  261. tmpObj.units = val.labelSuffix || '';
  262. tmpObj.value = (val.value-0) === (val.value-0) ? val.value:'';
  263. tmpObj.otherValue = (val.value-0) === (val.value-0) ?'':val.value;
  264. tmpArr2.push(tmpObj);
  265. }
  266. })
  267. })
  268. totalTmpArr = tmpArr1.concat(tmpArr2);
  269. return totalTmpArr;
  270. }