inspect.js 14 KB

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