utils.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. import {dateHandle} from "../../../utils/dateHandle.js";
  2. const {dateDiff} = dateHandle;
  3. /**
  4. * 主题数据
  5. */
  6. export const themeList = [{
  7. id: 0,
  8. title: '个案追踪',
  9. des: '评价诊疗服务的内涵质量以及对各种诊疗规范、临床路径等的执行力',
  10. },{
  11. id: 1,
  12. title: '系统追踪',
  13. des: '评价对各种质量与安全管理制度与流程的执行力、医院服务的连贯性及多学科综合的服务能力',
  14. },{
  15. id:2,
  16. title:'自查督查',
  17. des:'多角度评价质量与安全管理制度与流程的执行力,强化问题意识',
  18. }
  19. ];
  20. // 查核计划里的数据
  21. export const checkPlanList = [
  22. {id: 'week', value: 1, label: '每周', model: 7},
  23. {id: 'month', value: 2, label: '每月', model: 30},
  24. {id: 'twoMonth', value: 3, label: '每两月', model: 60},
  25. {id: 'quarter', value: 4, label: '每季度', model: 90},
  26. {id: 'halfAYear', value: 5, label: '每半年', model: 180},
  27. {id: 'custom', value: 6, label: '天', model: null},
  28. ];
  29. /**
  30. * 底部按钮数据
  31. */
  32. export const normalBtnGroup = [
  33. {id: 'pre', label: '上一步'},
  34. {id: 'next', label: '下一步'}
  35. ];
  36. export const btnGroupPlan1 = [
  37. {id: 'pre', label: '上一步'},
  38. {id: 'checkPlanCreate', label: '生成查核计划'}
  39. ];
  40. export const btnGroupPlan2 = [
  41. {id: 'checkPlanCallback', label: '返回'},
  42. {id: 'next', label: '下一步'}
  43. ];
  44. export const btnGroupSituationPreview = [
  45. {id: 'pre', label: '上一步'},
  46. {id: 'situationPreviewOK', label: '完成'}
  47. ];
  48. export const firstStepBtnGroup = [
  49. {id: 'goback', label: '返回'},
  50. {id: 'next', label: '下一步'}
  51. ];
  52. /**
  53. * 增加树形数据字段,以适配公共组件
  54. * @param {Object} data
  55. */
  56. export const conditionOptions = function(data) {
  57. if(!data) return [];
  58. let options = data.map((item)=>{
  59. return {
  60. ...item,
  61. key: item.id,
  62. label: item.name,
  63. children: conditionOptions(item.child)
  64. }
  65. });
  66. return options;
  67. }
  68. /**
  69. * 创建
  70. * 构造条件提交结果
  71. */
  72. export const optionsHandle = (arr, conditionIds) => {
  73. let options = [...arr].map((item)=>{
  74. return {
  75. ...item,
  76. selectFlag: conditionIds.includes(item.id),
  77. child: optionsHandle(item.child, conditionIds)
  78. }
  79. });
  80. return options;
  81. }
  82. /**
  83. * 构造查核组提交数据
  84. */
  85. export const checkGroup = function({list, checkedItem}) {
  86. // 放宽校验:若未选择,则默认选中列表第一项以满足后端最小必填
  87. const selectedId = (checkedItem && checkedItem.id != null)
  88. ? checkedItem.id
  89. : (Array.isArray(list) && list.length > 0 ? list[0].id : null);
  90. return [...list].map((item) => ({
  91. ...item,
  92. selectFlag: selectedId != null ? item.id === selectedId : false
  93. }));
  94. }
  95. /**
  96. * 构造查核地图提交数据
  97. */
  98. export const checkDep = function(list) {
  99. return list.map((item, i)=>{
  100. return {
  101. ...item,
  102. sort: i+1,
  103. enableFlag: item.status === 'disable' ? false : true,
  104. }
  105. });
  106. }
  107. /**
  108. * 编辑
  109. * 条件树遍历,获取选中项的id
  110. */
  111. export const initConditionIds = (arr, result) => {
  112. arr.map((item)=>{
  113. if(item.selectFlag || item.selectFlag === 'true') {
  114. result.push(item.id);
  115. }
  116. if(item.child && item.child.length > 0) {
  117. initConditionIds(item.child, result);
  118. }
  119. })
  120. }
  121. // 构造条件回显数据
  122. export const editCondition = ({depType, filterCondition})=>{
  123. let conditionIds = [];
  124. initConditionIds(filterCondition, conditionIds);
  125. return {
  126. depType, // 门急诊类型 1-门诊 2-急诊
  127. conditionIds, // 选中的key
  128. options: conditionOptions(filterCondition), // 树形节点数据
  129. defaultOpen: filterCondition.length > 0 ? [filterCondition[0].id]:[], // 默认展开的项
  130. }
  131. }
  132. // 构造查核组回显数据
  133. export const editCheckRent = ({checkGroup}) =>{
  134. let obj = checkGroup.find((item)=>item.selectFlag || item.selectFlag === 'true');
  135. return { // 查核组页面数据
  136. list: checkGroup,
  137. checkedItem: obj ? obj : {id: null}
  138. }
  139. }
  140. // 查核地图数据
  141. export const editCheckMap = ({checkDep}) =>{
  142. return { // 查核地图数据
  143. list: checkDep.map((item)=>{
  144. return {
  145. ...item,
  146. status: 'normal'
  147. }
  148. }).sort((a,b)=>{
  149. if(a.sort && b.sort)
  150. return a.sort - b.sort;
  151. }), // 列表数据
  152. actionItem: {id: '', pointList: []}, // 当前操作的列表项
  153. deptList: [], // 新增单位数据
  154. }
  155. }
  156. // 查核计划数据
  157. export const editCheckPlan = ({planConfig, planList}) =>{
  158. let checkedItem = checkPlanList.find((item)=>item.value === planConfig.frequency);
  159. return { // 查核计划
  160. checkedItem: checkedItem?checkedItem: {id: 'month', value: 2, label: '每月', model: 30}, // 选中的取模方式对象
  161. dateObj: { // 保存开始日期结束日期的对象
  162. start: planConfig.startDate,
  163. end: planConfig.endDate,
  164. dayNum: dateDiff(planConfig.startDat, planConfig.endDate) // 两个日期间隔的天数
  165. },
  166. checkList: planList.map((item)=>{
  167. return item.startDate
  168. }), // 核查计划数组
  169. }
  170. }
  171. // 预览数据
  172. export const editSituationPreview = ({name, remindPlanDay,remindPlanHour,remindCheckDay,situationType,subtotal,showNotApplicable,remindpointsetType,remingpreTotal}) => {
  173. return {
  174. sitName: name,
  175. preDay: remindPlanDay,
  176. preH: remindPlanHour,
  177. startDay: remindCheckDay,
  178. situationType:situationType,
  179. subtotal:subtotal,
  180. showNotApplicable:showNotApplicable,
  181. pointsetType:remindpointsetType ,//计分方式类型 add by yfb 20230417
  182. preTotal:remingpreTotal,
  183. }
  184. }
  185. // 判断两个数组全等
  186. export const arrayEquality = (arr1,arr2) =>{
  187. let flage = true;
  188. arr1.map((item, i)=>{
  189. if(item !== arr2[i]){
  190. flage = false;
  191. }
  192. });
  193. return flage;
  194. }