inspect.js 14 KB

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