Parcourir la source

搜索功能提交

huangcen il y a 7 mois
Parent
commit
2c065d6b7c

BIN
src/assets/images/login-sign-bg.png


+ 34 - 0
src/router/index.js

@@ -788,6 +788,40 @@ export const constantRoutes = [
       }
     ]
   },
+  // {
+  //   path: '/login',
+  //   component: Layout,
+  //    redirect: '/login',
+  //   keepAlive: 1,
+  //   canMultipleOpen: true,
+  //   meta: { title: '病案分析' },
+  //   children: [
+  //     {
+  //       path: 'login',
+  //       name: 'login',
+  //       component: () => import('@/views/caseAnalysis/login.vue'),
+  //       meta: { title: '病案分析' }
+  //     },
+      
+  //   ]
+  // },
+  {
+    path: '/caseAnalysis',
+    component: Layout,
+     redirect: '/caseAnalysis',
+    keepAlive: 1,
+    canMultipleOpen: true,
+    meta: { title: '病案分析' },
+    children: [
+      {
+        path: 'caseAnalysis',
+        name: 'caseAnalysis',
+        component: () => import('@/views/caseAnalysis/caseAnalysis.vue'),
+        meta: { title: '病案分析' }
+      },
+      
+    ]
+  },
   {
     path: '/whitelist',
     component: AppMain,

+ 1412 - 0
src/views/caseAnalysis/caseAnalysis.vue

@@ -0,0 +1,1412 @@
+<template>
+    <div class="dashboard-container" :class="{'nocopy': $route.meta.nocopy}">
+      <div class="block">
+        <!-- <div class="barBtn" v-if="$route.query.from !== 'kyts'">
+          <el-radio-group v-model="choice" class="bnts" size="medium" @change="handleRadioChange">
+            <el-radio-button :label="0">普通检索</el-radio-button>
+            <el-radio-button :label="1">高级检索</el-radio-button>
+            <el-radio-button :label="2">专业检索</el-radio-button>
+          </el-radio-group>
+        </div> -->
+        <span style="font-size: 16px;font-weight: 700;">检索信息:</span>
+        <div class="bnh" />
+        <!-- 专业检索 -->
+        <ProfessionSearchVue ref="professionSearch"  @search="handleProfessionSearchFn" @export="handelExport" @reset="handleReset" />
+      </div>
+      <div class="tableBox">
+        <div class="flextab" style="margin: 0; margin-bottom: 30px; display: block">
+          <div class="flextabtitle-box">
+            <div class="h-title">
+              <span class="blue" />
+              <span class="text">检索结果</span>
+              <!-- <span v-if="paginationData.total != 0" class="titleName">
+                找到
+                <span class="title-left-span">{{ paginationData.total }}</span>
+                个例条相关结果
+              </span> -->
+            </div>
+          </div>
+        </div>
+        <div >
+         <div class="" style="display:flex;justify-content: flex-start;">
+          <span v-if="paginationData.total != 0" class="titleName">
+                共找到
+                <span class="title-left-span">{{ paginationData.total }}</span>
+                <!-- 个例条相关结果 -->
+                 份病历
+            </span>
+          </div>
+        <!-- <el-button
+        class="add-btn"
+              type="primary"
+              plain
+              icon="el-icon-setting"
+              size="small"
+            >配置</el-button>  class="table-pagination"-->
+        <!-- <el-pagination
+          v-if="tableData && tableData.length !== 0"
+          :page-sizes="[10, 20, 30, 50,100]"
+        /> -->
+        <!-- <el-pagination
+          v-if="tableData && tableData.length !== 0"
+          background
+          class="table-pagination"
+          style="margin: 15px 0px"
+          :page-size="paginationData.pageSize"
+          :current-page.sync="paginationData.currentPage"
+          layout="total, sizes, prev, pager, next, jumper"
+          @size-change="SizeChangeEvent"
+          @current-change="pageHasChanged"
+        /> -->
+        <!-- <el-pagination
+          v-if="tableData && tableData.length !== 0"
+          background
+          class="table-pagination"
+          style="margin: 15px 0px"
+          :page-size="paginationData.pageSize"
+          :current-page.sync="paginationData.currentPage"
+          layout="prev, pager, next, jumper"
+          @size-change="SizeChangeEvent"
+          @current-change="pageHasChanged"
+        />  style="margin: 15px 0px"-->
+        <el-pagination
+         class="table-pagination"
+          layout="prev, pager, next"
+          :total='paginationData.total'>
+        </el-pagination>
+        <el-pagination
+         class="table-pagination"
+           layout="sizes"
+          :total='paginationData.total'>
+        </el-pagination>
+        <el-radio-group class="btn-class"  v-model="onClass">
+         <el-radio-button size="mini" label="11"  @click.native="onChangePassword">配置</el-radio-button> 
+          <el-radio-button size="mini" label="0">列表</el-radio-button>
+          <el-radio-button size="mini" label="1">详情</el-radio-button>
+          <el-radio-button size="mini" label="12" v-if="!isWhitelist" @click="onExport">下载</el-radio-button>
+          <!-- <el-link type="primary" :href="'http://172.16.2.81:8000/#/popularLiterature?search='+formData0.input" target="_blank" style="margin-left: 16px;">科研探索</el-link> -->
+        </el-radio-group>
+        <!-- <div class="title-right" v-if="!isWhitelist">
+          <el-button class="topClass" type="primary"  icon="el-icon-download" @click="onExport" style="margin-left: 20px;background-color:#185da6;" size="small" >下载</el-button>
+        </div> -->
+        
+      </div>
+     
+        <div v-if="onClass == '0'" class="conter" style="border: none">
+          <!--tableDataresData-->
+          <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange" @sort-change="handleSortChange">
+            <el-table-column type="index" :index="indexAdd" label="序号" width="70px" />
+            <template v-for = "(col,index) in tableTitle">
+            <el-table-column  :prop="col.prop" :label="col.label"></el-table-column>
+            <el-table-column slot-scope="scope"></el-table-column>
+          </template>
+            <!-- <el-table-column prop="AAA28" label="住院号码">
+              <template slot-scope="scope">
+                <span class="blue" @click="funGoto(scope.row.MED_REC_ID ? scope.row.MED_REC_ID : scope.row.ZYH)">
+                  <template>
+                    <div>
+                      {{ scope.row.AAA28 }}
+                    </div>
+                  </template>
+                </span>
+              </template>
+            </el-table-column> -->
+            <!-- <el-table-column prop="AAC01" label="出院时间" sortable />
+            <el-table-column prop="AAC11N" label="出院科室" />
+            <el-table-column prop="ICD10_NAME" label="主要诊断名称" width="200" :align="textCenter" header-align="center"/>
+            <el-table-column prop="ICD9_NAME" label="主要手术名称" :align="textCenter" header-align="center"/> 
+            <el-table-column prop="AAC04" label="住院天数" :align="textCenter" header-align="center" />
+            <el-table-column prop="ADA01" label="住院总费用" :align="textCenter" header-align="center"/>
+         -->
+          </el-table>
+          <!-- 分页控制 -->
+        </div>
+         <!--hq-->
+         <!-- <div v-if="onClass == '1'"   class="conter" style="padding: 20px;">
+          <el-row class="" v-for="(item, index) in res.detail" :key="index">
+            <el-row class="">
+              <el-col :span="24" style="display:inline-block;font-weight: 700;">
+              <span style="display:inline-block;margin-right:60px;">住院号码:<a href="#"  @click="funGoto(item.patient_info.MED_REC_ID ? item.patient_info.MED_REC_ID : item.patient_info.ZYH)" class="blue">{{ item.patient_info.AAA28 }}</a></span>
+              <span>出院时间:{{ item.patient_info.AAC01 }}</span>
+            </el-col>
+            </el-row>
+            <el-row class="" style="margin-top:10px;">
+             <h6>1.1 手术记录</h6>
+            <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%;margin-top:10px;" @selection-change="handleSelectionChange" @sort-change="handleSortChange">
+            <el-table-column type="index" :index="indexAdd" label="序号" width="70px" />
+            <el-table-column prop="AAC01" label="手术开始时间" />
+            <el-table-column prop="AAC11N" label="手术结束时间" />
+            <el-table-column prop="ICD9_NAME" label="手术名称" width="200" :align="textCenter" header-align="center"/>
+            <el-table-column prop="OPE_MAN_NAME" label="术者" :align="textCenter" header-align="center"/> 
+            <el-table-column prop="FRIST_ASSISTANT_NAME" label="一助" :align="textCenter" header-align="center"/>
+            <el-table-column prop="SECOND_ASSISTANT_NAME    " label="二助" :align="textCenter" header-align="center" />
+          </el-table> 
+          <div v-if="item.ryjl" style="margin-top:10px;">
+                <el-descriptions title="1.2入院记录" :column="1">
+                  <el-descriptions-item label="" v-if="item.ryjl.RYJL_HJNR">
+                    <span v-html="item.ryjl.RYJL_HJNR"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div> 
+            </el-row>
+          </el-row>
+          </div> hq-end-->
+        <div v-for="(item, index) in tableDataDetails" :key="index">
+          <div v-if="onClass == '1'" class="conter" style="padding: 20px;">
+           
+            <!--hqend-->
+            <!-- 专业检索 -->
+            <div v-if="choice == 2">
+              <!-- 患者信息 -->
+              <div v-if="item.patient_info">
+                <el-descriptions title="患者信息" :column="1">
+                  <el-descriptions-item label="住院号码" v-if="item.patient_info.AAA28">
+                    <span v-html="item.patient_info.AAA28" @click="funGoto(item.patient_info.MED_REC_ID ? item.patient_info.MED_REC_ID : item.patient_info.ZYH)" class="yeleou"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="出院科室" v-if="item.patient_info.AAC11N">
+                    <span v-html="item.patient_info.AAC11N"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="出院时间" v-if="item.patient_info.AAC01">
+                    <span v-html="item.patient_info.AAC01"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="姓名" v-if="item.patient_info.AAA01">
+                    <span v-html="item.patient_info.AAA01"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="性别" v-if="item.patient_info.AAA02C">
+                    <span v-html="item.patient_info.AAA02C"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="入院时间" v-if="item.patient_info.AAB01">
+                    <span v-html="item.patient_info.AAB01"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="住院天数" v-if="item.patient_info.AAC04">
+                    <span v-html="item.patient_info.AAC04"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="年龄" v-if="item.patient_info.AAA04 || item.patient_info.AAA40">
+                    <span v-html="item.patient_info.AAA04 ? item.patient_info.AAA04 : item.patient_info.AAA40 "></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 入院记录 -->
+              <div v-if="item.ryjl">
+                <el-descriptions title="入院记录" :column="1">
+                  <el-descriptions-item label="整体" v-if="item.ryjl.RYJL_HJNR">
+                    <span v-html="item.ryjl.RYJL_HJNR"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="主诉" v-if="item.ryjl.RYJL_ZHS">
+                    <span v-html="item.ryjl.RYJL_ZHS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="现病史" v-if="item.ryjl.RYJL_XBS">
+                    <span v-html="item.ryjl.RYJL_XBS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="既往史" v-if="item.ryjl.RYJL_JWS">
+                    <span v-html="item.ryjl.RYJL_JWS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="个人史" v-if="item.ryjl.RYJL_GRS">
+                    <span v-html="item.ryjl.RYJL_GRS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="月经及婚育史+婚育史" v-if="item.ryjl.RYJL_YJJHYS">
+                    <span v-html="item.ryjl.RYJL_YJJHYS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="家族史" v-if="item.ryjl.RYJL_JZS">
+                    <span v-html="item.ryjl.RYJL_JZS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="体格检查" v-if="item.ryjl.RYJL_TGJC">
+                    <span v-html="item.ryjl.RYJL_TGJC"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="专科检查" v-if="item.ryjl.RYJL_ZHUANKE">
+                    <span v-html="item.ryjl.RYJL_ZHUANKE"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="辅助检查" v-if="item.ryjl.RYJL_FZJC">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.ryjl.RYJL_FZJC)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="初步诊断" v-if="item.ryjl.RYJL_CBZD">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.ryjl.RYJL_CBZD)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一初步诊断" v-if="item.ryjl.RYJL_CBZB">
+                    <span v-html="item.ryjl.RYJL_CBZB"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 病程记录 -->
+              <div v-if="item.bcjl_scbc">
+                <el-descriptions title="病程记录" :column="1">
+                  <el-descriptions-item label="整体" v-if="item.bcjl_scbc.BCJL_SCBC_HJNR">
+                    <span v-html="item.bcjl_scbc.BCJL_SCBC_HJNR"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="病历特点" v-if="item.bcjl_scbc.BCJL_SCBC_BLTD">
+                    <span v-html="item.bcjl_scbc.BCJL_SCBC_BLTD"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一初步诊断" v-if="item.bcjl_scbc.BCJL_SCBC_CBZD_ONE">
+                    <span v-html="item.bcjl_scbc.BCJL_SCBC_CBZD_ONE"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="其他初步诊断" v-if="item.bcjl_scbc.BCJL_SCBC_CBZD_OTHER">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_CBZD_OTHER)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="诊断依据" v-if="item.bcjl_scbc.BCJL_SCBC_ZDYJ">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_ZDYJ)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="鉴别诊断" v-if="item.bcjl_scbc.BCJL_SCBC_JBZD">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_JBZD)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="鉴别诊断名称" v-if="item.bcjl_scbc.BCJL_SCBC_JBZDMC">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_JBZDMC)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="诊疗记录" v-if="item.bcjl_scbc.BCJL_SCBC_ZLJH">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_ZLJH)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 出院记录 -->
+              <div v-if="item.cyjl">
+                <el-descriptions title="出院记录" :column="1">
+                  <el-descriptions-item label="整体" v-if="item.cyjl.HJNR">
+                    <span v-html="item.cyjl.HJNR"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="入院情况" v-if="item.cyjl.RYQK">
+                    <span v-html="item.cyjl.RYQK"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="初步诊断" v-if="item.cyjl.CBZD">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.cyjl.CBZD)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一初步诊断" v-if="item.cyjl.CBZD_FIRST">
+                    <span v-html="item.cyjl.CBZD_FIRST"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="诊疗经过" v-if="item.cyjl.ZLJG">
+                    <span v-html="item.cyjl.ZLJG"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="出院情况" v-if="item.cyjl.CYQK">
+                    <span v-html="item.cyjl.CYQK"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="出院诊断" v-if="item.cyjl.CYZD">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.cyjl.CYZD)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一出院诊断" v-if="item.cyjl.CYZD_FIRST">
+                    <span v-html="item.cyjl.CYZD_FIRST"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="出院医嘱" v-if="item.cyjl.CYYZ">
+                    <span v-for="(aItem, aIndex) of JSON.parse(item.cyjl.CYYZ)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 主要诊断 -->
+              <div v-if="item.zyzd">
+                <el-descriptions title="主要诊断" :column="1">
+                  <el-descriptions-item label="主要诊断名称" v-if="item.zyzd.MD_ICD10_NAME">
+                    <span v-html="item.zyzd.MD_ICD10_NAME"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="主要诊断编码" v-if="item.zyzd.MD_ICD10_ID1">
+                    <span v-html="item.zyzd.MD_ICD10_ID1"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 主要手术 -->
+              <div v-if="item.zyss">
+                <el-descriptions title="主要手术" :column="1">
+                  <el-descriptions-item label="主要手术名称" v-if="item.zyss.MO_ICD9_NAME">
+                    <span v-html="item.zyss.MO_ICD9_NAME"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="主要诊断编码" v-if="item.zyss.MO_ICD9_ID1">
+                    <span v-html="item.zyss.MO_ICD9_ID1"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 手术记录 -->
+              <div v-for="(sItem, sIndex) of item.ssjl" :key="sIndex">
+                <el-descriptions :title="`手术记录${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="整体" v-if="sItem.HJNR">
+                    <span v-html="sItem.HJNR"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="术前诊断" v-if="sItem.SQZD">
+                    <span v-html="sItem.SQZD"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="术中诊断" v-if="sItem.SZZD">
+                    <span v-for="(aItem, aIndex) of JSON.parse(sItem.SZZD)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一术中诊断" v-if="sItem.SZZD_ONE">
+                    <span v-html="sItem.SZZD_ONE"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="手术名称" v-if="sItem.SSMC">
+                    <span v-for="(aItem, aIndex) of JSON.parse(sItem.SSMC)" :key="aIndex">
+                      <span v-if="aIndex" class="inline_block">;</span>
+                      <span v-html="aItem" class="inline_block"></span>
+                    </span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="第一手术名称" v-if="sItem.SSMC_ONE">
+                    <span v-html="sItem.SSMC_ONE"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="手术指导" v-if="sItem.SSZD">
+                    <span v-html="sItem.SSZD"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="手术者" v-if="sItem.SSZ">
+                    <span v-html="sItem.SSZ"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="助手" v-if="sItem.ZS">
+                    <span v-html="sItem.ZS"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="床号" v-if="sItem.CH">
+                    <span v-html="sItem.CH"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="手术日期" v-if="sItem.SSRQ">
+                    <span v-html="sItem.SSRQ"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 病程记录-输血病程记录 -->
+              <div v-for="(sItem, sIndex) of item.bcjl_sxbc" :key="sIndex">
+                <el-descriptions :title="`输血病程记录${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="整体" v-if="sItem.HJNR">
+                    <span v-html="sItem.HJNR"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="核对者" v-if="sItem.HDZ">
+                    <span v-html="sItem.HDZ"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="检测结果" v-if="sItem.JCJG">
+                    <span v-html="sItem.JCJG"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="检查指标" v-if="sItem.JCZB">
+                    <span v-html="sItem.JCZB"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="输注者" v-if="sItem.SZZ">
+                    <span v-html="sItem.SZZ"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 其它诊断 -->
+              <div v-for="(sItem, sIndex) of item.qtzd" :key="sIndex">
+                <el-descriptions :title="`其它诊断${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="其它诊断编码" v-if="sItem.ICD10_ID1">
+                    <span v-html="sItem.ICD10_ID1"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="其它诊断名称" v-if="sItem.ICD10_NAME">
+                    <span v-html="sItem.ICD10_NAME"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 其它手术 -->
+              <div v-for="(sItem, sIndex) of item.qtss" :key="sIndex">
+                <el-descriptions :title="`其它诊断${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="其它手术编码" v-if="sItem.ICD9_ID1">
+                    <span v-html="sItem.ICD9_ID1"></span>
+                  </el-descriptions-item>
+                  <el-descriptions-item label="其它手术名称" v-if="sItem.ICD9_NAME">
+                    <span v-html="sItem.ICD9_NAME"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 24小时出入院记录 -->
+              <div v-for="(sItem, sIndex) of item.bllb18" :key="sIndex">
+                <el-descriptions :title="`24小时出入院记录${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="整体" v-if="sItem.HJNR">
+                    <span v-html="sItem.HJNR"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+              <!-- 首次病程 -->
+              <div v-for="(sItem, sIndex) of item.bllb294" :key="sIndex">
+                <el-descriptions :title="`病程记录${sIndex+1}`" :column="1">
+                  <el-descriptions-item label="整体" v-if="sItem.HJNR">
+                    <span v-html="sItem.HJNR"></span>
+                  </el-descriptions-item>
+                </el-descriptions>
+              </div>
+            </div>
+          </div>
+        </div>
+        <!-- <el-pagination
+          v-if="tableData && tableData.length !== 0"
+          :total="paginationData.total"
+          background
+          class="table-pagination"
+          style="margin: 15px 0px"
+          :page-size="paginationData.pageSize"
+          :current-page.sync="paginationData.currentPage"
+          layout="total, sizes, prev, pager, next, jumper"
+          @size-change="SizeChangeEvent"
+          @current-change="pageHasChanged"
+        /> -->
+      </div>
+      <!-- 修改密码 -->
+      <configDirDialog v-if="pwdData.bSwitch" :data="pwdData" @submitForm="submitForm" ref="configRef"/>
+    </div>
+  </template>
+  
+  <script>
+  import Title from '@/components/Title';
+  import { mapGetters } from 'vuex';
+  import mPagination from '@/components/m-pagination';
+  import { bassNormalSearchDownload, bassHighSearchDownload, professionSearchExport } from '@/api/excel';
+  import ProfessionSearchVue from './components/ProfessionSearch.vue';
+  import configDirDialog from './components/configDirDialog.vue'
+  export default {
+    props: {
+      isWhitelist: {
+        type: Boolean,
+        default() {
+          return false
+        }
+      }
+    },
+    components: {
+      Title,
+      mPagination,
+      ProfessionSearchVue,
+      configDirDialog
+    },
+    computed: {
+      ...mapGetters(['name']),
+    },
+    data() {
+      return {
+        tableTitle:[],
+        total:10,
+        pwdData: {
+          bSwitch: false,
+        },
+        textCenter:"center",
+        pickerOptions: {
+          disabledDate(time) {
+            return time.getTime() > Date.now();
+          },
+        },
+        checked: false,
+        choice: 0,
+        formData0: {
+          input: '',
+          input1: '',
+        },
+        formData1: {
+          ageday: '',
+          age_start_type: 2,
+          age_end_type: 2,
+          ageyear: '',
+          endTime: undefined,
+          startTime: undefined,
+          seniorList: [
+            {
+              select_type: 0,
+              key: '',
+              value: '',
+              type: '0',
+              lock: false,
+            },
+          ],
+          seniorList1: [],
+          hospitalizationon: '',
+          hospitalizationin: '',
+          AAC04_start: undefined,
+          AAC04_end: undefined,
+          AAA04_start: undefined,
+          AAA04_end: undefined,
+          ageType1: 1,
+          ageType2: 1,
+          AAA28: '',
+        },
+        tableData: [],
+        tableDataDetails: [],
+        paginationData: {
+          total: 11,
+          currentPage: 1,
+          pageSize: 10,
+        },
+        fieldList: [
+          { name: '出院记录', id: '1' },
+          { name: '入院记录', id: '292' },
+          { name: '病程记录', id: '294' },
+          { name: '手术记录', id: '303' },
+          { name: '病历讨论记录', id: '43' },
+          { name: '授权同意类', id: '329' },
+          { name: '评估评分表类', id: '79' },
+          { name: '死亡记录类', id: '288' },
+          { name: '24小时内记录类', id: '18' },
+          { name: '医患沟通类', id: '34' },
+          { name: '医疗常用表格', id: '87' },
+          { name: '医嘱单', id: '49' },
+          { name: '出院科室', id: 'AAC11N' },
+          { name: '费用明细', id: 'FYMC' },
+          { name: '报告单', id: '2000002' },
+          { name: '主要诊断名称', id: 'ICD10_NAME' },
+          { name: '主要诊断编码', id: 'ICD10_ID1' },
+        ],
+        keyList: [],
+        Dayoptions: [],
+        multipleSelection: [],
+        onClass: 0,
+        setListTwe: [],
+        setList: [],
+        departmentList: [],
+        lock: false,
+        searchNum: 0,
+        professionSearchData: {},
+        // 排序
+        sort: [],
+        is_tm_path: ['/hospital-caseViews', '/embedIndex-caseViews', '/reviewIndex-caseViews', '/whitelist-caseViews', '/whitelist-search']
+      };
+    },
+    created() {
+      const { from } = this.$route.query
+      if (from === 'kyts') {
+        this.choice = 2
+      }
+    },
+    mounted() {
+      if (this.storageGet('inputOn')) {
+        this.formData0.input = JSON.parse(this.storageGet('inputOn'));
+        this.storageRemove('inputOn');
+      }
+      if (this.storageGet('formData1')) {
+        this.formData1 = JSON.parse(this.storageGet('formData1'));
+        this.storageRemove('formData1');
+      }
+      if (this.storageGet('choice')) {
+        this.choice = Number(this.storageGet('choice'));
+        this.storageRemove('choice');
+      }
+      if (this.storageGet('setList')) {
+        this.setList = JSON.parse(this.storageGet('setList'));
+      }
+      this.selectInfo();
+      this.funQuery(0);
+    },
+    methods: {
+      submitForm(key,val){
+        let arr=[]
+       key.forEach(item => {
+        this.$refs.configRef.home.forEach(itema=>{
+          if(item==itema.key){
+            let obj={
+              prop:item,
+              label:itema.name
+            }
+           arr.push(obj)
+          }
+
+        })
+        this.$refs.configRef.main_diagnosis.forEach(itemb=>{
+          if(item==itemb.key){
+            let obj={
+              prop:item,
+              label:itemb.name
+            }
+            arr.push(obj)
+              }
+
+              })
+        this.$refs.configRef.other_diagnosis.forEach(itemc=>{
+          if(item==itemc.key){
+            let obj={
+              prop:item,
+              label:itemc.name
+            }
+            arr.push(obj)
+              }
+
+           })
+        this.$refs.configRef.main_operation.forEach(itemd=>{
+          if(item==itemd.key){
+            let obj={
+              prop:item,
+              label:itemd.name
+            }
+            arr.push(obj)
+              }
+
+            })
+         this.$refs.configRef.other_operation.forEach(iteme=>{
+          if(item==iteme.key){
+            let obj={
+              prop:item,
+              label:iteme.name
+            }
+            arr.push(obj)
+              }
+
+          })
+       this.$refs.configRef.SSJL.forEach(itemf=>{
+        if(item==itemf.key){
+            let obj={
+              prop:item,
+              label:itemf.name
+            }
+            arr.push(obj)
+              }
+
+          })
+       this.$refs.configRef.FYMX.forEach(itemg=>{
+        if(item==itemg.key){
+            let obj={
+              prop:item,
+              label:itemg.name
+            }
+            arr.push(obj)
+              }
+         })
+        
+      });
+      this.tableTitle=arr
+     
+
+      },
+      onChangePassword(row) {
+       // this.pwdData.row = row
+        this.pwdData.bSwitch = true
+      },
+      // table 字段排序
+      handleSortChange(column) {
+        const { prop, order } = column;
+        let str = '';
+        if (order === 'descending') {
+          str = 'desc';
+        } else if (order === 'ascending') {
+          str = 'asc';
+        } else {
+          str = null;
+        }
+        if (str) {
+          this.$set(this.sort, 0, prop)
+          this.$set(this.sort, 1, str)
+        } else {
+          this.sort = []
+        }
+        this.tableData = [];
+        
+        if (this.choice == 2) {
+          this.handleProfessionSearch(this.professionSearchData)
+        } else {
+          this.funQuery(this.searchNum);
+        }
+      },
+      // 普通下载
+      normalDownload(name) {
+        const params = {
+          keyword: this.formData0.input,
+          AAC01_start: this.formData1.startTime,
+          AAC01_end: this.formData1.endTime,
+        };
+        bassNormalSearchDownload(params).then(res => {
+          const content = res.data; // 后台返回二进制数据
+          const blob = new Blob([content]);
+          const fileName = `${name}.csv`;
+          if ('download' in document.createElement('a')) {
+            // 非IE下载
+            const elink = document.createElement('a');
+            elink.download = fileName;
+            elink.style.display = 'none';
+            elink.href = URL.createObjectURL(blob);
+            document.body.appendChild(elink);
+            elink.click();
+            URL.revokeObjectURL(elink.href); // 释放URL 对象
+            document.body.removeChild(elink);
+          } else {
+            // IE10+下载
+            navigator.msSaveBlob(blob, fileName);
+          }
+        });
+      },
+      // 高级搜索下载
+      highDownload(name) {
+        const pramse = {};
+        pramse.field = this.formData1.seniorList;
+        pramse.AAC01_start = this.formData1.startTime;
+        pramse.AAC01_end = this.formData1.endTime;
+        pramse.AAA28 = this.formData1.AAA28;
+        pramse.AAC04_start = this.formData1.AAC04_start;
+        pramse.AAC04_end = this.formData1.AAC04_end;
+        const { ageType1, ageType2 } = this.formData1;
+        // ageType1 = 1 年龄
+        // ageType1 = 0 天数
+        if (ageType1) {
+          pramse.AAA04_start = this.formData1.AAA04_start;
+        } else {
+          pramse.AAA40_start = this.formData1.AAA04_start;
+        }
+        if (ageType2) {
+          pramse.AAA04_end = this.formData1.AAA04_end;
+        } else {
+          pramse.AAA40_end = this.formData1.AAA04_end;
+        }
+        bassHighSearchDownload(pramse).then(res => {
+          const content = res.data; // 后台返回二进制数据
+          const blob = new Blob([content]);
+          const fileName = `${name}.csv`;
+          if ('download' in document.createElement('a')) {
+            // 非IE下载
+            const elink = document.createElement('a');
+            elink.download = fileName;
+            elink.style.display = 'none';
+            elink.href = URL.createObjectURL(blob);
+            document.body.appendChild(elink);
+            elink.click();
+            URL.revokeObjectURL(elink.href); // 释放URL 对象
+            document.body.removeChild(elink);
+          } else {
+            // IE10+下载
+            navigator.msSaveBlob(blob, fileName);
+          }
+        });
+      },
+      // 结果中查询
+      onLockResult() {
+        this.lock = true;
+        this.formData1.seniorList.map(item => {
+          if (!!item.value) {
+            item.lock = true;
+          } else {
+            item.lock = false;
+          }
+        });
+        this.funAdd();
+      },
+      indexAdd(index) {
+        return index + 1 + (this.paginationData.currentPage - 1) * this.paginationData.pageSize;
+      },
+      funSelect(index) {
+        // 建坤:切换时,取消input 重置
+        // this.formData1.seniorList[index].value = "";
+      },
+      selectInfo() {
+        this.$axios.post('/selectInfo').then(res => {
+          // 支付方式 pay
+          this.departmentList = res.data.department;
+        });
+      },
+      funGoto(val) {
+        this.storageSet('inputOn', JSON.stringify(this.formData0.input));
+        this.storageSet('formData1', JSON.stringify(this.formData1));
+        this.storageSet('choice', JSON.stringify(this.choice));
+        this.storageSet('getData', val);
+        const { path } = this.$route;
+        let toPath;
+        if (path === '/hospital-search') {
+          toPath = '/hospital-caseViews';
+        } else if (path === '/whitelist-search') {
+          toPath = '/whitelist-caseViews';
+        } else {
+          toPath = '/caseViews';
+        }
+        // status = 1 代表不能复制文本
+        this.$router.push({ path: toPath });
+      },
+      funCeal() {
+        this.$refs.multipleTable.clearSelection();
+      },
+      funSetformData2() {
+        this.formData1.seniorList = this.formData1.seniorList1;
+      },
+      funSetList() {
+        this.formData0.input = String(this.formData0.input1);
+      },
+      funOnclass(val) {
+        this.onClass = val;
+      },
+      handleSelectionChange(val) {
+        this.multipleSelection = val;
+      },
+      SizeChangeEvent(val) {
+        this.paginationData.pageSize = val;
+        const num = this.lock ? 1 : 0;
+        if (this.choice == 2) {
+          this.handleProfessionSearch(this.professionSearchData)
+        } else {
+          this.funQuery(num);
+        }
+      },
+      pageHasChanged(val) {
+        this.paginationData.currentPage = val
+        const num = this.lock ? 1 : 0;
+        if (this.choice == 2) {
+          this.handleProfessionSearch(this.professionSearchData)
+        } else {
+          this.funQuery(num);
+        }
+      },
+      funBlur() {
+        if (this.formData1.ageday > 356) {
+          this.formData1.ageday = 356;
+        }
+        if (this.formData1.ageyear > 150) {
+          this.formData1.ageyear = 150;
+        }
+      },
+      funBluron() {
+        if (this.formData1.hospitalizationon && this.formData1.hospitalizationin) {
+          if (this.formData1.hospitalizationon > this.formData1.hospitalizationin) {
+            this.$message('起止住院天数输入不正确');
+          }
+        }
+      },
+      funDel(i) {
+        const index = i;
+        if (index == 0) {
+          return;
+        }
+        const list = this.formData1.seniorList;
+        list.splice(index, 1);
+        this.formData1.seniorList = list;
+      },
+      funAdd() {
+        this.formData1.seniorList.push({
+          key: '',
+          select_type: 0,
+          value: '',
+          type: '0',
+          lock: false,
+        });
+      },
+      funQuery(num) {
+        const pramse = {
+          limit: this.paginationData.pageSize,
+          page: this.paginationData.currentPage // 是当前页数 默认是0 。普通检索的参数是
+        };
+        if (this.$route.query.code) {
+          pramse.code = this.$route.query.code
+        }
+        if (this.sort.length) {
+          pramse.sort = this.sort
+        }
+        let queryUrl = 'normalSearch';
+        if (this.choice == '0') {
+          queryUrl = 'normalSearch';
+          // 普通检索
+          pramse.keyword = this.formData0.input; // 关键字
+          pramse.AAC01_start = this.formData1.startTime;
+          pramse.AAC01_end = this.formData1.endTime;
+          
+          if (this.is_tm_path.includes(this.$route.path)) {
+            pramse.is_tm = 1;
+          }
+          this.$axios3.post(queryUrl, pramse).then(res => {
+            this.tableData = res.data.data.list || [];
+            this.tableDataDetails = res.data.data.detail || [];
+            this.paginationData.total = res.data.data.total;
+            if (this.choice == '0' && this.formData0.input) {
+              this.setList.push(String(this.formData0.input));
+              const listSetto = Array.from(new Set(this.setList));
+              this.setList = listSetto;
+              this.storageSet('setList', JSON.stringify(this.setList));
+            }
+          });
+        } else {
+          queryUrl = 'search';
+          // 高级检索
+          pramse.field = this.formData1.seniorList;
+          pramse.AAC01_start = this.formData1.startTime;
+          pramse.AAC01_end = this.formData1.endTime;
+          pramse.AAA28 = this.formData1.AAA28;
+          pramse.AAC04_start = this.formData1.AAC04_start;
+          pramse.AAC04_end = this.formData1.AAC04_end;
+          this.searchNum = num;
+          const { ageType1, ageType2 } = this.formData1;
+          // ageType1 = 1 年龄
+          // ageType1 = 0 天数
+          if (ageType1) {
+            pramse.AAA04_start = this.formData1.AAA04_start;
+          } else {
+            pramse.AAA40_start = this.formData1.AAA04_start;
+          }
+          if (ageType2) {
+            pramse.AAA04_end = this.formData1.AAA04_end;
+          } else {
+            pramse.AAA40_end = this.formData1.AAA04_end;
+          }
+          if (this.is_tm_path.includes(this.$route.path)) {
+            pramse.is_tm = 1;
+          }
+          this.$axios3.post(queryUrl, pramse).then(res => {
+            this.tableData = res.data.data.list || [];
+            this.tableDataDetails = res.data.data.detail || [];
+            this.paginationData.total = res.data.data.total;
+            if (this.choice == '0' && this.formData0.input) {
+              this.setList.push(String(this.formData0.input));
+              const listSetto = Array.from(new Set(this.setList));
+              this.setList = listSetto;
+              this.storageSet('setList', JSON.stringify(this.setList));
+            }
+          });
+        }
+      },
+      searchBtn(num) {
+        this.paginationData.currentPage = 1;
+        this.funQuery(num);
+      },
+      funBluron() {
+        if (this.formData1.hospitalizationon && this.formData1.hospitalizationin) {
+          if (this.formData1.hospitalizationon > this.formData1.hospitalizationin) {
+            this.$message('起止住院天数输入不正确');
+          }
+        }
+      },
+      reset() {
+        // 重置数据
+        if (this.choice == 0) {
+          Object.assign(this.$data.formData0, this.$options.data().formData0);
+        } else {
+          this.lock = false;
+          this.searchNum = 0;
+          Object.assign(this.$data.formData1, this.$options.data().formData1);
+        }
+      },
+      // 专业检索
+      handleProfessionSearchFn(params) {
+        this.paginationData.currentPage = 1
+        this.handleProfessionSearch(params)
+      },
+      handleProfessionSearch(params) {
+        this.professionSearchData = params
+        const { pageSize, currentPage } = this.paginationData
+        const queryData = {
+          ...params,
+          page_size: pageSize,
+          page: currentPage
+        }
+        if (this.$route.query.code) {
+          queryData.code = this.$route.query.code
+        }
+        if (this.sort.length) {
+          queryData.sort = this.sort
+        }
+        
+        if (this.is_tm_path.includes(this.$route.path)) {
+          queryData.is_tm = 1;
+        }
+        this.$axios3.post('/bl/serach', queryData).then(res => {
+          this.tableData = res.data.list || [];
+          this.tableDataDetails = res.data.detail || [];
+          this.paginationData.total = res.data.total;
+        });
+      },
+      // 判断对象是否为空
+      isObject(form){
+        let a = 0
+        for(let key in form){
+          if(!!form[key]){
+            a++
+          }
+        }
+        if (a) {
+          return false
+        } else {
+          return true
+        } 
+      },
+      // 导出
+      onExport() {
+        this.$refs.professionSearch.onExport()
+      },
+      handelExport(params) {
+        professionSearchExport(params).then(res => {
+          const content = res.data; // 后台返回二进制数据
+          const blob = new Blob([content]);
+          const fileName = `住院病历-专业检索.csv`;
+          if ('download' in document.createElement('a')) {
+            // 非IE下载
+            const elink = document.createElement('a');
+            elink.download = fileName;
+            elink.style.display = 'none';
+            elink.href = URL.createObjectURL(blob);
+            document.body.appendChild(elink);
+            elink.click();
+            URL.revokeObjectURL(elink.href); // 释放URL 对象
+            document.body.removeChild(elink);
+          } else {
+            // IE10+下载
+            navigator.msSaveBlob(blob, fileName);
+          }
+        });
+      },
+      // 重置
+      handleReset() {
+        this.paginationData.currentPage = 1
+        this.handleProfessionSearch({})
+      },
+      // 检索类型变化
+      handleRadioChange(val) {
+        if (val == 2) {
+          this.paginationData.currentPage = 1
+          this.handleProfessionSearch({})
+        }
+      },
+      // 分页
+    handleSizeChange(val) {
+     
+    },
+    //分页
+    handleCurrentChange(val) {
+      
+    }
+    },
+  };
+  </script>
+  <style scoped>
+  ::v-deep.el-pagination.is-background .btn-next,
+  ::v-deep.el-pagination.is-background .btn-prev,
+  ::v-deep.el-pagination.is-background .el-pager li {
+    margin: 0 5px;
+    background-color: #fff;
+    color: #606266;
+    min-width: 30px;
+    border-radius: 2px;
+    border: 1px solid #dfe3f3;
+    line-height: 27px;
+  }
+  ::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
+    background: #7e8bab;
+  }
+  ::v-deep.el-table .el-table__row td {
+    color: #7e8bab;
+    border-bottom: 1px solid #f4f4f4;
+  }
+  ::v-deep.el-table .el-table__header tr th:first-child {
+    border-radius: 10px 0px 0px 10px;
+  }
+  ::v-deep.el-table .el-table__header tr th:last-child {
+    border-radius: 0px 10px 10px 0px;
+  }
+  ::v-deep.el-table .el-table__header tr th {
+    background: #f1f6ff;
+    color: #13171e;
+    border-bottom: 0px;
+  }
+  </style>
+  <style lang="scss" scoped>
+  .tableBox {
+    background: #fff;
+    padding: 19px;
+    border-radius: 5px;
+    font-size: 12px;
+  }
+  .block {
+    background: #fff;
+    border-radius: 5px;
+    padding: 20px;
+    margin-bottom: 20px;
+    .fBtn {
+      margin-bottom: 20px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      .btn11 {
+        position: absolute;
+        right: 0;
+      }
+    }
+    .bnh {
+      margin: 0 auto;
+      margin-bottom: 20px;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+    }
+    .barBtn {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .selects {
+      width: 100%;
+    }
+    .rowsa {
+      margin-bottom: 20px;
+    }
+  }
+  .tableBox {
+    background: #fff;
+    padding: 19px;
+    border-radius: 5px;
+  }
+  .dashboard {
+    &-container {
+      margin: 30px;
+    }
+    &-text {
+      font-size: 30px;
+      line-height: 46px;
+    }
+  }
+  .pind {
+    padding: 0 20px;
+  }
+  .pind10 {
+    padding: 0 5px;
+  }
+  .width100 {
+    width: 100px;
+  }
+  .width150 {
+    width: 200px;
+  }
+  .width300 {
+    width: 295px;
+  }
+  .width500 {
+    width: 280px;
+  }
+  .width90 {
+    width: 90px;
+  }
+  .blue {
+    color: #185da6;
+  }
+  .h-title {
+    display: flex;
+    .blue {
+      display: block;
+      width: 6px;
+      height: 17px;
+      background: linear-gradient(180deg, #185da6 0%, #3195ff 100%);
+      border-radius: 3px;
+    }
+    .text {
+      font-size: 16px;
+      font-weight: 600;
+      color: #13171e;
+      margin: 0 0 0 14px;
+    }
+  }
+  .flextab-item {
+    display: flex;
+    align-items: center;
+    margin-left: 20px;
+  }
+  .flextab-item > div {
+    font-size: 15px;
+    margin-right: 15px;
+  }
+  .flextab-item > div span.s-1 {
+    color: #185da6;
+  }
+  .flextab-item > div span.s-2 {
+    font-weight: bold;
+  }
+  .inputOn {
+    width: 200px;
+    margin: 10px 10px;
+  }
+  .search-title {
+    padding: 20px 10px;
+    // width: 900px;
+    display: flex;
+    justify-content: space-between;
+  }
+  .search-title-span {
+    font-size: 20px;
+    font-weight: 600;
+    color: #13171e;
+  }
+  .conter {
+    position: relative;
+    margin: 20px 0;
+    border: 1px solid skyblue;
+    border-radius: 5px;
+  }
+  .conter-title {
+    font-size: 16px;
+    font-weight: 600;
+    color: #13171e;
+  }
+  .blue {
+    color: #185da6;
+    font-size: 16px;
+    font-weight: 600;
+  }
+  .conter-case {
+    margin: 20px 0;
+    font-size: 15px;
+    text-indent: 30px;
+    line-height: 30px;
+  }
+  .conter-case1 {
+    margin: 0 auto;
+    margin: 50px 0;
+  }
+  .yeleou {
+    font-size: 16px;
+    color: rgb(233, 157, 66);
+    cursor: pointer;
+    font-weight: 600;
+  }
+  .conter-num {
+    font-size: 15px;
+    font-weight: 600;
+  }
+  .conter-time {
+    font-size: 15px;
+    padding-top: 10px;
+    font-weight: 600;
+  }
+  .onQuery {
+    padding: 0 20px;
+    color: rgb(233, 157, 66);
+  }
+  .cont-title {
+    width: 100%;
+    padding: 20px;
+    display: flex;
+    justify-content: space-between;
+  }
+  .title-left {
+    display: flex;
+  }
+  .title-right {
+    display: flex;
+    float: right;
+    & > div {
+      width: 150px;
+      border: 1px solid #d5e4ff;
+      text-align: center;
+      padding: 10px 0;
+    }
+  }
+  .title-right-data {
+    background: #3195ff;
+    color: #fff;
+  }
+  .title-left-p {
+    line-height: 38px;
+    padding: 0 20px;
+    font-size: 16px;
+    color: #13171e;
+  }
+  .title-left-span {
+    color: #3195ff;
+    font-size: 18px;
+    padding: 0 5px;
+    // font-weight: 600;
+  }
+  .title-left-btn {
+    margin: 0 0 0 40px;
+  }
+  .title-left-checked {
+    margin-top: 10px;
+  }
+  .conter-checked {
+    position: absolute;
+    top: 21px;
+    left: 30px;
+  }
+  .bule {
+    background: #3195ff !important;
+    color: #fff !important;
+  }
+  .titleName {
+    margin-left: 30px;
+    vertical-align: top;
+  }
+  .marginLeft {
+    margin-left: -110px;
+  }
+  
+  ::v-deep .el-input-number .el-input__inner {
+    text-align: left;
+  }
+  .inline_block {
+    display: inline-block;
+  }
+  ::v-deep .el-descriptions-item__content {
+    display: inline-block;
+  }
+  .add-btn{
+    position: relative;
+    float: right;
+    right: 240px;
+    text-align: right;
+        
+      }
+      .btn-class{
+      display: flex;
+      justify-content: flex-end;
+      margin-right:90px;
+      // background-color: #185da6;
+    }
+    .topClass{
+      position: relative;
+      bottom: 40px;
+    }
+::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
+  // box-shadow: #dcdfe6 -1px 0px 0px 0px !important;
+  color:  #00C797;
+    // background-color: #185da6 !important;
+    // border-color: #185da6 !important;
+}
+.el-pagination {
+  float: right;
+}
+.cus-total {
+  float: left;
+  font-size: 13px;
+  color: #606266;
+  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+  line-height: 28px;
+}
+.pagination-container {
+  display:flex;
+  justify-content: center;
+  
+  background: #fff;
+  padding: 0 16px;
+  overflow: hidden;
+}
+.pagination-container.hidden {
+  display: none;
+}
+::v-deep .el-radio-button__inner:hover {
+  color: #00C797;
+}
+::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
+  color: #00C797 !important;
+  background-color: #fff !important;
+  border-color:#00C797 !important;
+   
+}
+::v-deep .el-pagination {
+    /* display: flex; */
+    float: left !important;
+    margin-left: 25% !important;
+}
+
+::v-deep .el-pagination__sizes {
+    margin: 0 10px 0 100px;
+    font-weight: 400;
+    color: #606266;
+    // padding:10px 0 10px 0;
+}
+.custom-pagination .el-pagination__button {
+  height: 50px !important;
+  line-height: 28px;
+  padding: 0 8px;
+}
+  </style>
+  

+ 474 - 0
src/views/caseAnalysis/components/DirectoryDialog.vue

@@ -0,0 +1,474 @@
+<template>
+  <div>
+    <el-dialog
+     v-el-drag-dialog
+      title="病历目录"
+      :visible.sync="data.bSwitch"
+      width="50%"
+    >
+    <el-row :gutter="10">
+     <el-col class="" :span="5">
+      <el-menu
+      :default-active ="defaultActive"
+      class="el-menu-vertical-demo"
+      @open="handleOpen"
+      @close="handleClose">
+      <el-submenu index='BASY'>
+        <template slot="title">
+            <i class="el-icon-bank-card"></i>
+          <span>病案首页</span>
+        </template>
+        <el-menu-item-group>
+          <el-menu-item index="home" @click.native="onMenuClick('home')">首页</el-menu-item>
+          <el-menu-item index="main_diagnosis" @click.native="onMenuClick('main_diagnosis')">主诊断</el-menu-item>
+          <el-menu-item index="other_diagnosis" @click.native="onMenuClick('other_diagnosis')">其他诊断</el-menu-item>
+          <el-menu-item index="main_operation" @click.native="onMenuClick('main_operation')">主手术</el-menu-item>
+          <el-menu-item index="other_operation" @click.native="onMenuClick('other_operation')">其他手术</el-menu-item>
+        </el-menu-item-group>
+      </el-submenu>
+      <el-submenu index="SSJL" @click.native="onMenuClick('SSJL')">
+        <template slot="title">
+          <span>手术记录</span>
+        </template>
+      </el-submenu>
+      <el-submenu index="FYMX" @click.native="onMenuClick('FYMX')">
+        <template slot="title">
+          <span>住院费用</span>
+        </template>
+      </el-submenu>
+      </el-menu>
+    </el-col>
+    <el-row class="inputClass">
+        <el-input class="" placeholder="请输入查询的字段名称"  prefix-icon="el-icon-search"></el-input>
+      </el-row>
+  <el-col class="" :span="19" v-if="defaultActive==='home'">
+  <template>
+  <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in home" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+   </el-radio-group>
+   </template>
+     </el-col>
+   <el-col class="" :span="19" v-if="defaultActive==='main_diagnosis'">
+  <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in main_diagnosis" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='other_diagnosis'">
+    <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in other_diagnosis" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='main_operation'">
+    <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in main_operation" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='other_operation'">
+    <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in other_operation" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='SSJL'">
+    <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in SSJL" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='FYMX'">
+    <template>
+    <el-radio-group v-model="key">
+    <el-radio style="margin:20px;" v-for="(item,index) in FYMX" :label="item.key" :key="item.key">{{item.name}}</el-radio>
+     </el-radio-group>
+     </template>
+     </el-col>
+    </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm(defaultActive)">确认</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import { editPassword } from '@/api/user'
+const cityOptions=[{id:"1",name:"住院号码"},{id:"2",name:"姓名"},{id:"3",name:"年龄"},{id:"4",name:"住院次数"}]
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          bSwitch: false,
+          row: {}
+        }
+      }
+    }
+  },
+  data() {
+    return {
+        key:'ZYH',
+        // key2:'ZYH',
+        // key3:'ZYH',
+        // key4:'ZYH',
+        // key5:'ZYH',
+        // key6:'ZYH',
+        // key7:'ZYH',
+        home: [
+                            {key: 'ZYH', name:'唯一标识', type: 'input', value: ''},
+                            {key: 'AAA28', name: '住院号码', type: 'input', value: ''},
+                            {key : 'AAA29', name: '住院次数', type: 'range', value: ''},
+                            {key: 'AAA01', name: '患者姓名', type: 'input', value: ''},
+                            {key: 'AAA02C', name: '患者性别', type: 'select', value:''},
+                            {key: 'AAA04', name: '患者年龄', type: 'range', value: ''},
+                            {key: 'AAA40', name: '患者天龄', type: 'range', value: ''},
+                            {key: 'AAA08C', name: '婚姻状况', type: 'select', value :''},
+                            {key:'AEM01C', name: '离院方式', type: 'select', value:''},
+                            {key: 'AAB01', name: '入院时间', type: 'time', value: ''},
+                            {key:'AAC04', name: '住院天数', type: 'range', value: ''},
+                            {key: 'AAC11N', name: '出院科室', type: 'select', value:''},
+                            {key: 'AAB06C', name: '入院途径', type: 'select', value:''},
+                            {key: 'AAA26C', name:'医疗付费方式', type: 'select', value:''},
+                            {key:'ADA01', name:'住院总费用', type: 'range', value: ''},
+                            {key: 'ADA0101', name: '自付费用', type:'range', value:''},
+                        ],
+                        main_diagnosis: [
+                            {key: 'M_ICD10_ID1', name: '主要诊断编码', type: 'select', value:''},
+                            {key: 'M_ICD10_NAME', name: '主要诊断名称', type: 'select', value:''},
+                            {key: 'M_RYQK', name: '入院病情', type: 'select', value :''},
+                        ],
+                        other_diagnosis: [
+                            {key: 'O_ICD10_ID1', name: '其他诊断编码', type: 'select', value:''},
+                            {key: 'O_ICD10_NAME', name: '其他诊断名称', type: 'select', value:''},
+                            {key: 'O_RYQK', name: '入院病情(其他诊断)', type: 'select', value:''},
+                        ],
+                        main_operation:[
+                            {key:'M_ICD9_ID1', name: '主手术编码', type:'select', value:''},
+                            {key: 'M_ICD9_NAME', name: '主手术名称', type: 'select', value:''},
+                            {key: 'M_OPE_DATE', name: '主手术操作日期', type: 'time', value: ''},
+                            {key: 'M_OPE_LEVEL', name: '手术级别', type:'select', value:''},
+                            {key: 'M_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key:'M_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'M_FRIST_ASSISTANT_NAME', name:'一助', type: 'select', value:''},
+                            {key: 'M_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'M_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'M_QKDJ', name: '切口等级', type: 'select', value:''},
+                            {key: 'M_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'M_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+                        other_operation : [
+                            {key: 'O_ICD9_ID1', name: '其他手术编码', type: 'select', value:''},
+                            {key: 'O_ICD9_NAME', name: '其他手术名称', type: 'select', value:''},
+                            {key: 'O_OPE_DATE', name: '其他手术操作日期', type: 'time', value: ''},
+                            {key: 'O_OPE_LEVEL', name: '手术级别', type: 'select', value: ''},
+                            {key:'O_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key: 'O_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'O_FRIST_ASSISTANT_NAME', name: '一助', type: 'select', value:''},
+                            {key:'O_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'O_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'O_QKDJ', name: '切口等级', type: 'select', value: ''},
+                            {key: 'O_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'O_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+        BASY: [
+                    {
+                        key: 'home',
+                        name: '首页',
+                        
+                    },
+                    {
+                        key: 'main_diagnosis',
+                        name: '主诊断',
+                       
+                    },
+                    {
+                        key:'other_diagnosis',
+                        name: '其他诊断',
+                       
+                    },
+                    {
+                        key:'main_operation',
+                        name: '主手术',
+                        
+                    },
+                    {
+                    key: 'other_operation',
+                        name: '其他手术',
+                        
+                    }
+                  ],
+                  SSJL : [
+                        {key: 'SSNM', name: '手术内码', type: 'input', value: ''},
+                        {key: 'SSMC', name: '手术名称', type: 'input', value: ''},
+                        {key: 'SSDM', name:'手术代码', type: 'input', value: ''},
+                        {key:'SSSJ', name: '手术时间', type: 'time', value: ''},
+                    ],
+                    FYMX: [
+                        {key: 'JFRQ', name:'计费日期', type: 'time', value: ''},
+                        {key: 'YBBM', name:'医保编码', type: 'input', value: ''},
+                         {key: 'FYMC', name: '费用名称', type: 'input', value: ''},
+                        {key: 'FYSL', name: '费用数量', type:  'range', value: ''},
+                        {key: 'FYDJ', name: '费用单价', type: 'range', value: ''},
+                        {key: 'ZJE', name: '总金额', type: 'range', value: ''},
+                        {key:'YSGH', name: '医生工号', type: 'select', value: ''},
+                        {key: 'ZLXZ', name: '诊疗小组', type: 'select', value:''},
+                        {key: 'FYKS', name: '费用科室', type: 'select', value:''},
+                        {key: 'ZXKS', name: '执行科室', type: 'select', value: ''},
+                        {key: 'FYGB', name:  '费用归并', type: 'input', value: ''},
+                        {key: 'SYFYGB', name:'首页费用归并', type: 'input', value: ''},
+                        {key: 'YPLX', name: '药品类型', type: 'select', value:''},
+                    ],
+        List:[
+               {key:"BASY",
+                name:"病案首页",
+                
+                 },
+                 {
+                 key: 'SSJL', 
+                 name: '手术记录',
+                   
+                 },
+                {
+                key: 'FYMX',
+                name: '住院费用',
+                    
+                }
+            
+        ],
+   desData:{
+        List:[
+               {key:"BASY",
+                name:"病案首页",
+                children: [
+                        {
+                        key: 'home',
+                        name: '首页',
+                        children: [
+                            {key: 'ZYH', name:'唯一标识', type: 'input', value: ''},
+                            {key: 'AAA28', name: '住院号码', type: 'input', value: ''},
+                            {key : 'AAA29', name: '住院次数', type: 'range', value: ''},
+                            {key: 'AAA01', name: '患者姓名', type: 'input', value: ''},
+                            {key: 'AAA02C', name: '患者性别', type: 'select', value:''},
+                            {key: 'AAA04', name: '患者年龄', type: 'range', value: ''},
+                            {key: 'AAA40', name: '患者天龄', type: 'range', value: ''},
+                            {key: 'AAA08C', name: '婚姻状况', type: 'select', value :''},
+                            {key:'AEM01C', name: '离院方式', type: 'select', value:''},
+                            {key: 'AAB01', name: '入院时间', type: 'time', value: ''},
+                            {key:'AAC04', name: '住院天数', type: 'range', value: ''},
+                            {key: 'AAC11N', name: '出院科室', type: 'select', value:''},
+                            {key: 'AAB06C', name: '入院途径', type: 'select', value:''},
+                            {key: 'AAA26C', name:'医疗付费方式', type: 'select', value:''},
+                            {key:'ADA01', name:'住院总费用', type: 'range', value: ''},
+                            {key: 'ADA0101', name: '自付费用', type:'range', value:''},
+                        ],
+                    },
+                    {
+                        key: 'main_diagnosis',
+                        name: '主诊断',
+                        children: [
+                            {key: 'M_ICD10_ID1', name: '主要诊断编码', type: 'select', value:''},
+                            {key: 'M_ICD10_NAME', name: '主要诊断名称', type: 'select', value:''},
+                            {key: 'M_RYQK', name: '入院病情', type: 'select', value :''},
+                        ],
+                    },
+                    {
+                        key:'other_diagnosis',
+                        name: '其他诊断',
+                        children: [
+                            {key: 'O_ICD10_ID1', name: '其他诊断编码', type: 'select', value:''},
+                            {key: 'O_ICD10_NAME', name: '其他诊断名称', type: 'select', value:''},
+                            {key: 'O_RYQK', name: '入院病情(其他诊断)', type: 'select', value:''},
+                        ],
+                    },
+                    {
+                        key:'main_operation',
+                        name: '主手术',
+                        children:[
+                            {key:'M_ICD9_ID1', name: '主手术编码', type:'select', value:''},
+                            {key: 'M_ICD9_NAME', name: '主手术名称', type: 'select', value:''},
+                            {key: 'M_OPE_DATE', name: '主手术操作日期', type: 'time', value: ''},
+                            {key: 'M_OPE_LEVEL', name: '手术级别', type:'select', value:''},
+                            {key: 'M_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key:'M_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'M_FRIST_ASSISTANT_NAME', name:'一助', type: 'select', value:''},
+                            {key: 'M_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'M_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'M_QKDJ', name: '切口等级', type: 'select', value:''},
+                            {key: 'M_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'M_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+                    },
+                    {
+                    key: 'other_operation',
+                        name: '其他手术',
+                        children : [
+                            {key: 'O_ICD9_ID1', name: '其他手术编码', type: 'select', value:''},
+                            {key: 'O_ICD9_NAME', name: '其他手术名称', type: 'select', value:''},
+                            {key: 'O_OPE_DATE', name: '其他手术操作日期', type: 'time', value: ''},
+                            {key: 'O_OPE_LEVEL', name: '手术级别', type: 'select', value: ''},
+                            {key:'O_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key: 'O_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'O_FRIST_ASSISTANT_NAME', name: '一助', type: 'select', value:''},
+                            {key:'O_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'O_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'O_QKDJ', name: '切口等级', type: 'select', value: ''},
+                            {key: 'O_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'O_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ]
+                    }
+                  ]
+                 },
+                 {
+                 key: 'SSJL', 
+                 name: '手术记录',
+                    children : [
+                        {key: 'SSNM', name: '手术内码', type: 'input', value: ''},
+                        {key: 'SSMC', name: '手术名称', type: 'input', value: ''},
+                        {key: 'SSDM', name:'手术代码', type: 'input', value: ''},
+                        {key:'SSSJ', name: '手术时间', type: 'time', value: ''},
+                    ]
+                 },
+                {
+                key: 'FYMX',
+                name: '住院费用',
+                    children: [
+                        {key: 'JFRQ', name:'计费日期', type: 'time', value: ''},
+                        {key: 'YBBM', name:'医保编码', type: 'input', value: ''},
+                         {key: 'FYMC', name: '费用名称', type: 'input', value: ''},
+                        {key: 'FYSL', name: '费用数量', type:  'range', value: ''},
+                        {key: 'FYDJ', name: '费用单价', type: 'range', value: ''},
+                        {key: 'ZJE', name: '总金额', type: 'range', value: ''},
+                        {key:'YSGH', name: '医生工号', type: 'select', value: ''},
+                        {key: 'ZLXZ', name: '诊疗小组', type: 'select', value:''},
+                        {key: 'FYKS', name: '费用科室', type: 'select', value:''},
+                        {key: 'ZXKS', name: '执行科室', type: 'select', value: ''},
+                        {key: 'FYGB', name:  '费用归并', type: 'input', value: ''},
+                        {key: 'SYFYGB', name:'首页费用归并', type: 'input', value: ''},
+                        {key: 'YPLX', name: '药品类型', type: 'select', value:''},
+                    ]
+                }
+            
+        ]
+     },
+      radio: 3,
+      defaultActive:"1",
+      tabsLabel:[{
+        id:'one',
+        name:'病案首页'
+      },{
+        id:'two',
+        name:"住院费用"
+      },{
+        id:"three",
+        name:"手术安排"
+      }],
+      activeName:"one",
+       tabPosition: 'left',
+       checkedCities:[],
+       cities: cityOptions,
+      ruleForm: {
+        password: '',
+        id: ''
+      },
+      rules: {
+        password: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  created() {
+    const { id } = this.data.row
+    this.ruleForm.id = id
+  },
+  methods: {
+    //点击菜单
+    onMenuClick(val){
+      this.$emit("onMenuClick",val)
+    this.defaultActive=val
+    },
+    handleOpen(key, keyPath) {
+        console.log(key, keyPath);
+      },
+      handleClose(key, keyPath) {
+        console.log(key, keyPath);
+      },
+    submitForm(val) {
+   
+    //   this.$refs['ruleForm'].validate((valid) => {
+    //     if (valid) {
+        //   editPassword(this.ruleForm).then(res => {
+        this.$emit('handleCascaderChange',val)
+            // this.$message.success(res.msg || '操作成功')
+            this.data.bSwitch = false
+        //   })
+    //     } else {
+    //       return false
+    //     }
+    //   })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.demo-ruleForm {
+	width: 80%;
+}
+.el-button--primary {
+    color: #FFF;
+    background-color: #00C797;
+    border-color: #00C797;
+}
+.el-button:focus, .el-button:hover {
+    color: #409EFF !important;
+    border-color: #c6e2ff !important;
+    background-color: #ecf5ff !important;
+}
+.asideClass {
+    background-color: #D3DCE6;
+    color: #333;
+    text-align: center;
+    line-height: 200px;
+  }
+  
+  .mainClass {
+    background-color: #E9EEF3;
+    color: #333;
+    text-align: center;
+    line-height: 160px;
+  }
+  ::v-deep .el-dialog__header{
+      padding: 10px 20px;
+      background: #00C797;
+      color: #fff !important;
+      .el-dialog__title{
+        color: #fff;
+      }
+    }
+   ::v-deep .el-icon-arrow-down:before {
+   content: ""!important;
+}
+.inputClass{
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  margin-bottom:20px;
+}
+::v-deep .el-radio__input.is-checked .el-radio__inner {
+    border-color: #00C797;
+    background: #00C797;
+    // color:#00C797 !important;
+}
+::v-deep .el-radio__input.is-checked+.el-radio__label {
+    color: #00C797;
+}
+//EFF2F5
+</style>

+ 982 - 0
src/views/caseAnalysis/components/ProfessionSearch.vue

@@ -0,0 +1,982 @@
+<template>
+  <div>
+    <div class="content-box">
+      <!-- 病历搜索 -->
+      <div class="search-box">
+        <div class="row-box">
+        <el-row  v-for="(items, indexs) of formInline3.field" :key="indexs" style="margin-bottom: 16px;">
+        <el-col class="" :span="24" >
+          <el-col class="" :span="4">
+            <el-button type="primary" v-if="isShow" class="el-icon-arrow-down heightClass" style="padding-bottom:10px" @click="toggleSideBar(indexs)">查询组({{toChineseNumber(indexs+1)}})</el-button>
+            <el-button type="primary" v-if="!isShow" class="el-icon-arrow-up heightClass" style="padding-bottom:10px" @click="toggleSideBar(indexs)">查询组({{toChineseNumber(indexs+1)}})</el-button>
+
+          </el-col>
+          <div class="block dataClass">
+            <div class="radio" style="display:flex;justify-content: flex-start;">
+             <span class="" style="display:inline-block;margin-right:10px;">条件之前的逻辑:</span>
+             <el-radio-group v-model="items.select_type" style="margin-top: 18px;">
+              <el-radio :label="0">且(满足所有条件)</el-radio>
+              <el-radio :label="1">或(满足一个条件)</el-radio>
+              <!-- <el-radio :label="2">不包含</el-radio> -->
+              </el-radio-group>
+              <el-col class="" :span="4">
+                <el-button type="text" class="minusClass" circle size="mini" icon="el-icon-remove-outline" :disabled="formInline3.field.length === 1" @click="onMinuss(index)"></el-button>
+                <el-button class="circleClass bottomCirclePlus" type="text" circle size="mini" icon="el-icon-circle-plus-outline" @click="onPluss(indexs)"></el-button>
+            </el-col>
+            </div>
+         </div>
+        </el-col>
+       <el-col style="margin-top: 20px;" class="" :span="24" v-if="isShow"> 
+        <el-row v-for="(item, index) of items.formInline2.field" :key="index" style="margin-bottom: 16px;margin-top: 10px;">
+          <span style="display: inline-block;
+         float: left;
+         text-align: center;
+         font-size: 16px;margin-right:10px;margin-top:10px;">条件{{ index+1 }}:</span>
+            <el-col :span="8.5" class="firClass" style="margin-right:5px;">
+              <!-- <el-cascader
+                v-model="item.key"
+                :options="bl"
+                ref="cascader"
+                clearable
+                filterable
+                :show-all-levels="true"
+                :props="{
+                  label: 'name',
+                  value: 'key',
+                  expandTrigger: 'hover',
+                  emitPath: false
+                }"
+                @change="handleCascaderChange(index)">
+              </el-cascader>  style="width: 240px;margin-right:5px;"-->
+              <el-input
+              
+                v-model="item.key"
+                placeholder="请选择查询的病历目录"
+                clearable
+                @click.native="onChangePassword(index)"
+              />
+            </el-col>
+            <el-col :span="9" style="margin-right:5px;">
+              <el-input v-if="item.type === 'input'" v-model="item.value" clearable placeholder="请输入" ></el-input>
+              <el-date-picker
+                v-if="item.type === 'time'"
+                v-model="item.value"
+                type="datetimerange"
+                range-separator="至"
+                value-format="timestamp"
+                :default-time="['00:00:00', '23:59:59']"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                style="width: 100%;">
+              </el-date-picker>
+              <el-select v-if="item.type === 'select'" v-model="item.value" placeholder="请选择" style="width: 100%;">
+                <el-option v-for="(sItem, sIndex) of item.selects" :key="sIndex" :label="sItem.value" :value="sItem.name"></el-option>
+              </el-select>
+            </el-col>
+            <el-col class="" :span="2">
+              <el-select v-model="item.select_type" filterable placeholder="模糊" style="border-top-right-radius: 4px;border-bottom-right-radius:4px ;">
+                <el-option label="模糊" :value="0"></el-option>
+                <el-option label="精准" :value="1"></el-option>
+                <el-option label="不包含" :value="2"></el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="2">
+              <el-button type="text" size="mini" icon="el-icon-minus"  :disabled="items.formInline2.field.length === 1" @click="onMinus(index,indexs)" style="margin-left: 16px;"></el-button>
+              <el-button type="text" size="mini" icon="el-icon-plus" @click="onPlus(indexs)"></el-button>
+            </el-col>
+       </el-row>
+        </el-col> 
+      </el-row>
+          <!-- <el-row v-for="(item, index) of formInline2.field" :key="index" style="margin-bottom: 16px;">
+            <el-col :span="4">
+              <el-select v-model="item.select_type" filterable placeholder="请选择">
+                <el-option label="且" :value="0"></el-option>
+                <el-option label="或" :value="1"></el-option>
+                <el-option label="不包含" :value="2"></el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="7">
+              <el-input
+                v-model="item.key"
+                placeholder="请选择查询的病历目录"
+                clearable
+                @click.native="onChangePassword"
+               
+              />
+            </el-col>
+            <el-col :span="9">
+              <el-input v-if="item.type === 'input'" v-model="item.value" clearable placeholder="请输入"></el-input>
+              <el-date-picker
+                v-if="item.type === 'time'"
+                v-model="item.value"
+                type="datetimerange"
+                range-separator="至"
+                value-format="timestamp"
+                :default-time="['00:00:00', '23:59:59']"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                style="width: 100%;">
+              </el-date-picker>
+              <el-select v-if="item.type === 'select'" v-model="item.value" placeholder="请选择" style="width: 100%;">
+                <el-option v-for="(sItem, sIndex) of item.selects" :key="sIndex" :label="sItem.value" :value="sItem.name"></el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="4">
+              <el-button type="text" size="mini" icon="el-icon-minus" :disabled="formInline2.field.length === 1" @click="onMinus(index)" style="margin-left: 16px;"></el-button>
+              <el-button type="text" size="mini" icon="el-icon-plus" @click="onPlus"></el-button>
+            </el-col>
+          </el-row> -->
+          
+        </div>
+      </div>
+      <!-- 信息搜索 -->
+       <div class="info-search">
+        <el-form  :model="formInline" class="demo-form-inline" label-width="68px">
+         
+          <el-form-item label="出院时间">
+            <el-date-picker
+              v-model="formInline.AAC01_START"
+              type="date"
+              format="yyyy年MM月dd日"
+              value-format="timestamp"
+              placeholder="开始日期"
+              :picker-options="pickerOptions"
+              style="margin-right: 10px;"
+             
+            />
+            至
+            <el-date-picker
+              v-model="formInline.AAC01_END"
+              type="date"
+              format="yyyy年MM月dd日"
+              value-format="timestamp"
+              placeholder="结束日期"
+              :picker-options="pickerOptions"
+              style="margin-left: 10px;"
+           
+            />
+          </el-form-item>
+           <!-- <el-from-item class="">
+            <i class="el-icon-star-on"></i>
+         
+          </el-from-item>  -->
+         <!-- <el-form-item label="" class="more-btn">
+            <el-button type="text" @click="showMore = !showMore">{{ showMore ? '收回' : '更多'}}</el-button>
+          </el-form-item> -->
+        </el-form>
+       <!-- <el-collapse-transition>
+          <div v-show="showMore" style="width: 1124px; margin: 0 auto;">
+            <el-form :inline="true" :model="formInline2" class="demo-form-inline2" label-width="68px">
+              <el-form-item label="住院号码">
+            <el-input v-model="formInline.AAA28" clearable placeholder="请输入"></el-input>
+          </el-form-item>
+          <el-form-item label="出院科室">
+            <el-select v-model="formInline.AAC11N" clearable filterable :disabled="AAC11N_lock" placeholder="请选择">
+              <el-option v-for="(item, index) in departmentList" :key="index" :label="item.name" :value="item.name" />
+            </el-select>
+          </el-form-item>
+              <el-form-item label="姓名">
+                <el-input v-model="formInline2.AAA01" clearable placeholder="请输入"></el-input>
+              </el-form-item>
+              <el-form-item label="性别">
+                <el-select v-model="formInline2.AAA02C" clearable filterable placeholder="请选择">
+                  <el-option v-for="(item, index) in sexs" :key="index" :label="item.name" :value="item.id" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="入院时间">
+                <el-date-picker
+                  v-model="formInline2.AAB01_START"
+                  type="date"
+                  format="yyyy年MM月dd日"
+                  value-format="timestamp"
+                  placeholder="开始日期"
+                  :picker-options="pickerOptions"
+                  style="margin-right: 10px;"
+                />
+                <el-date-picker
+                  v-model="formInline2.AAB01_END"
+                  type="date"
+                  format="yyyy年MM月dd日"
+                  value-format="timestamp"
+                  placeholder="结束日期"
+                  :picker-options="pickerOptions"
+                />
+              </el-form-item>
+              <el-form-item label="住院天数">
+                <el-input placeholder="起始天数" v-model="formInline2.AAC04_START" clearable style="width: 230px; margin-right: 10px;">
+                  <template slot="append">天</template>
+                </el-input>
+                <el-input placeholder="终止天数" v-model="formInline2.AAC04_END" clearable style="width: 230px;">
+                  <template slot="append">天</template>
+                </el-input>
+              </el-form-item>
+              <el-form-item label="年龄">
+                <el-input placeholder="起始年龄" v-model="formInline2.ageStart" clearable style="width: 230px; margin-right: 10px;">
+                  <el-select v-model="formInline2.ageType" slot="append" placeholder="请选择">
+                    <el-option label="天" :value="1"></el-option>
+                    <el-option label="岁" :value="2"></el-option>
+                  </el-select>
+                </el-input>
+                <el-input placeholder="终止年龄" v-model="formInline2.ageEnd" clearable style="width: 230px;">
+                  <el-select v-model="formInline2.ageType" slot="append" placeholder="请选择">
+                    <el-option label="天" :value="1"></el-option>
+                    <el-option label="岁" :value="2"></el-option>
+                  </el-select>
+                </el-input>
+              </el-form-item>
+              <el-form-item label="体温">
+                <el-input placeholder="起始体温" v-model="formInline2.TIWEN_START" clearable style="width: 230px; margin-right: 10px;">
+                  <template slot="append">℃</template>
+                </el-input>
+                <el-input placeholder="终止体温" v-model="formInline2.TIWEN_END" clearable style="width: 230px; margin-right: 10px;">
+                  <template slot="append">℃</template>
+                </el-input>
+                <el-select
+                  v-model="formInline2.TIWEN_FIELD"
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 240px;"
+                  placeholder="请选择">
+                  <el-option
+                    v-for="item in tiwens"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+             </el-form>
+          </div> 
+         </el-collapse-transition>  -->
+        <!-- <div class="btn-group"> -->
+          <div class="btn-class">
+            <el-button @click="onReset">重置</el-button>
+            <el-button type="primary" @click="onSearch">查询</el-button>
+          </div>
+        <!-- </div> -->
+        <el-row>
+            <div class="btn-class" style="margin-top:10px;">
+              <!-- <el-from-item class=""> -->
+                <!-- <i class="el-icon-star-on"></i> -->
+                <!-- <el-button style="float: right;margin-top: -10px; margin-right: -10px" ><el-icon><Star /></el-icon></el-button> -->
+            <el-button plain icon="el-icon-star-on" style="margin-bottom:-35px;" class="caiClass" >收藏</el-button>
+          <!-- </el-from-item> -->
+            <!-- <button  size="small" icon="el-icon-upload" type="primary">收藏</button> -->
+           </div>
+            <el-tabs v-model="activeName" @tab-click="handleClick" style="width:92%;">
+            <el-tab-pane label="收藏检索条件" name="first">收藏检索条件</el-tab-pane>
+            <el-tab-pane label="常用查询词语" name="second">常用查询词语</el-tab-pane>
+            <el-tab-pane label="历史检索条件" name="third">历史检索条件</el-tab-pane>
+            </el-tabs>
+          </el-row>
+           <!-- 修改密码 -->
+      <DirectoryDialog v-if="pwdData.bSwitch" :data="pwdData" @handleCascaderChange="handleCascaderChange" ref="DirRef" />
+      </div> 
+    </div>
+  </div>
+</template>
+
+<script>
+
+import Hamburger from '@/components/Hamburger';
+  import DirectoryDialog from './DirectoryDialog.vue'
+export default {
+  components: {
+    DirectoryDialog,
+    Hamburger
+    },
+  data() {
+    return {
+      radio: 3,
+      textCenter:"center",
+      activeName:"first",
+      sexs: [
+        {
+          id: 1,
+          name: '男'
+        },
+        {
+          id: 2,
+          name: '女'
+        },
+        {
+          id: 0,
+          name: '未知的性别'
+        },
+        {
+          id: 9,
+          name: '未说明的性别'
+        }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        },
+      },
+      bl: [],
+      tiwens: [],
+      formInline: {
+        AAA28: '',
+        AAC11N: '',
+        AAC01_START: '',
+        AAC01_END: ''
+      },
+      formInline2: {
+        AAA01: '',
+        AAA02C: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC04_START: '',
+        AAC04_END: '',
+        ageStart: '',// 自定义需根据ageType转化相应字段
+        ageEnd: '',// 自定义需根据ageType转化相应字段
+        ageType: 2,
+        TIWEN_START: '',
+        TIWEN_END: '',
+        TIWEN_FIELD: '',
+        field: [{
+          select_type: 0,
+          type: 'input',
+          key: '',
+          selects: [],
+          value: '',
+        }]
+      },
+      formInline3:{
+        field: [{
+        select_type: 0,
+        formInline2: {
+        AAA01: '',
+        AAA02C: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC04_START: '',
+        AAC04_END: '',
+        ageStart: '',// 自定义需根据ageType转化相应字段
+        ageEnd: '',// 自定义需根据ageType转化相应字段
+        ageType: 2,
+        TIWEN_START: '',
+        TIWEN_END: '',
+        TIWEN_FIELD: '',
+        field: [{
+          select_type: 0,
+          type: 'input',
+          key: '',
+          selects: [],
+          value: '',
+        }]
+        }
+         
+        }]
+      },
+      indexData:0,
+      menusData:[],
+      departmentList: [],
+      showMore: false,
+      AAC11N_lock: false,
+      isShow:true,
+      pwdData: {
+          bSwitch: false,
+        },
+    }
+  },
+  created() {
+    this.getSelects()
+    this.getTiwensSelects()
+    this.selectInfo()
+   
+  },
+  methods: {
+toChineseNumber(num) {
+    const chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
+    const units = ['', '十', '百', '千'];
+    let str = '';
+    
+    if (num >= 10) {
+        str += chineseNumbers[Math.floor(num / 10)] + units[1];
+        num = num % 10;
+        if (num > 0) {
+            str += chineseNumbers[num];
+        }
+    } else {
+        str += chineseNumbers[num];
+    }
+    
+    return str;
+    },
+    toggleSideBar(index){
+     this.isShow= !this.isShow
+    },
+    // 切换页签
+    handleClick(val){
+
+    },
+    onChangePassword(index) {
+      this.indexData=index;
+       // this.pwdData.row = row
+        this.pwdData.bSwitch = true
+      },
+    // 获取选择得项
+    handleCascaderChange(menuName) {
+    this.formInline2.field.key=this.$refs.DirRef.key
+      if(menuName==='home'){
+        this.$refs.DirRef.home.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+        if(menuName==='main_diagnosis'){
+        this.$refs.DirRef.main_diagnosis.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+      if(menuName==='other_diagnosis'){
+        this.$refs.DirRef.other_diagnosis.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+
+      if(menuName==='main_operation'){
+        this.$refs.DirRef.main_operation.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+      if(menuName==='other_operation'){
+        this.$refs.DirRef.other_operation.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+      if(menuName==='SSJL'){
+        this.$refs.DirRef.SSJL.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+      if(menuName==='FYMX'){
+        this.$refs.DirRef.FYMX.forEach((item)=> {
+          if(item.key===this.$refs.DirRef.key){
+            this.$set(this.formInline2.field[this.indexData], 'type', item.type)
+            const timeVal = item.type === 'time' ? [] : undefined
+          this.$set(this.formInline2.field[this.indexData], 'value', timeVal)
+          this.$set(this.formInline2.field[this.indexData], 'selects', item.value)
+          }
+          
+        });
+      }
+
+        // if(this.$refs.DirRef.key===this.$refs.DirRef.home[0].key){
+        //   const node=this.$refs.DirRef.home[0].type
+        //   this.$set(this.formInline2.field[this.indexData], 'type', node)
+        // }
+        
+      
+   
+      // const node = this.$refs.DirRef[this.$refs.DirRef.length-1].getCheckedNodes(false)
+      // this.$set(this.formInline2.field[index], 'type', node[0].data.type)
+      // const timeVal = node[0].data.type === 'time' ? [] : undefined
+      // this.$set(this.formInline2.field[index], 'value', timeVal)
+      // this.$set(this.formInline2.field[index], 'selects', node[0].data.value)
+    },
+    // 获取select条件
+    getSelects() {
+      this.$axios3.post('/bl/serach_where', {}).then(res => {
+        this.bl = res.data.bl || [];
+        if (res.data.dep_name) {
+          this.formInline.AAC11N = res.data.dep_name
+          this.AAC11N_lock = true
+        }
+      });
+    },
+    getTiwensSelects() {
+      this.$axios3.post('/bl/tiwenWhere', {}).then(res => {
+        this.tiwens = res.data || [];
+      });
+    },
+    // 获取科室
+    selectInfo() {
+      this.$axios.post('/selectInfo').then(res => {
+        this.departmentList = res.data.department;
+      });
+    },
+    // 新增一行
+    onPlus(i) {
+     if(this.formInline3.field[i]){
+      this.formInline3.field[i].formInline2.field.push({
+        select_type: 0,
+        value: '',
+        type: 'input',
+        selects: [],
+        key: ''
+
+
+      })
+     }
+    },
+    onMinuss(i){
+        this.formInline3.field.splice(i, 1)
+    },
+    onPluss(){
+      this.formInline3.field.push({
+        select_type: 0,
+        formInline2: {
+        AAA01: '',
+        AAA02C: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC04_START: '',
+        AAC04_END: '',
+        ageStart: '',// 自定义需根据ageType转化相应字段
+        ageEnd: '',// 自定义需根据ageType转化相应字段
+        ageType: 2,
+        TIWEN_START: '',
+        TIWEN_END: '',
+        TIWEN_FIELD: '',
+        field: [{
+          select_type: 0,
+          type: 'input',
+          key: '',
+          selects: [],
+          value: '',
+        }]
+        }
+         
+        })
+     
+    },
+    // 减一行
+    onMinus(i,j) {
+      if(this.formInline3.field[j]){
+        this.formInline3.field[j].formInline2.field.splice(i, 1)
+      }
+      
+    },
+    // 搜索
+    onSearch() {
+      const { ageType, ageStart, ageEnd, TIWEN_START, TIWEN_END } = this.formInline2
+      if (TIWEN_START) {
+        if (TIWEN_START <0 || TIWEN_START > 60) {
+          this.$message.error('体温开始温度(不能小于0,不能大于60)')
+          return
+        }
+      }
+      if (TIWEN_END) {
+        if (TIWEN_END <0 || TIWEN_END > 60) {
+          this.$message.error('体温结束温度(不能小于0,不能大于60)')
+          return
+        }
+      }
+      if (TIWEN_START && TIWEN_END) {
+        if (Number(TIWEN_START) > Number(TIWEN_END)) {
+          this.$message.error('体温开始温度不能大于结束温度')
+          return
+        }
+      }
+      if (ageType === 1) {
+        this.formInline2.AAA40_START = ageStart
+        this.formInline2.AAA40_END = ageEnd
+      } else if (ageType === 2) {
+        this.formInline2.AAA04_START = ageStart
+        this.formInline2.AAA04_END = ageEnd
+      }
+      const params = {
+        ...this.formInline,
+        ...this.formInline2
+      }
+      const { field } = JSON.parse(JSON.stringify(this.formInline2))
+      field.map(item => {
+        if (item.type === 'time') {
+          item.value = item.value.join(',')
+        }
+      })
+      params.field = field
+      this.$emit('search', params)
+    },
+    // 导出
+    onExport() {
+      const { ageType, ageStart, ageEnd } = this.formInline2
+      if (ageType === 1) {
+        this.formInline2.AAA40_START = ageStart
+        this.formInline2.AAA40_END = ageEnd
+      } else if (ageType === 2) {
+        this.formInline2.AAA04_START = ageStart
+        this.formInline2.AAA04_END = ageEnd
+      }
+      const params = {
+        ...this.formInline,
+        ...this.formInline2
+      }
+      const { field } = JSON.parse(JSON.stringify(this.formInline2))
+      field.map(item => {
+        if (item.type === 'time') {
+          item.value = item.value.join(',')
+        }
+      })
+      params.field = field
+      this.$emit('export', params)
+    },
+    // 重置
+    onReset() {
+      this.formInline = {
+        AAA28: '',
+        AAC11N: '',
+        AAC01_START: '',
+        AAC01_END: ''
+      }
+
+      this.formInline2 = {
+        AAA01: '',
+        AAA02C: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC04_START: '',
+        AAC04_END: '',
+        ageStart: '',// 自定义需根据ageType转化相应字段
+        ageEnd: '',// 自定义需根据ageType转化相应字段
+        ageType: 2,
+        TIWEN_START: '',
+        TIWEN_END: '',
+        TIWEN_FIELD: '',
+        field: [{
+          select_type: 0,
+          key: '',
+          value: '',
+        }]
+      }
+
+      this.$emit('reset')
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.content-box {
+  background: #fff;
+  border-radius: 5px;
+  margin: 20px;
+  .search-box {
+    .row-box {
+      // display: flex;
+      // justify-content: flex-start;
+      width: 1000px;
+      margin: 0 50px 16px;
+    }
+  }
+  .info-search {
+    margin-top: 20px;
+    .demo-form-inline {
+      width: 1124px;
+      margin: 0 auto;
+      position: relative;
+      .more-btn {
+        position: absolute;
+        right: -70px;
+      }
+    }
+  }
+  .search-btn {
+    width: 240px;
+  }
+}
+::v-deep .el-input-group__append {
+  width: 65px;
+}
+::v-deep .el-form--inline .el-form-item {
+  margin-right: 20px;
+}
+.btn-group {
+  text-align: center;
+  position: relative;
+  .btn-group-right {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+}
+::v-deep .el-cascader {
+  width: 100%;
+  .el-input {
+    .el-input__inner {
+      height: 40px !important;
+    }
+  }
+  .el-cascader__tags {
+    .el-tag {
+      max-width: 70%;
+    }
+  }
+}
+.btn-class{
+      display: flex;
+      justify-content: flex-end;
+    }
+    .el-button--primary {
+      color: #FFF;
+      background-color: #005FA6;
+       border-color: #005FA6;
+  }
+  .el-button:focus, .el-button{
+    // border-color: #005FA6 !important;
+  }
+//   .el-icon-plus:before {
+//     content: "\e6d9";
+//     color:#005FA6 !important;
+//     font-weight: 700;
+// }
+  // .el-icon-minus{
+  //   color:#005FA6 !important;
+  //   border-color: #005FA6 !important;
+  // }
+  .el-button:focus, .el-button:hover {
+      color: #409EFF !important;
+      border-color: #c6e2ff !important;
+      background-color: #ecf5ff !important;
+  }
+  .el-pager li:not(.disabled).active {
+      background-color: #185da6 !important;
+      color: #FFF;
+  }
+  ::v-deep .el-tabs__item:hover {
+    color: #00C797 !important;
+    cursor: pointer;
+}
+::v-deep .el-tabs__item.is-active {
+  color: #00C797 !important;
+}
+::v-deep .el-tabs__active-bar {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    height: 2px;
+    background-color: #00C797 !important;
+    z-index: 1;
+}
+.caiClass:hover {
+    color: #EE8A0C !important;
+    border-color: #EE8A0C !important;
+    background-color: #fff !important;
+   
+}
+.el-icon-star-on:after {
+    content: "\e797";
+    color: #EE8A0C
+}
+::v-deep .el-icon-plus:before {
+    content: "\e6d9";
+    color: #005FA6 !important;
+    font-size: 22px !important;
+    font-weight: 700 !important;
+    /* border: 2px solid #005fa6; */
+}
+
+::v-deep .el-icon-minus:before {
+    content: "\e6d8";
+    color: #005FA6 !important;
+    font-size: 22px !important;
+    font-weight: 700 !important;
+}
+
+::v-deep .el-icon-circle-plus-outline:before {
+    content: "\e723";
+    color: #005FA6 !important;
+    font-size: 22px;
+    font-weight: 700;
+}
+::v-deep .el-icon-remove-outline:before {
+    content: "\e722";
+    color: #005FA6 !important;
+    font-size: 22px;
+    font-weight: 700;
+}
+.minusClass{
+  float: left !important;
+   margin-top: 5px !important;
+  margin-left: 190% !important;
+}
+::v-deep .el-descriptions-item__label.has-colon::after {
+    content: '';
+    position: relative;
+    top: -0.5px;
+}
+
+::v-deep .el-descriptions__body .el-descriptions__table {
+    border-collapse: collapse;
+     width: 60% !important; 
+    table-layout: fixed;
+}
+// .plusClass{
+//   float: right !important;
+//     margin-top: -42px !important;
+//     margin-right: -28px !important;
+// }
+// ::v-deep .el-button--mini.is-circle {
+//     padding: 7px;
+  
+//     float: left !important;
+//     // margin-top: 28px !important;
+//     margin-left: 450% !important;
+// }
+.circleClass{
+  padding: 7px;
+  
+  float: left !important;
+  //  margin-top: 20px !important;
+  margin-left: 222% !important;
+}
+.dataClass{
+  // margin:10px;
+  width: 98%;
+  height :50px;
+  line-height:50px;
+  background-color:#ECF5FF;
+  // box-shadow:  var(--el-box-shadow-light);
+ border-radius: 4px; 
+  // padding:20px;
+}
+
+// .el-button {
+//     display: inline-block;
+//     line-height: 1.7;
+//     white-space: nowrap;
+//     cursor: pointer;
+//     background: #FFF;
+//     border: 1px solid #DCDFE6;
+//     color: #606266;
+//     -webkit-appearance: none;
+//     text-align: center;
+//     -webkit-box-sizing: border-box;
+//     box-sizing: border-box;
+//     outline: 0;
+//     margin: 0;
+//     -webkit-transition: .1s;
+//     transition: .1s;
+//     font-weight: 500;
+//     padding: 12px 20px;
+//     font-size: 14px;
+//     border-radius: 4px;
+// }
+.heightClass{
+  line-height: 1.7 !important;
+  border-top-right-radius: 0px !important;
+    border-bottom-right-radius: 0px !important;
+
+}
+.bottomCirclePlus{
+  margin-top: -38px;
+}
+::v-deep .content-box .info-search .demo-form-inline {
+    width: 1124px;
+    margin-left: 45px;
+    /* margin: 0 auto; */
+    position: relative;
+}
+.hamburger-container {
+  background-color:#005FA6;
+    line-height: 50px;
+    height: 100%;
+    float: left;
+    cursor: pointer;
+    transition: background 0.3s;
+    -webkit-tap-highlight-color: transparent;
+    border-top-left-radius:4px ;
+    border-bottom-left-radius:4px ;
+    // &:hover {
+    //   background: rgba(0, 0, 0, 0.025);
+    // }
+  }
+  .firClass{
+    border-top-left-radius:4px;
+    border-bottom-left-radius:4px;
+   
+   
+  }
+  ::v-deep .el-input__inner {
+    -webkit-appearance: none;
+    background-color: #FFF;
+    background-image: none;
+    // border-top-right-radius:0px !important;
+    // border-bottom-right-radius:0px !important;
+     border-radius: 4px; 
+    border: 1px solid #DCDFE6;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #606266;
+    display: inline-block;
+    height: 40px;
+    line-height: 40px;
+    outline: 0;
+    padding: 0 20px;
+    -webkit-transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+    transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+    width: 100%;
+    }
+   ::v-deep .el-select>.el-input__inner {
+      border-top-right-radius: 4px;
+    }
+    .el-button:hover {
+    // color: #409EFF !important;
+    // border-color: #c6e2ff !important;
+    // background-color: #ecf5ff !important;
+}
+::v-deep .el-radio__input.is-checked .el-radio__inner {
+    border-color: #005FA6;
+    background: #005FA6;
+}
+::v-deep .el-radio__input.is-checked+.el-radio__label {
+    color:#005FA6;
+}
+
+::v-deep .el-input__inner {
+    // margin-left: 10px !important;
+    text-align: center !important;
+    
+}
+::v-deep .el-icon-arrow-up:before {
+    content: "\e6e1";
+    /* float: left; */
+    font-size: 14px;
+    font-weight: 700;
+    margin-right:10px;
+}
+::v-deep .el-icon-arrow-down:before {
+    content: "\e6df";
+    font-size: 14px;
+    font-weight: 700;
+    margin-right:10px;
+}
+//EE8A0C
+</style>

+ 492 - 0
src/views/caseAnalysis/components/configDirDialog.vue

@@ -0,0 +1,492 @@
+<template>
+  <div>
+    <el-dialog
+     v-el-drag-dialog
+      title="病历目录"
+      :visible.sync="data.bSwitch"
+      width="50%"
+    >
+    <el-row :gutter="10">
+     <el-col class="" :span="5">
+      <el-menu
+      :default-active ="defaultActive"
+      class="el-menu-vertical-demo"
+      @open="handleOpen"
+      @close="handleClose">
+      <el-submenu index='BASY'>
+        <template slot="title">
+            <i class="el-icon-bank-card"></i>
+          <span>病案首页</span>
+        </template>
+        <el-menu-item-group>
+          <el-menu-item index="home" @click.native="onMenuClick('home')">首页</el-menu-item>
+          <el-menu-item index="main_diagnosis" @click.native="onMenuClick('main_diagnosis')">主诊断</el-menu-item>
+          <el-menu-item index="other_diagnosis" @click.native="onMenuClick('other_diagnosis')">其他诊断</el-menu-item>
+          <el-menu-item index="main_operation" @click.native="onMenuClick('main_operation')">主手术</el-menu-item>
+          <el-menu-item index="other_operation" @click.native="onMenuClick('other_operation')">其他手术</el-menu-item>
+        </el-menu-item-group>
+      </el-submenu>
+      <el-submenu index="SSJL" @click.native="onMenuClick('SSJL')">
+        <template slot="title">
+          <span>手术记录</span>
+        </template>
+      </el-submenu>
+      <el-submenu index="FYMX" @click.native="onMenuClick('FYMX')">
+        <template slot="title">
+          <span>住院费用</span>
+        </template>
+      </el-submenu>
+      </el-menu>
+    </el-col>
+    <el-row class="inputClass">
+        <el-input class="" placeholder="请输入查询的字段名称"  prefix-icon="el-icon-search"></el-input>
+      </el-row>
+  <el-col class="" :span="19" v-if="defaultActive==='home'">
+  <template>
+    <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in home"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+   </template>
+     </el-col>
+   <el-col class="" :span="19" v-if="defaultActive==='main_diagnosis'">
+  <template>
+    <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in main_diagnosis"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='other_diagnosis'">
+    <template>
+      <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in other_diagnosis"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+   
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='main_operation'">
+    <template>
+      <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in main_operation"  :label="item.name" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+    
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='other_operation'">
+    <template>
+      <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in other_operation"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+    
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='SSJL'">
+    <template>
+      <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in SSJL"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+   
+     </template>
+     </el-col>
+     <el-col class="" :span="19" v-if="defaultActive==='FYMX'">
+    <template>
+      <el-checkbox-group 
+      v-model="key1"
+     >
+      <el-checkbox  style="margin:20px;" v-for="(item,index) in FYMX"  :label="item.key" :key="item.key">{{item.name}}</el-checkbox>
+    </el-checkbox-group>
+   
+     </template>
+     </el-col>
+    </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm(key1,defaultActive)">确认</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import { editPassword } from '@/api/user'
+const cityOptions=[{id:"1",name:"住院号码"},{id:"2",name:"姓名"},{id:"3",name:"年龄"},{id:"4",name:"住院次数"}]
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          bSwitch: false,
+          row: {}
+        }
+      }
+    }
+  },
+  data() {
+    return {
+        key1:[],
+        // key2:[],
+        // key3:[],
+        // key4:[],
+        // key5:[],
+        // key6:[],
+        // key7:[],
+        home: [
+                            {key: 'ZYH', name:'唯一标识', type: 'input', value: ''},
+                            {key: 'AAA28', name: '住院号码', type: 'input', value: ''},
+                            {key : 'AAA29', name: '住院次数', type: 'range', value: ''},
+                            {key: 'AAA01', name: '患者姓名', type: 'input', value: ''},
+                            {key: 'AAA02C', name: '患者性别', type: 'select', value:''},
+                            {key: 'AAA04', name: '患者年龄', type: 'range', value: ''},
+                            {key: 'AAA40', name: '患者天龄', type: 'range', value: ''},
+                            {key: 'AAA08C', name: '婚姻状况', type: 'select', value :''},
+                            {key:'AEM01C', name: '离院方式', type: 'select', value:''},
+                            {key: 'AAB01', name: '入院时间', type: 'time', value: ''},
+                            {key:'AAC04', name: '住院天数', type: 'range', value: ''},
+                            {key: 'AAC11N', name: '出院科室', type: 'select', value:''},
+                            {key: 'AAB06C', name: '入院途径', type: 'select', value:''},
+                            {key: 'AAA26C', name:'医疗付费方式', type: 'select', value:''},
+                            {key:'ADA01', name:'住院总费用', type: 'range', value: ''},
+                            {key: 'ADA0101', name: '自付费用', type:'range', value:''},
+                        ],
+                        main_diagnosis: [
+                            {key: 'M_ICD10_ID1', name: '主要诊断编码', type: 'select', value:''},
+                            {key: 'M_ICD10_NAME', name: '主要诊断名称', type: 'select', value:''},
+                            {key: 'M_RYQK', name: '入院病情', type: 'select', value :''},
+                        ],
+                        other_diagnosis: [
+                            {key: 'O_ICD10_ID1', name: '其他诊断编码', type: 'select', value:''},
+                            {key: 'O_ICD10_NAME', name: '其他诊断名称', type: 'select', value:''},
+                            {key: 'O_RYQK', name: '入院病情(其他诊断)', type: 'select', value:''},
+                        ],
+                        main_operation:[
+                            {key:'M_ICD9_ID1', name: '主手术编码', type:'select', value:''},
+                            {key: 'M_ICD9_NAME', name: '主手术名称', type: 'select', value:''},
+                            {key: 'M_OPE_DATE', name: '主手术操作日期', type: 'time', value: ''},
+                            {key: 'M_OPE_LEVEL', name: '手术级别', type:'select', value:''},
+                            {key: 'M_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key:'M_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'M_FRIST_ASSISTANT_NAME', name:'一助', type: 'select', value:''},
+                            {key: 'M_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'M_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'M_QKDJ', name: '切口等级', type: 'select', value:''},
+                            {key: 'M_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'M_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+                        other_operation : [
+                            {key: 'O_ICD9_ID1', name: '其他手术编码', type: 'select', value:''},
+                            {key: 'O_ICD9_NAME', name: '其他手术名称', type: 'select', value:''},
+                            {key: 'O_OPE_DATE', name: '其他手术操作日期', type: 'time', value: ''},
+                            {key: 'O_OPE_LEVEL', name: '手术级别', type: 'select', value: ''},
+                            {key:'O_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key: 'O_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'O_FRIST_ASSISTANT_NAME', name: '一助', type: 'select', value:''},
+                            {key:'O_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'O_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'O_QKDJ', name: '切口等级', type: 'select', value: ''},
+                            {key: 'O_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'O_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+        BASY: [
+                    {
+                        key: 'home',
+                        name: '首页',
+                        
+                    },
+                    {
+                        key: 'main_diagnosis',
+                        name: '主诊断',
+                       
+                    },
+                    {
+                        key:'other_diagnosis',
+                        name: '其他诊断',
+                       
+                    },
+                    {
+                        key:'main_operation',
+                        name: '主手术',
+                        
+                    },
+                    {
+                    key: 'other_operation',
+                        name: '其他手术',
+                        
+                    }
+                  ],
+                  SSJL : [
+                        {key: 'SSNM', name: '手术内码', type: 'input', value: ''},
+                        {key: 'SSMC', name: '手术名称', type: 'input', value: ''},
+                        {key: 'SSDM', name:'手术代码', type: 'input', value: ''},
+                        {key:'SSSJ', name: '手术时间', type: 'time', value: ''},
+                    ],
+                    FYMX: [
+                        {key: 'JFRQ', name:'计费日期', type: 'time', value: ''},
+                        {key: 'YBBM', name:'医保编码', type: 'input', value: ''},
+                         {key: 'FYMC', name: '费用名称', type: 'input', value: ''},
+                        {key: 'FYSL', name: '费用数量', type:  'range', value: ''},
+                        {key: 'FYDJ', name: '费用单价', type: 'range', value: ''},
+                        {key: 'ZJE', name: '总金额', type: 'range', value: ''},
+                        {key:'YSGH', name: '医生工号', type: 'select', value: ''},
+                        {key: 'ZLXZ', name: '诊疗小组', type: 'select', value:''},
+                        {key: 'FYKS', name: '费用科室', type: 'select', value:''},
+                        {key: 'ZXKS', name: '执行科室', type: 'select', value: ''},
+                        {key: 'FYGB', name:  '费用归并', type: 'input', value: ''},
+                        {key: 'SYFYGB', name:'首页费用归并', type: 'input', value: ''},
+                        {key: 'YPLX', name: '药品类型', type: 'select', value:''},
+                    ],
+        List:[
+               {key:"BASY",
+                name:"病案首页",
+                
+                 },
+                 {
+                 key: 'SSJL', 
+                 name: '手术记录',
+                   
+                 },
+                {
+                key: 'FYMX',
+                name: '住院费用',
+                    
+                }
+            
+        ],
+   desData:{
+        List:[
+               {key:"BASY",
+                name:"病案首页",
+                children: [
+                        {
+                        key: 'home',
+                        name: '首页',
+                        children: [
+                            {key: 'ZYH', name:'唯一标识', type: 'input', value: ''},
+                            {key: 'AAA28', name: '住院号码', type: 'input', value: ''},
+                            {key : 'AAA29', name: '住院次数', type: 'range', value: ''},
+                            {key: 'AAA01', name: '患者姓名', type: 'input', value: ''},
+                            {key: 'AAA02C', name: '患者性别', type: 'select', value:''},
+                            {key: 'AAA04', name: '患者年龄', type: 'range', value: ''},
+                            {key: 'AAA40', name: '患者天龄', type: 'range', value: ''},
+                            {key: 'AAA08C', name: '婚姻状况', type: 'select', value :''},
+                            {key:'AEM01C', name: '离院方式', type: 'select', value:''},
+                            {key: 'AAB01', name: '入院时间', type: 'time', value: ''},
+                            {key:'AAC04', name: '住院天数', type: 'range', value: ''},
+                            {key: 'AAC11N', name: '出院科室', type: 'select', value:''},
+                            {key: 'AAB06C', name: '入院途径', type: 'select', value:''},
+                            {key: 'AAA26C', name:'医疗付费方式', type: 'select', value:''},
+                            {key:'ADA01', name:'住院总费用', type: 'range', value: ''},
+                            {key: 'ADA0101', name: '自付费用', type:'range', value:''},
+                        ],
+                    },
+                    {
+                        key: 'main_diagnosis',
+                        name: '主诊断',
+                        children: [
+                            {key: 'M_ICD10_ID1', name: '主要诊断编码', type: 'select', value:''},
+                            {key: 'M_ICD10_NAME', name: '主要诊断名称', type: 'select', value:''},
+                            {key: 'M_RYQK', name: '入院病情', type: 'select', value :''},
+                        ],
+                    },
+                    {
+                        key:'other_diagnosis',
+                        name: '其他诊断',
+                        children: [
+                            {key: 'O_ICD10_ID1', name: '其他诊断编码', type: 'select', value:''},
+                            {key: 'O_ICD10_NAME', name: '其他诊断名称', type: 'select', value:''},
+                            {key: 'O_RYQK', name: '入院病情(其他诊断)', type: 'select', value:''},
+                        ],
+                    },
+                    {
+                        key:'main_operation',
+                        name: '主手术',
+                        children:[
+                            {key:'M_ICD9_ID1', name: '主手术编码', type:'select', value:''},
+                            {key: 'M_ICD9_NAME', name: '主手术名称', type: 'select', value:''},
+                            {key: 'M_OPE_DATE', name: '主手术操作日期', type: 'time', value: ''},
+                            {key: 'M_OPE_LEVEL', name: '手术级别', type:'select', value:''},
+                            {key: 'M_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key:'M_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'M_FRIST_ASSISTANT_NAME', name:'一助', type: 'select', value:''},
+                            {key: 'M_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'M_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'M_QKDJ', name: '切口等级', type: 'select', value:''},
+                            {key: 'M_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'M_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ],
+                    },
+                    {
+                    key: 'other_operation',
+                        name: '其他手术',
+                        children : [
+                            {key: 'O_ICD9_ID1', name: '其他手术编码', type: 'select', value:''},
+                            {key: 'O_ICD9_NAME', name: '其他手术名称', type: 'select', value:''},
+                            {key: 'O_OPE_DATE', name: '其他手术操作日期', type: 'time', value: ''},
+                            {key: 'O_OPE_LEVEL', name: '手术级别', type: 'select', value: ''},
+                            {key:'O_SSPB', name: '手术判别', type: 'select', value:''},
+                            {key: 'O_OPE_MAN_NAME', name: '术者', type: 'select', value:''},
+                            {key: 'O_FRIST_ASSISTANT_NAME', name: '一助', type: 'select', value:''},
+                            {key:'O_SECOND_ASSISTANT_NAME', name: '二助', type: 'select', value:''},
+                            {key: 'O_HOCUS_WAY_ID', name: '麻醉方式', type: 'select', value:''},
+                            {key: 'O_QKDJ', name: '切口等级', type: 'select', value: ''},
+                            {key: 'O_YHDJ', name: '愈合等级', type: 'select', value:''},
+                            {key: 'O_HOCUS_MAN_NAME', name: '麻醉医师', type: 'select', value:''},
+                        ]
+                    }
+                  ]
+                 },
+                 {
+                 key: 'SSJL', 
+                 name: '手术记录',
+                    children : [
+                        {key: 'SSNM', name: '手术内码', type: 'input', value: ''},
+                        {key: 'SSMC', name: '手术名称', type: 'input', value: ''},
+                        {key: 'SSDM', name:'手术代码', type: 'input', value: ''},
+                        {key:'SSSJ', name: '手术时间', type: 'time', value: ''},
+                    ]
+                 },
+                {
+                key: 'FYMX',
+                name: '住院费用',
+                    children: [
+                        {key: 'JFRQ', name:'计费日期', type: 'time', value: ''},
+                        {key: 'YBBM', name:'医保编码', type: 'input', value: ''},
+                         {key: 'FYMC', name: '费用名称', type: 'input', value: ''},
+                        {key: 'FYSL', name: '费用数量', type:  'range', value: ''},
+                        {key: 'FYDJ', name: '费用单价', type: 'range', value: ''},
+                        {key: 'ZJE', name: '总金额', type: 'range', value: ''},
+                        {key:'YSGH', name: '医生工号', type: 'select', value: ''},
+                        {key: 'ZLXZ', name: '诊疗小组', type: 'select', value:''},
+                        {key: 'FYKS', name: '费用科室', type: 'select', value:''},
+                        {key: 'ZXKS', name: '执行科室', type: 'select', value: ''},
+                        {key: 'FYGB', name:  '费用归并', type: 'input', value: ''},
+                        {key: 'SYFYGB', name:'首页费用归并', type: 'input', value: ''},
+                        {key: 'YPLX', name: '药品类型', type: 'select', value:''},
+                    ]
+                }
+            
+        ]
+     },
+      radio: 3,
+      defaultActive:"1",
+      tabsLabel:[{
+        id:'one',
+        name:'病案首页'
+      },{
+        id:'two',
+        name:"住院费用"
+      },{
+        id:"three",
+        name:"手术安排"
+      }],
+      activeName:"one",
+       tabPosition: 'left',
+       checkedCities:[],
+       cities: cityOptions,
+      ruleForm: {
+        password: '',
+        id: ''
+      },
+      rules: {
+        password: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  created() {
+    const { id } = this.data.row
+    this.ruleForm.id = id
+  },
+  methods: {
+    //点击菜单
+    onMenuClick(val){
+    this.defaultActive=val
+    },
+    handleOpen(key, keyPath) {
+        console.log(key, keyPath);
+      },
+      handleClose(key, keyPath) {
+        console.log(key, keyPath);
+      },
+    submitForm(key) {
+   
+    //   this.$refs['ruleForm'].validate((valid) => {
+    //     if (valid) {
+        //   editPassword(this.ruleForm).then(res => {
+       this.$emit('submitForm',key)
+            // this.$message.success(res.msg || '操作成功')
+            this.data.bSwitch = false
+        //   })
+    //     } else {
+    //       return false
+    //     }
+    //   })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.demo-ruleForm {
+	width: 80%;
+}
+.el-button--primary {
+    color: #FFF;
+    background-color: #00C797;
+    border-color: #00C797;
+}
+.el-button:focus, .el-button:hover {
+    color: #409EFF !important;
+    border-color: #c6e2ff !important;
+    background-color: #ecf5ff !important;
+}
+.asideClass {
+    background-color: #D3DCE6;
+    color: #333;
+    text-align: center;
+    line-height: 200px;
+  }
+  
+  .mainClass {
+    background-color: #E9EEF3;
+    color: #333;
+    text-align: center;
+    line-height: 160px;
+  }
+  ::v-deep .el-dialog__header{
+      padding: 10px 20px;
+      background: #00C797;
+      color: #fff !important;
+      .el-dialog__title{
+        color: #fff;
+      }
+    }
+   ::v-deep .el-icon-arrow-down:before {
+   content: ""!important;
+}
+.inputClass{
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  margin-bottom:20px;
+}
+::v-deep .el-radio__input.is-checked .el-radio__inner {
+    border-color: #00C797;
+    background: #00C797;
+    // color:#00C797 !important;
+}
+::v-deep .el-radio__input.is-checked+.el-radio__label {
+    color: #00C797;
+}
+//EFF2F5
+</style>

+ 426 - 0
src/views/caseAnalysis/login.vue

@@ -0,0 +1,426 @@
+<template>
+    <!-- <div class="login-container" :style="{backgroundImage: isProd ? 'url('+ login_bg +')' : null}"> -->
+      <div class="login-container">
+      <!-- <div class="logo">
+        <img v-if="isProd" class="img1" src="../../assets/images/logo.png" />
+        <img v-else :src="login_logo" class="img2" />
+      </div> -->
+        <div class="right-panel-active container" id="container">
+          <div class="overlay-container">
+            <div class="overlay">
+              <div class="overlay-panel overlay-left">
+                <h1>欢迎使用</h1>
+                <p>病案数据治理与服务平台</p>
+                <img src="../../assets/images/login-sign-bg.png" alt="" class="overlay-left-img"/>
+              </div>
+            </div>
+          </div>
+          
+          <!-- 登录 -->
+          <div class="form-container sign-up-container">
+            <p class="sign-title">病案数据治理与服务平台</p>
+            <p class="sign-title-1">登录</p>
+            <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" :class="{prod: isProd}" auto-complete="on" label-position="left">
+              <el-form-item>
+                <span class="svg-container">
+                  <svg-icon icon-class="user" />
+                </span>
+                <el-input ref="username" v-model="loginForm.username" placeholder="请输入名称或账号" name="username" type="text" tabindex="1" auto-complete="on" />
+              </el-form-item>
+  
+              <el-form-item prop="password">
+                <span class="svg-container">
+                  <svg-icon icon-class="password" />
+                </span>
+                <el-input
+                  :key="passwordType"
+                  ref="password"
+                  v-model="loginForm.password"
+                  :type="passwordType"
+                  placeholder="请输入密码"
+                  name="password"
+                  tabindex="2"
+                  auto-complete="on"
+                  @keyup.enter.native="handleLogin"
+                />
+                <span class="show-pwd" @click="showPwd">
+                  <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
+                </span>
+              </el-form-item>
+              <div class="checkbox-box">
+                <el-checkbox v-model="checked">记住密码</el-checkbox>
+              </div>
+              <el-button :loading="loading" type="primary" class="submit-btn" @click.native.prevent="handleLogin">登录</el-button>
+            </el-form>
+          </div>
+          <!-- 登录 -->
+  
+        </div>
+        
+  
+    </div>
+  </template>
+  
+  <script>
+  import { validUsername } from '@/utils/validate';
+  import menu from "@/menu/menu.js"
+  
+  export default {
+    name: 'Login',
+    data() {
+      const validateUsername = (rule, value, callback) => {
+        if (!validUsername(value)) {
+          callback(new Error('请填写名称或账号!'));
+        } else {
+          callback();
+        }
+      };
+      const validatePassword = (rule, value, callback) => {
+        if (value.length == 0) {
+          callback(new Error('密码不能为空!'));
+        } else {
+          callback();
+        }
+      };
+      return {
+        login_bg: require('../../assets/images/loginbj.jpg'),
+        login_logo: require('../../assets/images/logo2.png'),
+        loginForm: {
+          username: '',
+          password: '',
+        },
+        loginRules: {
+          username: [{ required: true, trigger: 'blur', validator: validateUsername }],
+          password: [{ required: true, trigger: 'blur', validator: validatePassword }],
+        },
+        loading: false,
+        passwordType: 'password',
+        redirect: undefined,
+        preUrl: '',
+        checked: false
+      };
+    },
+    computed: {
+      isProd() {
+        return process.env.NODE_ENV === 'production'
+      }
+    },
+    watch: {
+      $route: {
+        handler: function (route) {
+          this.redirect = route.query && route.query.redirect;
+          // this.preUrl = !!this.$route.query.preUrl ? this.$route.query.preUrl : sessionStorage.getItem('preUrl')
+          this.preUrl = !!this.$route.query.preUrl ? this.$route.query.preUrl : undefined
+        },
+        immediate: true,
+      },
+    },
+    created() {
+      let loginForm = localStorage.getItem('loginForm');
+      if(loginForm){
+        this.loginForm = JSON.parse(loginForm);
+      }
+      this.$nextTick(() => {
+        // this.preUrl = !!this.$route.query.preUrl ? this.$route.query.preUrl : sessionStorage.getItem('preUrl')
+        this.preUrl = !!this.$route.query.preUrl ? this.$route.query.preUrl : undefined
+      })
+      this.getSetting();
+    },
+    methods: {
+      getSetting() {
+        //暂时没接口
+        // this.$axios.get('/get_setting').then(res => {
+        //   const { web_name, background_img, logo, menu_logo } = res.data
+        //   const settingMsg = {
+        //     login_bg: background_img.content,
+        //     login_logo: logo.content,
+        //     menu_logo: menu_logo.content,
+        //     web_name: web_name.content
+        //   }
+        //   localStorage.setItem('settingMsg', JSON.stringify(settingMsg))
+        //   this.login_logo = settingMsg.login_logo
+        //   this.login_bg = settingMsg.login_bg
+        // });
+      },
+      showPwd() {
+        if (this.passwordType === 'password') {
+          this.passwordType = '';
+        } else {
+          this.passwordType = 'password';
+        }
+        this.$nextTick(() => {
+          this.$refs.password.focus();
+        });
+      },
+      handleLogin() {
+        this.$refs.loginForm.validate(valid => {
+          if (valid) {
+            this.loading = true;
+            this.$store.dispatch('user/login', this.loginForm).then(() => {
+                if(this.checked){
+                  let loginForm = this.loginForm;
+                  localStorage.setItem('loginForm', JSON.stringify(loginForm));
+                }else{
+                  localStorage.setItem('loginForm', '');
+                }
+                this.loading = false;
+                //获取权限菜单
+                menu.getMenu().then( () =>{
+                  const routes = JSON.parse(sessionStorage.getItem('route'))
+                  let bSwitch = []
+                  for(let i=0; i<routes.length; i++) {
+                    if(routes[i].path === '/embedIndex') {
+                      bSwitch.push(2)
+                    } else if(routes[i].path === '/hospital') {
+                      bSwitch.push(1)
+                    } else if(routes[i].path === '/reviewIndex') {
+                      bSwitch.push(3)
+                    } else {
+                      bSwitch.push(0)
+                    }
+  
+                  }
+                   
+                  if (this.preUrl) {
+                    if (this.preUrl === 'whitelist-search-specialty') {
+                      sessionStorage.setItem('preUrl', 'whitelist-search-specialty')
+                      this.$router.push({ path: '/whitelist-search-specialty', query: { from: 'kyts'} });
+                      return
+                    }
+  
+                    if (bSwitch.includes(1) && this.preUrl === 'hospital') {
+                      sessionStorage.setItem('preUrl', 'hospital')
+                      this.$router.push({ path: '/hospital'});
+                    } else if (bSwitch.includes(2) && this.preUrl === 'embedIndex') {
+                      sessionStorage.setItem('preUrl', 'embedIndex')
+                      this.$router.push({ path: '/embedIndex' });
+                    } else if (bSwitch.includes(3) && this.preUrl === 'reviewIndex') {
+                      sessionStorage.setItem('preUrl', 'reviewIndex')
+                      this.$router.push({ path: '/reviewIndex' });
+                    } else {
+                      this.$message.error('没有页面权限,请联系管理员!')
+                    }
+                  } else {
+                    this.$router.push(this.redirect || '/');
+                  }
+                }).catch((e) => {
+                  console.log(e)
+                  this.$message.error('获取导航菜单失败!');
+                })
+              }).catch(() => {
+                this.loading = false;
+              });
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+    },
+  };
+  </script>
+  
+  <style lang="scss">
+  /* 修复input 背景不协调 和光标变色 */
+  /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
+  $bg: #ffffff;
+  $light_gray: #000;
+  $cursor: #000;
+  
+  @supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
+    .login-container .el-input input {
+      color: $cursor;
+    }
+  }
+  /* reset element-ui css */
+  .login-container {
+    position: relative;
+    .el-input {
+      display: inline-block;
+      width: 85%;
+  
+      input {
+        background: transparent;
+        border: 0px;
+        -webkit-appearance: none;
+        border-radius: 0px;
+        padding: 12px 5px 12px 15px;
+        color: $light_gray;
+        caret-color: $cursor;
+  
+        &:-webkit-autofill {
+          transition: background-color 50000s ease-in-out 0s; 
+          -webkit-text-fill-color: #454545; //记住密码的颜色
+          caret-color: #454545;//改变输入框光标颜色,同时又不改变输入框里面的内容的颜色
+        }
+      }
+    }
+  
+    .el-form-item {
+      border-bottom: 1px solid rgba(184, 184, 184);
+      color: #454545;
+    }
+  }
+  </style>
+  
+  <style lang="scss" scoped>
+  $bg: #fff;
+  $dark_gray: #889aa4;
+  $light_gray: #000;
+  ::v-deep .el-form-item__content {
+    line-height: 1;
+  }
+  .submit-btn {
+    width: 100%;
+    margin-top: 30px;
+    background: rgb(58, 98, 215);
+  }
+  .support {
+    color: rgb(58, 98, 215);
+    font-size: 14px;
+    text-align: center;
+    font-weight: 500;
+    margin-bottom: 30px;
+  }
+  .logo {
+    .img1 {
+      padding-top: 40px;
+      padding-left: 40px;
+      width: 400px;
+    }
+    .img2 {
+      width: 240px;
+      padding-top: 20px;
+      padding-left: 20px;
+    }
+  }
+  .login-container {
+    min-height: 100%;
+    width: 100%;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    overflow: hidden;
+  
+    .login-form {
+      width: 100%;
+      max-width: 100%;
+      margin-top: 40px;
+      &.prod {
+        top: 200px;
+        right: 100px;
+        width: 360px;
+        transform: none;
+      }
+    }
+  
+    .tips {
+      font-size: 14px;
+      color: #fff;
+      margin-bottom: 10px;
+  
+      span {
+        &:first-of-type {
+          margin-right: 16px;
+        }
+      }
+    }
+  
+    .svg-container {
+      padding: 6px 5px 6px 15px;
+      color: $dark_gray;
+      vertical-align: middle;
+      width: 30px;
+      display: inline-block;
+    }
+  
+    .title-container {
+      position: relative;
+  
+      .title {
+        font-size: 18px;
+        color: $light_gray;
+        margin: 0px auto 20px auto;
+        font-weight: bold;
+        text-align: center;
+      }
+    }
+  
+    .show-pwd {
+      position: absolute;
+      right: 10px;
+      top: 14px;
+      font-size: 16px;
+      color: $dark_gray;
+      cursor: pointer;
+      user-select: none;
+    }
+  }
+  
+  
+  
+  // ============  新界面样式 ==========
+  .container {
+    background-color: #fff;
+    border-radius: 10px;
+    box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
+    position: relative;
+    overflow: hidden;
+    width: 860px;
+    max-width: 100%;
+    min-height: 528px;
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    display: flex;
+  }
+  .overlay-container {
+    width: 58%;
+    transition: transform 0.6s ease-in-out;
+  }
+  .overlay{
+    background: #4fb3ff;
+    background: linear-gradient(to right, #3EACFF, #914dff);
+    background-repeat: no-repeat;
+    background-size: cover;
+    background-position: 0 0;
+    color: #FFFFFF;
+    height: 100%;
+    width: 100%;
+  }
+  .overlay-left{
+    padding-top: 50px;
+    padding-left: 60px;
+  }
+  .overlay-left h1{
+    margin: 0;
+  }
+  .overlay-left p{
+    padding-top: 10px;
+    font-size: 18px;
+  }         
+  
+  .sign-up-container{
+    flex: 1;
+    padding-top: 50px;
+    padding-left: 20px;
+    padding-right: 20px;
+  }
+  .sign-title{
+    font-size: 18px;
+    font-weight: bold;
+    color: rgb(58, 98, 215);
+    text-align: center;
+  }
+  .sign-title-1{
+    font-size: 15px;
+    font-weight: bold;
+    padding-top: 20px;
+  }
+  .overlay-left-img{
+    margin: 50px auto 0;
+    width: 240px;
+    display: block;
+  }
+  </style>
+