123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- import {
- SEARCH_LIST,
- SET_LABEL,
- FILL_ACTIVE,
- GET_EXCEL,
- CHECK_VALUE_IS_CHANGE,
- CLEAR_LABEL,
- RESET_LABEL,
- CLEAR_ALL_LABEL,
- DEL_PART_ITEM,
- DEL_EXCEL_LIST,
- ADD_LABEL,
- SEARCH_HOSPITAL_INSPECT,
- SEARCH_HOSPITAL_INSPECT_SON,
- SET_ALLCHECK,
- SELECT_ONE_CHECK,
- SELECT_WARING,
- SHOW_IN_ICSS
- } from '../types/inspect';
- import store from '@store';
- import {dateParser} from '@utils/tools.js';
- const initSearchList = {
- list: [], //搜索的结果
- labelList: [], //选中的结果,也是需要保存的数据
- labelListActive: [], //缓存值
- fillActive: {}, //选中的标签的填写单
- getExcelData: {}, //导入的数据
- inspectStrPlus:'',
- getExcelDataList: [], //导入的数据
- pushItem:[], //推送的数据
- pushItems:[], //右侧模板预览的数据
- inspectVal:'',
- hospitalInspect:[],//医院检索到的
- hospitalInspectObj:{},//组对应的明细(单选多选全选)
- selectGroupList:[],//选的组的明细可能有多个组
- allCheck:false,//全选反选
- checkedList:[],//选中的小项
- }
- export default (state = initSearchList, action) => {
- if (action.type == SHOW_IN_ICSS) {
- const newState = Object.assign({}, state);
- let tmpGroup = JSON.parse(JSON.stringify(newState.selectGroupList))
- let tmpArr = newState.getExcelDataList;
- let tmpArr2 = newState.labelList;
- let excelDataLis = {
- lisExcelRes:[],
- messages:[]
- }
- for(let i = 0;i < tmpGroup.length;i++){
- let tmpObj = {//excelDataLis.lisExcelRes[0]
- menus:'',
- lisExcelItem:[]
- }
- tmpObj.menus = tmpGroup[i].groupName
- tmpObj.lisExcelItem = tmpGroup[i].lisExcelWrapper
- excelDataLis.lisExcelRes.push(tmpObj)
- }
- newState.getExcelData = excelDataLis
- tmpArr.push(excelDataLis)
- newState.getExcelDataList = [...tmpArr]
- newState.pushItem = getPushList(tmpArr,tmpArr2);
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- newState.hospitalInspect = [] //医院检索到的
- newState.hospitalInspectObj = {} //组对应的明细(单选多选全选)
- newState.selectGroupList = [] //选的组的明细可能有多个组
- newState.allCheck = false //全选反选
- newState.checkedList = [] //选中的小项
- return newState;
- }
- if (action.type == SELECT_WARING) {
- const newState = Object.assign({}, state);
- let listWrap = JSON.parse(JSON.stringify(newState.hospitalInspectObj))
- let tmpGroup = JSON.parse(JSON.stringify(newState.selectGroupList))
- let tmpCheckedLis = JSON.parse(JSON.stringify(newState.checkedList))
- let warArr = [],checked = [],numS=0
- for(let m =0;m < listWrap.lisExcelWrapper.length;m++){
- for(let n = 0;n < tmpCheckedLis.length;n++){
- if(listWrap.lisExcelWrapper[m].type == 0 && listWrap.lisExcelWrapper[m].itemName == tmpCheckedLis[n]){
- warArr.push(listWrap.lisExcelWrapper[m])
- checked.push(listWrap.lisExcelWrapper[m].itemName)
- }
- }
- if(listWrap.lisExcelWrapper[m].type != 0){
- warArr.push(listWrap.lisExcelWrapper[m])
- checked.push(listWrap.lisExcelWrapper[m].itemName)
- }
- }
- for(let i = 0;i < tmpGroup.length;i++){
- if(tmpGroup[i].groupName == listWrap.groupName){//右侧有选中相同组的明细
- tmpGroup[i].lisExcelWrapper = warArr
- }else{//右侧没有选中相同组的明细
- ++numS
- }
- }
- if(numS == tmpGroup.length){//直接添加到右侧
- listWrap.lisExcelWrapper = warArr
- tmpGroup.push(listWrap)
- }
- if(checked.length == listWrap.lisExcelWrapper.length){
- newState.allCheck = true;
- }else{
- newState.allCheck = false;
- }
- newState.selectGroupList = [...tmpGroup]//右侧已选中的项目
- newState.checkedList = [...checked]
- return newState;
- }
- if (action.type == SELECT_ONE_CHECK) {
- const newState = Object.assign({}, state);
- let listWrap = JSON.parse(JSON.stringify(newState.hospitalInspectObj))
- let tmpLen = listWrap.lisExcelWrapper.length;
- let tmpGroup = JSON.parse(JSON.stringify(newState.selectGroupList))
- let tmpCheckedLis = JSON.parse(JSON.stringify(newState.checkedList))
- let numS = 0;
- if (tmpCheckedLis.indexOf(action.name) == -1) {//添加选中
- let tempArr = newState.checkedList;
- tempArr.push(action.name);
- newState.checkedList = [...tempArr]
- for(let m = 0;m < tmpGroup.length;m++){
- if(tmpGroup[m].groupName == action.groupName){//右侧有选中相同组的明细
- tmpGroup[m].lisExcelWrapper.push(action.item)
- }else{
- ++numS
- }
- }
- if(numS == tmpGroup.length){//直接添加到右侧
- listWrap.lisExcelWrapper = []
- listWrap.lisExcelWrapper.push(action.item)
- tmpGroup.push(listWrap)
- }
- newState.selectGroupList = [...tmpGroup]//右侧已选中的项目
- if(tempArr.length == tmpLen){
- newState.allCheck = true;
- }else{
- newState.allCheck = false;
- }
- } else {//去除选中
- let tempArr = newState.checkedList;
- tempArr.splice(tempArr.findIndex(item => item === action.name), 1)
- newState.checkedList = [...tempArr]
- for(let i = 0;i < tmpGroup.length;i++){
- if(tmpGroup[i].groupName == action.groupName){//右侧肯定有相同组的
- let tmpArr = []
- for(let k = 0;k < tmpGroup[i].lisExcelWrapper.length;k++){
- if(action.name != tmpGroup[i].lisExcelWrapper[k].itemName){
- tmpArr.push(tmpGroup[i].lisExcelWrapper[k])
- }
- }
- if(tmpArr.length == 0){
- tmpGroup.splice(i,1)
- }else{
- tmpGroup[i].lisExcelWrapper = [...tmpArr]
- }
- }
- }
- newState.selectGroupList = tmpGroup//右侧已选中的项目
- if(tempArr.length == listWrap.lisExcelWrapper.length){
- newState.allCheck = true;
- }else{
- newState.allCheck = false;
- }
- }
- return newState;
- }
- if (action.type == SET_ALLCHECK) {
- const newState = Object.assign({}, state);
- let flg = newState.allCheck
- let listWrap = newState.hospitalInspectObj
- let tmpGroup = newState.selectGroupList
- let tmpCheckedLis = []
- newState.allCheck = !flg
- if(!flg){//全选
- let numFst=0
- for(let i = 0;i < tmpGroup.length;i++){
- if(listWrap.groupName == tmpGroup[i].groupName){
- ++numFst
- tmpGroup[i].lisExcelWrapper = listWrap.lisExcelWrapper
- }
- }
- for(let m =0;m < listWrap.lisExcelWrapper.length;m++){
- tmpCheckedLis.push(listWrap.lisExcelWrapper[m].itemName)
- }
- if(numFst==0){
- tmpGroup.push(listWrap)
- }
- newState.checkedList=[...tmpCheckedLis]
- newState.selectGroupList = [...tmpGroup]
- }else{//反选
- for(let j = 0;j < tmpGroup.length;j++){
- if(listWrap.groupName == tmpGroup[j].groupName){
- tmpGroup.splice(j,1)
- }
- }
- newState.checkedList=[]
- newState.selectGroupList = [...tmpGroup]
- }
- return newState;
- }
- if (action.type == SEARCH_HOSPITAL_INSPECT) {
- const newState = Object.assign({}, state);
- newState.hospitalInspect = action.list
- newState.allCheck = false
- newState.hospitalInspectObj={}
- return newState;
- }
- if (action.type == SEARCH_HOSPITAL_INSPECT_SON) {
- const newState = Object.assign({}, state);
- let tmpArr = action.list
- let tmpSelect = newState.selectGroupList
- let tmpSelectSon = []
- for(let i = 0;i < tmpSelect.length;i++){
- if(tmpSelect[i].groupName == action.name){
- for(let k = 0;k < tmpSelect[i].lisExcelWrapper.length;k++){
- tmpSelectSon.push(tmpSelect[i].lisExcelWrapper[k].itemName)
- }
- }
- }
- newState.checkedList = [...tmpSelectSon]
- if(tmpSelectSon.length == tmpArr.lisExcelWrapper.length){
- newState.allCheck = true;
- }else{
- newState.allCheck = false;
- }
- newState.hospitalInspectObj = tmpArr
- return newState;
- }
- if (action.type == SEARCH_LIST) {
- const newState = Object.assign({}, state);
- newState.list = action.list
- newState.inspectVal = action.val
- return newState;
- }
- if (action.type == SET_LABEL) { //选中的结果
- const newState = Object.assign({}, state);
- let tempArr = [];
- if(action.sign == 'common'){
- let tmpInspectList = store.getState().homePage.inspectList
- tempArr = tmpInspectList;
- }else{
- tempArr = newState.list
- }
- const tempArrs = newState.labelList;
- for (let i = 0; i < tempArr.length; i++) {
- if (i == action.idx) {
- tempArrs.push(tempArr[i])
- newState.labelList = [...tempArrs]
- }
- }
-
- let tmpArr = newState.getExcelDataList;
- let tmpArr2 = newState.labelList;
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- return newState;
- }
- if (action.type == RESET_LABEL) { //选中的结果重组
- const newState = Object.assign({}, state);
- const tempArr = newState.labelList;
- tempArr[tempArr.length-1].details = action.list;
- tempArr[tempArr.length-1].uniqueName = action.uniqueName;
- return newState;
- }
- if (action.type == ADD_LABEL) { //右侧推送的化验辅检项,点击开单放到左侧化验辅检的位置上
- const newState = Object.assign({}, state);
- const tempArr = newState.labelList;
- for(let i = 0;i <action.lis.length;i++){
- tempArr.push(action.lis[i]);
- }
- newState.labelList = [...tempArr]
-
- let tmpArr = newState.getExcelDataList;
- let tmpArr2 = newState.labelList;
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems);
- return newState;
- }
- if (action.type == FILL_ACTIVE) { //点击标签放到暂存里
- const newState = Object.assign({}, state);
- const tempArr = newState.labelList;
- for (let i = 0; i < tempArr.length; i++) {
- if (i == action.idx) {
- newState.fillActive = tempArr[i]
- }
- }
- return newState;
- }
- if (action.type == CLEAR_LABEL) { //清空数据填写
- const newState = Object.assign({}, state);
- const tempArrs = newState.fillActive;
- const tempArr = newState.fillActive.details;
- let tmpArr = newState.getExcelDataList;
- let tmpArr2 = newState.labelList;
- for (let i = 0; i < tempArr.length; i++) {
- // tempArr[i].value = ''
- }
- tempArrs.show = false;
- newState.pushItem = getPushList(tmpArr,tmpArr2);
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- return newState;
- }
- if (action.type == GET_EXCEL) { //导入数据
- const newState = Object.assign({}, state);
- let tmpArr = newState.getExcelDataList;
- let tmpArr2 = newState.labelList;
- newState.getExcelData = action.data
- console.log(action.data)
- tmpArr.push(action.data)
- newState.getExcelDataList = [...tmpArr]
- newState.pushItem = getPushList(tmpArr,tmpArr2);
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- // getExcelString(action,newState,tmpArr,tmpArr2)
- return newState;
- }
- if(action.type == DEL_EXCEL_LIST){ //删除excel列表的某个数据
- const newState = Object.assign({}, state);
- const tempArr2 = newState.labelList;
- let tmpArr = newState.getExcelDataList;
- tmpArr.splice(action.idx,1);
- newState.getExcelDataList = [...tmpArr];
- let tempArr1 = newState.getExcelDataList;
- newState.pushItem = getPushList(tempArr1,tempArr2);
- newState.pushItems = getPushLists(tempArr1,tempArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- return newState;
- }
- if (action.type == CHECK_VALUE_IS_CHANGE) { //数据添加后显示与否
- const newState = Object.assign({}, state);
- // const tempArrAct = newState.fillActive;
- const tempArr = action.arr;
- tempArr.time = action.time;
- let tmpArr = newState.getExcelDataList;
- const tempArrs = newState.labelList;
- tempArrs[action.idx] = tempArr;
- newState.fillActive = tempArr;
- newState.labelList = tempArrs;
- // tempArrAct.show = true;
- newState.pushItem = getPushList(tmpArr,tempArrs);
- newState.pushItems = getPushLists(tmpArr,tempArrs);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- return newState;
- }
- if (action.type == CLEAR_ALL_LABEL) { //清空所有数据
- const newState = Object.assign({}, state);
- newState.labelList =action.data;
- newState.getExcelDataList = action.dataExcel;
- let tmpArr = action.dataExcel;
- const tempArrs = action.data;
- newState.pushItem = getPushList(tmpArr,tempArrs);
- newState.inspectStrPlus = action.saveTextData;
- return newState;
- }
- if (action.type == DEL_PART_ITEM) { //清空填寫数据
- const newState = Object.assign({}, state);
- const tempArr = newState.labelList;
- tempArr.splice(action.idx,1);
- newState.labelList = [...tempArr];
- let tmpArr = newState.getExcelDataList;
- newState.pushItem = getPushList(tmpArr,tempArr);
- newState.pushItems = getPushLists(tmpArr,tempArr);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- return newState;
- }
- return state;
- }
- function getExcelString(action,newState,tmpArr,tmpArr2) {
- let tmpString = '';
- if(JSON.stringify(action.data||{}) != '{}' && action.data.lisExcelRes.length > 0){
- action.data.lisExcelRes.map((item)=>{
- item.lisExcelItem.map((part)=>{
- if(part.type == 1){
- if(part.max != '' && (part.value-0) > (part.max-0) ) {
- let rate = (part.value/part.max).toFixed(2);
- let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'升高'+rate+';'
- tmpString += tmpStr;
- }else if(part.min != '' && (part.value-0) < (part.min-0) ){
- let rate = (part.value/part.min).toFixed(2);
- let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'降低'+rate+';'
- tmpString += tmpStr;
- }else{
- let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'异常;'
- tmpString += tmpStr;
- }
- }else{
- let tmpStr = part.mealName+','+part.itemName+','+part.value+' '+part.unit+'正常;'
- tmpString += tmpStr;
- }
- })
- })
- newState.pushItem = getPushList(tmpArr,tmpArr2);
- newState.pushItems = getPushLists(tmpArr,tmpArr2);
- newState.inspectStrPlus = getStringPlus(newState.pushItems)
- }else{
- newState.inspectStrPlus = '';
- newState.pushItem = []
- }
- }
- function getString(lists) {
- let tmpString = '';
- lists.map((item)=>{
- if(item.show == true){
- item.details.map((part)=>{
- if(part.value){
- if(typeof(part.value) == "number"){
- if(part.maxValue != '' && (part.value-0) > (part.maxValue-0) ) {
- let rate = (part.value/part.maxValue).toFixed(2);
- let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+'升高'+rate+';'
- tmpString += tmpStr;
- }else if(part.minValue != '' && (part.value-0) < (part.minValue-0) ){
- let rate = (part.value/part.minValue).toFixed(2);
- let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+'降低'+rate+';'
- tmpString += tmpStr;
- }else{
- let tmpStr = item.name+','+part.name+','+part.value+' '+part.labelSuffix+';'
- tmpString += tmpStr;
- }
- }else{
- tmpString += item.name+','+part.name+','+part.value+' '+part.labelSuffix+';'
- }
- }
- })
- }
- })
- return tmpString;
- }
- function getStringPlus(dataList){
- let strPlus = '';
- dataList && dataList.map((item)=>{
- if(item.detailName){
- let strTmp = item.name + ',' + item.detailName + ',' + (item.otherValue ? item.otherValue : (item.value + item.units)) +';'
- strPlus += strTmp;
- }else{
- let strTmp = item.name+';'
- strPlus += strTmp;
- }
- })
- return strPlus;
- }
- /**
- *
- * @param {data1} excel导入的数据 getExcelDataList
- * @param {data2} 填写单数据 labelList
- */
- function getPushList(data1,data2){ //推送数据
- let tmpArr1 = [];
- let tmpArr2 = [];
- let totalTmpArr = [];
- const now = dateParser(new Date());
- data1.length>0 && data1.map((items)=>{ //excel导入的数据拼接
- items.lisExcelRes.map((item)=>{
- item.lisExcelItem.map((part)=>{
- let tmpObj = {};
- tmpObj.name = part.mealName || '';//套餐名
- tmpObj.detailName = part.itemName || '';//化验项名
- tmpObj.uniqueName = part.uniqueName || '';//公表名称
- tmpObj.source = '1';//数据来源
- tmpObj.maxValue = part.max || '';
- tmpObj.minValue = part.min || '';
- tmpObj.time = part.time ||now;
- tmpObj.units = part.unit || '';//单位
- tmpObj.value = (part.value-0) === (part.value-0) ? part.value:'';//值
- tmpObj.otherValue = (part.value-0) === (part.value-0) ?'':part.value; //阴性阳性
- tmpArr1.push(tmpObj);
- })
- })
- })
- data2.length>0 && data2.map((item)=>{ //填写单数据拼接
- item.details && item.details.map((val)=>{
- if(val.value != undefined && val.value != ''){
- let tmpObj = {};
- tmpObj.name = item.name || '';
- tmpObj.detailName = val.name || '';
- tmpObj.uniqueName = val.uniqueName || '';//公表名称
- tmpObj.source = '0'; //数据来源
- tmpObj.maxValue = val.maxValue ? val.maxValue : '';
- tmpObj.minValue = val.minValue ? val.minValue : '';
- tmpObj.time = val.time || now;
- tmpObj.units = val.labelSuffix || '';
- tmpObj.value = (val.value-0) === (val.value-0) ? val.value:'';
- tmpObj.otherValue = (val.value-0) === (val.value-0) ?'':val.value;
- tmpArr2.push(tmpObj);
- }
- })
- })
- totalTmpArr = tmpArr1.concat(tmpArr2);
- return totalTmpArr;
- }
- function getPushLists(data1,data2){ //推送数据
- let tmpArr1 = [];
- let tmpArr2 = [];
- let totalTmpArr = [];
- data1.length>0 && data1.map((items)=>{ //excel导入的数据拼接
- items.lisExcelRes.map((item)=>{
- item.lisExcelItem.map((part)=>{
- let tmpObj = {};
- tmpObj.name = part.mealName || '';//套餐名
- tmpObj.detailName = part.itemName || '';//化验项名
- tmpObj.uniqueName = part.uniqueName || '';//公表名称
- tmpObj.source = '1';//数据来源
- tmpObj.maxValue = part.max || '';
- tmpObj.minValue = part.min || '';
- tmpObj.units = part.unit || '';//单位
- tmpObj.value = (part.value-0) === (part.value-0) ? part.value:'';//值
- tmpObj.otherValue = (part.value-0) === (part.value-0) ?'':part.value; //阴性阳性
- tmpArr1.push(tmpObj);
- })
- })
- })
- data2.length>0 && data2.map((item)=>{ //填写单数据拼接
- if(item.show){
- item.details.map((val)=>{
- if(val.value != undefined && val.value != ''){
- let tmpObj = {};
- tmpObj.name = item.name || '';
- tmpObj.detailName = val.name || '';
- tmpObj.uniqueName = val.uniqueName || '';//公表名称
- tmpObj.source = '0'; //数据来源
- tmpObj.maxValue = val.maxValue ? val.maxValue : '';
- tmpObj.minValue = val.minValue ? val.minValue : '';
- tmpObj.units = val.labelSuffix || '';
- tmpObj.value = (val.value-0) === (val.value-0) ? val.value:'';
- tmpObj.otherValue = (val.value-0) === (val.value-0) ?'':val.value;
- tmpArr2.push(tmpObj);
- }
- })
- }else{
- let tmpObj = {};
- tmpObj.name = item.name;
- tmpArr2.push(tmpObj);
- }
- })
- totalTmpArr = tmpArr1.concat(tmpArr2);
- return totalTmpArr;
- }
|