Ver código fonte

禁用和删除修改样式

zsw007 3 anos atrás
pai
commit
f3b0129e19
34 arquivos alterados com 16850 adições e 6 exclusões
  1. 758 0
      .history/src/api/cdss_20211018111219.js
  2. 758 0
      .history/src/api/cdss_20211018140846.js
  3. 678 0
      .history/src/components/cdssManage/plan/AddPlan_20211018114900.vue
  4. 686 0
      .history/src/components/cdssManage/plan/AddPlan_20211018134128.vue
  5. 686 0
      .history/src/components/cdssManage/plan/AddPlan_20211018134141.vue
  6. 686 0
      .history/src/components/cdssManage/plan/AddPlan_20211018134213.vue
  7. 678 0
      .history/src/components/cdssManage/plan/AddPlan_20211018134306.vue
  8. 530 0
      .history/src/components/cdssManage/plan/Plan_20211018114652.vue
  9. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018115212.vue
  10. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018141738.vue
  11. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018141822.vue
  12. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018141957.vue
  13. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018142119.vue
  14. 528 0
      .history/src/components/cdssManage/plan/Plan_20211018142214.vue
  15. 531 0
      .history/src/components/cdssManage/plan/Plan_20211018142844.vue
  16. 534 0
      .history/src/components/cdssManage/plan/Plan_20211018143127.vue
  17. 534 0
      .history/src/components/cdssManage/plan/Plan_20211018143149.vue
  18. 534 0
      .history/src/components/cdssManage/plan/Plan_20211018143357.vue
  19. 534 0
      .history/src/components/cdssManage/plan/Plan_20211018143458.vue
  20. 534 0
      .history/src/components/cdssManage/plan/Plan_20211018143531.vue
  21. 537 0
      .history/src/components/cdssManage/plan/Plan_20211018143630.vue
  22. 537 0
      .history/src/components/cdssManage/plan/Plan_20211018143700.vue
  23. 541 0
      .history/src/components/cdssManage/plan/Plan_20211018143831.vue
  24. 545 0
      .history/src/components/cdssManage/plan/Plan_20211018143853.vue
  25. 549 0
      .history/src/components/cdssManage/plan/Plan_20211018144002.vue
  26. 550 0
      .history/src/components/cdssManage/plan/Plan_20211018144040.vue
  27. 544 0
      .history/src/components/cdssManage/plan/Plan_20211018144121.vue
  28. 548 0
      .history/src/components/cdssManage/plan/Plan_20211018144153.vue
  29. 214 0
      .history/src/components/login/Login_20211009132456.vue
  30. 216 0
      .history/src/components/login/Login_20211018140038.vue
  31. 215 0
      .history/src/components/login/Login_20211018140154.vue
  32. 2 2
      src/api/cdss.js
  33. 22 4
      src/components/cdssManage/plan/Plan.vue
  34. 1 0
      src/components/login/Login.vue

+ 758 - 0
.history/src/api/cdss_20211018111219.js

@@ -0,0 +1,758 @@
+import axios from 'axios';
+import config from '@api/config.js';
+const urls = config.urls;
+function request(config) {
+  const instance = axios.create({
+    //baseURL: "http://192.168.2.121:7010",
+    timeout: 500000,
+    headers: {
+      'Content-Type': "application/json;charset=utf-8"
+    }
+  })
+  return instance(config)
+}
+
+export default {
+  getTremList(param) {
+    return axios.post(urls.getConceptKnowledgeCDSS, param);
+  },
+  getAllConcept(param) {
+    //医学术语--获取所有概念(标准术语)
+    return axios.post(urls.getAllConceptCDSS, param);
+  },
+  saveTermPrompts(param) {
+    return axios.post(urls.saveConceptInfoCDSS, param);
+  },
+
+  delLisMappingById(param) {
+    //医学数据-化验大小项与公表项维护-单个删除
+    return axios.post(urls.delLisMappingByIdCDSS, param);
+  },
+  getConceptInfoAssay(param) {
+    return axios.post(urls.getConceptInfoAssayCDSS, param); //化验子项-搜索术语
+  },
+  getAllLisConcept(param) {
+    //医学数据-化验大小项与公表项维护-获取所有化验公表项
+    return axios.post(urls.getAllLisConceptCDSS, param);
+  },
+  saveLisMapping(param) {
+    //医学数据-化验大小项与公表项维护-新增
+    return axios.post(urls.saveLisMappingCDSS, param);
+  },
+  hasLisMapping(param) {
+    //医学数据-化验大小项与公表项维护-化验公表项映射是否已存在
+    return axios.post(urls.hasLisMappingCDSS, param);
+  },
+  delConceptInfo(param) {
+    return axios.post(urls.delConceptInfoCDSS, param);
+  },
+  getConceptKnowledgeList(param) {
+    return axios.post(urls.getConceptKnowledgeListCDSS, param);
+  },
+
+
+
+
+  retrievalSearch(param) {
+    // 术语搜索
+    return axios.post(urls.retrievalSearchCDSS, param);
+  },
+  getLisMappingPage(param) {
+    //诊断列表-列表
+    return axios.post(urls.getLisMappingPageCDSS, param);
+  },
+  diseaseIsExistRecord(param) {
+    return axios.post(urls.diseaseIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDiseaseRecord(param) {
+    return axios.post(urls.saveOrUpdateDiseaseRecordCDSS, param);
+  },
+  deleteDiseaseRecord(param) {
+    return axios.post(urls.deleteDiseaseRecordCDSS, param);
+  },
+  exportDiseaseRecord(param) {
+    return axios.post(urls.exportDiseaseRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDiseaseRecord(param) {
+    return axios.post(urls.importDiseaseRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+  getLisPage(param) {
+    //检验列表-列表
+    return axios.post(urls.getLisPageCDSS, param);
+  },
+  lisIsExistRecord(param) {
+    return axios.post(urls.lisIsExistRecordCDSS, param);
+  },
+  saveOrUpdateLisRecord(param) {
+    return axios.post(urls.saveOrUpdateLisRecordCDSS, param);
+  },
+  deleteLisRecord(param) {
+    return axios.post(urls.deleteLisRecordCDSS, param);
+  },
+  exportLisRecord(param) {
+    return axios.post(urls.exportLisRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importLisRecord(param) {
+    return axios.post(urls.importLisRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getpacsPage(param) {
+    //检查列表-列表
+    return axios.post(urls.getpacsPageCDSS, param);
+  },
+  pacsIsExistRecord(param) {
+    return axios.post(urls.pacsIsExistRecordCDSS, param);
+  },
+  saveOrUpdatePacsRecord(param) {
+    return axios.post(urls.saveOrUpdatePacsRecordCDSS, param);
+  },
+  deletePacsRecord(param) {
+    return axios.post(urls.deletePacsRecordCDSS, param);
+  },
+  exportPacsRecord(param) {
+    return axios.post(urls.exportPacsRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importPacsRecord(param) {
+    return axios.post(urls.importPacsRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getDrugPage(param) {
+    //药品列表-列表
+    return axios.post(urls.getDrugPageCDSS, param);
+  },
+  drugIsExistRecord(param) {
+    return axios.post(urls.drugIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDrugRecord(param) {
+    return axios.post(urls.saveOrUpdateDrugRecordCDSS, param);
+  },
+  deleteDrugRecord(param) {
+    return axios.post(urls.deleteDrugRecordCDSS, param);
+  },
+  exportDrugRecord(param) {
+    return axios.post(urls.exportDrugRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDrugRecord(param) {
+    return axios.post(urls.importDrugRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getScalePage(param) {
+    //量表列表-列表
+    return axios.post(urls.getScalePageCDSS, param);
+  },
+  scaleIsExistRecord(param) {
+    return axios.post(urls.scaleIsExistRecordCDSS, param);
+  },
+  saveOrUpdateScaleRecord(param) {
+    return axios.post(urls.saveOrUpdateScaleRecordCDSS, param);
+  },
+  deleteScaleRecord(param) {
+    return axios.post(urls.deleteScaleRecordCDSS, param);
+  },
+  exportScaleRecord(param) {
+    return axios.post(urls.exportScaleRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importScaleRecord(param) {
+    return axios.post(urls.importScaleRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportScaleModule(param) {
+    return axios.post(urls.exportScaleModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  dataScaleVerify(param) {
+    return axios.post(urls.dataScaleVerify, param);
+  },
+  precScaleDataMatch(param) {
+    return axios.post(urls.precScaleDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getOperationPage(param) {
+    //手术/操作列表-列表
+    return axios.post(urls.getOperationPageCDSS, param);
+  },
+  operationIsExistRecord(param) {
+    return axios.post(urls.operationIsExistRecordCDSS, param);
+  },
+  saveOrUpdateOperationRecord(param) {
+    return axios.post(urls.saveOrUpdateOperationRecordCDSS, param);
+  },
+  deleteOperationRecord(param) {
+    return axios.post(urls.deleteOperationRecordCDSS, param);
+  },
+  exportOperationRecord(param) {
+    return axios.post(urls.exportOperationRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importOperationRecord(param) {
+    return axios.post(urls.importOperationRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getFusionPage(param) {
+    //输血列表-列表
+    return axios.post(urls.getFusionPageCDSS, param);
+  },
+  fusionIsExistRecord(param) {
+    return axios.post(urls.fusionIsExistRecordCDSS, param);
+  },
+  saveOrUpdateFusionRecord(param) {
+    return axios.post(urls.saveOrUpdateFusionRecordCDSS, param);
+  },
+  deleteFusionRecord(param) {
+    return axios.post(urls.deleteFusionRecordCDSS, param);
+  },
+  exportFusionRecord(param) {
+    return axios.post(urls.exportFusionRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importFusionRecord(param) {
+    return axios.post(urls.importFusionRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getDeptPage(param) {
+    //科室列表-列表
+    return axios.post(urls.getDeptPageCDSS, param);
+  },
+  deptIsExistRecord(param) {
+    return axios.post(urls.deptIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDeptRecord(param) {
+    return axios.post(urls.saveOrUpdateDeptRecordCDSS, param);
+  },
+  deleteDeptRecord(param) {
+    return axios.post(urls.deleteDeptRecordCDSS, param);
+  },
+  exportDeptRecord(param) {
+    return axios.post(urls.exportDeptRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDeptRecord(param) {
+    return axios.post(urls.importDeptRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportDeptModule(param) {
+    return axios.post(urls.exportDeptModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+  exportDiseaseModule(param) {
+    return axios.post(urls.exportDiseaseModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportLisModule(param) {
+    return axios.post(urls.exportLisModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportPacsModule(param) {
+    return axios.post(urls.exportPacsModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportDrugModule(param) {
+    return axios.post(urls.exportDrugModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportOperationModule(param) {
+    return axios.post(urls.exportOperationModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportFusionModule(param) {
+    return axios.post(urls.exportFusionModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getNursePage(param) {
+    //护理列表-列表
+    return axios.post(urls.getNursePage, param);
+  },
+  saveOrUpdateRecord(param) {
+    //护理列表添加
+    return axios.post(urls.saveOrUpdateRecord, param);
+  },
+  nurseIsExistRecord(param) {
+    //护理-映射关系是否已存在
+    return axios.post(urls.nurseIsExistRecord, param);
+  },
+  deleteNurseRecord(param) {
+    //护理-删除
+    return axios.post(urls.deleteNurseRecord, param);
+  },
+  exportNurseRecord(param) {
+    //护理-数据导出
+    return axios.post(urls.exportNurseRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importNurseRecord(param) {
+    //护理-数据导入
+    return axios.post(urls.importNurseRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  exportNurseModule(param) {
+    //护理-数据导入模板导出
+    return axios.post(urls.exportNurseModule, param, {
+      responseType: 'blob',
+    });
+  },
+  dataNurseVerify(param) {
+    return axios.post(urls.dataNurseVerify, param);
+  },
+  precNurseDataMatch(param) {
+    return axios.post(urls.precNurseDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getTcmdiseasePage(param) {
+    //中医疾病列表-列表
+    return axios.post(urls.getTcmdiseasePage, param);
+  },
+  tcmIsExistRecord(param) {
+    //中医疾病-映射关系是否已存在
+    return axios.post(urls.tcmIsExistRecord, param);
+  },
+  saveOrUpdateRecordTcm(param) {
+    //中医疾病-保存
+    return axios.post(urls.saveOrUpdateRecordTcm, param);
+  },
+  deleteTcmRecord(param) {
+    //中医疾病-删除
+    return axios.post(urls.deleteTcmRecord, param);
+  },
+  exportTcmRecord(param) {
+    //中医疾病-数据导出
+    return axios.post(urls.exportTcmRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importTcmRecord(param) {
+    //中医疾病-数据导入
+    return axios.post(urls.importTcmRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  dataTcmVerify(param) {
+    return axios.post(urls.dataTcmVerify, param);
+  },
+  precTcmDataMatch(param) {
+    return axios.post(urls.precTcmDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  exportTcmModule(param) {
+    //中医疾病-数据导入模板导出
+    return axios.post(urls.exportTcmModule, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+  getTcmsyndromePage(param) {
+    //中医症候列表-列表
+    return axios.post(urls.getTcmsyndromePage, param);
+  },
+
+  tcmdromeIsExistRecord(param) {
+    //中医症候-映射关系是否已存在
+    return axios.post(urls.tcmdromeIsExistRecord, param);
+  },
+  saveOrUpdateRecordTcmdrome(param) {
+    //中医症候-保存
+    return axios.post(urls.saveOrUpdateRecordTcmdrome, param);
+  },
+  deleteTcmdromeRecord(param) {
+    //中医症候-删除
+    return axios.post(urls.deleteTcmdromeRecord, param);
+  },
+  exportTcmdromeRecord(param) {
+    //中医症候-数据导出
+    return axios.post(urls.exportTcmdromeRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importTcmdromeRecord(param) {
+    //中医疾病-数据导入
+    return axios.post(urls.importTcmdromeRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  dataTcmdromeVerify(param) {
+    return axios.post(urls.dataTcmdromeVerify, param);
+  },
+  precTcmdromeDataMatch(param) {
+    return axios.post(urls.precTcmdromeDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  exportTcmdromeModule(param) {
+    //中医疾病-数据导入模板导出
+    return axios.post(urls.exportTcmdromeModule, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+
+
+
+  getHospitalInfo(param) {
+    return axios.post(urls.getHospitalInfoCDSS, param);
+  },
+  saveHospitalInfoRecord(param) {
+    return axios.post(urls.saveHospitalInfoRecordCDSS, param);
+  },
+
+
+  getPlanInfoPages(param) {
+    //分页获取方案配置信息
+    return axios.post(urls.getPlanInfoPagesCDSS, param);
+  },
+  getDefaultPlans(param) {
+    return axios.post(urls.getDefaultPlansCDSS, param);
+  },
+  savePlanInfoDatas(param) {
+    return axios.post(urls.savePlanInfoDatasCDSS, param);
+  },
+  cancelPlanDatas(param) {
+    return axios.post(urls.cancelPlanDatasCDSS, param);
+  },
+  getPlanInfoIds(param) {
+    return axios.post(urls.getPlanInfoIdsCDSS, param);
+  },
+  revStopPlans(param) {
+    return axios.post(urls.revStopPlansCDSS, param);
+  },
+
+
+
+  getMappingListPageCDSS(param) {
+    return axios.post(urls.getMappingListPageCDSS, param);
+  },
+  modifyConnectStatusCDSS(param) {
+    return axios.post(urls.modifyConnectStatusCDSS, param);
+  },
+  getHospitalPageCDSS(param) {
+    return axios.post(urls.getHospitalPageCDSS, param);
+  },
+  saveOrUpdateHosRecordCDSS(param) {
+    return axios.post(urls.saveOrUpdateHosRecordCDSS, param);
+  },
+  deleteHosRecordCDSS(param) {
+    return axios.post(urls.deleteHosRecordCDSS, param);
+  },
+  getUserRoleCDSS(param) {
+    return axios.post(urls.getUserRoleCDSS, param);
+  },
+  cancelUserRoleCDSS(param) {
+    return axios.post(urls.cancelUserRoleCDSS, param);
+  },
+  addUserRoleCDSS(param) {
+    return axios.post(urls.addUserRoleCDSS, param);
+  },
+  getVersionInfoAllsCDSS(param) {
+    return axios.post(urls.getVersionInfoAllsCDSS, param);
+  },
+  saveVersionInfoAllsCDSS(param) {
+    return axios.post(urls.saveVersionInfoAllsCDSS, param);
+  },
+  cancelVersionInfoAllsCDSS(param) {
+    return axios.post(urls.cancelVersionInfoAllsCDSS, param);
+  },
+  updateVersionInfoAllsCDSS(param) {
+    return axios.post(urls.updateVersionInfoAllsCDSS, param);
+  },
+  addVersionDetailsCDSS(param) {
+    return axios.post(urls.addVersionDetailsCDSS, param);
+  },
+  cancelVersionDetailsCDSS(param) {
+    return axios.post(urls.cancelVersionDetailsCDSS, param);
+  },
+  getDetailByIdCDSS(param) {
+    return axios.post(urls.getDetailByIdCDSS, param);
+  },
+  updateVersionDetailsCDSS(param) {
+    return axios.post(urls.updateVersionDetailsCDSS, param);
+  },
+
+  addDisclaimerInfosCDSS(param) {
+    return axios.post(urls.addDisclaimerInfosCDSS, param);
+  },
+  cancelDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.cancelDisclaimerInformationsCDSS, param);
+  },
+  endDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.endDisclaimerInformationsCDSS, param);
+  },
+  getDisclaimerPagesCDSS(param) {
+    return axios.post(urls.getDisclaimerPagesCDSS, param);
+  },
+  startDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.startDisclaimerInformationsCDSS, param);
+  },
+  updateDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.updateDisclaimerInformationsCDSS, param);
+  },
+  getKlmEnumsDataCDSS(param) {
+    return axios.post(urls.getKlmEnumsDataCDSS, param);
+  },
+  changeStatusCDSS(param) {
+    return axios.post(urls.changeStatusCDSS, param);
+  },
+  getListDicCDSS(param) {
+    return axios.post(urls.getListDicCDSS, param);
+  },
+
+
+
+  precDeptDataMatch(param) {
+    return axios.post(urls.precDeptDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precDrugDataMatch(param) {
+    return axios.post(urls.precDrugDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precDiseaseDataMatch(param) {
+    return axios.post(urls.precDiseaseDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precLisDataMatch(param) {
+    return axios.post(urls.precLisDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precPacsDataMatch(param) {
+    return axios.post(urls.precPacsDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precOperationDataMatch(param) {
+    return axios.post(urls.precOperationDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precFusionDataMatch(param) {
+    return axios.post(urls.precFusionDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  dataDeptVerify(param) {
+    return axios.post(urls.dataDeptVerify, param);
+  },
+  dataFusionVerify(param) {
+    return axios.post(urls.dataFusionVerify, param);
+  },
+  dataOperationVerify(param) {
+    return axios.post(urls.dataOperationVerify, param);
+  },
+  dataDrugVerify(param) {
+    return axios.post(urls.dataDrugVerify, param);
+  },
+  dataPacsVerify(param) {
+    return axios.post(urls.dataPacsVerify, param);
+  },
+  dataLisVerify(param) {
+    return axios.post(urls.dataLisVerify, param);
+  },
+  dataDiseaseVerify(param) {
+    return axios.post(urls.dataDiseaseVerify, param);
+  },
+
+  getEntityPageCDSS(param) {
+    return request({ method: 'post', url: urls.getEntityPageCDSS, data: param });
+  },
+  isEntitymanExistCDSS(param) {
+    return request({ method: 'post', url: urls.isEntitymanExistCDSS, data: param });
+  },
+  saveEntity(param) {
+    return request({ method: 'post', url: urls.saveEntity, data: param });
+  },
+  getEntitymanById(param) {
+    return request({ method: 'post', url: urls.getEntitymanById, data: param });
+  },
+  dataEntityVerify(param) {
+    return request({ method: 'post', url: urls.dataEntityVerify, data: param });
+  },
+  BatchUpdateHasInfoStatus(param) {
+    return request({ method: 'post', url: urls.BatchUpdateHasInfoStatus, data: param });
+  },
+
+  getCaseResultList(param) {
+    return axios.post(urls.getCaseResultList, param);
+  },
+  billRuleTest(param) {
+    return axios.post(urls.billRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultBillPage(param) {
+    return axios.post(urls.getResultBillPage, param);
+  },
+  ruleAllTest(param) {
+    return axios.post(urls.ruleAllTest, param);
+  },
+  exportRuleExcel(param) {
+    return axios.post(urls.exportRuleExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  criticalRuleTest(param) {
+    return axios.post(urls.criticalRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultCriticalPage(param) {
+    return axios.post(urls.getResultCriticalPage, param);
+  },
+  highRiskRuleTest(param) {
+    return axios.post(urls.highRiskRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultHighriskDrugPage(param) {
+    return axios.post(urls.getResultHighriskDrugPage, param);
+  },
+  otherRuleTest(param) {
+    return axios.post(urls.otherRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultHighriskOperationPage(param) {
+    return axios.post(urls.getResultHighriskOperationPage, param);
+  },
+  getResultOtherLisPage(param) {
+    return axios.post(urls.getResultOtherLisPage, param);
+  },
+  getResultOtherPacsPage(param) {
+    return axios.post(urls.getResultOtherPacsPage, param);
+  },
+  getResultOtherTransfusionPage(param) {
+    return axios.post(urls.getResultOtherTransfusionPage, param);
+  },
+  billExportExcel(param) {
+    return axios.post(urls.billExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  criticalExportExcel(param) {
+    return axios.post(urls.criticalExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  highriskDrugExportExcel(param) {
+    return axios.post(urls.highriskDrugExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  highriskOperationExportExcel(param) {
+    return axios.post(urls.highriskOperationExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherLisExportExcel(param) {
+    return axios.post(urls.otherLisExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherPacsExportExcel(param) {
+    return axios.post(urls.otherPacsExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherTransfusionExportExcel(param) {
+    return axios.post(urls.otherTransfusionExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticCommonExcel(param) {
+    return axios.post(urls.exportStaticCommonExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticCommonStaticExcel(param) {
+    return axios.post(urls.exportStaticCommonStaticExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticLisExcel(param) {
+    return axios.post(urls.exportStaticLisExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticLisStaticExcel(param) {
+    return axios.post(urls.exportStaticLisStaticExcel, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getStaticCaseResultList(param) {
+    return axios.post(urls.getStaticCaseResultList, param);
+  },
+  getStaticPage(param) {
+    return axios.post(urls.getStaticPage, param);
+  },
+  staticKnowledgeTest(param) {
+    return axios.post(urls.staticKnowledgeTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getRunningStatus(param) {
+    return axios.post(urls.getRunningStatus, param);
+  },
+  getRunningState(param) {
+    return axios.post(urls.getRunningState, param);
+  },
+  getRunningStatusByHospitalId(param) {
+    return axios.post(urls.getRunningStatusByHospitalId, param);
+  },
+  updateRunningStatus(param) {
+    return axios.post(urls.updateRunningStatus, param);
+  },
+
+  getRelatedMapping(param) {
+    //查询已映射关系
+    return axios.post(urls.getRelatedMapping, param);
+  },
+  getTermMatching(param) {
+    //推荐匹配
+    return axios.post(urls.getTermMatching, param);
+  },
+  importExcelDataVerify(param) {
+    //数据导入校验
+    return axios.post(urls.importExcelDataVerify, param);
+  },
+  getResetFildF(param) {
+    //数据导入校验
+    return axios.post(urls.getResetFildF, param);
+  },
+  getListBack(param) {    //禁用
+    return axios.post(urls.getListBack, param)
+},
+};

+ 758 - 0
.history/src/api/cdss_20211018140846.js

@@ -0,0 +1,758 @@
+import axios from 'axios';
+import config from '@api/config.js';
+const urls = config.urls;
+function request(config) {
+  const instance = axios.create({
+    //baseURL: "http://192.168.2.121:7010",
+    timeout: 500000,
+    headers: {
+      'Content-Type': "application/json;charset=utf-8"
+    }
+  })
+  return instance(config)
+}
+
+export default {
+  getTremList(param) {
+    return axios.post(urls.getConceptKnowledgeCDSS, param);
+  },
+  getAllConcept(param) {
+    //医学术语--获取所有概念(标准术语)
+    return axios.post(urls.getAllConceptCDSS, param);
+  },
+  saveTermPrompts(param) {
+    return axios.post(urls.saveConceptInfoCDSS, param);
+  },
+
+  delLisMappingById(param) {
+    //医学数据-化验大小项与公表项维护-单个删除
+    return axios.post(urls.delLisMappingByIdCDSS, param);
+  },
+  getConceptInfoAssay(param) { //化验子项-搜索术语
+    return axios.post(urls.getConceptInfoAssayCDSS, param); 
+  },
+  getAllLisConcept(param) {
+    //医学数据-化验大小项与公表项维护-获取所有化验公表项
+    return axios.post(urls.getAllLisConceptCDSS, param);
+  },
+  saveLisMapping(param) {
+    //医学数据-化验大小项与公表项维护-新增
+    return axios.post(urls.saveLisMappingCDSS, param);
+  },
+  hasLisMapping(param) {
+    //医学数据-化验大小项与公表项维护-化验公表项映射是否已存在
+    return axios.post(urls.hasLisMappingCDSS, param);
+  },
+  delConceptInfo(param) {
+    return axios.post(urls.delConceptInfoCDSS, param);
+  },
+  getConceptKnowledgeList(param) {
+    return axios.post(urls.getConceptKnowledgeListCDSS, param);
+  },
+
+
+
+
+  retrievalSearch(param) {
+    // 术语搜索
+    return axios.post(urls.retrievalSearchCDSS, param);
+  },
+  getLisMappingPage(param) {
+    //诊断列表-列表
+    return axios.post(urls.getLisMappingPageCDSS, param);
+  },
+  diseaseIsExistRecord(param) {
+    return axios.post(urls.diseaseIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDiseaseRecord(param) {
+    return axios.post(urls.saveOrUpdateDiseaseRecordCDSS, param);
+  },
+  deleteDiseaseRecord(param) {
+    return axios.post(urls.deleteDiseaseRecordCDSS, param);
+  },
+  exportDiseaseRecord(param) {
+    return axios.post(urls.exportDiseaseRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDiseaseRecord(param) {
+    return axios.post(urls.importDiseaseRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+  getLisPage(param) {
+    //检验列表-列表
+    return axios.post(urls.getLisPageCDSS, param);
+  },
+  lisIsExistRecord(param) {
+    return axios.post(urls.lisIsExistRecordCDSS, param);
+  },
+  saveOrUpdateLisRecord(param) {
+    return axios.post(urls.saveOrUpdateLisRecordCDSS, param);
+  },
+  deleteLisRecord(param) {
+    return axios.post(urls.deleteLisRecordCDSS, param);
+  },
+  exportLisRecord(param) {
+    return axios.post(urls.exportLisRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importLisRecord(param) {
+    return axios.post(urls.importLisRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getpacsPage(param) {
+    //检查列表-列表
+    return axios.post(urls.getpacsPageCDSS, param);
+  },
+  pacsIsExistRecord(param) {
+    return axios.post(urls.pacsIsExistRecordCDSS, param);
+  },
+  saveOrUpdatePacsRecord(param) {
+    return axios.post(urls.saveOrUpdatePacsRecordCDSS, param);
+  },
+  deletePacsRecord(param) {
+    return axios.post(urls.deletePacsRecordCDSS, param);
+  },
+  exportPacsRecord(param) {
+    return axios.post(urls.exportPacsRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importPacsRecord(param) {
+    return axios.post(urls.importPacsRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getDrugPage(param) {
+    //药品列表-列表
+    return axios.post(urls.getDrugPageCDSS, param);
+  },
+  drugIsExistRecord(param) {
+    return axios.post(urls.drugIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDrugRecord(param) {
+    return axios.post(urls.saveOrUpdateDrugRecordCDSS, param);
+  },
+  deleteDrugRecord(param) {
+    return axios.post(urls.deleteDrugRecordCDSS, param);
+  },
+  exportDrugRecord(param) {
+    return axios.post(urls.exportDrugRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDrugRecord(param) {
+    return axios.post(urls.importDrugRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getScalePage(param) {
+    //量表列表-列表
+    return axios.post(urls.getScalePageCDSS, param);
+  },
+  scaleIsExistRecord(param) {
+    return axios.post(urls.scaleIsExistRecordCDSS, param);
+  },
+  saveOrUpdateScaleRecord(param) {
+    return axios.post(urls.saveOrUpdateScaleRecordCDSS, param);
+  },
+  deleteScaleRecord(param) {
+    return axios.post(urls.deleteScaleRecordCDSS, param);
+  },
+  exportScaleRecord(param) {
+    return axios.post(urls.exportScaleRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importScaleRecord(param) {
+    return axios.post(urls.importScaleRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportScaleModule(param) {
+    return axios.post(urls.exportScaleModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  dataScaleVerify(param) {
+    return axios.post(urls.dataScaleVerify, param);
+  },
+  precScaleDataMatch(param) {
+    return axios.post(urls.precScaleDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getOperationPage(param) {
+    //手术/操作列表-列表
+    return axios.post(urls.getOperationPageCDSS, param);
+  },
+  operationIsExistRecord(param) {
+    return axios.post(urls.operationIsExistRecordCDSS, param);
+  },
+  saveOrUpdateOperationRecord(param) {
+    return axios.post(urls.saveOrUpdateOperationRecordCDSS, param);
+  },
+  deleteOperationRecord(param) {
+    return axios.post(urls.deleteOperationRecordCDSS, param);
+  },
+  exportOperationRecord(param) {
+    return axios.post(urls.exportOperationRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importOperationRecord(param) {
+    return axios.post(urls.importOperationRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getFusionPage(param) {
+    //输血列表-列表
+    return axios.post(urls.getFusionPageCDSS, param);
+  },
+  fusionIsExistRecord(param) {
+    return axios.post(urls.fusionIsExistRecordCDSS, param);
+  },
+  saveOrUpdateFusionRecord(param) {
+    return axios.post(urls.saveOrUpdateFusionRecordCDSS, param);
+  },
+  deleteFusionRecord(param) {
+    return axios.post(urls.deleteFusionRecordCDSS, param);
+  },
+  exportFusionRecord(param) {
+    return axios.post(urls.exportFusionRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importFusionRecord(param) {
+    return axios.post(urls.importFusionRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  getDeptPage(param) {
+    //科室列表-列表
+    return axios.post(urls.getDeptPageCDSS, param);
+  },
+  deptIsExistRecord(param) {
+    return axios.post(urls.deptIsExistRecordCDSS, param);
+  },
+  saveOrUpdateDeptRecord(param) {
+    return axios.post(urls.saveOrUpdateDeptRecordCDSS, param);
+  },
+  deleteDeptRecord(param) {
+    return axios.post(urls.deleteDeptRecordCDSS, param);
+  },
+  exportDeptRecord(param) {
+    return axios.post(urls.exportDeptRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  importDeptRecord(param) {
+    return axios.post(urls.importDeptRecordCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportDeptModule(param) {
+    return axios.post(urls.exportDeptModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+  exportDiseaseModule(param) {
+    return axios.post(urls.exportDiseaseModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportLisModule(param) {
+    return axios.post(urls.exportLisModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportPacsModule(param) {
+    return axios.post(urls.exportPacsModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportDrugModule(param) {
+    return axios.post(urls.exportDrugModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportOperationModule(param) {
+    return axios.post(urls.exportOperationModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+  exportFusionModule(param) {
+    return axios.post(urls.exportFusionModuleCDSS, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getNursePage(param) {
+    //护理列表-列表
+    return axios.post(urls.getNursePage, param);
+  },
+  saveOrUpdateRecord(param) {
+    //护理列表添加
+    return axios.post(urls.saveOrUpdateRecord, param);
+  },
+  nurseIsExistRecord(param) {
+    //护理-映射关系是否已存在
+    return axios.post(urls.nurseIsExistRecord, param);
+  },
+  deleteNurseRecord(param) {
+    //护理-删除
+    return axios.post(urls.deleteNurseRecord, param);
+  },
+  exportNurseRecord(param) {
+    //护理-数据导出
+    return axios.post(urls.exportNurseRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importNurseRecord(param) {
+    //护理-数据导入
+    return axios.post(urls.importNurseRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  exportNurseModule(param) {
+    //护理-数据导入模板导出
+    return axios.post(urls.exportNurseModule, param, {
+      responseType: 'blob',
+    });
+  },
+  dataNurseVerify(param) {
+    return axios.post(urls.dataNurseVerify, param);
+  },
+  precNurseDataMatch(param) {
+    return axios.post(urls.precNurseDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getTcmdiseasePage(param) {
+    //中医疾病列表-列表
+    return axios.post(urls.getTcmdiseasePage, param);
+  },
+  tcmIsExistRecord(param) {
+    //中医疾病-映射关系是否已存在
+    return axios.post(urls.tcmIsExistRecord, param);
+  },
+  saveOrUpdateRecordTcm(param) {
+    //中医疾病-保存
+    return axios.post(urls.saveOrUpdateRecordTcm, param);
+  },
+  deleteTcmRecord(param) {
+    //中医疾病-删除
+    return axios.post(urls.deleteTcmRecord, param);
+  },
+  exportTcmRecord(param) {
+    //中医疾病-数据导出
+    return axios.post(urls.exportTcmRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importTcmRecord(param) {
+    //中医疾病-数据导入
+    return axios.post(urls.importTcmRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  dataTcmVerify(param) {
+    return axios.post(urls.dataTcmVerify, param);
+  },
+  precTcmDataMatch(param) {
+    return axios.post(urls.precTcmDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  exportTcmModule(param) {
+    //中医疾病-数据导入模板导出
+    return axios.post(urls.exportTcmModule, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+  getTcmsyndromePage(param) {
+    //中医症候列表-列表
+    return axios.post(urls.getTcmsyndromePage, param);
+  },
+
+  tcmdromeIsExistRecord(param) {
+    //中医症候-映射关系是否已存在
+    return axios.post(urls.tcmdromeIsExistRecord, param);
+  },
+  saveOrUpdateRecordTcmdrome(param) {
+    //中医症候-保存
+    return axios.post(urls.saveOrUpdateRecordTcmdrome, param);
+  },
+  deleteTcmdromeRecord(param) {
+    //中医症候-删除
+    return axios.post(urls.deleteTcmdromeRecord, param);
+  },
+  exportTcmdromeRecord(param) {
+    //中医症候-数据导出
+    return axios.post(urls.exportTcmdromeRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  importTcmdromeRecord(param) {
+    //中医疾病-数据导入
+    return axios.post(urls.importTcmdromeRecord, param, {
+      responseType: 'blob',
+    });
+  },
+  dataTcmdromeVerify(param) {
+    return axios.post(urls.dataTcmdromeVerify, param);
+  },
+  precTcmdromeDataMatch(param) {
+    return axios.post(urls.precTcmdromeDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  exportTcmdromeModule(param) {
+    //中医疾病-数据导入模板导出
+    return axios.post(urls.exportTcmdromeModule, param, {
+      responseType: 'blob',
+    });
+  },
+
+
+
+
+
+  getHospitalInfo(param) {
+    return axios.post(urls.getHospitalInfoCDSS, param);
+  },
+  saveHospitalInfoRecord(param) {
+    return axios.post(urls.saveHospitalInfoRecordCDSS, param);
+  },
+
+
+  getPlanInfoPages(param) {
+    //分页获取方案配置信息
+    return axios.post(urls.getPlanInfoPagesCDSS, param);
+  },
+  getDefaultPlans(param) {
+    return axios.post(urls.getDefaultPlansCDSS, param);
+  },
+  savePlanInfoDatas(param) {
+    return axios.post(urls.savePlanInfoDatasCDSS, param);
+  },
+  cancelPlanDatas(param) {
+    return axios.post(urls.cancelPlanDatasCDSS, param);
+  },
+  getPlanInfoIds(param) {
+    return axios.post(urls.getPlanInfoIdsCDSS, param);
+  },
+  revStopPlans(param) {
+    return axios.post(urls.revStopPlansCDSS, param);
+  },
+
+
+
+  getMappingListPageCDSS(param) {
+    return axios.post(urls.getMappingListPageCDSS, param);
+  },
+  modifyConnectStatusCDSS(param) {
+    return axios.post(urls.modifyConnectStatusCDSS, param);
+  },
+  getHospitalPageCDSS(param) {
+    return axios.post(urls.getHospitalPageCDSS, param);
+  },
+  saveOrUpdateHosRecordCDSS(param) {
+    return axios.post(urls.saveOrUpdateHosRecordCDSS, param);
+  },
+  deleteHosRecordCDSS(param) {
+    return axios.post(urls.deleteHosRecordCDSS, param);
+  },
+  getUserRoleCDSS(param) {
+    return axios.post(urls.getUserRoleCDSS, param);
+  },
+  cancelUserRoleCDSS(param) {
+    return axios.post(urls.cancelUserRoleCDSS, param);
+  },
+  addUserRoleCDSS(param) {
+    return axios.post(urls.addUserRoleCDSS, param);
+  },
+  getVersionInfoAllsCDSS(param) {
+    return axios.post(urls.getVersionInfoAllsCDSS, param);
+  },
+  saveVersionInfoAllsCDSS(param) {
+    return axios.post(urls.saveVersionInfoAllsCDSS, param);
+  },
+  cancelVersionInfoAllsCDSS(param) {
+    return axios.post(urls.cancelVersionInfoAllsCDSS, param);
+  },
+  updateVersionInfoAllsCDSS(param) {
+    return axios.post(urls.updateVersionInfoAllsCDSS, param);
+  },
+  addVersionDetailsCDSS(param) {
+    return axios.post(urls.addVersionDetailsCDSS, param);
+  },
+  cancelVersionDetailsCDSS(param) {
+    return axios.post(urls.cancelVersionDetailsCDSS, param);
+  },
+  getDetailByIdCDSS(param) {
+    return axios.post(urls.getDetailByIdCDSS, param);
+  },
+  updateVersionDetailsCDSS(param) {
+    return axios.post(urls.updateVersionDetailsCDSS, param);
+  },
+
+  addDisclaimerInfosCDSS(param) {
+    return axios.post(urls.addDisclaimerInfosCDSS, param);
+  },
+  cancelDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.cancelDisclaimerInformationsCDSS, param);
+  },
+  endDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.endDisclaimerInformationsCDSS, param);
+  },
+  getDisclaimerPagesCDSS(param) {
+    return axios.post(urls.getDisclaimerPagesCDSS, param);
+  },
+  startDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.startDisclaimerInformationsCDSS, param);
+  },
+  updateDisclaimerInformationsCDSS(param) {
+    return axios.post(urls.updateDisclaimerInformationsCDSS, param);
+  },
+  getKlmEnumsDataCDSS(param) {
+    return axios.post(urls.getKlmEnumsDataCDSS, param);
+  },
+  changeStatusCDSS(param) {
+    return axios.post(urls.changeStatusCDSS, param);
+  },
+  getListDicCDSS(param) {
+    return axios.post(urls.getListDicCDSS, param);
+  },
+
+
+
+  precDeptDataMatch(param) {
+    return axios.post(urls.precDeptDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precDrugDataMatch(param) {
+    return axios.post(urls.precDrugDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precDiseaseDataMatch(param) {
+    return axios.post(urls.precDiseaseDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precLisDataMatch(param) {
+    return axios.post(urls.precLisDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precPacsDataMatch(param) {
+    return axios.post(urls.precPacsDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precOperationDataMatch(param) {
+    return axios.post(urls.precOperationDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  precFusionDataMatch(param) {
+    return axios.post(urls.precFusionDataMatch, param, {
+      responseType: 'blob',
+    });
+  },
+  dataDeptVerify(param) {
+    return axios.post(urls.dataDeptVerify, param);
+  },
+  dataFusionVerify(param) {
+    return axios.post(urls.dataFusionVerify, param);
+  },
+  dataOperationVerify(param) {
+    return axios.post(urls.dataOperationVerify, param);
+  },
+  dataDrugVerify(param) {
+    return axios.post(urls.dataDrugVerify, param);
+  },
+  dataPacsVerify(param) {
+    return axios.post(urls.dataPacsVerify, param);
+  },
+  dataLisVerify(param) {
+    return axios.post(urls.dataLisVerify, param);
+  },
+  dataDiseaseVerify(param) {
+    return axios.post(urls.dataDiseaseVerify, param);
+  },
+
+  getEntityPageCDSS(param) {
+    return request({ method: 'post', url: urls.getEntityPageCDSS, data: param });
+  },
+  isEntitymanExistCDSS(param) {
+    return request({ method: 'post', url: urls.isEntitymanExistCDSS, data: param });
+  },
+  saveEntity(param) {
+    return request({ method: 'post', url: urls.saveEntity, data: param });
+  },
+  getEntitymanById(param) {
+    return request({ method: 'post', url: urls.getEntitymanById, data: param });
+  },
+  dataEntityVerify(param) {
+    return request({ method: 'post', url: urls.dataEntityVerify, data: param });
+  },
+  BatchUpdateHasInfoStatus(param) {
+    return request({ method: 'post', url: urls.BatchUpdateHasInfoStatus, data: param });
+  },
+
+  getCaseResultList(param) {
+    return axios.post(urls.getCaseResultList, param);
+  },
+  billRuleTest(param) {
+    return axios.post(urls.billRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultBillPage(param) {
+    return axios.post(urls.getResultBillPage, param);
+  },
+  ruleAllTest(param) {
+    return axios.post(urls.ruleAllTest, param);
+  },
+  exportRuleExcel(param) {
+    return axios.post(urls.exportRuleExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  criticalRuleTest(param) {
+    return axios.post(urls.criticalRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultCriticalPage(param) {
+    return axios.post(urls.getResultCriticalPage, param);
+  },
+  highRiskRuleTest(param) {
+    return axios.post(urls.highRiskRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultHighriskDrugPage(param) {
+    return axios.post(urls.getResultHighriskDrugPage, param);
+  },
+  otherRuleTest(param) {
+    return axios.post(urls.otherRuleTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getResultHighriskOperationPage(param) {
+    return axios.post(urls.getResultHighriskOperationPage, param);
+  },
+  getResultOtherLisPage(param) {
+    return axios.post(urls.getResultOtherLisPage, param);
+  },
+  getResultOtherPacsPage(param) {
+    return axios.post(urls.getResultOtherPacsPage, param);
+  },
+  getResultOtherTransfusionPage(param) {
+    return axios.post(urls.getResultOtherTransfusionPage, param);
+  },
+  billExportExcel(param) {
+    return axios.post(urls.billExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  criticalExportExcel(param) {
+    return axios.post(urls.criticalExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  highriskDrugExportExcel(param) {
+    return axios.post(urls.highriskDrugExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  highriskOperationExportExcel(param) {
+    return axios.post(urls.highriskOperationExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherLisExportExcel(param) {
+    return axios.post(urls.otherLisExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherPacsExportExcel(param) {
+    return axios.post(urls.otherPacsExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  otherTransfusionExportExcel(param) {
+    return axios.post(urls.otherTransfusionExportExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticCommonExcel(param) {
+    return axios.post(urls.exportStaticCommonExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticCommonStaticExcel(param) {
+    return axios.post(urls.exportStaticCommonStaticExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticLisExcel(param) {
+    return axios.post(urls.exportStaticLisExcel, param, {
+      responseType: 'blob',
+    });
+  },
+  exportStaticLisStaticExcel(param) {
+    return axios.post(urls.exportStaticLisStaticExcel, param, {
+      responseType: 'blob',
+    });
+  },
+
+  getStaticCaseResultList(param) {
+    return axios.post(urls.getStaticCaseResultList, param);
+  },
+  getStaticPage(param) {
+    return axios.post(urls.getStaticPage, param);
+  },
+  staticKnowledgeTest(param) {
+    return axios.post(urls.staticKnowledgeTest, param, { timeout: 30 * 60 * 1000 });
+  },
+  getRunningStatus(param) {
+    return axios.post(urls.getRunningStatus, param);
+  },
+  getRunningState(param) {
+    return axios.post(urls.getRunningState, param);
+  },
+  getRunningStatusByHospitalId(param) {
+    return axios.post(urls.getRunningStatusByHospitalId, param);
+  },
+  updateRunningStatus(param) {
+    return axios.post(urls.updateRunningStatus, param);
+  },
+
+  getRelatedMapping(param) {
+    //查询已映射关系
+    return axios.post(urls.getRelatedMapping, param);
+  },
+  getTermMatching(param) {
+    //推荐匹配
+    return axios.post(urls.getTermMatching, param);
+  },
+  importExcelDataVerify(param) {
+    //数据导入校验
+    return axios.post(urls.importExcelDataVerify, param);
+  },
+  getResetFildF(param) {
+    //数据导入校验
+    return axios.post(urls.getResetFildF, param);
+  },
+  getListBack(param) {    //禁用
+    return axios.post(urls.getListBack, param)
+},
+};

+ 678 - 0
.history/src/components/cdssManage/plan/AddPlan_20211018114900.vue

@@ -0,0 +1,678 @@
+
+<style lang="less" scoped>
+.addPlanWrapper {
+  padding: 20px 60px 120px 60px;
+  margin: 70px 20px 0 20px;
+  background: #fff;
+  .topBack {
+    top: 0;
+    left: 0;
+  }
+  ul {
+    li {
+    }
+  }
+  .group_item {
+    border-bottom: 1px solid #eee;
+    .item_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #f2f2f2;
+      .title_left {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .handleIcon {
+          display: flex;
+          align-items: center;
+          margin: 0 5px;
+          cursor: pointer;
+          img {
+            width: 20px;
+            height: 20px;
+          }
+        }
+      }
+
+      .title_right {
+        .titlwSwitchStatus {
+          margin: 0 22px 0 16px;
+        }
+      }
+    }
+    ul {
+      li {
+        display: flex;
+        .move_btn {
+          display: flex;
+          height: 40px;
+          .move_top,
+          .move_down {
+            width: 30px;
+            .img_box {
+              width: 100%;
+              height: 100%;
+              display: flex;
+              justify-content: center;
+              align-items: center;
+            }
+            .ispointer {
+              cursor: pointer;
+            }
+            img {
+              width: 10px;
+              height: 14px;
+            }
+          }
+          .move_top {
+            img {
+              margin-top: -15px;
+            }
+          }
+        }
+        .list_item_title {
+          width: 140px;
+        }
+        .list_item_swich {
+          .planStatus {
+            margin-left: 16px;
+          }
+        }
+
+        .list_right {
+          // width: calc(100% - 60px);
+          flex: 1;
+          display: flex;
+          justify-content: space-between;
+          .right_l {
+            display: flex;
+            // width: calc(100% - 200px);
+          }
+          /deep/.el-input--small {
+            width: 60px;
+          }
+        }
+        .list_right1 {
+          width: calc(100%);
+        }
+      }
+    }
+  }
+  .open {
+    transform: rotate(0deg);
+    transition: transform 0.3s;
+  }
+  .close {
+    transform: rotate(180deg);
+    transition: transform 0.3s;
+  }
+  .plus-icon-enter-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-enter {
+    opacity: 0;
+  }
+  .plus-icon-leave-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-leave-active {
+    opacity: 0;
+  }
+}
+</style>
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="addPlanWrapper">
+      <crumbs
+        :title="
+          isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'
+        "
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <el-row>
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+            <el-form-item
+              label="医院名称"
+              class="selectMedicine"
+              prop="hospitalId"
+            >
+              <el-select
+                v-model="form.hospitalId"
+                placeholder="请选择"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in HospitalInfoList"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="方案名称" prop="planName">
+              <el-input
+                v-model="form.planName"
+                placeholder="2-30位,可输入汉字、字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案编码" prop="planCode">
+              <el-input
+                v-model="form.planCode"
+                placeholder="可输入字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案配置">
+              <div
+                class="group_item"
+                v-for="(group, i) in form.planDetailSub"
+                :key="group.id"
+              >
+                <div class="item_title">
+                  <div class="title_left">
+                    <div class="handleIcon" @click="listShow(i)">
+                      <img
+                        src="../../../images/multi.png"
+                        :alt="group.name"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
+                      />
+                    </div>
+                    <h4>{{ group.name }}</h4>
+                  </div>
+                  <div class="title_right">
+                    <el-switch
+                      v-model="group.status"
+                      :active-value="1"
+                      :inactive-value="0"
+                      active-color="#4BC4D7"
+                      inactive-color="#BBBBBB"
+                    ></el-switch>
+                    <span class="titlwSwitchStatus">{{
+                      group.status === 1 ? "启用中" : "未启用"
+                    }}</span>
+                  </div>
+                </div>
+                <transition name="plus-icon">
+                  <ul v-show="isOpenCloseItems[i]">
+                    <li
+                      v-for="(item, index) in group.planDetails"
+                      :key="item.id"
+                    >
+                      <div class="move_btn">
+                        <div class="move_top">
+                          <div
+                            class="img_box ispointer"
+                            v-if="index !== 0 && ismix(item.name)"
+                            @mouseover="upActive = index"
+                            @mouseout="upActive = null"
+                            @click="
+                              handleMove('up', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                upActive === index
+                                  ? require('../../../images/icon_hover_top.png')
+                                  : require('../../../images/icon_default_top.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                        <div class="move_down">
+                          <div
+                            class="img_box ispointer"
+                            v-if="
+                              index !== group.planDetails.length - 1 &&
+                              ismix(item.name)
+                            "
+                            @mouseover="downActive = index"
+                            @mouseout="downActive = null"
+                            @click="
+                              handleMove('down', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                downActive === index
+                                  ? require('../../../images/icon_hover_down.png')
+                                  : require('../../../images/icon_default_down.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                      </div>
+                      <div class="list_right" v-if="!item.list">
+                        <div class="list_right">
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ item.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="item.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                item.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="item.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="item.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="item.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-else style="width: 100%">
+                        <div
+                          class="list_right list_right1"
+                          v-for="child in item.list"
+                          :key="child.id"
+                        >
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ child.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="child.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                child.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="child.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="child.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="child.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                    </li>
+                  </ul>
+                </transition>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <div>
+                <el-button style="float: right" type="primary" @click="onSubmit"
+                  >确定</el-button
+                >
+              </div>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </el-scrollbar>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+export default {
+  name: "addPlan",
+  data() {
+    var numreg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
+    var numreg1 = /^[0-9a-zA-Z_]{1,}$/;
+    var validatePass = (rule, value, callback) => {
+      if (!numreg.test(value)) {
+        callback(new Error("汉字、字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    var validatePass1 = (rule, value, callback) => {
+      if (!numreg1.test(value)) {
+        callback(new Error("字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      upActive: null,
+      downActive: null,
+      isEdit: false,
+      hospitalId: null,
+      planCode:'',
+      codeArr: ['plan_default'],
+      form: {
+        hospitalId: "",
+        planName: "",
+        planCode: "",
+        planStatus: 1,
+        planDetailSub: []
+      },
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
+      rules: {
+        planName: [
+          { required: true, message: "方案名称不能为空", trigger: "change" },
+          { min: 2, max: 30, message: "长度2-30位", trigger: "blur" },
+          // { required: true, validator: validatePass, trigger: "blur" }
+        ],
+        hospitalId: [
+          { required: true, message: "医院名称不能为空", trigger: "change" }
+          // { min: 2, max: 30, message: '长度2-30位', trigger: 'blur' },
+          // { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        planCode: [
+          { required: true, message: "方案编码不能为空", trigger: "change" },
+          { required: true, validator: validatePass1, trigger: "blur" }
+        ]
+      },
+      HospitalInfoList: [], //医院下拉列表
+      mixArr: ["开单合理性", "高危", "危急值提醒", "其他提醒"],
+      newList: []
+    };
+  },
+  methods: {
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.planDetailParent = params.planDetailSub;
+          delete params.planDetailSub;
+          let arr = [];
+          let index = null;
+          params.planDetailParent[0].planDetails.forEach((item, i) => {
+            if (item.name === "开单合理性") {
+              arr.push(...item.list);
+              index = i;
+            }
+          });
+          params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+
+          params.planDetailParent = params.planDetailParent.map((item) => {
+            let newArr = [];
+            if (item.planDetails) {
+              newArr = item.planDetails.map((child) => {
+                return {
+                  code: child.code,
+                  hospitalId: this.form.hospitalId,
+                  name: child.name,
+                  number: child.number,
+                  orderNo: child.orderNo,
+                  planId: child.planId,
+                  remark: child.remark,
+                  status: child.status,
+                  value: child.value
+                };
+              });
+            }
+            return {
+              code: item.code,
+              hospitalId: this.form.hospitalId,
+              name: item.name,
+              number: item.number,
+              orderNo: item.orderNo,
+              planDetailSub: newArr,
+              status: item.status
+            };
+          });
+          api.savePlanInfoDatas(params).then((res) => {
+            if (res.data.code === "0") {
+              this.$message({
+                showClose: true,
+                message: "保存成功",
+                type: "success",
+                duration: 1000
+              });
+              this.isSaveSuccess = true; // 保存成功,可正常退出
+              this.$router.push({
+                name: "Plan",
+                params: Object.assign({}, this.$route.params, {
+                  currentPage: 1
+                })
+              });
+            } else if (res.data.code === "00020007") {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: "error",
+                duration: 1000
+              });
+            }
+            this.saveDisable = false;
+          });
+        }
+      });
+    },
+    ismix(val) {
+      const index = this.mixArr.findIndex((item) => item == val);
+      if (index <= 0) {
+        return true;
+      }
+      return false;
+    },
+    handleMove(type, obj) {
+      /**
+       * @params
+       *    type:up/down
+       *    obj:{
+       *      orderNo:当前点击项的orderNo,
+       *      itemIndex:当前点击项的index,
+       *      groupIndex:当前组的index
+       *    }
+       */
+      const { name, orderNo, itemIndex, groupIndex } = obj;
+      // exIndex获取到要交换的Index值
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
+      // exOrderNo获取到要交换的orderNo
+      const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+      // 赋值一份新的数据
+      let newList = JSON.parse(
+        JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
+      );
+      // 交换orderNo
+      newList[exIndex].orderNo = orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
+      }
+
+      // 排序
+      newList = this.groupSort(newList);
+      // 更新数据
+      this.form.planDetailSub[groupIndex].planDetails = newList;
+    },
+    // 获取医院下拉列表
+    getHospitalInfo() {
+      api.getHospitalInfo().then((res) => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+        }
+      });
+    },
+    // 初始化
+    fomatArr(data) {
+      let oneArr = JSON.parse(
+        JSON.stringify(data[0].planDetails)
+      );
+      let list = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j !== -1;
+      });
+      
+      let biglist = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j === -1;
+      });
+      
+      let obj = { list };
+      list.forEach((child) => {
+        if (child.name === "开单合理性") {
+          obj.orderNo = child.orderNo;
+          obj.name = child.name;
+          obj.id = child.id + "d";
+        }
+      });
+      biglist.push(obj);
+      this.form.planDetailSub[0].planDetails = this.groupSort(biglist);
+    },
+    getDefaultPlans() {
+      api.getDefaultPlans().then((res) => {
+        if (res.data.code === "0") {
+          this.form.planDetailSub = res.data.data.planDetailDefault;
+          this.fomatArr(res.data.data.planDetailDefault);
+        }
+      });
+    },
+    // 相应数组排序
+    groupSort(arr) {
+      if (Array.isArray(arr)) {
+        for (let i = arr.length - 1; i > 0; i--) {
+          for (let j = 0; j < i; j++) {
+            if (arr[j].orderNo > arr[j + 1].orderNo) {
+              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+            }
+          }
+        }
+        return arr;
+      }
+    },
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
+        if (res.data.code === "0") {
+          const obj = res.data.data[0];
+          const { data } = this.$route.params;
+          this.form = {
+            hospitalId: obj.hospitalId,
+            planName: obj.planName,
+            planCode: obj.planCode,
+            planStatus: obj.planStatus,
+            planDetailSub: obj.sysSetInfo,
+            id: data.id
+          };
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      if (!this.form.planDetailSub) {
+        this.form.planDetailSub = data;
+      }
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else if (!this.form.planDetailSub[oneIndex].planDetails) {
+          this.form.planDetailSub[oneIndex].planDetails = item.planDetails;
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails &&
+            item.planDetails.forEach((child) => {
+              const twoArr = this.form.planDetailSub[oneIndex].planDetails;
+              const childIndex = twoArr
+                ? twoArr.findIndex((it) => it.name === child.name)
+                : null;
+              // 第二层数据不存在,直接添加进去
+              if (childIndex && childIndex === -1) {
+                child.status = 0;
+                this.form.planDetailSub[oneIndex].planDetails.push(child);
+              }
+            });
+        }
+      });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr(newData);
+    }
+  },
+
+  created() {
+    // this.getHospitalInfo();
+    // this.getDefaultPlans();
+    const { isEdit, data, codeArr } = this.$route.params;
+
+    this.getHospitalInfo(); // 获取医院下拉列表
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      this.hospitalId = data.hospitalId
+      this.planCode = data.planCode
+      let params = {
+        hospitalId: data.hospitalId,
+        id: data.id
+      };
+      this.getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this.getDefaultPlans(); // 获取默认配置信息
+    }
+  }
+};
+</script>

+ 686 - 0
.history/src/components/cdssManage/plan/AddPlan_20211018134128.vue

@@ -0,0 +1,686 @@
+
+<style lang="less" scoped>
+.addPlanWrapper {
+  padding: 20px 60px 120px 60px;
+  margin: 70px 20px 0 20px;
+  background: #fff;
+  .topBack {
+    top: 0;
+    left: 0;
+  }
+  ul {
+    li {
+    }
+  }
+  .group_item {
+    border-bottom: 1px solid #eee;
+    .item_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #f2f2f2;
+      .title_left {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .handleIcon {
+          display: flex;
+          align-items: center;
+          margin: 0 5px;
+          cursor: pointer;
+          img {
+            width: 20px;
+            height: 20px;
+          }
+        }
+      }
+
+      .title_right {
+        .titlwSwitchStatus {
+          margin: 0 22px 0 16px;
+        }
+      }
+    }
+    ul {
+      li {
+        display: flex;
+        .move_btn {
+          display: flex;
+          height: 40px;
+          .move_top,
+          .move_down {
+            width: 30px;
+            .img_box {
+              width: 100%;
+              height: 100%;
+              display: flex;
+              justify-content: center;
+              align-items: center;
+            }
+            .ispointer {
+              cursor: pointer;
+            }
+            img {
+              width: 10px;
+              height: 14px;
+            }
+          }
+          .move_top {
+            img {
+              margin-top: -15px;
+            }
+          }
+        }
+        .list_item_title {
+          width: 140px;
+        }
+        .list_item_swich {
+          .planStatus {
+            margin-left: 16px;
+          }
+        }
+
+        .list_right {
+          // width: calc(100% - 60px);
+          flex: 1;
+          display: flex;
+          justify-content: space-between;
+          .right_l {
+            display: flex;
+            // width: calc(100% - 200px);
+          }
+          /deep/.el-input--small {
+            width: 60px;
+          }
+        }
+        .list_right1 {
+          width: calc(100%);
+        }
+      }
+    }
+  }
+  .open {
+    transform: rotate(0deg);
+    transition: transform 0.3s;
+  }
+  .close {
+    transform: rotate(180deg);
+    transition: transform 0.3s;
+  }
+  .plus-icon-enter-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-enter {
+    opacity: 0;
+  }
+  .plus-icon-leave-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-leave-active {
+    opacity: 0;
+  }
+}
+</style>
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="addPlanWrapper">
+      <crumbs
+        :title="
+          isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'
+        "
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <el-row>
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+            <el-form-item
+              label="医院名称"
+              class="selectMedicine"
+              prop="hospitalId"
+            >
+              <el-select
+                v-model="form.hospitalId"
+                placeholder="请选择"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in HospitalInfoList"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="方案名称" prop="planName">
+              <el-input
+                v-model="form.planName"
+                placeholder="2-30位,可输入汉字、字母、数字和下划线"
+                :disabled="codeDiabled"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案编码" prop="planCode">
+              <el-input
+                v-model="form.planCode"
+                placeholder="可输入字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案配置">
+              <div
+                class="group_item"
+                v-for="(group, i) in form.planDetailSub"
+                :key="group.id"
+              >
+                <div class="item_title">
+                  <div class="title_left">
+                    <div class="handleIcon" @click="listShow(i)">
+                      <img
+                        src="../../../images/multi.png"
+                        :alt="group.name"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
+                      />
+                    </div>
+                    <h4>{{ group.name }}</h4>
+                  </div>
+                  <div class="title_right">
+                    <el-switch
+                      v-model="group.status"
+                      :active-value="1"
+                      :inactive-value="0"
+                      active-color="#4BC4D7"
+                      inactive-color="#BBBBBB"
+                    ></el-switch>
+                    <span class="titlwSwitchStatus">{{
+                      group.status === 1 ? "启用中" : "未启用"
+                    }}</span>
+                  </div>
+                </div>
+                <transition name="plus-icon">
+                  <ul v-show="isOpenCloseItems[i]">
+                    <li
+                      v-for="(item, index) in group.planDetails"
+                      :key="item.id"
+                    >
+                      <div class="move_btn">
+                        <div class="move_top">
+                          <div
+                            class="img_box ispointer"
+                            v-if="index !== 0 && ismix(item.name)"
+                            @mouseover="upActive = index"
+                            @mouseout="upActive = null"
+                            @click="
+                              handleMove('up', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                upActive === index
+                                  ? require('../../../images/icon_hover_top.png')
+                                  : require('../../../images/icon_default_top.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                        <div class="move_down">
+                          <div
+                            class="img_box ispointer"
+                            v-if="
+                              index !== group.planDetails.length - 1 &&
+                              ismix(item.name)
+                            "
+                            @mouseover="downActive = index"
+                            @mouseout="downActive = null"
+                            @click="
+                              handleMove('down', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                downActive === index
+                                  ? require('../../../images/icon_hover_down.png')
+                                  : require('../../../images/icon_default_down.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                      </div>
+                      <div class="list_right" v-if="!item.list">
+                        <div class="list_right">
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ item.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="item.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                item.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="item.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="item.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="item.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-else style="width: 100%">
+                        <div
+                          class="list_right list_right1"
+                          v-for="child in item.list"
+                          :key="child.id"
+                        >
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ child.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="child.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                child.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="child.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="child.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="child.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                    </li>
+                  </ul>
+                </transition>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <div>
+                <el-button style="float: right" type="primary" @click="onSubmit"
+                  >确定</el-button
+                >
+              </div>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </el-scrollbar>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+export default {
+  name: "addPlan",
+  data() {
+    var numreg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
+    var numreg1 = /^[0-9a-zA-Z_]{1,}$/;
+    var validatePass = (rule, value, callback) => {
+      if (!numreg.test(value)) {
+        callback(new Error("汉字、字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    var validatePass1 = (rule, value, callback) => {
+      if (!numreg1.test(value)) {
+        callback(new Error("字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      upActive: null,
+      downActive: null,
+      isEdit: false,
+      hospitalId: null,
+      planCode:'',
+      codeArr: ['plan_default'],
+      isDisabled: true,
+      form: {
+        hospitalId: "",
+        planName: "",
+        planCode: "",
+        planStatus: 1,
+        planDetailSub: []
+      },
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
+      rules: {
+        planName: [
+          { required: true, message: "方案名称不能为空", trigger: "change" },
+          { min: 2, max: 30, message: "长度2-30位", trigger: "blur" },
+          // { required: true, validator: validatePass, trigger: "blur" }
+        ],
+        hospitalId: [
+          { required: true, message: "医院名称不能为空", trigger: "change" }
+          // { min: 2, max: 30, message: '长度2-30位', trigger: 'blur' },
+          // { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        planCode: [
+          { required: true, message: "方案编码不能为空", trigger: "change" },
+          { required: true, validator: validatePass1, trigger: "blur" }
+        ]
+      },
+      HospitalInfoList: [], //医院下拉列表
+      mixArr: ["开单合理性", "高危", "危急值提醒", "其他提醒"],
+      newList: []
+    };
+  },
+  computed: {
+    codeDiabled(){
+        if(codeArr.includes(planCode) && this.hospitalId == -1 ){
+            return this.isDisabled = true
+        }
+    }
+  },
+  methods: {
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.planDetailParent = params.planDetailSub;
+          delete params.planDetailSub;
+          let arr = [];
+          let index = null;
+          params.planDetailParent[0].planDetails.forEach((item, i) => {
+            if (item.name === "开单合理性") {
+              arr.push(...item.list);
+              index = i;
+            }
+          });
+          params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+
+          params.planDetailParent = params.planDetailParent.map((item) => {
+            let newArr = [];
+            if (item.planDetails) {
+              newArr = item.planDetails.map((child) => {
+                return {
+                  code: child.code,
+                  hospitalId: this.form.hospitalId,
+                  name: child.name,
+                  number: child.number,
+                  orderNo: child.orderNo,
+                  planId: child.planId,
+                  remark: child.remark,
+                  status: child.status,
+                  value: child.value
+                };
+              });
+            }
+            return {
+              code: item.code,
+              hospitalId: this.form.hospitalId,
+              name: item.name,
+              number: item.number,
+              orderNo: item.orderNo,
+              planDetailSub: newArr,
+              status: item.status
+            };
+          });
+          api.savePlanInfoDatas(params).then((res) => {
+            if (res.data.code === "0") {
+              this.$message({
+                showClose: true,
+                message: "保存成功",
+                type: "success",
+                duration: 1000
+              });
+              this.isSaveSuccess = true; // 保存成功,可正常退出
+              this.$router.push({
+                name: "Plan",
+                params: Object.assign({}, this.$route.params, {
+                  currentPage: 1
+                })
+              });
+            } else if (res.data.code === "00020007") {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: "error",
+                duration: 1000
+              });
+            }
+            this.saveDisable = false;
+          });
+        }
+      });
+    },
+    ismix(val) {
+      const index = this.mixArr.findIndex((item) => item == val);
+      if (index <= 0) {
+        return true;
+      }
+      return false;
+    },
+    handleMove(type, obj) {
+      /**
+       * @params
+       *    type:up/down
+       *    obj:{
+       *      orderNo:当前点击项的orderNo,
+       *      itemIndex:当前点击项的index,
+       *      groupIndex:当前组的index
+       *    }
+       */
+      const { name, orderNo, itemIndex, groupIndex } = obj;
+      // exIndex获取到要交换的Index值
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
+      // exOrderNo获取到要交换的orderNo
+      const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+      // 赋值一份新的数据
+      let newList = JSON.parse(
+        JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
+      );
+      // 交换orderNo
+      newList[exIndex].orderNo = orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
+      }
+
+      // 排序
+      newList = this.groupSort(newList);
+      // 更新数据
+      this.form.planDetailSub[groupIndex].planDetails = newList;
+    },
+    // 获取医院下拉列表
+    getHospitalInfo() {
+      api.getHospitalInfo().then((res) => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+        }
+      });
+    },
+    // 初始化
+    fomatArr(data) {
+      let oneArr = JSON.parse(
+        JSON.stringify(data[0].planDetails)
+      );
+      let list = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j !== -1;
+      });
+      
+      let biglist = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j === -1;
+      });
+      
+      let obj = { list };
+      list.forEach((child) => {
+        if (child.name === "开单合理性") {
+          obj.orderNo = child.orderNo;
+          obj.name = child.name;
+          obj.id = child.id + "d";
+        }
+      });
+      biglist.push(obj);
+      this.form.planDetailSub[0].planDetails = this.groupSort(biglist);
+    },
+    getDefaultPlans() {
+      api.getDefaultPlans().then((res) => {
+        if (res.data.code === "0") {
+          this.form.planDetailSub = res.data.data.planDetailDefault;
+          this.fomatArr(res.data.data.planDetailDefault);
+        }
+      });
+    },
+    // 相应数组排序
+    groupSort(arr) {
+      if (Array.isArray(arr)) {
+        for (let i = arr.length - 1; i > 0; i--) {
+          for (let j = 0; j < i; j++) {
+            if (arr[j].orderNo > arr[j + 1].orderNo) {
+              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+            }
+          }
+        }
+        return arr;
+      }
+    },
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
+        if (res.data.code === "0") {
+          const obj = res.data.data[0];
+          const { data } = this.$route.params;
+          this.form = {
+            hospitalId: obj.hospitalId,
+            planName: obj.planName,
+            planCode: obj.planCode,
+            planStatus: obj.planStatus,
+            planDetailSub: obj.sysSetInfo,
+            id: data.id
+          };
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      if (!this.form.planDetailSub) {
+        this.form.planDetailSub = data;
+      }
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else if (!this.form.planDetailSub[oneIndex].planDetails) {
+          this.form.planDetailSub[oneIndex].planDetails = item.planDetails;
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails &&
+            item.planDetails.forEach((child) => {
+              const twoArr = this.form.planDetailSub[oneIndex].planDetails;
+              const childIndex = twoArr
+                ? twoArr.findIndex((it) => it.name === child.name)
+                : null;
+              // 第二层数据不存在,直接添加进去
+              if (childIndex && childIndex === -1) {
+                child.status = 0;
+                this.form.planDetailSub[oneIndex].planDetails.push(child);
+              }
+            });
+        }
+      });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr(newData);
+    }
+  },
+
+  created() {
+    // this.getHospitalInfo();
+    // this.getDefaultPlans();
+    const { isEdit, data, codeArr } = this.$route.params;
+
+    this.getHospitalInfo(); // 获取医院下拉列表
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      this.hospitalId = data.hospitalId
+      this.planCode = data.planCode
+      let params = {
+        hospitalId: data.hospitalId,
+        id: data.id
+      };
+      this.getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this.getDefaultPlans(); // 获取默认配置信息
+    }
+  }
+};
+</script>

+ 686 - 0
.history/src/components/cdssManage/plan/AddPlan_20211018134141.vue

@@ -0,0 +1,686 @@
+
+<style lang="less" scoped>
+.addPlanWrapper {
+  padding: 20px 60px 120px 60px;
+  margin: 70px 20px 0 20px;
+  background: #fff;
+  .topBack {
+    top: 0;
+    left: 0;
+  }
+  ul {
+    li {
+    }
+  }
+  .group_item {
+    border-bottom: 1px solid #eee;
+    .item_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #f2f2f2;
+      .title_left {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .handleIcon {
+          display: flex;
+          align-items: center;
+          margin: 0 5px;
+          cursor: pointer;
+          img {
+            width: 20px;
+            height: 20px;
+          }
+        }
+      }
+
+      .title_right {
+        .titlwSwitchStatus {
+          margin: 0 22px 0 16px;
+        }
+      }
+    }
+    ul {
+      li {
+        display: flex;
+        .move_btn {
+          display: flex;
+          height: 40px;
+          .move_top,
+          .move_down {
+            width: 30px;
+            .img_box {
+              width: 100%;
+              height: 100%;
+              display: flex;
+              justify-content: center;
+              align-items: center;
+            }
+            .ispointer {
+              cursor: pointer;
+            }
+            img {
+              width: 10px;
+              height: 14px;
+            }
+          }
+          .move_top {
+            img {
+              margin-top: -15px;
+            }
+          }
+        }
+        .list_item_title {
+          width: 140px;
+        }
+        .list_item_swich {
+          .planStatus {
+            margin-left: 16px;
+          }
+        }
+
+        .list_right {
+          // width: calc(100% - 60px);
+          flex: 1;
+          display: flex;
+          justify-content: space-between;
+          .right_l {
+            display: flex;
+            // width: calc(100% - 200px);
+          }
+          /deep/.el-input--small {
+            width: 60px;
+          }
+        }
+        .list_right1 {
+          width: calc(100%);
+        }
+      }
+    }
+  }
+  .open {
+    transform: rotate(0deg);
+    transition: transform 0.3s;
+  }
+  .close {
+    transform: rotate(180deg);
+    transition: transform 0.3s;
+  }
+  .plus-icon-enter-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-enter {
+    opacity: 0;
+  }
+  .plus-icon-leave-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-leave-active {
+    opacity: 0;
+  }
+}
+</style>
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="addPlanWrapper">
+      <crumbs
+        :title="
+          isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'
+        "
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <el-row>
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+            <el-form-item
+              label="医院名称"
+              class="selectMedicine"
+              prop="hospitalId"
+            >
+              <el-select
+                v-model="form.hospitalId"
+                placeholder="请选择"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in HospitalInfoList"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="方案名称" prop="planName">
+              <el-input
+                v-model="form.planName"
+                placeholder="2-30位,可输入汉字、字母、数字和下划线"
+                :disabled="codeDiabled"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案编码" prop="planCode">
+              <el-input
+                v-model="form.planCode"
+                placeholder="可输入字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案配置">
+              <div
+                class="group_item"
+                v-for="(group, i) in form.planDetailSub"
+                :key="group.id"
+              >
+                <div class="item_title">
+                  <div class="title_left">
+                    <div class="handleIcon" @click="listShow(i)">
+                      <img
+                        src="../../../images/multi.png"
+                        :alt="group.name"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
+                      />
+                    </div>
+                    <h4>{{ group.name }}</h4>
+                  </div>
+                  <div class="title_right">
+                    <el-switch
+                      v-model="group.status"
+                      :active-value="1"
+                      :inactive-value="0"
+                      active-color="#4BC4D7"
+                      inactive-color="#BBBBBB"
+                    ></el-switch>
+                    <span class="titlwSwitchStatus">{{
+                      group.status === 1 ? "启用中" : "未启用"
+                    }}</span>
+                  </div>
+                </div>
+                <transition name="plus-icon">
+                  <ul v-show="isOpenCloseItems[i]">
+                    <li
+                      v-for="(item, index) in group.planDetails"
+                      :key="item.id"
+                    >
+                      <div class="move_btn">
+                        <div class="move_top">
+                          <div
+                            class="img_box ispointer"
+                            v-if="index !== 0 && ismix(item.name)"
+                            @mouseover="upActive = index"
+                            @mouseout="upActive = null"
+                            @click="
+                              handleMove('up', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                upActive === index
+                                  ? require('../../../images/icon_hover_top.png')
+                                  : require('../../../images/icon_default_top.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                        <div class="move_down">
+                          <div
+                            class="img_box ispointer"
+                            v-if="
+                              index !== group.planDetails.length - 1 &&
+                              ismix(item.name)
+                            "
+                            @mouseover="downActive = index"
+                            @mouseout="downActive = null"
+                            @click="
+                              handleMove('down', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                downActive === index
+                                  ? require('../../../images/icon_hover_down.png')
+                                  : require('../../../images/icon_default_down.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                      </div>
+                      <div class="list_right" v-if="!item.list">
+                        <div class="list_right">
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ item.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="item.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                item.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="item.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="item.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="item.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-else style="width: 100%">
+                        <div
+                          class="list_right list_right1"
+                          v-for="child in item.list"
+                          :key="child.id"
+                        >
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ child.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="child.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                child.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="child.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="child.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="child.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                    </li>
+                  </ul>
+                </transition>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <div>
+                <el-button style="float: right" type="primary" @click="onSubmit"
+                  >确定</el-button
+                >
+              </div>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </el-scrollbar>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+export default {
+  name: "addPlan",
+  data() {
+    var numreg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
+    var numreg1 = /^[0-9a-zA-Z_]{1,}$/;
+    var validatePass = (rule, value, callback) => {
+      if (!numreg.test(value)) {
+        callback(new Error("汉字、字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    var validatePass1 = (rule, value, callback) => {
+      if (!numreg1.test(value)) {
+        callback(new Error("字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      upActive: null,
+      downActive: null,
+      isEdit: false,
+      hospitalId: null,
+      planCode:'',
+      codeArr: ['plan_default'],
+      isDisabled: true,
+      form: {
+        hospitalId: "",
+        planName: "",
+        planCode: "",
+        planStatus: 1,
+        planDetailSub: []
+      },
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
+      rules: {
+        planName: [
+          { required: true, message: "方案名称不能为空", trigger: "change" },
+          { min: 2, max: 30, message: "长度2-30位", trigger: "blur" },
+          // { required: true, validator: validatePass, trigger: "blur" }
+        ],
+        hospitalId: [
+          { required: true, message: "医院名称不能为空", trigger: "change" }
+          // { min: 2, max: 30, message: '长度2-30位', trigger: 'blur' },
+          // { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        planCode: [
+          { required: true, message: "方案编码不能为空", trigger: "change" },
+          { required: true, validator: validatePass1, trigger: "blur" }
+        ]
+      },
+      HospitalInfoList: [], //医院下拉列表
+      mixArr: ["开单合理性", "高危", "危急值提醒", "其他提醒"],
+      newList: []
+    };
+  },
+  computed: {
+    codeDiabled(){
+        if(codeArr.includes(planCode) && this.hospitalId == -1 ){
+            return this.isDisabled = true
+        }
+    }
+  },
+  methods: {
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.planDetailParent = params.planDetailSub;
+          delete params.planDetailSub;
+          let arr = [];
+          let index = null;
+          params.planDetailParent[0].planDetails.forEach((item, i) => {
+            if (item.name === "开单合理性") {
+              arr.push(...item.list);
+              index = i;
+            }
+          });
+          params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+
+          params.planDetailParent = params.planDetailParent.map((item) => {
+            let newArr = [];
+            if (item.planDetails) {
+              newArr = item.planDetails.map((child) => {
+                return {
+                  code: child.code,
+                  hospitalId: this.form.hospitalId,
+                  name: child.name,
+                  number: child.number,
+                  orderNo: child.orderNo,
+                  planId: child.planId,
+                  remark: child.remark,
+                  status: child.status,
+                  value: child.value
+                };
+              });
+            }
+            return {
+              code: item.code,
+              hospitalId: this.form.hospitalId,
+              name: item.name,
+              number: item.number,
+              orderNo: item.orderNo,
+              planDetailSub: newArr,
+              status: item.status
+            };
+          });
+          api.savePlanInfoDatas(params).then((res) => {
+            if (res.data.code === "0") {
+              this.$message({
+                showClose: true,
+                message: "保存成功",
+                type: "success",
+                duration: 1000
+              });
+              this.isSaveSuccess = true; // 保存成功,可正常退出
+              this.$router.push({
+                name: "Plan",
+                params: Object.assign({}, this.$route.params, {
+                  currentPage: 1
+                })
+              });
+            } else if (res.data.code === "00020007") {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: "error",
+                duration: 1000
+              });
+            }
+            this.saveDisable = false;
+          });
+        }
+      });
+    },
+    ismix(val) {
+      const index = this.mixArr.findIndex((item) => item == val);
+      if (index <= 0) {
+        return true;
+      }
+      return false;
+    },
+    handleMove(type, obj) {
+      /**
+       * @params
+       *    type:up/down
+       *    obj:{
+       *      orderNo:当前点击项的orderNo,
+       *      itemIndex:当前点击项的index,
+       *      groupIndex:当前组的index
+       *    }
+       */
+      const { name, orderNo, itemIndex, groupIndex } = obj;
+      // exIndex获取到要交换的Index值
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
+      // exOrderNo获取到要交换的orderNo
+      const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+      // 赋值一份新的数据
+      let newList = JSON.parse(
+        JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
+      );
+      // 交换orderNo
+      newList[exIndex].orderNo = orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
+      }
+
+      // 排序
+      newList = this.groupSort(newList);
+      // 更新数据
+      this.form.planDetailSub[groupIndex].planDetails = newList;
+    },
+    // 获取医院下拉列表
+    getHospitalInfo() {
+      api.getHospitalInfo().then((res) => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+        }
+      });
+    },
+    // 初始化
+    fomatArr(data) {
+      let oneArr = JSON.parse(
+        JSON.stringify(data[0].planDetails)
+      );
+      let list = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j !== -1;
+      });
+      
+      let biglist = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j === -1;
+      });
+      
+      let obj = { list };
+      list.forEach((child) => {
+        if (child.name === "开单合理性") {
+          obj.orderNo = child.orderNo;
+          obj.name = child.name;
+          obj.id = child.id + "d";
+        }
+      });
+      biglist.push(obj);
+      this.form.planDetailSub[0].planDetails = this.groupSort(biglist);
+    },
+    getDefaultPlans() {
+      api.getDefaultPlans().then((res) => {
+        if (res.data.code === "0") {
+          this.form.planDetailSub = res.data.data.planDetailDefault;
+          this.fomatArr(res.data.data.planDetailDefault);
+        }
+      });
+    },
+    // 相应数组排序
+    groupSort(arr) {
+      if (Array.isArray(arr)) {
+        for (let i = arr.length - 1; i > 0; i--) {
+          for (let j = 0; j < i; j++) {
+            if (arr[j].orderNo > arr[j + 1].orderNo) {
+              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+            }
+          }
+        }
+        return arr;
+      }
+    },
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
+        if (res.data.code === "0") {
+          const obj = res.data.data[0];
+          const { data } = this.$route.params;
+          this.form = {
+            hospitalId: obj.hospitalId,
+            planName: obj.planName,
+            planCode: obj.planCode,
+            planStatus: obj.planStatus,
+            planDetailSub: obj.sysSetInfo,
+            id: data.id
+          };
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      if (!this.form.planDetailSub) {
+        this.form.planDetailSub = data;
+      }
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else if (!this.form.planDetailSub[oneIndex].planDetails) {
+          this.form.planDetailSub[oneIndex].planDetails = item.planDetails;
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails &&
+            item.planDetails.forEach((child) => {
+              const twoArr = this.form.planDetailSub[oneIndex].planDetails;
+              const childIndex = twoArr
+                ? twoArr.findIndex((it) => it.name === child.name)
+                : null;
+              // 第二层数据不存在,直接添加进去
+              if (childIndex && childIndex === -1) {
+                child.status = 0;
+                this.form.planDetailSub[oneIndex].planDetails.push(child);
+              }
+            });
+        }
+      });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr(newData);
+    }
+  },
+
+  created() {
+    // this.getHospitalInfo();
+    // this.getDefaultPlans();
+    const { isEdit, data, codeArr } = this.$route.params;
+
+    this.getHospitalInfo(); // 获取医院下拉列表
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      this.hospitalId = data.hospitalId
+      this.planCode = data.planCode
+      let params = {
+        hospitalId: data.hospitalId,
+        id: data.id
+      };
+      this.getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this.getDefaultPlans(); // 获取默认配置信息
+    }
+  }
+};
+</script>

+ 686 - 0
.history/src/components/cdssManage/plan/AddPlan_20211018134213.vue

@@ -0,0 +1,686 @@
+
+<style lang="less" scoped>
+.addPlanWrapper {
+  padding: 20px 60px 120px 60px;
+  margin: 70px 20px 0 20px;
+  background: #fff;
+  .topBack {
+    top: 0;
+    left: 0;
+  }
+  ul {
+    li {
+    }
+  }
+  .group_item {
+    border-bottom: 1px solid #eee;
+    .item_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #f2f2f2;
+      .title_left {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .handleIcon {
+          display: flex;
+          align-items: center;
+          margin: 0 5px;
+          cursor: pointer;
+          img {
+            width: 20px;
+            height: 20px;
+          }
+        }
+      }
+
+      .title_right {
+        .titlwSwitchStatus {
+          margin: 0 22px 0 16px;
+        }
+      }
+    }
+    ul {
+      li {
+        display: flex;
+        .move_btn {
+          display: flex;
+          height: 40px;
+          .move_top,
+          .move_down {
+            width: 30px;
+            .img_box {
+              width: 100%;
+              height: 100%;
+              display: flex;
+              justify-content: center;
+              align-items: center;
+            }
+            .ispointer {
+              cursor: pointer;
+            }
+            img {
+              width: 10px;
+              height: 14px;
+            }
+          }
+          .move_top {
+            img {
+              margin-top: -15px;
+            }
+          }
+        }
+        .list_item_title {
+          width: 140px;
+        }
+        .list_item_swich {
+          .planStatus {
+            margin-left: 16px;
+          }
+        }
+
+        .list_right {
+          // width: calc(100% - 60px);
+          flex: 1;
+          display: flex;
+          justify-content: space-between;
+          .right_l {
+            display: flex;
+            // width: calc(100% - 200px);
+          }
+          /deep/.el-input--small {
+            width: 60px;
+          }
+        }
+        .list_right1 {
+          width: calc(100%);
+        }
+      }
+    }
+  }
+  .open {
+    transform: rotate(0deg);
+    transition: transform 0.3s;
+  }
+  .close {
+    transform: rotate(180deg);
+    transition: transform 0.3s;
+  }
+  .plus-icon-enter-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-enter {
+    opacity: 0;
+  }
+  .plus-icon-leave-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-leave-active {
+    opacity: 0;
+  }
+}
+</style>
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="addPlanWrapper">
+      <crumbs
+        :title="
+          isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'
+        "
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <el-row>
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+            <el-form-item
+              label="医院名称"
+              class="selectMedicine"
+              prop="hospitalId"
+            >
+              <el-select
+                v-model="form.hospitalId"
+                placeholder="请选择"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in HospitalInfoList"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="方案名称" prop="planName">
+              <el-input
+                v-model="form.planName"
+                placeholder="2-30位,可输入汉字、字母、数字和下划线"
+                :disabled="codeDiabled"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案编码" prop="planCode">
+              <el-input
+                v-model="form.planCode"
+                placeholder="可输入字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案配置">
+              <div
+                class="group_item"
+                v-for="(group, i) in form.planDetailSub"
+                :key="group.id"
+              >
+                <div class="item_title">
+                  <div class="title_left">
+                    <div class="handleIcon" @click="listShow(i)">
+                      <img
+                        src="../../../images/multi.png"
+                        :alt="group.name"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
+                      />
+                    </div>
+                    <h4>{{ group.name }}</h4>
+                  </div>
+                  <div class="title_right">
+                    <el-switch
+                      v-model="group.status"
+                      :active-value="1"
+                      :inactive-value="0"
+                      active-color="#4BC4D7"
+                      inactive-color="#BBBBBB"
+                    ></el-switch>
+                    <span class="titlwSwitchStatus">{{
+                      group.status === 1 ? "启用中" : "未启用"
+                    }}</span>
+                  </div>
+                </div>
+                <transition name="plus-icon">
+                  <ul v-show="isOpenCloseItems[i]">
+                    <li
+                      v-for="(item, index) in group.planDetails"
+                      :key="item.id"
+                    >
+                      <div class="move_btn">
+                        <div class="move_top">
+                          <div
+                            class="img_box ispointer"
+                            v-if="index !== 0 && ismix(item.name)"
+                            @mouseover="upActive = index"
+                            @mouseout="upActive = null"
+                            @click="
+                              handleMove('up', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                upActive === index
+                                  ? require('../../../images/icon_hover_top.png')
+                                  : require('../../../images/icon_default_top.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                        <div class="move_down">
+                          <div
+                            class="img_box ispointer"
+                            v-if="
+                              index !== group.planDetails.length - 1 &&
+                              ismix(item.name)
+                            "
+                            @mouseover="downActive = index"
+                            @mouseout="downActive = null"
+                            @click="
+                              handleMove('down', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                downActive === index
+                                  ? require('../../../images/icon_hover_down.png')
+                                  : require('../../../images/icon_default_down.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                      </div>
+                      <div class="list_right" v-if="!item.list">
+                        <div class="list_right">
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ item.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="item.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                item.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="item.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="item.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="item.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-else style="width: 100%">
+                        <div
+                          class="list_right list_right1"
+                          v-for="child in item.list"
+                          :key="child.id"
+                        >
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ child.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="child.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                child.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="child.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="child.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="child.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                    </li>
+                  </ul>
+                </transition>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <div>
+                <el-button style="float: right" type="primary" @click="onSubmit"
+                  >确定</el-button
+                >
+              </div>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </el-scrollbar>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+export default {
+  name: "addPlan",
+  data() {
+    var numreg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
+    var numreg1 = /^[0-9a-zA-Z_]{1,}$/;
+    var validatePass = (rule, value, callback) => {
+      if (!numreg.test(value)) {
+        callback(new Error("汉字、字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    var validatePass1 = (rule, value, callback) => {
+      if (!numreg1.test(value)) {
+        callback(new Error("字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      upActive: null,
+      downActive: null,
+      isEdit: false,
+      hospitalId: null,
+      planCode:'',
+      codeArr: ['plan_default'],
+      isDisabled: true,
+      form: {
+        hospitalId: "",
+        planName: "",
+        planCode: "",
+        planStatus: 1,
+        planDetailSub: []
+      },
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
+      rules: {
+        planName: [
+          { required: true, message: "方案名称不能为空", trigger: "change" },
+          { min: 2, max: 30, message: "长度2-30位", trigger: "blur" },
+          // { required: true, validator: validatePass, trigger: "blur" }
+        ],
+        hospitalId: [
+          { required: true, message: "医院名称不能为空", trigger: "change" }
+          // { min: 2, max: 30, message: '长度2-30位', trigger: 'blur' },
+          // { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        planCode: [
+          { required: true, message: "方案编码不能为空", trigger: "change" },
+          { required: true, validator: validatePass1, trigger: "blur" }
+        ]
+      },
+      HospitalInfoList: [], //医院下拉列表
+      mixArr: ["开单合理性", "高危", "危急值提醒", "其他提醒"],
+      newList: []
+    };
+  },
+  computed: {
+    codeDiabled(){
+        if(this.codeArr.includes(planCode) && this.hospitalId == -1 ){
+            return this.isDisabled = true
+        }
+    }
+  },
+  methods: {
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.planDetailParent = params.planDetailSub;
+          delete params.planDetailSub;
+          let arr = [];
+          let index = null;
+          params.planDetailParent[0].planDetails.forEach((item, i) => {
+            if (item.name === "开单合理性") {
+              arr.push(...item.list);
+              index = i;
+            }
+          });
+          params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+
+          params.planDetailParent = params.planDetailParent.map((item) => {
+            let newArr = [];
+            if (item.planDetails) {
+              newArr = item.planDetails.map((child) => {
+                return {
+                  code: child.code,
+                  hospitalId: this.form.hospitalId,
+                  name: child.name,
+                  number: child.number,
+                  orderNo: child.orderNo,
+                  planId: child.planId,
+                  remark: child.remark,
+                  status: child.status,
+                  value: child.value
+                };
+              });
+            }
+            return {
+              code: item.code,
+              hospitalId: this.form.hospitalId,
+              name: item.name,
+              number: item.number,
+              orderNo: item.orderNo,
+              planDetailSub: newArr,
+              status: item.status
+            };
+          });
+          api.savePlanInfoDatas(params).then((res) => {
+            if (res.data.code === "0") {
+              this.$message({
+                showClose: true,
+                message: "保存成功",
+                type: "success",
+                duration: 1000
+              });
+              this.isSaveSuccess = true; // 保存成功,可正常退出
+              this.$router.push({
+                name: "Plan",
+                params: Object.assign({}, this.$route.params, {
+                  currentPage: 1
+                })
+              });
+            } else if (res.data.code === "00020007") {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: "error",
+                duration: 1000
+              });
+            }
+            this.saveDisable = false;
+          });
+        }
+      });
+    },
+    ismix(val) {
+      const index = this.mixArr.findIndex((item) => item == val);
+      if (index <= 0) {
+        return true;
+      }
+      return false;
+    },
+    handleMove(type, obj) {
+      /**
+       * @params
+       *    type:up/down
+       *    obj:{
+       *      orderNo:当前点击项的orderNo,
+       *      itemIndex:当前点击项的index,
+       *      groupIndex:当前组的index
+       *    }
+       */
+      const { name, orderNo, itemIndex, groupIndex } = obj;
+      // exIndex获取到要交换的Index值
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
+      // exOrderNo获取到要交换的orderNo
+      const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+      // 赋值一份新的数据
+      let newList = JSON.parse(
+        JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
+      );
+      // 交换orderNo
+      newList[exIndex].orderNo = orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
+      }
+
+      // 排序
+      newList = this.groupSort(newList);
+      // 更新数据
+      this.form.planDetailSub[groupIndex].planDetails = newList;
+    },
+    // 获取医院下拉列表
+    getHospitalInfo() {
+      api.getHospitalInfo().then((res) => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+        }
+      });
+    },
+    // 初始化
+    fomatArr(data) {
+      let oneArr = JSON.parse(
+        JSON.stringify(data[0].planDetails)
+      );
+      let list = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j !== -1;
+      });
+      
+      let biglist = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j === -1;
+      });
+      
+      let obj = { list };
+      list.forEach((child) => {
+        if (child.name === "开单合理性") {
+          obj.orderNo = child.orderNo;
+          obj.name = child.name;
+          obj.id = child.id + "d";
+        }
+      });
+      biglist.push(obj);
+      this.form.planDetailSub[0].planDetails = this.groupSort(biglist);
+    },
+    getDefaultPlans() {
+      api.getDefaultPlans().then((res) => {
+        if (res.data.code === "0") {
+          this.form.planDetailSub = res.data.data.planDetailDefault;
+          this.fomatArr(res.data.data.planDetailDefault);
+        }
+      });
+    },
+    // 相应数组排序
+    groupSort(arr) {
+      if (Array.isArray(arr)) {
+        for (let i = arr.length - 1; i > 0; i--) {
+          for (let j = 0; j < i; j++) {
+            if (arr[j].orderNo > arr[j + 1].orderNo) {
+              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+            }
+          }
+        }
+        return arr;
+      }
+    },
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
+        if (res.data.code === "0") {
+          const obj = res.data.data[0];
+          const { data } = this.$route.params;
+          this.form = {
+            hospitalId: obj.hospitalId,
+            planName: obj.planName,
+            planCode: obj.planCode,
+            planStatus: obj.planStatus,
+            planDetailSub: obj.sysSetInfo,
+            id: data.id
+          };
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      if (!this.form.planDetailSub) {
+        this.form.planDetailSub = data;
+      }
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else if (!this.form.planDetailSub[oneIndex].planDetails) {
+          this.form.planDetailSub[oneIndex].planDetails = item.planDetails;
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails &&
+            item.planDetails.forEach((child) => {
+              const twoArr = this.form.planDetailSub[oneIndex].planDetails;
+              const childIndex = twoArr
+                ? twoArr.findIndex((it) => it.name === child.name)
+                : null;
+              // 第二层数据不存在,直接添加进去
+              if (childIndex && childIndex === -1) {
+                child.status = 0;
+                this.form.planDetailSub[oneIndex].planDetails.push(child);
+              }
+            });
+        }
+      });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr(newData);
+    }
+  },
+
+  created() {
+    // this.getHospitalInfo();
+    // this.getDefaultPlans();
+    const { isEdit, data, codeArr } = this.$route.params;
+
+    this.getHospitalInfo(); // 获取医院下拉列表
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      this.hospitalId = data.hospitalId
+      this.planCode = data.planCode
+      let params = {
+        hospitalId: data.hospitalId,
+        id: data.id
+      };
+      this.getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this.getDefaultPlans(); // 获取默认配置信息
+    }
+  }
+};
+</script>

+ 678 - 0
.history/src/components/cdssManage/plan/AddPlan_20211018134306.vue

@@ -0,0 +1,678 @@
+
+<style lang="less" scoped>
+.addPlanWrapper {
+  padding: 20px 60px 120px 60px;
+  margin: 70px 20px 0 20px;
+  background: #fff;
+  .topBack {
+    top: 0;
+    left: 0;
+  }
+  ul {
+    li {
+    }
+  }
+  .group_item {
+    border-bottom: 1px solid #eee;
+    .item_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #f2f2f2;
+      .title_left {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .handleIcon {
+          display: flex;
+          align-items: center;
+          margin: 0 5px;
+          cursor: pointer;
+          img {
+            width: 20px;
+            height: 20px;
+          }
+        }
+      }
+
+      .title_right {
+        .titlwSwitchStatus {
+          margin: 0 22px 0 16px;
+        }
+      }
+    }
+    ul {
+      li {
+        display: flex;
+        .move_btn {
+          display: flex;
+          height: 40px;
+          .move_top,
+          .move_down {
+            width: 30px;
+            .img_box {
+              width: 100%;
+              height: 100%;
+              display: flex;
+              justify-content: center;
+              align-items: center;
+            }
+            .ispointer {
+              cursor: pointer;
+            }
+            img {
+              width: 10px;
+              height: 14px;
+            }
+          }
+          .move_top {
+            img {
+              margin-top: -15px;
+            }
+          }
+        }
+        .list_item_title {
+          width: 140px;
+        }
+        .list_item_swich {
+          .planStatus {
+            margin-left: 16px;
+          }
+        }
+
+        .list_right {
+          // width: calc(100% - 60px);
+          flex: 1;
+          display: flex;
+          justify-content: space-between;
+          .right_l {
+            display: flex;
+            // width: calc(100% - 200px);
+          }
+          /deep/.el-input--small {
+            width: 60px;
+          }
+        }
+        .list_right1 {
+          width: calc(100%);
+        }
+      }
+    }
+  }
+  .open {
+    transform: rotate(0deg);
+    transition: transform 0.3s;
+  }
+  .close {
+    transform: rotate(180deg);
+    transition: transform 0.3s;
+  }
+  .plus-icon-enter-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-enter {
+    opacity: 0;
+  }
+  .plus-icon-leave-active {
+    transition: all 0.3s;
+  }
+  .plus-icon-leave-active {
+    opacity: 0;
+  }
+}
+</style>
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="addPlanWrapper">
+      <crumbs
+        :title="
+          isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'
+        "
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <el-row>
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+            <el-form-item
+              label="医院名称"
+              class="selectMedicine"
+              prop="hospitalId"
+            >
+              <el-select
+                v-model="form.hospitalId"
+                placeholder="请选择"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in HospitalInfoList"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="方案名称" prop="planName">
+              <el-input
+                v-model="form.planName"
+                placeholder="2-30位,可输入汉字、字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案编码" prop="planCode">
+              <el-input
+                v-model="form.planCode"
+                placeholder="可输入字母、数字和下划线"
+                :disabled="codeArr.includes(planCode)"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="方案配置">
+              <div
+                class="group_item"
+                v-for="(group, i) in form.planDetailSub"
+                :key="group.id"
+              >
+                <div class="item_title">
+                  <div class="title_left">
+                    <div class="handleIcon" @click="listShow(i)">
+                      <img
+                        src="../../../images/multi.png"
+                        :alt="group.name"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
+                      />
+                    </div>
+                    <h4>{{ group.name }}</h4>
+                  </div>
+                  <div class="title_right">
+                    <el-switch
+                      v-model="group.status"
+                      :active-value="1"
+                      :inactive-value="0"
+                      active-color="#4BC4D7"
+                      inactive-color="#BBBBBB"
+                    ></el-switch>
+                    <span class="titlwSwitchStatus">{{
+                      group.status === 1 ? "启用中" : "未启用"
+                    }}</span>
+                  </div>
+                </div>
+                <transition name="plus-icon">
+                  <ul v-show="isOpenCloseItems[i]">
+                    <li
+                      v-for="(item, index) in group.planDetails"
+                      :key="item.id"
+                    >
+                      <div class="move_btn">
+                        <div class="move_top">
+                          <div
+                            class="img_box ispointer"
+                            v-if="index !== 0 && ismix(item.name)"
+                            @mouseover="upActive = index"
+                            @mouseout="upActive = null"
+                            @click="
+                              handleMove('up', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                upActive === index
+                                  ? require('../../../images/icon_hover_top.png')
+                                  : require('../../../images/icon_default_top.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                        <div class="move_down">
+                          <div
+                            class="img_box ispointer"
+                            v-if="
+                              index !== group.planDetails.length - 1 &&
+                              ismix(item.name)
+                            "
+                            @mouseover="downActive = index"
+                            @mouseout="downActive = null"
+                            @click="
+                              handleMove('down', {
+                                name: item.name,
+                                orderNo: item.orderNo,
+                                groupIndex: i,
+                                itemIndex: index
+                              })
+                            "
+                          >
+                            <img
+                              :src="
+                                downActive === index
+                                  ? require('../../../images/icon_hover_down.png')
+                                  : require('../../../images/icon_default_down.png')
+                              "
+                            />
+                          </div>
+                          <div class="img_box" v-else></div>
+                        </div>
+                      </div>
+                      <div class="list_right" v-if="!item.list">
+                        <div class="list_right">
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ item.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="item.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                item.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="item.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="item.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="item.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-else style="width: 100%">
+                        <div
+                          class="list_right list_right1"
+                          v-for="child in item.list"
+                          :key="child.id"
+                        >
+                          <div class="right_l">
+                            <div class="list_item_title">
+                              {{ child.name }}
+                            </div>
+                            <div class="list_item_swich">
+                              <el-switch
+                                v-model="child.status"
+                                :active-value="1"
+                                :inactive-value="0"
+                                active-color="#4BC4D7"
+                                inactive-color="#BBBBBB"
+                              ></el-switch>
+                              <span class="planStatus">{{
+                                child.status === 1 ? "启用中" : "未启用"
+                              }}</span>
+                            </div>
+                          </div>
+                          <div v-if="child.number">
+                            <span style="margin-right: 8px">默认显示个数</span>
+                            <el-select
+                              v-model="child.number"
+                              placeholder="请选择"
+                              size="small"
+                              :disabled="child.status !== 1 ? true : false"
+                            >
+                              <el-option label="1" :value="1"></el-option>
+                              <el-option label="2" :value="2"></el-option>
+                              <el-option label="3" :value="3"></el-option>
+                              <el-option label="4" :value="4"></el-option>
+                              <el-option label="5" :value="5"></el-option>
+                              <el-option label="6" :value="6"></el-option>
+                            </el-select>
+                          </div>
+                        </div>
+                      </div>
+                    </li>
+                  </ul>
+                </transition>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <div>
+                <el-button style="float: right" type="primary" @click="onSubmit"
+                  >确定</el-button
+                >
+              </div>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </el-scrollbar>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+export default {
+  name: "addPlan",
+  data() {
+    var numreg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
+    var numreg1 = /^[0-9a-zA-Z_]{1,}$/;
+    var validatePass = (rule, value, callback) => {
+      if (!numreg.test(value)) {
+        callback(new Error("汉字、字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    var validatePass1 = (rule, value, callback) => {
+      if (!numreg1.test(value)) {
+        callback(new Error("字母、数字和下划线"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      upActive: null,
+      downActive: null,
+      isEdit: false,
+      hospitalId: null,
+      planCode:'',
+      codeArr: ['plan_default'],
+      form: {
+        hospitalId: "",
+        planName: "",
+        planCode: "",
+        planStatus: 1,
+        planDetailSub: []
+      },
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
+      rules: {
+        planName: [
+          { required: true, message: "方案名称不能为空", trigger: "change" },
+          { min: 2, max: 30, message: "长度2-30位", trigger: "blur" },
+          // { required: true, validator: validatePass, trigger: "blur" }
+        ],
+        hospitalId: [
+          { required: true, message: "医院名称不能为空", trigger: "change" }
+          // { min: 2, max: 30, message: '长度2-30位', trigger: 'blur' },
+          // { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        planCode: [
+          { required: true, message: "方案编码不能为空", trigger: "change" },
+          { required: true, validator: validatePass1, trigger: "blur" }
+        ]
+      },
+      HospitalInfoList: [], //医院下拉列表
+      mixArr: ["开单合理性", "高危", "危急值提醒", "其他提醒"],
+      newList: []
+    };
+  },
+  methods: {
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let params = JSON.parse(JSON.stringify(this.form));
+          params.planDetailParent = params.planDetailSub;
+          delete params.planDetailSub;
+          let arr = [];
+          let index = null;
+          params.planDetailParent[0].planDetails.forEach((item, i) => {
+            if (item.name === "开单合理性") {
+              arr.push(...item.list);
+              index = i;
+            }
+          });
+          params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+
+          params.planDetailParent = params.planDetailParent.map((item) => {
+            let newArr = [];
+            if (item.planDetails) {
+              newArr = item.planDetails.map((child) => {
+                return {
+                  code: child.code,
+                  hospitalId: this.form.hospitalId,
+                  name: child.name,
+                  number: child.number,
+                  orderNo: child.orderNo,
+                  planId: child.planId,
+                  remark: child.remark,
+                  status: child.status,
+                  value: child.value
+                };
+              });
+            }
+            return {
+              code: item.code,
+              hospitalId: this.form.hospitalId,
+              name: item.name,
+              number: item.number,
+              orderNo: item.orderNo,
+              planDetailSub: newArr,
+              status: item.status
+            };
+          });
+          api.savePlanInfoDatas(params).then((res) => {
+            if (res.data.code === "0") {
+              this.$message({
+                showClose: true,
+                message: "保存成功",
+                type: "success",
+                duration: 1000
+              });
+              this.isSaveSuccess = true; // 保存成功,可正常退出
+              this.$router.push({
+                name: "Plan",
+                params: Object.assign({}, this.$route.params, {
+                  currentPage: 1
+                })
+              });
+            } else if (res.data.code === "00020007") {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: "error",
+                duration: 1000
+              });
+            }
+            this.saveDisable = false;
+          });
+        }
+      });
+    },
+    ismix(val) {
+      const index = this.mixArr.findIndex((item) => item == val);
+      if (index <= 0) {
+        return true;
+      }
+      return false;
+    },
+    handleMove(type, obj) {
+      /**
+       * @params
+       *    type:up/down
+       *    obj:{
+       *      orderNo:当前点击项的orderNo,
+       *      itemIndex:当前点击项的index,
+       *      groupIndex:当前组的index
+       *    }
+       */
+      const { name, orderNo, itemIndex, groupIndex } = obj;
+      // exIndex获取到要交换的Index值
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
+      // exOrderNo获取到要交换的orderNo
+      const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+      // 赋值一份新的数据
+      let newList = JSON.parse(
+        JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
+      );
+      // 交换orderNo
+      newList[exIndex].orderNo = orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
+      }
+
+      // 排序
+      newList = this.groupSort(newList);
+      // 更新数据
+      this.form.planDetailSub[groupIndex].planDetails = newList;
+    },
+    // 获取医院下拉列表
+    getHospitalInfo() {
+      api.getHospitalInfo().then((res) => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+        }
+      });
+    },
+    // 初始化
+    fomatArr(data) {
+      let oneArr = JSON.parse(
+        JSON.stringify(data[0].planDetails)
+      );
+      let list = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j !== -1;
+      });
+      
+      let biglist = oneArr.filter((ite) => {
+        const j = this.mixArr.findIndex((itemB) => itemB === ite.name);
+        return j === -1;
+      });
+      
+      let obj = { list };
+      list.forEach((child) => {
+        if (child.name === "开单合理性") {
+          obj.orderNo = child.orderNo;
+          obj.name = child.name;
+          obj.id = child.id + "d";
+        }
+      });
+      biglist.push(obj);
+      this.form.planDetailSub[0].planDetails = this.groupSort(biglist);
+    },
+    getDefaultPlans() {
+      api.getDefaultPlans().then((res) => {
+        if (res.data.code === "0") {
+          this.form.planDetailSub = res.data.data.planDetailDefault;
+          this.fomatArr(res.data.data.planDetailDefault);
+        }
+      });
+    },
+    // 相应数组排序
+    groupSort(arr) {
+      if (Array.isArray(arr)) {
+        for (let i = arr.length - 1; i > 0; i--) {
+          for (let j = 0; j < i; j++) {
+            if (arr[j].orderNo > arr[j + 1].orderNo) {
+              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+            }
+          }
+        }
+        return arr;
+      }
+    },
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
+        if (res.data.code === "0") {
+          const obj = res.data.data[0];
+          const { data } = this.$route.params;
+          this.form = {
+            hospitalId: obj.hospitalId,
+            planName: obj.planName,
+            planCode: obj.planCode,
+            planStatus: obj.planStatus,
+            planDetailSub: obj.sysSetInfo,
+            id: data.id
+          };
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      if (!this.form.planDetailSub) {
+        this.form.planDetailSub = data;
+      }
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else if (!this.form.planDetailSub[oneIndex].planDetails) {
+          this.form.planDetailSub[oneIndex].planDetails = item.planDetails;
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails &&
+            item.planDetails.forEach((child) => {
+              const twoArr = this.form.planDetailSub[oneIndex].planDetails;
+              const childIndex = twoArr
+                ? twoArr.findIndex((it) => it.name === child.name)
+                : null;
+              // 第二层数据不存在,直接添加进去
+              if (childIndex && childIndex === -1) {
+                child.status = 0;
+                this.form.planDetailSub[oneIndex].planDetails.push(child);
+              }
+            });
+        }
+      });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr(newData);
+    }
+  },
+
+  created() {
+    // this.getHospitalInfo();
+    // this.getDefaultPlans();
+    const { isEdit, data, codeArr } = this.$route.params;
+
+    this.getHospitalInfo(); // 获取医院下拉列表
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      this.hospitalId = data.hospitalId
+      this.planCode = data.planCode
+      let params = {
+        hospitalId: data.hospitalId,
+        id: data.id
+      };
+      this.getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this.getDefaultPlans(); // 获取默认配置信息
+    }
+  }
+};
+</script>

+ 530 - 0
.history/src/components/cdssManage/plan/Plan_20211018114652.vue

@@ -0,0 +1,530 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+            console.log('禁用2021', this.codeArr);
+
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018115212.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018141738.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map((item, index) => {
+              if(item.val[index]){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018141822.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map((item, index) => {
+              if(item.val){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018141957.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018142119.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == row.planCode){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 528 - 0
.history/src/components/cdssManage/plan/Plan_20211018142214.vue

@@ -0,0 +1,528 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+</style>

+ 531 - 0
.history/src/components/cdssManage/plan/Plan_20211018142844.vue

@@ -0,0 +1,531 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+</style>

+ 534 - 0
.history/src/components/cdssManage/plan/Plan_20211018143127.vue

@@ -0,0 +1,534 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+</style>

+ 534 - 0
.history/src/components/cdssManage/plan/Plan_20211018143149.vue

@@ -0,0 +1,534 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dad7d7;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+</style>

+ 534 - 0
.history/src/components/cdssManage/plan/Plan_20211018143357.vue

@@ -0,0 +1,534 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #DAD7D7;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+</style>

+ 534 - 0
.history/src/components/cdssManage/plan/Plan_20211018143458.vue

@@ -0,0 +1,534 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #DAD7D7;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+</style>

+ 534 - 0
.history/src/components/cdssManage/plan/Plan_20211018143531.vue

@@ -0,0 +1,534 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+</style>

+ 537 - 0
.history/src/components/cdssManage/plan/Plan_20211018143630.vue

@@ -0,0 +1,537 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 537 - 0
.history/src/components/cdssManage/plan/Plan_20211018143700.vue

@@ -0,0 +1,537 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 541 - 0
.history/src/components/cdssManage/plan/Plan_20211018143831.vue

@@ -0,0 +1,541 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 545 - 0
.history/src/components/cdssManage/plan/Plan_20211018143853.vue

@@ -0,0 +1,545 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 549 - 0
.history/src/components/cdssManage/plan/Plan_20211018144002.vue

@@ -0,0 +1,549 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.el-button.is-disabled[data-v-7f43c814] {
+  color: #dad7d7;
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 550 - 0
.history/src/components/cdssManage/plan/Plan_20211018144040.vue

@@ -0,0 +1,550 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.el-button.is-disabled[data-v-7f43c814] {
+  color: #dad7d7;
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+  background-color: transparent;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+.deleteBtn {
+  border: none;
+}
+.deleteBtn:hover {
+  background-color: transparent;
+}
+</style>

+ 544 - 0
.history/src/components/cdssManage/plan/Plan_20211018144121.vue

@@ -0,0 +1,544 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.el-button.is-disabled[data-v-7f43c814] {
+  color: #dad7d7;
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+  background-color: transparent;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+</style>

+ 548 - 0
.history/src/components/cdssManage/plan/Plan_20211018144153.vue

@@ -0,0 +1,548 @@
+<template>
+  <div>
+    <crumbs title="电子病历方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="所属医院:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in HospitalInfoList"
+              :label="item.name"
+              :value="item.id"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="方案名称:">
+          <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%" ref="">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="gmtCreate"
+          label="创建时间"
+          show-overflow-tooltip
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          :resizable="false"
+          prop="planStatus"
+          label="状态"
+          show-overflow-tooltip
+          width="180"
+        >
+          <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
+        </el-table-column>
+
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="modifyRelation(scope.row)"
+              type="text"
+              size="small"
+              v-if="scope.row.planStatus === 1"
+              class="disable"
+            >修改</el-button>
+            <el-button plain type="text" size="small" v-else disabled>修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
+              :disabled = 'codeArr.includes(scope.row.planCode)'
+              @click="enableOrAble(scope.row,0)"
+              v-if="scope.row.planStatus === 1"
+            >禁用</el-button>
+
+            <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.planStatus !== 1"
+              @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@api/cdss.js";
+import config from "@api/config.js";
+import utils from "@api/utils.js";
+
+export default {
+  name: "Plan",
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        planName: "", //标准诊断名称
+        hospitalId: ""
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: "",
+      HospitalInfoList: [],
+      disablelist: [],
+      codeArr: []
+    };
+  },
+  created(row) {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDisabel()
+      that.getDataList();
+      that._getHospitalInfo();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取医院下拉列表
+    _getHospitalInfo() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === "0") {
+          this.HospitalInfoList = res.data.data;
+          console.log("医院列表>>", this.HospitalInfoList);
+        }
+      });
+    },
+
+    // 使plan_default禁用
+    async getDisabel(row){
+      const res = await api.getListBack()
+         if(res.data.code === '0'){
+            this.disablelist = res.data.data[60]
+            console.log('禁用2', this.codeArr);
+            this.codeArr = this.disablelist.map(item => {
+              if(item.val == 'plan_default'){
+                return item.val
+              }
+            })
+         }
+    },
+
+
+    // 获取列表数据
+    async getDataList(isTurnPage) {
+
+      let params = await this.getFilterItems(isTurnPage);
+      // return;
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      api.getPlanInfoPages(params).then(res => {
+        console.log("列表数据", res);
+        loading.close();
+        if (res.data.code === "0") {
+          this.list = res.data.data && res.data.data.records;
+          console.log("hello>>", this.list);
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 返回字典信息数据
+
+    // 处理列表请求数据参数
+    async getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      // let planName = this.filter.planName.trim();
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim(),
+        hospitalId: this.filter.hospitalId
+      };
+      return param;
+    },
+
+    escapeRegExp(text) {
+      return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    addRelation() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: "AddPlan", params: pam });
+    },
+    // 修改诊断关联-跳转至编辑页面
+    modifyRelation(row) {
+      const item = Object.assign({}, row);
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: "AddPlan",
+        params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
+      });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: "",
+        planName: ""
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || "warning"
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = "启用";
+      let btnNameClass = "confirmBtn2";
+      if (type === "Del") {
+        showInfo = "禁用";
+        btnNameClass = "delBtn";
+      } else if (type === "Del1") {
+        showInfo = "删除";
+        btnNameClass = "delBtn";
+      }
+
+      this.$alert(msg, "提示", {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: "warning"
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // // 获取医院信息
+    // _getHospital() {
+    //   api.getHospitalInfo().then(res => {
+    //     if (res.data.code === '0') {
+    //       this.hospitalId = res.data.data.id;
+    //     }
+    //   });
+    // },
+    // 删除关联
+    showDelDialog(id, status, info, row) {
+      if (status === 1) {
+        this.$alert(`${info}正在启用中,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+
+      if (id === -1) {
+        this.$alert(`该方案为默认方案,无法删除。`, "提示", {
+          confirmButtonText: "确定",
+          // cancelButtonText: '取消',
+          // cancelButtonClass: 'cancelSureL',
+          // confirmButtonClass: 'sureL',
+          // customClass: 'exportBoxL',
+          type: "warning"
+        })
+          .then(() => {})
+          .catch(() => {});
+        return false;
+      }
+      // return
+      this.showConfirmDialog(
+        "是否删除该方案配置?",
+        () => {
+          let params = {
+            planId: id,
+            hospitalId: row.hospitalId
+          };
+          api
+            .cancelPlanDatas(params)
+            .then(res => {
+              if (res.data.code == "0") {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                if (this.list.length == 1) {
+                  //当前在最后一页且只有一条数据时,删除后跳到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+                this.getDataList();
+                this.warning(res.data.msg || "操作成功", "success");
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === "900010001") {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        "Del1"
+      );
+    },
+
+    // 启用/禁用 数据请求
+    sendAbleOrEn(row, type) {
+      api
+        .revStopPlans({
+          id: row.id,
+          status: type
+        })
+        .then(res => {
+          console.log("禁用", res);
+          if (res.data.code === "0") {
+            this.$message({
+              showClose: true,
+              message: "操作成功",
+              type: "success",
+              duration: 1000
+            });
+            this.getDataList();
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 启用/禁用
+    enableOrAble(row, type) {
+      console.log("启用planName", row, type);
+      if (type === 1) {
+        // 启用
+        this.showConfirmDialog(
+          `确定要启用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Reuse"
+        );
+      } else {
+        // 禁用
+        this.showConfirmDialog(
+          `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
+          () => {
+            this.sendAbleOrEn(row, type);
+          },
+          "Del"
+        );
+      }
+    }
+  }
+};
+</script>
+
+
+<style lang="less" scoped>
+@import "../../../less/admin.less";
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.disable {
+  border-color: transparent;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn2 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+.exportBoxL {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: left;
+  }
+  /deep/ .el-message-box__btns {
+    // text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .cancelSureL {
+    // text-align: center;
+    display: none;
+  }
+  /deep/ .sureL {
+    float: right;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+
+.el-table__row {
+  /deep/ .is-disabled {
+    border-color: transparent !important;
+  }
+}
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
+    position: relative;
+    top: -1px;
+  }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
+}
+
+.el-button.is-disabled[data-v-7f43c814] {
+  color: #dad7d7;
+}
+
+.el-button.is-disabled[data-v-7f43c814]:hover {
+  color: #ff0000;
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+  background-color: transparent;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
+.active {
+  color: #ff0000;
+}
+.active-t {
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
+}
+</style>

+ 214 - 0
.history/src/components/login/Login_20211009132456.vue

@@ -0,0 +1,214 @@
+<template>
+    <div class="login-container">
+        <banner></banner>
+        <div class="login-img fl"><img src="../../images/loginImg.png"/></div>
+        <div class="login-box">
+            <!-- <div class="box-le"><img src="../../images/left.jpg"/></div> -->
+            <div class="box-ri">
+                <div class="title-box clearfix"> <h3 class="login-title fl">登录</h3> <h4 class="num fr" @click="toRegister">立即注册</h4></div>
+               
+                <div class="ri-center">
+                    <el-form :model="ruleForm2" :rules="rules2" ref="ruleFormReg">
+                        <el-form-item prop="tel">
+                            <el-input v-model="ruleForm2.tel" name="username" autocomplete="off" maxlength="11"
+                                      placeholder="请输入用户名或手机号"
+                                      clearable class="ri-tel" @keyup.enter.native="submitForm('ruleForm2')"
+                                      ref="username"></el-input>
+                        </el-form-item>
+                        <div style="height: 20px;"></div>
+                        <el-form-item prop="pwd">
+                            <el-input v-model="ruleForm2.pwd" name="password" autocomplete="off" maxlength="16"
+                                      placeholder="请输入密码"
+                                      clearable type="password" class="ri-pwd"
+                                      @keyup.enter.native="submitForm('ruleForm2')" ref="password"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <!-- <span class="num" @click="toRegister">注册账号</span> -->
+                            <span class="pwd" @click="toForgetPsw">忘记密码?</span>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button plain v-if="otherCor" >登录</el-button>
+                            <el-button ref="btn" v-else class="otherCor" plain @click="submitForm('ruleForm2')">登录
+                            </el-button>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+        </div>
+        <copy-right-info></copy-right-info>
+    </div>
+</template>
+
+<script>
+  import Vue from 'vue';
+  import banner from '../common/Banner.vue';
+  import copyRightInfo from '../common/CopyRightInfo.vue';
+  import api from '../../api/index.js';
+  import './login.less';
+  import md5 from 'js-md5'
+	
+  export default {
+    name: 'Login',
+    data() {
+      //手机号码验证
+      var myreg = /^1[0-9]{10}$/;
+      //密码验证 纯字母纯英文
+      var numreg = /^(?![0-9]+$)(?![a-zA-Z]+$)/;
+      //密码验证 密码长度
+      var lengreg = /^[0-9A-Za-z]{6,16}$/;
+      var validatePass = (rule, value, callback) => {
+        // if(isNaN(value) == false){   //手机号
+        // 正常情况
+
+        if (value.trim() == '') {
+          callback(new Error('用户名不能为空'));
+          this.$refs.username.value = "";
+        }
+        // 手机号
+        if (isNaN(value) == false) {
+          if (value.length !== 11 || !myreg.test(value)) {
+            callback(new Error('手机号格式有误'));
+          } else {
+            callback();
+          }
+        } else if (isNaN(value) == true) {
+          callback();
+        }
+      };
+      var validatePass2 = (rule, value, callback) => {
+        if (value.trim() == '') {
+          callback(new Error('密码不能为空'));
+          this.$refs.password.value = "";
+        } else if (value.length < 6) {
+          callback(new Error('密码长度应为6位至16位之间'));
+        } else if (!numreg.test(value)) {
+          callback(new Error('密码不能为纯数字或纯英文'));
+        } else {
+          callback();
+        }
+      };
+      return {
+        otherCor: true,
+        ruleForm2: {
+          tel: '',
+          pwd: ''
+        },
+        rules2: {
+          tel: [{
+            required: true,
+            validator: validatePass,
+            trigger: 'blur'
+          }],
+          pwd: [{
+            required: true,
+            validator: validatePass2,
+            trigger: 'blur'
+          }],
+        }
+      };
+    },
+    mounted() {
+      if (window.history && window.history.pushState) {
+        history.pushState(null, null, document.URL);
+        window.addEventListener('popstate', function () {
+            history.pushState(null, null, document.URL);
+        });
+      }
+    },
+    computed: {
+      nextButton() {
+        const {
+          tel,
+          pwd
+        } = this.ruleForm2;
+        return {
+          tel,
+          pwd
+        }
+      }
+    },
+    watch: {
+      nextButton: {
+        handler: function (val) {
+          if (val.tel.trim() && val.pwd.trim()) {
+            this.otherCor = false;
+          } else {
+            this.otherCor = true;
+          }
+        },
+        deep: true
+      }
+    },
+    methods: {
+      CalcuMD5(password){
+        // password = password.toUpperCase();
+        password = md5(password);
+        return password;
+      },
+      submitForm: function () {
+        const username = this.ruleForm2.tel;
+        const password = this.CalcuMD5(this.ruleForm2.pwd);
+        let params = {
+          "username": username,
+          "password": password
+        }
+        //重新登录清空原有token;
+        localStorage.removeItem('token');
+        this.$refs.ruleFormReg.validate((valid) => {
+          if (valid) {
+            api.loginMess(params).then((res) => {
+              if (res.status == 200) {
+								// console.log(res)
+                if (res.data.code == '10020000') { //未注册
+                  // this.$message.error(res.data.msg);
+									this.$message.error("该账号或手机号未注册!")
+                } else if (res.data.code == '10020001') { //密码错误
+                  this.$message.error(res.data.msg);
+                } else if (res.data.code == '0') {
+                  const token = JSON.stringify(res.data.data);
+                  localStorage.setItem("token", token);
+                  this.$message({
+                    message: '登录成功!',
+                    type: 'success',
+                    duration: 1000,
+                    onClose: function () {
+                      const type = res.data.data.type;
+                      if (type == 0) {
+                        this.$router.push({
+                          path: '/user'
+                        });
+                      } else if (type == 1) {
+                        this.$router.push({
+                          path: '/admin'
+                        });
+                      }
+                    }.bind(this)
+                  });
+                }
+              }
+            }).catch((err) => {
+              console.log(err);
+            })
+          } else {
+            console.log('faild')
+            return false;
+          }
+        });
+      },
+      toRegister() { //点击注册
+        this.$router.push({
+          path: '/register'
+        });
+      },
+      toForgetPsw() {//忘记密码
+        this.$router.push({
+          path: '/forgetPassword'
+        });
+      }
+    },
+    components: {
+      'banner': banner,
+      'copyRightInfo': copyRightInfo
+    },
+  }
+</script>

+ 216 - 0
.history/src/components/login/Login_20211018140038.vue

@@ -0,0 +1,216 @@
+<template>
+    <div class="login-container">
+        <banner></banner>
+        <div class="login-img fl"><img src="../../images/loginImg.png"/></div>
+        <div class="login-box">
+            <!-- <div class="box-le"><img src="../../images/left.jpg"/></div> -->
+            <div class="box-ri">
+                <div class="title-box clearfix"> <h3 class="login-title fl">登录</h3> <h4 class="num fr" @click="toRegister">立即注册</h4></div>
+               
+                <div class="ri-center">
+                    <el-form :model="ruleForm2" :rules="rules2" ref="ruleFormReg">
+                        <el-form-item prop="tel">
+                            <el-input v-model="ruleForm2.tel" name="username" autocomplete="off" maxlength="11"
+                                      placeholder="请输入用户名或手机号"
+                                      clearable class="ri-tel" @keyup.enter.native="submitForm('ruleForm2')"
+                                      ref="username"></el-input>
+                        </el-form-item>
+                        <div style="height: 20px;"></div>
+                        <el-form-item prop="pwd">
+                            <el-input v-model="ruleForm2.pwd" name="password" autocomplete="off" maxlength="16"
+                                      placeholder="请输入密码"
+                                      clearable type="password" class="ri-pwd"
+                                      @keyup.enter.native="submitForm('ruleForm2')" ref="password"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <!-- <span class="num" @click="toRegister">注册账号</span> -->
+                            <span class="pwd" @click="toForgetPsw">忘记密码?</span>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button plain v-if="otherCor" >登录</el-button>
+                            <el-button ref="btn" v-else class="otherCor" plain @click="submitForm('ruleForm2')">登录
+                            </el-button>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+        </div>
+        <copy-right-info></copy-right-info>
+    </div>
+</template>
+
+<script>
+  import Vue from 'vue';
+  import banner from '../common/Banner.vue';
+  import copyRightInfo from '../common/CopyRightInfo.vue';
+  import api from '../../api/index.js';
+  import './login.less';
+  import md5 from 'js-md5'
+	
+  export default {
+    name: 'Login',
+    data() {
+      //手机号码验证
+      var myreg = /^1[0-9]{10}$/;
+      //密码验证 纯字母纯英文
+      var numreg = /^(?![0-9]+$)(?![a-zA-Z]+$)/;
+      //密码验证 密码长度
+      var lengreg = /^[0-9A-Za-z]{6,16}$/;
+      var validatePass = (rule, value, callback) => {
+        // if(isNaN(value) == false){   //手机号
+        // 正常情况
+
+        if (value.trim() == '') {
+          callback(new Error('用户名不能为空'));
+          this.$refs.username.value = "";
+        }
+        // 手机号
+        if (isNaN(value) == false) {
+          if (value.length !== 11 || !myreg.test(value)) {
+            callback(new Error('手机号格式有误'));
+          } else {
+            callback();
+          }
+        } else if (isNaN(value) == true) {
+          callback();
+        }
+      };
+      var validatePass2 = (rule, value, callback) => {
+        if (value.trim() == '') {
+          callback(new Error('密码不能为空'));
+          this.$refs.password.value = "";
+        } else if (value.length < 6) {
+          callback(new Error('密码长度应为6位至16位之间'));
+        } else if (!numreg.test(value)) {
+          callback(new Error('密码不能为纯数字或纯英文'));
+        } else {
+          callback();
+        }
+      };
+      return {
+        otherCor: true,
+        ruleForm2: {
+          tel: '',
+          pwd: ''
+        },
+        rules2: {
+          tel: [{
+            required: true,
+            validator: validatePass,
+            trigger: 'blur'
+          }],
+          pwd: [{
+            required: true,
+            validator: validatePass2,
+            trigger: 'blur'
+          }],
+        }
+      };
+    },
+    mounted() {
+      if (window.history && window.history.pushState) {
+        history.pushState(null, null, document.URL);
+        window.addEventListener('popstate', function () {
+            history.pushState(null, null, document.URL);
+        });
+      }
+    },
+    computed: {
+      nextButton() {
+        const {
+          tel,
+          pwd
+        } = this.ruleForm2;
+        return {
+          tel,
+          pwd
+        }
+      }
+    },
+    watch: {
+      nextButton: {
+        handler: function (val) {
+          if (val.tel.trim() && val.pwd.trim()) {
+            this.otherCor = false;
+          } else {
+            this.otherCor = true;
+          }
+        },
+        deep: true
+      }
+    },
+    methods: {
+      CalcuMD5(password){
+        // password = password.toUpperCase();
+        password = md5(password);
+        return password;
+      },
+      submitForm: function () {
+        const username = this.ruleForm2.tel;
+        const password = this.CalcuMD5(this.ruleForm2.pwd);
+        let params = {
+          "username": username,
+          "password": password
+        }
+        //重新登录清空原有token;
+        localStorage.removeItem('token');
+        this.$refs.ruleFormReg.validate((valid) => {
+          if (valid) {
+            api.loginMess(params).then((res) => {
+              console.log('登录???', res);
+              
+              if (res.status == 200) {
+								// console.log(res)
+                if (res.data.code == '10020000') { //未注册
+                  // this.$message.error(res.data.msg);
+									this.$message.error("该账号或手机号未注册!")
+                } else if (res.data.code == '10020001') { //密码错误
+                  this.$message.error(res.data.msg);
+                } else if (res.data.code == '0') {
+                  const token = JSON.stringify(res.data.data);
+                  localStorage.setItem("token", token);
+                  this.$message({
+                    message: '登录成功!',
+                    type: 'success',
+                    duration: 1000,
+                    onClose: function () {
+                      const type = res.data.data.type;
+                      if (type == 0) {
+                        this.$router.push({
+                          path: '/user'
+                        });
+                      } else if (type == 1) {
+                        this.$router.push({
+                          path: '/admin'
+                        });
+                      }
+                    }.bind(this)
+                  });
+                }
+              }
+            }).catch((err) => {
+              console.log(err);
+            })
+          } else {
+            console.log('faild')
+            return false;
+          }
+        });
+      },
+      toRegister() { //点击注册
+        this.$router.push({
+          path: '/register'
+        });
+      },
+      toForgetPsw() {//忘记密码
+        this.$router.push({
+          path: '/forgetPassword'
+        });
+      }
+    },
+    components: {
+      'banner': banner,
+      'copyRightInfo': copyRightInfo
+    },
+  }
+</script>

+ 215 - 0
.history/src/components/login/Login_20211018140154.vue

@@ -0,0 +1,215 @@
+<template>
+    <div class="login-container">
+        <banner></banner>
+        <div class="login-img fl"><img src="../../images/loginImg.png"/></div>
+        <div class="login-box">
+            <!-- <div class="box-le"><img src="../../images/left.jpg"/></div> -->
+            <div class="box-ri">
+                <div class="title-box clearfix"> <h3 class="login-title fl">登录</h3> <h4 class="num fr" @click="toRegister">立即注册</h4></div>
+               
+                <div class="ri-center">
+                    <el-form :model="ruleForm2" :rules="rules2" ref="ruleFormReg">
+                        <el-form-item prop="tel">
+                            <el-input v-model="ruleForm2.tel" name="username" autocomplete="off" maxlength="11"
+                                      placeholder="请输入用户名或手机号"
+                                      clearable class="ri-tel" @keyup.enter.native="submitForm('ruleForm2')"
+                                      ref="username"></el-input>
+                        </el-form-item>
+                        <div style="height: 20px;"></div>
+                        <el-form-item prop="pwd">
+                            <el-input v-model="ruleForm2.pwd" name="password" autocomplete="off" maxlength="16"
+                                      placeholder="请输入密码"
+                                      clearable type="password" class="ri-pwd"
+                                      @keyup.enter.native="submitForm('ruleForm2')" ref="password"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <!-- <span class="num" @click="toRegister">注册账号</span> -->
+                            <span class="pwd" @click="toForgetPsw">忘记密码?</span>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button plain v-if="otherCor" >登录</el-button>
+                            <el-button ref="btn" v-else class="otherCor" plain @click="submitForm('ruleForm2')">登录
+                            </el-button>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+        </div>
+        <copy-right-info></copy-right-info>
+    </div>
+</template>
+
+<script>
+  import Vue from 'vue';
+  import banner from '../common/Banner.vue';
+  import copyRightInfo from '../common/CopyRightInfo.vue';
+  import api from '../../api/index.js';
+  import './login.less';
+  import md5 from 'js-md5'
+	
+  export default {
+    name: 'Login',
+    data() {
+      //手机号码验证
+      var myreg = /^1[0-9]{10}$/;
+      //密码验证 纯字母纯英文
+      var numreg = /^(?![0-9]+$)(?![a-zA-Z]+$)/;
+      //密码验证 密码长度
+      var lengreg = /^[0-9A-Za-z]{6,16}$/;
+      var validatePass = (rule, value, callback) => {
+        // if(isNaN(value) == false){   //手机号
+        // 正常情况
+
+        if (value.trim() == '') {
+          callback(new Error('用户名不能为空'));
+          this.$refs.username.value = "";
+        }
+        // 手机号
+        if (isNaN(value) == false) {
+          if (value.length !== 11 || !myreg.test(value)) {
+            callback(new Error('手机号格式有误'));
+          } else {
+            callback();
+          }
+        } else if (isNaN(value) == true) {
+          callback();
+        }
+      };
+      var validatePass2 = (rule, value, callback) => {
+        if (value.trim() == '') {
+          callback(new Error('密码不能为空'));
+          this.$refs.password.value = "";
+        } else if (value.length < 6) {
+          callback(new Error('密码长度应为6位至16位之间'));
+        } else if (!numreg.test(value)) {
+          callback(new Error('密码不能为纯数字或纯英文'));
+        } else {
+          callback();
+        }
+      };
+      return {
+        otherCor: true,
+        ruleForm2: {
+          tel: '',
+          pwd: ''
+        },
+        rules2: {
+          tel: [{
+            required: true,
+            validator: validatePass,
+            trigger: 'blur'
+          }],
+          pwd: [{
+            required: true,
+            validator: validatePass2,
+            trigger: 'blur'
+          }],
+        }
+      };
+    },
+    mounted() {
+      if (window.history && window.history.pushState) {
+        history.pushState(null, null, document.URL);
+        window.addEventListener('popstate', function () {
+            history.pushState(null, null, document.URL);
+        });
+      }
+    },
+    computed: {
+      nextButton() {
+        const {
+          tel,
+          pwd
+        } = this.ruleForm2;
+        return {
+          tel,
+          pwd
+        }
+      }
+    },
+    watch: {
+      nextButton: {
+        handler: function (val) {
+          if (val.tel.trim() && val.pwd.trim()) {
+            this.otherCor = false;
+          } else {
+            this.otherCor = true;
+          }
+        },
+        deep: true
+      }
+    },
+    methods: {
+      CalcuMD5(password){
+        // password = password.toUpperCase();
+        password = md5(password);
+        return password;
+      },
+      submitForm: function () {
+        const username = this.ruleForm2.tel;
+        const password = this.CalcuMD5(this.ruleForm2.pwd);
+        let params = {
+          "username": username,
+          "password": password
+        }
+        //重新登录清空原有token;
+        localStorage.removeItem('token');
+        this.$refs.ruleFormReg.validate((valid) => {
+          if (valid) {
+            api.loginMess(params).then((res) => {
+              console.log('登录???', res);
+              if (res.status == 200) {
+								// console.log(res)
+                if (res.data.code == '10020000') { //未注册
+                  // this.$message.error(res.data.msg);
+									this.$message.error("该账号或手机号未注册!")
+                } else if (res.data.code == '10020001') { //密码错误
+                  this.$message.error(res.data.msg);
+                } else if (res.data.code == '0') {
+                  const token = JSON.stringify(res.data.data);
+                  localStorage.setItem("token", token);
+                  this.$message({
+                    message: '登录成功!',
+                    type: 'success',
+                    duration: 1000,
+                    onClose: function () {
+                      const type = res.data.data.type;
+                      if (type == 0) {
+                        this.$router.push({
+                          path: '/user'
+                        });
+                      } else if (type == 1) {
+                        this.$router.push({
+                          path: '/admin'
+                        });
+                      }
+                    }.bind(this)
+                  });
+                }
+              }
+            }).catch((err) => {
+              console.log(err);
+            })
+          } else {
+            console.log('faild')
+            return false;
+          }
+        });
+      },
+      toRegister() { //点击注册
+        this.$router.push({
+          path: '/register'
+        });
+      },
+      toForgetPsw() {//忘记密码
+        this.$router.push({
+          path: '/forgetPassword'
+        });
+      }
+    },
+    components: {
+      'banner': banner,
+      'copyRightInfo': copyRightInfo
+    },
+  }
+</script>

+ 2 - 2
src/api/cdss.js

@@ -28,8 +28,8 @@ export default {
     //医学数据-化验大小项与公表项维护-单个删除
     return axios.post(urls.delLisMappingByIdCDSS, param);
   },
-  getConceptInfoAssay(param) {
-    return axios.post(urls.getConceptInfoAssayCDSS, param); //化验子项-搜索术语
+  getConceptInfoAssay(param) { //化验子项-搜索术语
+    return axios.post(urls.getConceptInfoAssayCDSS, param); 
   },
   getAllLisConcept(param) {
     //医学数据-化验大小项与公表项维护-获取所有化验公表项

+ 22 - 4
src/components/cdssManage/plan/Plan.vue

@@ -76,7 +76,7 @@
               type="text"
               size="small"
             >删除</el-button>
-            <el-button plain type="text" size="small" v-else disabled>删除</el-button>
+            <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -182,8 +182,6 @@ export default {
                 return item.val
               }
             })
-            console.log('禁用2021', this.codeArr);
-
          }
     },
 
@@ -521,10 +519,30 @@ export default {
   }
 }
 
+.el-button.is-disabled[data-v-7f43c814] {
+  color: #dad7d7;
+}
+
+.el-button.is-disabled[data-v-7f43c814]:hover {
+  color: #ff0000;
+}
+
+.contents .is-plain[data-v-7f43c814] {
+  border: none;
+  background-color: transparent;
+}
+
+.contents .is-plain[data-v-7f43c814]:hover {
+  background-color: transparent;
+}
+
 .active {
   color: #ff0000;
 }
 .active-t {
-  color: #dad7d7;
+  color: #dddddd;
+}
+.active-t:hover {
+  color: #ff0000;
 }
 </style>

+ 1 - 0
src/components/login/Login.vue

@@ -157,6 +157,7 @@
         this.$refs.ruleFormReg.validate((valid) => {
           if (valid) {
             api.loginMess(params).then((res) => {
+              console.log('登录???', res);
               if (res.status == 200) {
 								// console.log(res)
                 if (res.data.code == '10020000') { //未注册