Explorar o código

输入框改为模糊搜索

cynthia-qin hai 1 mes
pai
achega
3f49e495b4

+ 6 - 0
src/api/data/dataBase.js

@@ -54,3 +54,9 @@ export function importDataBase(data) {
     }
   })
 }
+export function getAssemblyAccessionList(query) {
+  return request({
+    url: '/data/dataBase/loadTop20DataBase/' + query,
+    method: 'get'
+  })
+}

+ 7 - 1
src/api/sample/sampleExperiment.js

@@ -58,5 +58,11 @@ export function generatorSampleExperiment(id) {
     method: 'post'
   })
 }
-
+// 查询样本编号
+export function getSampleInfoCode(keyWord) {
+  return request({
+    url: '/sample/sampleInfo/loadTop20SampleInfo/' + keyWord,
+    method: 'get'
+  })
+}
 

+ 107 - 18
src/views/data/dataBase/byt.vue

@@ -2,20 +2,46 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-        <el-input
+        <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
           v-model="queryParams.assemblyAccession"
+          filterable
+          remote
+          reserve-keyword
           placeholder="请输入NCBI基因组序列编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+          :remote-method="queryAssemblyAccession"
+          :loading="assemblyAccessionLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in assemblyAccessionOptions"
+            :key="item.id"
+            :label="item.assemblyAccession"
+            :value="item.assemblyAccession"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原体名称" prop="organismName">
-        <el-input
+        <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
           v-model="queryParams.organismName"
+          filterable
+          remote
+          reserve-keyword
           placeholder="请输入病原体名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+          :remote-method="queryOrganismName"
+          :loading="organismNameLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in organismNameOptions"
+            :key="item.id"
+            :label="item.asmName"
+            :value="item.asmName"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原类型" prop="group">
         <el-input
@@ -83,7 +109,7 @@
       <el-table-column label="分类类型" align="center" prop="isolate" />
       <el-table-column label="拼装级别" align="center" prop="assemblyLevel" />
       <el-table-column label="基因组级别" align="center" prop="genomeRep" />
-      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />     
+      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />
       <el-table-column label="ASM编号" align="center" prop="asmName" />
       <el-table-column label="gbrs_paired_asm" align="center" prop="gbrsPairedAsm" />
       <el-table-column label="paired_asm_comp" align="center" prop="pairedAsmComp" />
@@ -97,10 +123,10 @@
       <el-table-column label="scaffold_count" align="center" prop="scaffoldCount" />
       <el-table-column label="contig_count" align="center" prop="contigCount" />
       <el-table-column label="总基因数" align="center" prop="totalGeneCount" />
-      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />      
-      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />      
-      <el-table-column label="毒力基因" align="center" prop="dljy" />      
-      <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" />      
+      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />
+      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />
+      <el-table-column label="毒力基因" align="center" prop="dljy" />
+      <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" />
       <el-table-column label="毒力基因注释来源" align="center" prop="dljySource" />
       <el-table-column label="耐药药品" align="center" prop="nyjy" /> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
@@ -133,10 +159,45 @@
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="140px">
         <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-           <el-input v-model="form.assemblyAccession" :disabled="disabledAssemblyAccession" placeholder="请输入NCBI基因组序列编号" />
+          <el-select
+            v-model="form.assemblyAccession"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入NCBI基因组序列编号"
+            :remote-method="queryAssemblyAccession"
+            :loading="assemblyAccessionLoading"
+            :disabled="disabledAssemblyAccession"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in assemblyAccessionOptions"
+              :key="item.id"
+              :label="item.assemblyAccession"
+              :value="item.assemblyAccession"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="病原体名称" prop="organismName">
-           <el-input v-model="form.organismName" placeholder="请输入病原体名称" />
+          <el-select
+            v-model="form.organismName"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入病原体名称"
+            :remote-method="queryOrganismName"
+            :loading="organismNameLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in organismNameOptions"
+              :key="item.id"
+              :label="item.asmName"
+              :value="item.asmName"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="病原类型" prop="group">
           <el-input v-model="form.group" placeholder="请输入病原类型" />
@@ -188,7 +249,7 @@
         </el-form-item>
         <el-form-item label="excluded_from_refseq" prop="excluded_from_refseq">
           <el-input v-model="form.excluded_from_refseq" placeholder="请输入excluded_from_refseq" />
-        </el-form-item>        
+        </el-form-item>
         <el-form-item label="装配类型" prop="assemblyType">
           <el-input v-model="form.assemblyType" placeholder="请输入装配类型" />
         </el-form-item>
@@ -244,7 +305,7 @@
 </template>
 
 <script>
-import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase } from "@/api/data/dataBase"
+import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase, importDataBase,getAssemblyAccessionList } from "@/api/data/dataBase"
 import * as XLSX from "xlsx"
 
 export default {
@@ -286,13 +347,41 @@ export default {
       },
       upload_file: "",
       lists: [],
-      disabledAssemblyAccession:false
+      disabledAssemblyAccession:false,
+      assemblyAccessionOptions: [],
+      assemblyAccessionLoading: false,
+      organismNameOptions: [],
+      organismNameLoading: false,
     }
   },
   created() {
     this.getList()
   },
   methods: {
+        // 查询NCBI基因组序列编号
+    queryAssemblyAccession(query) {
+      if (query) {
+        this.assemblyAccessionLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.assemblyAccessionOptions = response.data
+          this.assemblyAccessionLoading = false
+        })
+      } else {
+        this.assemblyAccessionOptions = []
+      }
+    },
+    // 查询病原体名称
+    queryOrganismName(query) {
+      if (query) {
+        this.organismNameLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.organismNameOptions = response.data
+          this.organismNameLoading = false
+        })
+      } else {
+        this.organismNameOptions = []
+      }
+    },
     // 读取Excel文件
     readExcel(e) {
       console.log("读取Excel文件", e);

+ 118 - 14
src/views/data/dataBase/dljy.vue

@@ -2,20 +2,58 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px">
       <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.assemblyAccession"
           placeholder="请输入NCBI基因组序列编号"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+         <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="queryParams.assemblyAccession"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入NCBI基因组序列编号"
+          :remote-method="queryAssemblyAccession"
+          :loading="assemblyAccessionLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in assemblyAccessionOptions"
+            :key="item.id"
+            :label="item.assemblyAccession"
+            :value="item.assemblyAccession"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原体名称" prop="organismName">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.organismName"
           placeholder="请输入病原体名称"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+              <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="queryParams.organismName"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入病原体名称"
+          :remote-method="queryOrganismName"
+          :loading="organismNameLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in organismNameOptions"
+            :key="item.id"
+            :label="item.asmName"
+            :value="item.asmName"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原类型" prop="group">
         <el-input
@@ -100,8 +138,8 @@
         <el-table-column label="子类标签" align="center" prop="group1" />
         <el-table-column label="中文注释" align="center" prop="defined"  width="500" />
         <el-table-column label="解释的来源" align="center" prop="definedSource" width="200" />
-        <el-table-column label="毒力基因" align="center" prop="dljy" />      
-        <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" width="100"  />      
+        <el-table-column label="毒力基因" align="center" prop="dljy" />
+        <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" width="100"  />
         <el-table-column label="毒力基因注释来源" align="center" prop="dljySource" width="200"  />
       <!-- <el-table-column label="参考基因组类型" align="center" prop="refseqCategory" />
       <el-table-column label="分类号" align="center" prop="taxid" />
@@ -110,7 +148,7 @@
       <el-table-column label="分类类型" align="center" prop="isolate" />
       <el-table-column label="拼装级别" align="center" prop="assemblyLevel" />
       <el-table-column label="基因组级别" align="center" prop="genomeRep" />
-      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />     
+      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />
       <el-table-column label="ASM编号" align="center" prop="asmName" />
       <el-table-column label="gbrs_paired_asm" align="center" prop="gbrsPairedAsm" />
       <el-table-column label="paired_asm_comp" align="center" prop="pairedAsmComp" />
@@ -124,8 +162,8 @@
       <el-table-column label="scaffold_count" align="center" prop="scaffoldCount" />
       <el-table-column label="contig_count" align="center" prop="contigCount" />
       <el-table-column label="总基因数" align="center" prop="totalGeneCount" />
-      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />      
-      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />      
+      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />
+      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />
       <el-table-column label="耐药药品" align="center" prop="nyjy" /> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
         <template slot-scope="scope">
@@ -158,10 +196,48 @@
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="140px">
         <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-           <el-input v-model="form.assemblyAccession" :disabled="disabledAssemblyAccession" placeholder="请输入NCBI基因组序列编号" />
+           <!-- <el-input v-model="form.assemblyAccession" :disabled="disabledAssemblyAccession" placeholder="请输入NCBI基因组序列编号" /> -->
+             <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="form.assemblyAccession"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入NCBI基因组序列编号"
+          :remote-method="queryAssemblyAccession"
+          :loading="assemblyAccessionLoading"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in assemblyAccessionOptions"
+            :key="item.id"
+            :label="item.assemblyAccession"
+            :value="item.assemblyAccession"
+          >
+          </el-option>
+        </el-select>
         </el-form-item>
         <el-form-item label="病原体名称" prop="organismName">
-           <el-input v-model="form.organismName" placeholder="请输入病原体名称" />
+           <!-- <el-input v-model="form.organismName" placeholder="请输入病原体名称" /> -->
+                <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="form.organismName"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入病原体名称"
+          :remote-method="queryOrganismName"
+          :loading="organismNameLoading"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in organismNameOptions"
+            :key="item.id"
+            :label="item.asmName"
+            :value="item.asmName"
+          >
+          </el-option>
+        </el-select>
         </el-form-item>
         <el-form-item label="病原类型" prop="group">
           <el-input v-model="form.group" placeholder="请输入病原类型" />
@@ -213,7 +289,7 @@
         </el-form-item>
         <el-form-item label="excluded_from_refseq" prop="excluded_from_refseq">
           <el-input v-model="form.excluded_from_refseq" placeholder="请输入excluded_from_refseq" />
-        </el-form-item>        
+        </el-form-item>
         <el-form-item label="装配类型" prop="assemblyType">
           <el-input v-model="form.assemblyType" placeholder="请输入装配类型" />
         </el-form-item>
@@ -266,7 +342,7 @@
 </template>
 
 <script>
-import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase } from "@/api/data/dataBase"
+import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase,getAssemblyAccessionList } from "@/api/data/dataBase"
 import * as XLSX from "xlsx"
 
 export default {
@@ -311,13 +387,41 @@ export default {
       },
       upload_file: "",
       lists: [],
-      disabledAssemblyAccession:false
+      disabledAssemblyAccession:false,
+       assemblyAccessionOptions: [],
+      assemblyAccessionLoading: false,
+      organismNameOptions: [],
+      organismNameLoading: false,
     }
   },
   created() {
     this.getList()
   },
   methods: {
+       // 查询NCBI基因组序列编号
+    queryAssemblyAccession(query) {
+      if (query) {
+        this.assemblyAccessionLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.assemblyAccessionOptions = response.data
+          this.assemblyAccessionLoading = false
+        })
+      } else {
+        this.assemblyAccessionOptions = []
+      }
+    },
+    // 查询病原体名称
+    queryOrganismName(query) {
+      if (query) {
+        this.organismNameLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.organismNameOptions = response.data
+          this.organismNameLoading = false
+        })
+      } else {
+        this.organismNameOptions = []
+      }
+    },
     // 读取Excel文件
     readExcel(e) {
       console.log("读取Excel文件", e);

+ 120 - 15
src/views/data/dataBase/nyjy.vue

@@ -2,20 +2,58 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px">
       <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.assemblyAccession"
           placeholder="请输入NCBI基因组序列编号"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+         <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="queryParams.assemblyAccession"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入NCBI基因组序列编号"
+          :remote-method="queryAssemblyAccession"
+          :loading="assemblyAccessionLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in assemblyAccessionOptions"
+            :key="item.id"
+            :label="item.assemblyAccession"
+            :value="item.assemblyAccession"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原体名称" prop="organismName">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.organismName"
           placeholder="请输入病原体名称"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+              <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="queryParams.organismName"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入病原体名称"
+          :remote-method="queryOrganismName"
+          :loading="organismNameLoading"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="item in organismNameOptions"
+            :key="item.id"
+            :label="item.asmName"
+            :value="item.asmName"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="病原类型" prop="group">
         <el-input
@@ -84,7 +122,7 @@
       <el-table-column label="子类标签" align="center" prop="group1" />
       <el-table-column label="中文注释" align="center" prop="defined"  width="500" />
       <el-table-column label="解释的来源" align="center" prop="definedSource" width="200" />
-      <el-table-column label="耐药药品" align="center" prop="nyjy" /> 
+      <el-table-column label="耐药药品" align="center" prop="nyjy" />
       <!-- <el-table-column label="参考基因组类型" align="center" prop="refseqCategory" />
       <el-table-column label="分类号" align="center" prop="taxid" />
       <el-table-column label="种分类号" align="center" prop="speciesTaxid" />
@@ -92,7 +130,7 @@
       <el-table-column label="分类类型" align="center" prop="isolate" />
       <el-table-column label="拼装级别" align="center" prop="assemblyLevel" />
       <el-table-column label="基因组级别" align="center" prop="genomeRep" />
-      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />     
+      <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />
       <el-table-column label="ASM编号" align="center" prop="asmName" />
       <el-table-column label="gbrs_paired_asm" align="center" prop="gbrsPairedAsm" />
       <el-table-column label="paired_asm_comp" align="center" prop="pairedAsmComp" />
@@ -106,10 +144,10 @@
       <el-table-column label="scaffold_count" align="center" prop="scaffoldCount" />
       <el-table-column label="contig_count" align="center" prop="contigCount" />
       <el-table-column label="总基因数" align="center" prop="totalGeneCount" />
-      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />      
-      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />      
-      <el-table-column label="毒力基因" align="center" prop="dljy" />      
-      <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" />      
+      <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />
+      <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />
+      <el-table-column label="毒力基因" align="center" prop="dljy" />
+      <el-table-column label="毒力基因注释" align="center" prop="dljyExpress" />
       <el-table-column label="毒力基因注释来源" align="center" prop="dljySource" /> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
         <template slot-scope="scope">
@@ -142,10 +180,48 @@
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="140px">
         <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-           <el-input v-model="form.assemblyAccession" :disabled="disabledAssemblyAccession" placeholder="请输入NCBI基因组序列编号" />
+           <!-- <el-input v-model="form.assemblyAccession" :disabled="disabledAssemblyAccession" placeholder="请输入NCBI基因组序列编号" /> -->
+           <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="form.assemblyAccession"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入NCBI基因组序列编号"
+          :remote-method="queryAssemblyAccession"
+          :loading="assemblyAccessionLoading"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in assemblyAccessionOptions"
+            :key="item.id"
+            :label="item.assemblyAccession"
+            :value="item.assemblyAccession"
+          >
+          </el-option>
+        </el-select>
         </el-form-item>
         <el-form-item label="病原体名称" prop="organismName">
-           <el-input v-model="form.organismName" placeholder="请输入病原体名称" />
+           <!-- <el-input v-model="form.organismName" placeholder="请输入病原体名称" /> -->
+                <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="form.organismName"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请输入病原体名称"
+          :remote-method="queryOrganismName"
+          :loading="organismNameLoading"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in organismNameOptions"
+            :key="item.id"
+            :label="item.asmName"
+            :value="item.asmName"
+          >
+          </el-option>
+        </el-select>
         </el-form-item>
         <el-form-item label="病原类型" prop="group">
           <el-input v-model="form.group" placeholder="请输入病原类型" />
@@ -197,7 +273,7 @@
         </el-form-item>
         <el-form-item label="excluded_from_refseq" prop="excluded_from_refseq">
           <el-input v-model="form.excluded_from_refseq" placeholder="请输入excluded_from_refseq" />
-        </el-form-item>        
+        </el-form-item>
         <el-form-item label="装配类型" prop="assemblyType">
           <el-input v-model="form.assemblyType" placeholder="请输入装配类型" />
         </el-form-item>
@@ -244,7 +320,7 @@
 </template>
 
 <script>
-import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase } from "@/api/data/dataBase"
+import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase,getAssemblyAccessionList } from "@/api/data/dataBase"
 import * as XLSX from "xlsx"
 
 export default {
@@ -288,13 +364,42 @@ export default {
       },
       upload_file: "",
       lists: [],
-      disabledAssemblyAccession:false
+      disabledAssemblyAccession:false,
+      assemblyAccessionOptions: [],
+      assemblyAccessionLoading: false,
+      organismNameOptions: [],
+      organismNameLoading: false,
+
     }
   },
   created() {
     this.getList()
   },
   methods: {
+         // 查询NCBI基因组序列编号
+    queryAssemblyAccession(query) {
+      if (query) {
+        this.assemblyAccessionLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.assemblyAccessionOptions = response.data
+          this.assemblyAccessionLoading = false
+        })
+      } else {
+        this.assemblyAccessionOptions = []
+      }
+    },
+    // 查询病原体名称
+    queryOrganismName(query) {
+      if (query) {
+        this.organismNameLoading = true
+        getAssemblyAccessionList(query).then(response => {
+          this.organismNameOptions = response.data
+          this.organismNameLoading = false
+        })
+      } else {
+        this.organismNameOptions = []
+      }
+    },
     // 读取Excel文件
     readExcel(e) {
       console.log("读取Excel文件", e);

+ 9 - 3
src/views/data/dataDrugs/index.vue

@@ -18,12 +18,18 @@
         />
       </el-form-item>
       <el-form-item label="主要用途" prop="mainUse">
-        <el-date-picker clearable
+        <!-- <el-date-picker clearable
           v-model="queryParams.mainUse"
           type="date"
           value-format="yyyy-MM-dd"
           placeholder="请选择主要用途">
-        </el-date-picker>
+        </el-date-picker> -->
+       <el-input
+          v-model="queryParams.mainUse"
+          placeholder="请输入主要用途"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="来源" prop="source">
         <el-input
@@ -87,7 +93,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"

+ 142 - 44
src/views/data/dataReportByt/index.vue

@@ -2,20 +2,58 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession" label-width="200">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.assemblyAccession"
           placeholder="请输入NCBI基因组序列编号"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+         <el-select
+                v-model="queryParams.assemblyAccession"
+                filterable
+                remote
+                reserve-keyword
+                placeholder="请输入NCBI基因组序列编号"
+                :remote-method="queryAssemblyAccessionList"
+                :loading="assemblyAccessionLoading"
+                @change="handleAssemblyAccessionSelect"
+                style="flex:1"
+              >
+                <el-option
+                  v-for="item in AssemblyAccessionoptions"
+                  :key="item.id"
+                  :label="item.assemblyAccession"
+                  :value="item.assemblyAccession"
+                >
+                </el-option>
+              </el-select>
       </el-form-item>
       <el-form-item label="病原体名称" prop="name" label-width="120">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.name"
           placeholder="请输入病原体名称"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+        <el-select
+            v-model="queryParams.name"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入病原体名称"
+            :remote-method="queryInfo"
+            :loading="nameLoading"
+            @change="handleSelect"
+            style="flex: 1"
+          >
+            <el-option
+              v-for="item in Assoptions"
+              :key="item.id"
+              :label="item.asmName"
+              :value="item.asmName"
+            >
+            </el-option>
+          </el-select>
       </el-form-item>
       <el-form-item label="统计时间" prop="reportDate">
         <el-date-picker clearable
@@ -156,24 +194,61 @@
     />
 
     <!-- 添加或修改病原体历史统计对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+    <el-dialog :title="title" :visible.sync="open" width="60vw" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="180px">
         <el-form-item label="NCBI基因组序列编号" prop="assemblyAccession">
-          <el-input v-model="form.assemblyAccession" placeholder="请输入NCBI基因组序列编号" />
+          <!-- 修改为支持远程搜索的选择器 -->
+          <el-select
+            v-model="form.assemblyAccession"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入NCBI基因组序列编号"
+            :remote-method="queryAssemblyAccessionList"
+            :loading="assemblyAccessionLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in AssemblyAccessionoptions"
+              :key="item.id"
+              :label="item.assemblyAccession"
+              :value="item.assemblyAccession"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="病原体名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入病原体名称" />
+          <!-- 修改为支持远程搜索的选择器 -->
+          <el-select
+            v-model="form.name"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入病原体名称"
+            :remote-method="queryInfo"
+            :loading="nameLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in Assoptions"
+              :key="item.id"
+              :label="item.asmName"
+              :value="item.asmName"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="统计时间" prop="reportDate">
           <el-date-picker clearable
             v-model="form.reportDate"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="请选择统计时间">
+            placeholder="请选择统计时间" style="width: 100%;">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="区域编号" prop="areaId">
           <el-cascader
+          style="width: 100%;"
             v-model="form.areaId"
             :options="areaOptions"
             :props="{
@@ -210,6 +285,7 @@
 
 <script>
 import { listDataReportByt, getDataReportByt, delDataReportByt, addDataReportByt, updateDataReportByt, getAllAreaData } from "@/api/data/dataReportByt"
+import {getAssemblyAccessionList} from '@/api/statistics/report';
 
 export default {
   name: "DataReportByt",
@@ -255,6 +331,11 @@ export default {
       areaOptions: [],
       // 级联选择器加载状态
       areaLoading: false,
+      Assoptions: [],
+      ASSTimer: null,
+      nameLoading: false,
+      assemblyAccessionLoading: false,
+      AssemblyAccessionoptions: [],
     }
   },
   created() {
@@ -262,6 +343,58 @@ export default {
     this.getAllAreaList()
   },
   methods: {
+            // 搜索
+    queryAssemblyAccessionList(queryString){
+        if (this.ASSTimer) {
+        clearTimeout(this.ASSTimer);
+      }
+      this.ASSTimer = setTimeout(() => {
+        if (queryString.length > 0){
+          this.assemblyAccessionLoading = true
+          getAssemblyAccessionList(queryString).then(res => {
+            if (res.data && res.data.length > 0) {
+              this.AssemblyAccessionoptions = res.data
+
+            }
+             this.assemblyAccessionLoading = false
+          }).finally(() => {
+            this.assemblyAccessionLoading = false
+          })
+        }
+
+      }, 500);
+    },
+    handleAssemblyAccessionSelect(){
+      if (this.queryParams.assemblyAccession) {
+        this.getList();
+      }
+    },
+        // 搜索
+    queryInfo(queryString){
+        if (this.ASSTimer) {
+        clearTimeout(this.ASSTimer);
+      }
+      this.ASSTimer = setTimeout(() => {
+        if (queryString.length > 0){
+          this.nameLoading = true
+          getAssemblyAccessionList(queryString).then(res => {
+            if (res.data && res.data.length > 0) {
+              this.Assoptions = res.data
+
+            }
+             this.nameLoading = false
+          }).finally(() => {
+            this.nameLoading = false
+          })
+        }
+
+      }, 500);
+    },
+    handleSelect(){
+      if (this.queryParams.name) {
+        this.getList();
+      }
+    },
     // 查询所有区域编号
     async getAllAreaList() {
       try {
@@ -285,41 +418,6 @@ export default {
         console.error('获取区域数据失败:', error)
       }
     },
-    // // 递归获取子节点
-    // async getChildren(areas) {
-    //   const result = []
-    //   for (const area of areas) {
-    //     const childRes = await getAllAreaData(area.areaId)
-    //     const children = await this.getChildren(childRes.data)
-    //     result.push({
-    //       areaId: area.areaId,
-    //       areaName: area.areaName,
-    //       children: children.length > 0 ? children : null
-    //     })
-    //   }
-    //   return result
-    // },
-    /** 懒加载子节点 */
-    async loadAreaChildren(node, resolve) {
-      if (!node.data) return
-      if (node.parent) return resolve([])
-      console.log('node',node)
-      const parentId = node.data.areaId
-      try {
-        const res = await getAllAreaData(parentId)
-        const children = res.data.map(item => ({
-          areaId: item.areaId,
-          areaName: item.areaName,
-          // 子节点没有下级,设置为 false
-          hasChildren: false,
-          children:[]
-        }))
-        resolve(children)
-      } catch (error) {
-        console.error('获取子区域数据失败:', error)
-        resolve([])
-      }
-    },
     /** 处理区域选择事件 */
     // handleAreaChange(value) {
     //   const selectedNode = this.getAreaByValue([value])

+ 128 - 37
src/views/sample/sampleExperiment/filterReport.vue

@@ -12,15 +12,42 @@
           @click="handleBack"
         >返回</el-button>
 
-    <el-card class="patient-info" shadow="hover">
+    <!-- <el-card class="patient-info" shadow="hover">
       <h3>患者基本信息</h3>
       <div>
         <span>姓名:{{ patient.name }}</span>
         <span style="margin-left: 20px;">性别:{{ patient.gender }}</span>
         <span style="margin-left: 20px;">年龄:{{ patient.age }}</span>
+        <span style="margin-left: 20px;">病案号:{{ patient.bahCode }}</span>
+        <span style="margin-left: 20px;">身份证号:{{ patient.idCard }}</span>
       </div>
       <div>
       </div>
+    </el-card> -->
+    <el-card class="patient-info" shadow="hover">
+      <h3 class="patient-title">患者基本信息</h3>
+      <div class="patient-details">
+        <div class="patient-item">
+          <span class="label">姓名:</span>
+          <span class="value">{{ patient.name }}</span>
+        </div>
+        <div class="patient-item">
+          <span class="label">性别:</span>
+          <span class="value">{{ patient.gender }}</span>
+        </div>
+        <div class="patient-item">
+          <span class="label">年龄:</span>
+          <span class="value">{{ patient.age }}</span>
+        </div>
+        <div class="patient-item">
+          <span class="label">病案号:</span>
+          <span class="value">{{ patient.bahCode }}</span>
+        </div>
+        <div class="patient-item">
+          <span class="label">身份证号:</span>
+          <span class="value">{{ patient.idCard }}</span>
+        </div>
+      </div>
     </el-card>
 
     <el-tabs v-model="activeTab">
@@ -653,50 +680,53 @@
       </el-tab-pane> -->
       <el-tab-pane label="基本信息" name="basicInfo">
         <div class="tab-content">
-          <el-form :model="readremarkForm" label-width="120px">
-            <el-form-item label="编号">
-              <el-input v-model="readremarkForm.id"></el-input>
-            </el-form-item>
-            <el-form-item label="实验编号">
-              <el-input v-model="readremarkForm.experimentId"></el-input>
+          <!-- 为表单添加类名 -->
+          <el-form :model="readremarkForm" label-width="120px" class="basic-info-form">
+            <el-form-item label="样本编号">
+              <el-input v-model="readremarkForm.sampleCode" disabled></el-input>
             </el-form-item>
-            <el-form-item label="检测流程">
-              <el-input v-model="readremarkForm.jclc"></el-input>
+            <el-form-item label="样本类型">
+              <el-input v-model="readremarkForm.sampleTypeName" disabled></el-input>
             </el-form-item>
-            <el-form-item label="住院号">
-              <el-input v-model="readremarkForm.zyh"></el-input>
+            <el-form-item label="取样机构">
+              <el-input v-model="readremarkForm.sampleHospitalName" disabled></el-input>
             </el-form-item>
-            <el-form-item label="床号">
-              <el-input v-model="readremarkForm.ch"></el-input>
+            <el-form-item label="取样科室">
+              <el-input v-model="readremarkForm.sampleDeptName" disabled></el-input>
             </el-form-item>
+            <!-- <el-form-item label="床号">
+              <el-input v-model="readremarkForm.ch" disabled></el-input>
+            </el-form-item> -->
             <el-form-item label="采集日期">
               <el-date-picker
-                v-model="readremarkForm.cjsj"
+                v-model="readremarkForm.createTime"
                 type="date"
                 placeholder="选择采集日期"
                 format="yyyy-MM-dd"
                 value-format="yyyy-MM-dd"
+                disabled
               >
               </el-date-picker>
             </el-form-item>
-            <el-form-item label="检测日期">
+            <!-- <el-form-item label="检测日期">
               <el-date-picker
                 v-model="readremarkForm.jcsj"
                 type="date"
                 placeholder="选择检测日期"
                 format="yyyy-MM-dd"
                 value-format="yyyy-MM-dd"
+                disabled
               >
               </el-date-picker>
-            </el-form-item>
-            <el-form-item label="临床诊断">
-              <el-input v-model="readremarkForm.lczd"></el-input>
-            </el-form-item>
+            </el-form-item> -->
+            <!-- <el-form-item label="临床诊断">
+              <el-input v-model="readremarkForm.lczd" disabled></el-input>
+            </el-form-item> -->
             <el-form-item label="解读备注">
-              <el-input v-model="readremarkForm.jdbz"></el-input>
+              <el-input v-model="readremarkForm.remark" disabled></el-input>
             </el-form-item>
             <el-form-item label="检测者">
-              <el-input v-model="readremarkForm.jcz"></el-input>
+              <el-input v-model="readremarkForm.doctorName" disabled></el-input>
             </el-form-item>
           </el-form>
         </div>
@@ -844,16 +874,16 @@ export default {
           this.DLJYFilterData = res.data;
         }
       })
-      getDTBNYJYfo(this.experimentId).then(res=>{
-        if (res.data) {
-          this.DTBNYJYData = res.data;
-        }
-      })
-      getDTBNYJYFilterInfo(this.experimentId).then(res=>{
-        if (res.data) {
-          this.DTBNYJYFilterData = res.data;
-        }
-      })
+      // getDTBNYJYfo(this.experimentId).then(res=>{
+      //   if (res.data) {
+      //     this.DTBNYJYData = res.data;
+      //   }
+      // })
+      // getDTBNYJYFilterInfo(this.experimentId).then(res=>{
+      //   if (res.data) {
+      //     this.DTBNYJYFilterData = res.data;
+      //   }
+      // })
       getNYJYInfo(this.experimentId).then(res=>{
         if (res.data) {
           this.NYJYData = res.data;
@@ -867,16 +897,21 @@ export default {
       getPatientInfo(this.experimentId).then(res=>{
         this.patient = res.data;
       })
-      getRemarkInfo(this.experimentId).then(res=>{
+      // getRemarkInfo(this.experimentId).then(res=>{
+      //   console.log(res);
+      //   // 更新表单数据
+      //   if (res.data) {
+      //     this.readremarkForm = { ...res.data };
+      //     console.log(this.readremarkForm);
+      //   }
+      // })
+      getSampleInfo(this.experimentId).then(res=>{
         console.log(res);
-        // 更新表单数据
-        if (res.data) {
+         if (res.data) {
           this.readremarkForm = { ...res.data };
+          console.log(this.readremarkForm);
         }
       })
-      getSampleInfo(this.experimentId).then(res=>{
-        console.log(res);
-      })
     },
     handleSelectionChange(type, val) {
       switch(type) {
@@ -990,4 +1025,60 @@ export default {
 .tab-content {
   padding: 20px;
 }
+.basic-info-form {
+  background-color: #f9f9f9;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.basic-info-form .el-form-item {
+  margin-bottom: 15px;
+}
+
+.basic-info-form .el-input,
+.basic-info-form .el-date-picker {
+  width: 80%;
+}
+
+.patient-info {
+  margin-top: 20px;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+}
+
+.patient-title {
+  font-size: 20px;
+  font-weight: 600;
+  color: #303133;
+  margin-bottom: 20px;
+  border-bottom: 1px solid #ebeef5;
+  padding-bottom: 10px;
+}
+
+.patient-details {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+
+.patient-item {
+  flex: 1 1 calc(33.33% - 10px);
+  min-width: 150px;
+  padding: 8px;
+  background-color: #f5f7fa;
+  border-radius: 4px;
+}
+
+.label {
+  font-weight: 500;
+  color: #606266;
+  margin-right: 8px;
+}
+
+.value {
+  color: #303133;
+}
+
 </style>

+ 91 - 15
src/views/sample/sampleExperiment/index.vue

@@ -9,13 +9,28 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="样本编号" prop="sampleInfoCode" v-if="sampleInfoId == null">
-        <el-input
-          v-model="queryParams.sampleInfoCode"
-          placeholder="请输入样本编号"
+      <el-form-item label="样本编号" prop="sampleCode">
+        <!-- 修改为支持远程搜索的选择器 -->
+        <el-select
+          v-model="queryParams.sampleCode"
+          filterable
+          remote
+          reserve-keyword
           clearable
-          @keyup.enter.native="handleQuery"
-        />
+          placeholder="请输入样本编号"
+          :remote-method="querySampleInfo"
+          :loading="sampleInfoCodeLoading "
+          @change="handleQuery"
+          style="width: 180px"
+        >
+          <el-option
+            v-for="item in codeOptions"
+            :key="item.id"
+            :label="item.sampleCode"
+            :value="item.sampleCode"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
@@ -42,7 +57,6 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-if="sampleInfoId != null"
           v-hasPermi="['sample:sampleExperiment:add']"
         >新增</el-button>
       </el-col>
@@ -128,6 +142,26 @@
         <el-form-item label="实验编号" prop="experimentCode">
           <el-input v-model="form.experimentCode" placeholder="请输入实验编号" />
         </el-form-item>
+        <el-form-item label="样本编号" prop="sampleInfoId">
+         <el-select
+            v-model="form.sampleInfoId"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入样本编号"
+            :remote-method="querySampleInfo"
+            :loading="sampleInfoCodeLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in codeOptions"
+              :key="item.id"
+              :label="item.sampleCode"
+              :value="item.sampleCode"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
         </el-form-item>
@@ -141,7 +175,7 @@
 </template>
 
 <script>
-import { listSampleExperiment, getSampleExperiment, delSampleExperiment, addSampleExperiment, updateSampleExperiment,pullSampleExperiment,generatorSampleExperiment,generateSampleExperiment } from "@/api/sample/sampleExperiment"
+import { listSampleExperiment, getSampleExperiment, delSampleExperiment, addSampleExperiment, updateSampleExperiment,pullSampleExperiment,generatorSampleExperiment,generateSampleExperiment,getSampleInfoCode } from "@/api/sample/sampleExperiment"
 
 export default {
   name: "SampleExperiment",
@@ -174,6 +208,7 @@ export default {
         sampleInfoId: null,
         status: null,
         dealTime: null,
+        sampleCode:null,
       },
       // 表单参数
       form: {},
@@ -182,16 +217,46 @@ export default {
       // 表单校验
       rules: {
         experimentCode:[ { required: true, message: "实验编号不能为空", trigger: "blur" }]
-      }
+      },
+      sampleInfoCodeLoading:false,
+      codeOptions:[],
+      sampleInfoCodeTimer:null,
     }
   },
   created() {
     // console.log(this.$route.query.id)
-    this.sampleInfoId = this.$route.query.id;
+
     this.baseid = this.$route.query.baseid;
     this.getList()
   },
+  watch:{
+    $route:{
+      handler(){
+        if (this.$route.query.id) {
+          this.sampleInfoId = this.$route.query.id;
+          let sampleCode = this.$route.query.sampleCode;
+          if(sampleCode){
+           this.$set(this.queryParams,'sampleCode',sampleCode)
+          }
+          this.getList()
+        }
+      },
+      immediate:true
+    }
+  },
   methods: {
+    querySampleInfo(query){
+      if(this.sampleInfoCodeTimer){
+        clearTimeout(this.sampleInfoCodeTimer)
+      }
+      this.sampleInfoCodeTimer = setTimeout(() => {
+        this.sampleInfoCodeLoading = true
+        getSampleInfoCode(query).then(response => {
+          this.codeOptions = response.data
+          this.sampleInfoCodeLoading = false
+        })
+      }, 500)
+    },
      // 过滤按钮操作
     handleFilter(row) {
       const id = row.id
@@ -214,11 +279,12 @@ export default {
     /** 查询解读管理列表 */
     getList() {
       this.loading = true
-      if(this.sampleInfoId != null){
-        this.queryParams.sampleInfoId = this.sampleInfoId
-      }
+      // if(this.sampleInfoId != null){
+      //   // this.queryParams.sampleInfoId = this.sampleInfoId
+      //   this.$set(this.queryParams,'sampleInfoId',this.sampleInfoId)
+      // }
       listSampleExperiment(this.queryParams).then(response => {
-        this.sampleExperimentList = response.rows
+        this.sampleExperimentList = [...response.rows]
         this.total = response.total
         this.loading = false
       })
@@ -252,6 +318,16 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.resetForm("queryForm")
+      // this.queryParams = {
+      //   pageNum: 1,
+      //   pageSize: 10,
+      //   experimentCode: null,
+      //   sampleInfoId: null,
+      //   status: null,
+      //   dealTime: null,
+      //   sampleCode:null,
+      // }
+      // this.sampleInfoId = ''
       this.handleQuery()
     },
     // 多选框选中数据
@@ -320,7 +396,7 @@ export default {
       }).catch(() => {})
     },
 
-   
+
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids

+ 252 - 17
src/views/sample/sampleInfo/index.vue

@@ -9,12 +9,31 @@
       label-width="100px"
     >
       <el-form-item label="样本编号" prop="sampleCode">
-        <el-input
+        <!-- <el-input
           v-model="queryParams.sampleCode"
           placeholder="请输入样本编号"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+        /> -->
+       <el-select
+            v-model="form.sampleInfoId"
+            filterable
+            remote
+            reserve-keyword
+            clearable
+            placeholder="请输入样本编号"
+            :remote-method="querySampleInfo"
+            :loading="sampleInfoCodeLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in codeOptions"
+              :key="item.id"
+              :label="item.sampleCode"
+              :value="item.sampleCode"
+            >
+            </el-option>
+          </el-select>
       </el-form-item>
       <el-form-item label="样本类型" prop="sampleTypeId">
         <!-- <el-input
@@ -97,7 +116,7 @@
           >新增</el-button
         >
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
           type="success"
           plain
@@ -118,7 +137,7 @@
           @click="handleDelete"
           >删除</el-button
         >
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
         <el-button plain size="mini" @click="handleBack">返回</el-button>
       </el-col>
@@ -134,7 +153,7 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      
+
       <el-table-column label="样本编号" align="center" prop="sampleCode" />
       <el-table-column label="患者姓名" align="center" prop="patientName" />
       <el-table-column label="患者电话" align="center" prop="patientPhone" />
@@ -178,10 +197,28 @@
     />
 
     <!-- 添加或修改样本管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="80vw" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="样本编号" prop="sampleCode">
-          <el-input v-model="form.sampleCode" placeholder="请输入样本编号" />
+          <!-- <el-input v-model="form.sampleCode" placeholder="请输入样本编号" /> -->
+         <el-select
+            v-model="form.sampleCode"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入样本编号"
+            :remote-method="querySampleInfo"
+            :loading="sampleInfoCodeLoading"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in codeOptions"
+              :key="item.id"
+              :label="item.sampleCode"
+              :value="item.sampleCode"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="样本类型" prop="sampleTypeId">
           <el-select
@@ -202,6 +239,7 @@
           <el-select
             v-model="form.sampleHospitalId"
             placeholder="请选择送检医院"
+            style="width: 100%; "
           >
             <el-option
               v-for="item in options3"
@@ -213,7 +251,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label="送检科室" prop="sampleDeptId">
-          <el-select v-model="form.sampleDeptId" placeholder="请选择送检">
+          <el-select v-model="form.sampleDeptId" placeholder="请选择送检" style="width: 100%; " >
             <el-option
               v-for="item in options2"
               :key="item.value"
@@ -269,6 +307,156 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 添加或修改样本患者信息对话框 -->
+    <el-dialog title="添加样本患者信息" :visible.sync="addOpen" width="800px" append-to-body @close="cancelAdd">
+      <el-form ref="addForm" :model="addForm" :rules="addRules" label-width="120px">
+        <el-form-item label="病案号" prop="bahCode">
+          <el-input v-model="addForm.bahCode" placeholder="请输入病案号" />
+        </el-form-item>
+        <el-form-item label="身份证号" prop="idCard">
+          <el-input v-model="addForm.idCard" placeholder="请输入身份证号" />
+        </el-form-item>
+        <el-form-item label="姓名" prop="name">
+          <el-input v-model="addForm.name" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="addForm.phone" placeholder="请输入手机号" />
+        </el-form-item>
+        <el-form-item label="性别" prop="sex">
+          <el-select v-model="addForm.sex" placeholder="请选择性别">
+            <el-option
+              v-for="dict in dict.type.sys_user_sex"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="出生年份" prop="birth">
+          <el-date-picker type="date" placeholder="请选择出生年份" v-model="addForm.birth" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
+        </el-form-item>
+         <el-form-item label="所属区域" prop="areaId">
+          <el-input v-model="addForm.areaId" placeholder="请输入所属区域" />
+        </el-form-item>
+        <el-form-item label="地址" prop="address">
+          <el-input v-model="addForm.address" placeholder="请输入地址" />
+        </el-form-item>
+        <el-form-item label="临床诊断" prop="lczd">
+          <el-input  type="textarea"  v-model="addForm.lczd" placeholder="请输入临床诊断" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input  type="textarea"  v-model="addForm.remark" placeholder="请输入备注" />
+        </el-form-item>
+        <el-tabs>
+          <el-tab-pane label="血液检测结果(发病时)">
+            <el-form-item label="WBC" prop="bloodWbc">
+              <el-input v-model="addForm.bloodWbc" placeholder="请输入WBC" />
+            </el-form-item>
+            <el-form-item label="NEUT(%)" prop="bloodNeut">
+              <el-input v-model="addForm.bloodNeut" placeholder="请输入NEUT(%)" />
+            </el-form-item>
+            <el-form-item label="L" prop="bloodL">
+              <el-input v-model="addForm.bloodL" placeholder="请输入L" />
+            </el-form-item>
+            <el-form-item label="C-反应蛋白" prop="bloodFydb">
+              <el-input v-model="addForm.bloodFydb" placeholder="请输入C-反应蛋白" />
+            </el-form-item>
+            <el-form-item label="降钙素原" prop="bloodJgsy">
+              <el-input v-model="addForm.bloodJgsy" placeholder="请输入降钙素原" />
+            </el-form-item>
+            <el-form-item label="CD4计数" prop="bloodCd4">
+              <el-input v-model="addForm.bloodCd4" placeholder="请输入CD4计数" />
+            </el-form-item>
+          </el-tab-pane>
+          <el-tab-pane label="肝功能">
+            <el-form-item label="ALT" prop="liverAlt">
+              <el-input v-model="addForm.liverAlt" placeholder="请输入ALT" />
+            </el-form-item>
+            <el-form-item label="AST" prop="liverAst">
+              <el-input v-model="addForm.liverAst" placeholder="请输入AST" />
+            </el-form-item>
+            <el-form-item label="GGT" prop="liverGgt">
+              <el-input v-model="addForm.liverGgt" placeholder="请输入GGT" />
+            </el-form-item>
+            <el-form-item label="Tbil" prop="liverTbil">
+              <el-input v-model="addForm.liverTbil" placeholder="请输入Tbil" />
+            </el-form-item>
+          </el-tab-pane>
+          <el-tab-pane label="肾功能">
+            <el-form-item label="尿素" prop="kidneyNs">
+              <el-input v-model="addForm.kidneyNs" placeholder="请输入尿素" />
+            </el-form-item>
+            <el-form-item label="血肌酐" prop="kidneyXjg">
+              <el-input v-model="addForm.kidneyXjg" placeholder="请输入血肌酐" />
+            </el-form-item>
+            <el-form-item label="血β2-微球蛋白" prop="kidneyWqdb">
+              <el-input v-model="addForm.kidneyWqdb" placeholder="请输入血β2-微球蛋白" />
+            </el-form-item>
+            <el-form-item label="尿酸" prop="kidneyNs2">
+              <el-input v-model="addForm.kidneyNs2" placeholder="请输入尿酸" />
+            </el-form-item>
+          </el-tab-pane>
+          <el-tab-pane label="肺影像学报告">
+            <el-form-item label="肺空洞" prop="lungsFkd">
+              <el-input v-model="addForm.lungsFkd" placeholder="请输入肺空洞" />
+            </el-form-item>
+            <el-form-item label="磨玻璃样影" prop="lungsMblyy">
+              <el-input v-model="form.lungsMblyy" placeholder="请输入磨玻璃样影" />
+            </el-form-item>
+            <el-form-item label="肺结节" prop="lungsFjj">
+              <el-input v-model="addForm.lungsFjj" placeholder="请输入肺结节" />
+            </el-form-item>
+            <el-form-item label="多发斑片实变影" prop="lungsDfbpsby">
+              <el-input v-model="addForm.lungsDfbpsby" placeholder="请输入多发斑片实变影" />
+            </el-form-item>
+            <el-form-item label="胸腔积液" prop="lungsXqjy">
+              <el-input v-model="addForm.lungsXqjy" placeholder="请输入胸腔积液" />
+            </el-form-item>
+            <el-form-item label="胸膜增厚" prop="lungsXmzh">
+              <el-input v-model="addForm.lungsXmzh" placeholder="请输入胸膜增厚" />
+            </el-form-item>
+            <el-form-item label="纵膈淋巴结增大" prop="lungsZglbjzd">
+              <el-input v-model="addForm.lungsZglbjzd" placeholder="请输入纵膈淋巴结增大" />
+            </el-form-item>
+          </el-tab-pane>
+          <el-tab-pane label="其他病原学检测结果">
+            <el-form-item label="培养" prop="otherPy">
+              <el-input v-model="addForm.otherPy" placeholder="请输入培养" />
+            </el-form-item>
+            <el-form-item label="血清学" prop="otherXqx">
+              <el-input v-model="addForm.otherXqx" placeholder="请输入血清学" />
+            </el-form-item>
+            <el-form-item label="PCR" prop="otherPcr">
+              <el-input v-model="addForm.otherPcr" placeholder="请输入PCR" />
+            </el-form-item>
+            <el-form-item label="测序" prop="cs">
+              <el-input v-model="addForm.otherCs" placeholder="请输入测序" />
+            </el-form-item>
+          </el-tab-pane>
+          <el-tab-pane label="治疗">
+            <el-form-item label="抗生素" prop="treatKss">
+              <el-input v-model="addForm.treatKss" placeholder="请输入抗生素" />
+            </el-form-item>
+            <el-form-item label="抗病毒药物" prop="treatKbdyw">
+              <el-input v-model="addForm.treatKbdyw" placeholder="请输入抗病毒药物" />
+            </el-form-item>
+            <el-form-item label="体液支持" prop="treatTyzc">
+              <el-input v-model="addForm.treatTyzc" placeholder="请输入体液支持" />
+            </el-form-item>
+            <el-form-item label="免疫球蛋白" prop="treatMyqdb">
+              <el-input v-model="addForm.treatMyqdb" placeholder="请输入免疫球蛋白" />
+            </el-form-item>
+            <el-form-item label="ECMO支持" prop="treatEcmo">
+              <el-input v-model="addForm.treatEcmo" placeholder="请输入ECMO支持" />
+            </el-form-item>
+          </el-tab-pane>
+        </el-tabs>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitAddForm">确 定</el-button>
+        <el-button @click="cancelAdd">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -284,9 +472,12 @@ import {
   getSampleHospitalSelect,
   getPatientByIdCard,
 } from "@/api/sample/sampleInfo";
+import { addSamplePatient} from "@/api/sample/samplePatient"
+import {getSampleInfoCode} from "@/api/sample/sampleExperiment"
 
 export default {
   name: "SampleInfo",
+  dicts: ['sys_user_sex'],
   data() {
     return {
       // 遮罩层
@@ -335,17 +526,60 @@ export default {
       patientInfoLoading: false,
       // 防抖定时器
       patientInfoTimer: null,
+      // 新增样本管理表单参数
+      addForm: {},
+      addRules:{},
+      addOpen:false,
+      codeOptions: [],
+      sampleInfoCodeLoading: false,
+      sampleInfoCodeTimer: null,
     };
   },
   created() {
     this.patientId = this.$route.params && this.$route.params.id;
-
     this.getList();
     this.getSampleTypeOptions();
     this.getSampleDeptOptions();
     this.getSampleHospitalOptions();
   },
   methods: {
+        querySampleInfo(query){
+      if(this.sampleInfoCodeTimer){
+        clearTimeout(this.sampleInfoCodeTimer)
+      }
+      this.sampleInfoCodeTimer = setTimeout(() => {
+        this.sampleInfoCodeLoading = true
+        getSampleInfoCode(query).then(response => {
+          this.codeOptions = response.data
+          this.sampleInfoCodeLoading = false
+        })
+      }, 500)
+    },
+    cancelAdd(){
+      this.addOpen = false
+      this.$refs.addForm.resetFields()
+    },
+        /** 提交按钮 */
+    submitAddForm() {
+      this.$refs["addForm"].validate(valid => {
+        if (valid) {
+          // if (this.addForm.id != null) {
+          //   updateSamplePatient(this.addForm).then(response => {
+          //     this.$modal.msgSuccess("修改成功")
+          //     this.addOpen = false
+          //     this.getList()
+          //   })
+          // } else {
+            addSamplePatient(this.addForm).then(response => {
+              this.$modal.msgSuccess("新增成功")
+              this.addOpen = false
+              this.$refs.addForm.resetFields()
+              this.getList()
+            })
+          // }
+        }
+      })
+    },
     /** 防抖查询患者信息 */
     queryPatientInfo(queryString) {
       if (this.patientInfoTimer) {
@@ -393,7 +627,7 @@ export default {
     },
     gojdzx(row) {
       this.$router.push(
-        "/read/sampleExperiment?baseid=" + this.patientId + "&id=" + row.id
+        "/sample/sampleExperiment?baseid=" + this.patientId + "&id=" + row.id + "&sampleCode="+row.sampleCode
       );
     },
     /** 查询样本管理列表 */
@@ -537,13 +771,14 @@ export default {
     },
     /** 新增患者操作 */
     handleAddPatient() {
-      this.open = false; // 关闭当前对话框
-      this.$router.push( {
-        path:"/sample/samplePatient",
-        query: {
-          openAdd: "1", // 传递一个标识,表示从样本信息页面跳转
-        },
-      });
+      this.addOpen = true
+      // this.open = false; // 关闭当前对话框
+      // this.$router.push( {
+      //   path:"/sample/samplePatient",
+      //   query: {
+      //     openAdd: "1", // 传递一个标识,表示从样本信息页面跳转
+      //   },
+      // });
     },
   },
 };

+ 2 - 2
src/views/sample/samplePatient/index.vue

@@ -58,7 +58,7 @@
           v-hasPermi="['sample:samplePatient:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
           type="success"
           plain
@@ -79,7 +79,7 @@
           @click="handleDelete"
           v-hasPermi="['sample:samplePatient:remove']"
         >删除</el-button>
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
         <el-button
           type="warning"

+ 150 - 112
src/views/statistics/Spatiotemporal-distribution/index.vue

@@ -4,12 +4,31 @@
     <el-card class="filter-card">
       <el-form :inline="true" :model="form" size="small">
         <el-form-item label="病原体名称">
-          <el-input
+          <!-- <el-input
             v-model="form.bytName"
             placeholder="请输入病原体名称"
             style="width: 180px"
             @keyup.enter="fetchAllData"
-          />
+          /> -->
+          <el-select
+            v-model="form.bytName"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入病原体名称"
+            :remote-method="queryInfo"
+            :loading="loading"
+            @change="handleSelect"
+            style="flex: 1"
+          >
+            <el-option
+              v-for="item in Assoptions"
+              :key="item.id"
+              :label="item.asmName"
+              :value="item.asmName"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="时间">
           <el-date-picker
@@ -32,7 +51,7 @@
       <!-- 子图二:分区条形图 -->
       <el-card class="chart-card">
         <div slot="header">地区分布条形图</div>
-        <div ref="barChart" style="height: 320px;"></div>
+        <div ref="barChart" style="height: 320px"></div>
       </el-card>
     </div>
 
@@ -41,13 +60,13 @@
       <el-col :span="12">
         <el-card class="map-card">
           <div slot="header">世界地图</div>
-          <div ref="worldMapContainer" style="width: 100%; height: 600px;"></div>
+          <div ref="worldMapContainer" style="width: 100%; height: 600px"></div>
         </el-card>
       </el-col>
       <el-col :span="12">
         <el-card class="map-card">
           <div slot="header">中国地图</div>
-          <div ref="chinaMapContainer" style="width: 100%; height: 600px;"></div>
+          <div ref="chinaMapContainer" style="width: 100%; height: 600px"></div>
         </el-card>
       </el-col>
     </el-row>
@@ -55,43 +74,31 @@
 </template>
 
 <script>
-import * as echarts from 'echarts';
-import chinaJson from 'echarts/map/json/china.json';
-import worldJson from 'echarts/map/json/world.json';
-
-import {getbytzbInfo, getbytzzfbnfo, getsjbytztqkInfo,getzgbytztqkInfo} from '@/api/statistics/report';
+import * as echarts from "echarts";
+import chinaJson from "echarts/map/json/china.json";
+import worldJson from "echarts/map/json/world.json";
 
-echarts.registerMap('china', chinaJson);
-echarts.registerMap('world', worldJson);
+import {
+  getbytzbInfo,
+  getbytzzfbnfo,
+  getsjbytztqkInfo,
+  getzgbytztqkInfo,
+  getAssemblyAccessionList,
+} from "@/api/statistics/report";
 
-// 中国地区名称映射表
-const chinaRegionMap = {
-  '内蒙古自治区': '内蒙古',
-  '新疆维吾尔自治区': '新疆',
-  '西藏自治区': '西藏',
-  '宁夏回族自治区': '宁夏',
-  '广西壮族自治区': '广西',
-  // 可根据实际情况添加更多映射
-};
-
-// 世界地区名称映射表
-const worldRegionMap = {
-  '中国': 'China',
-  '美国': 'United States',
-  '俄罗斯': 'Russia',
-  // 可根据实际情况添加更多映射
-};
+echarts.registerMap("china", chinaJson);
+echarts.registerMap("world", worldJson);
 
 export default {
-  name: 'SpatiotemporalDistribution',
+  name: "SpatiotemporalDistribution",
   data() {
     return {
       filters: {
-        disease: '',
-        subtype: '',
-        branch: '',
+        disease: "",
+        subtype: "",
+        branch: "",
         dateRange: [],
-        region: []
+        region: [],
       },
       diseaseOptions: [],
       diseaseLoading: false,
@@ -103,7 +110,7 @@ export default {
       pieData: [],
       worldMapData: [],
       chinaMapData: [],
-      description: '',
+      description: "",
       barChart: null,
       worldMapChart: null,
       chinaMapChart: null,
@@ -112,20 +119,50 @@ export default {
         endDate: "",
         province: "",
         startDate: "",
-        dateRange: []
-      }
+        dateRange: [],
+      },
+      Assoptions: [],
+      AssTimer: null,
+      loading: false,
     };
   },
   mounted() {
-    this.fetchAllData();
+    // this.fetchAllData();
     // 延迟初始化,确保容器尺寸正确
     this.$nextTick(() => {
       this.initCharts();
     });
   },
   methods: {
+    // 搜索
+    queryInfo(queryString) {
+      if (this.ASSTimer) {
+        clearTimeout(this.ASSTimer);
+      }
+      this.ASSTimer = setTimeout(() => {
+        if (queryString.length > 0) {
+          this.loading = true;
+          getAssemblyAccessionList(queryString)
+            .then((res) => {
+              console.log("查询基因组序列编号", res);
+              if (res.data && res.data.length > 0) {
+                this.Assoptions = res.data;
+              }
+              this.loading = false;
+            })
+            .finally(() => {
+              this.loading = false;
+            });
+        }
+      }, 500);
+    },
+    handleSelect() {
+      if (this.form.bytName) {
+        this.fetchAllData();
+      }
+    },
     async fetchAllData() {
-      if (this.form.dateRange.length  > 0) {
+      if (this.form.dateRange.length > 0) {
         const [startDate, endDate] = this.form.dateRange;
         this.form.startDate = startDate;
         this.form.endDate = endDate;
@@ -140,8 +177,8 @@ export default {
         this.worldMapData = response3.data;
         this.chinaMapData = response4.data;
       } catch (error) {
-        console.error('获取数据失败:', error);
-        this.$message.error('获取数据失败,请稍后重试');
+        console.error("获取数据失败:", error);
+        this.$message.error("获取数据失败,请稍后重试");
       }
 
       this.renderCharts();
@@ -150,7 +187,7 @@ export default {
       this.barChart = echarts.init(this.$refs.barChart);
       this.worldMapChart = echarts.init(this.$refs.worldMapContainer);
       this.chinaMapChart = echarts.init(this.$refs.chinaMapContainer);
-      window.addEventListener('resize', () => {
+      window.addEventListener("resize", () => {
         this.barChart.resize();
         this.worldMapChart.resize();
         this.chinaMapChart.resize();
@@ -158,99 +195,100 @@ export default {
     },
     renderCharts() {
       // 子图二:分区条形图
-      const regions = this.barData.length > 0
-        ? Object.keys(this.barData[0]).filter(key => key!== 'day')
-        : [];
-      const dates = this.barData.map(item => item.day);
+      const regions =
+        this.barData.length > 0
+          ? Object.keys(this.barData[0]).filter((key) => key !== "day")
+          : [];
+      const dates = this.barData.map((item) => item.day);
 
-      const seriesData = regions.map(region => ({
+      const seriesData = regions.map((region) => ({
         name: region,
-        type: 'bar',
-        data: this.barData.map(item => item[region]),
-
+        type: "bar",
+        data: this.barData.map((item) => item[region]),
       }));
 
       this.barChart.setOption({
         // 添加动画效果
         animationDuration: 1000,
         tooltip: {
-          trigger: 'axis',
+          trigger: "axis",
           axisPointer: {
-            type: 'cross',
+            type: "cross",
             crossStyle: {
-              color: '#999'
-            }
-          }
+              color: "#999",
+            },
+          },
         },
         legend: {
-          data: regions
+          data: regions,
         },
         xAxis: {
-          type: 'category',
+          type: "category",
           data: dates,
-           // 优化 x 轴线样式
+          // 优化 x 轴线样式
           axisLine: {
             lineStyle: {
-              color: '#999'
-            }
+              color: "#999",
+            },
           },
           // 优化 x 轴刻度线样式
           axisTick: {
-            show: false
-          }
+            show: false,
+          },
         },
         yAxis: {
-          type: 'value',
-          name: '数量'
+          type: "value",
+          name: "数量",
         },
-        series: seriesData
+        series: seriesData,
       });
 
       // 处理世界地图数据
-      const processedWorldMapData = this.worldMapData.map(item => {
+      const processedWorldMapData = this.worldMapData.map((item) => {
         // const name = worldRegionMap[item.area] || item.area;
         const value = item.num || 0;
         return {
           name: item.eng,
           value,
-          cnName:item.area
+          cnName: item.area,
         };
       });
       // 处理中国地图数据
-      const processedChinaMapData = this.chinaMapData.map(item => {
-        const name = chinaRegionMap[item.area] || item.area;
+      const processedChinaMapData = this.chinaMapData.map((item) => {
+        // const name = chinaRegionMap[item.area] || item.area;
         const value = item.num || 0;
         return {
-          name,
+          name: item.area,
           value,
         };
       });
 
       // 检查数据是否为空
-      if (processedWorldMapData.every(item => item.value === 0)) {
-        console.warn('世界地图数据值全部为 0');
+      if (processedWorldMapData.every((item) => item.value === 0)) {
+        console.warn("世界地图数据值全部为 0");
       }
-      if (processedChinaMapData.every(item => item.value === 0)) {
-        console.warn('中国地图数据值全部为 0');
+      if (processedChinaMapData.every((item) => item.value === 0)) {
+        console.warn("中国地图数据值全部为 0");
       }
 
       // 世界地图配置
       this.worldMapChart.setOption({
-        title: { text: '全球病毒分布', left: 'center' },
+        title: { text: "全球病毒分布", left: "center" },
         tooltip: {
-          trigger: 'item',
-          formatter: p => `${p.data?.cnName || p.data?.name}<br/>数量: ${p.value || '-'}`
+          trigger: "item",
+          formatter: (p) =>
+            `${p.data?.cnName || p.data?.name}<br/>数量: ${p.value || "-"}`,
         },
         visualMap: {
-          min: Math.min(...processedWorldMapData.map(item => item.value)),
-          max: Math.max(...processedWorldMapData.map(item => item.value)),
-          left: 'left',
-          top: 'bottom',
-          text: ['高', '低'],
+          min: Math.min(...processedWorldMapData.map((item) => item.value)),
+          max: Math.max(...processedWorldMapData.map((item) => item.value)),
+          left: "left",
+          top: "bottom",
+          text: ["高", "低"],
           calculable: true,
           inRange: {
-            color: ['#ffeeee', '#ffcccc', '#ff9999', '#ff6666', '#ff3333']
-          }
+            color: ["#ffeeee", "#ffcccc", "#ff9999", "#ff6666", "#ff3333"],
+          },
         },
         // geo: {
         //   map: 'world',
@@ -268,38 +306,38 @@ export default {
         // },
         series: [
           {
-            type: 'map',
-            map: 'world',
+            type: "map",
+            map: "world",
             data: processedWorldMapData,
             label: {
-              show: false
+              show: false,
             },
             emphasis: {
               itemStyle: {
-                areaColor: '#e0e0e0'
-              }
-            }
-          }
-        ]
+                areaColor: "#e0e0e0",
+              },
+            },
+          },
+        ],
       });
 
       // 中国地图配置
       this.chinaMapChart.setOption({
-        title: { text: '中国病毒分布', left: 'center' },
+        title: { text: "中国病毒分布", left: "center" },
         tooltip: {
-          trigger: 'item',
-          formatter: p => `${p.name}<br/>数量: ${p.value || '-'}`
+          trigger: "item",
+          formatter: (p) => `${p.name}<br/>数量: ${p.value || "-"}`,
         },
         visualMap: {
-          min: Math.min(...processedChinaMapData.map(item => item.value)),
-          max: Math.max(...processedChinaMapData.map(item => item.value)),
-          left: 'left',
-          top: 'bottom',
-          text: ['高', '低'],
+          min: Math.min(...processedChinaMapData.map((item) => item.value)),
+          max: Math.max(...processedChinaMapData.map((item) => item.value)),
+          left: "left",
+          top: "bottom",
+          text: ["高", "低"],
           calculable: true,
           inRange: {
-            color:['#ffeeee', '#ffcccc', '#ff9999', '#ff6666', '#ff3333']
-          }
+            color: ["#ffeeee", "#ffcccc", "#ff9999", "#ff6666", "#ff3333"],
+          },
         },
         // geo: {
         //   map: 'china',
@@ -317,22 +355,22 @@ export default {
         // },
         series: [
           {
-            type: 'map',
-            map: 'china',
+            type: "map",
+            map: "china",
             data: processedChinaMapData,
             label: {
-              show: false
+              show: false,
             },
             emphasis: {
               itemStyle: {
-                areaColor: '#e0e0e0'
-              }
-            }
-          }
-        ]
+                areaColor: "#e0e0e0",
+              },
+            },
+          },
+        ],
       });
-    }
-  }
+    },
+  },
 };
 </script>
 

+ 2 - 2
src/views/statistics/sample-statistics/index.vue

@@ -11,7 +11,7 @@
                 filterable
                 remote
                 reserve-keyword
-                placeholder="请输入患者身份证号"
+                placeholder="请输入NCBI基因组序列编号"
                 :remote-method="queryInfo"
                 :loading="loading"
                 @change="handleSelect"
@@ -20,7 +20,7 @@
                 <el-option
                   v-for="item in Assoptions"
                   :key="item.id"
-                  :label="item.asmName"
+                  :label="item.assemblyAccession"
                   :value="item.assemblyAccession"
                 >
                 </el-option>

+ 2 - 2
vue.config.js

@@ -10,8 +10,8 @@ const CompressionPlugin = require('compression-webpack-plugin')
 const name = process.env.VUE_APP_TITLE || '传染病溯源预测系统' // 网页标题
 
 // const baseUrl = '/' // 后端接口
-const baseUrl = 'http://127.0.0.1:8081/' // 后端接口
-// const baseUrl = 'http://173.18.12.205:8081/' // 后端接口
+// const baseUrl = 'http://127.0.0.1:8081/' // 后端接口
+const baseUrl = 'http://173.18.12.205:8081/' // 后端接口
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口