Bladeren bron

调整患者、样本、实验代码

攻心小虫 2 weken geleden
bovenliggende
commit
64330800c5

+ 1 - 1
src/api/readData/readData.js

@@ -70,7 +70,7 @@ export async function getRemarkInfo(id) {
     method: 'get',
   })
 }
-// 根据实验编号获取样信息
+// 根据实验编号获取样信息
 export async function getSampleInfo(id) {
     return request({
     url: '/read/readData/getSample/' + id,

+ 9 - 2
src/api/sample/sampleExperiment.js

@@ -46,7 +46,14 @@ export function delSampleExperiment(id) {
 // 拉取为解读报告
 export function pullSampleExperiment(id) {
   return request({
-    url: '/sample/sampleExperiment/readData/' + id,
-    method: 'put'
+    url: '/sample/sampleExperiment/loadReadData/' + id,
+    method: 'post'
   })
 }
+
+export function generatorSampleExperiment(id) {
+  return request({
+    url: '/sample/sampleExperiment/generator/' + id,
+    method: 'post'
+  })
+}

+ 20 - 5
src/api/sample/sampleInfo.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询样管理列表
+// 查询样管理列表
 export function listSampleInfo(query) {
   return request({
     url: '/sample/sampleInfo/list',
@@ -9,7 +9,7 @@ export function listSampleInfo(query) {
   })
 }
 
-// 查询样管理详细
+// 查询样管理详细
 export function getSampleInfo(id) {
   return request({
     url: '/sample/sampleInfo/' + id,
@@ -17,7 +17,7 @@ export function getSampleInfo(id) {
   })
 }
 
-// 新增样管理
+// 新增样管理
 export function addSampleInfo(data) {
   return request({
     url: '/sample/sampleInfo',
@@ -26,7 +26,7 @@ export function addSampleInfo(data) {
   })
 }
 
-// 修改样管理
+// 修改样管理
 export function updateSampleInfo(data) {
   return request({
     url: '/sample/sampleInfo',
@@ -35,7 +35,7 @@ export function updateSampleInfo(data) {
   })
 }
 
-// 删除样管理
+// 删除样管理
 export function delSampleInfo(id) {
   return request({
     url: '/sample/sampleInfo/' + id,
@@ -50,3 +50,18 @@ export function getSampleTypeSelect() {
     method: 'get'
   })
 }
+
+export function getSampleDeptSelect() {
+  return request({
+    url: '/sample/sampleDept/getAll',
+    method: 'get'
+  })
+}
+
+export function getSampleHospitalSelect() {
+  return request({
+    url: '/sample/sampleHospital/getAll',
+    method: 'get'
+  })
+}
+

+ 5 - 5
src/api/sample/samplePatient.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询样患者信息列表
+// 查询样患者信息列表
 export function listSamplePatient(query) {
   return request({
     url: '/sample/samplePatient/list',
@@ -9,7 +9,7 @@ export function listSamplePatient(query) {
   })
 }
 
-// 查询样患者信息详细
+// 查询样患者信息详细
 export function getSamplePatient(id) {
   return request({
     url: '/sample/samplePatient/' + id,
@@ -17,7 +17,7 @@ export function getSamplePatient(id) {
   })
 }
 
-// 新增样患者信息
+// 新增样患者信息
 export function addSamplePatient(data) {
   return request({
     url: '/sample/samplePatient',
@@ -26,7 +26,7 @@ export function addSamplePatient(data) {
   })
 }
 
-// 修改样患者信息
+// 修改样患者信息
 export function updateSamplePatient(data) {
   return request({
     url: '/sample/samplePatient',
@@ -35,7 +35,7 @@ export function updateSamplePatient(data) {
   })
 }
 
-// 删除样患者信息
+// 删除样患者信息
 export function delSamplePatient(id) {
   return request({
     url: '/sample/samplePatient/' + id,

+ 11 - 0
src/router/index.js

@@ -68,6 +68,16 @@ export const constantRoutes = [
         meta: { title: '首页', icon: 'dashboard', affix: true }
       }
     ]
+  },{
+    path: '/sample',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: 'sampleInfo/:id(\\d+)',
+      component: () => import('@/views/sample/sampleInfo/index'),
+      name: 'SampleInfo',
+      meta: { noCache: true,title: '样本管理', activeMenu: '/sample/samplePatient' }
+    }]
   },
   {
     path: '/user',
@@ -101,6 +111,7 @@ export const dynamicRoutes = [
       }
     ]
   },
+  
   {
     path: '/system/user-auth',
     component: Layout,

+ 40 - 81
src/views/index.vue

@@ -1,98 +1,57 @@
 <template>
-  <div class="dashboard-editor-container">
-
-    <panel-group @handleSetLineChartData="handleSetLineChartData" />
-
-    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
-      <line-chart :chart-data="lineChartData" />
-    </el-row>
-
-    <el-row :gutter="32">
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="chart-wrapper">
-          <raddar-chart />
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="chart-wrapper">
-          <pie-chart />
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="chart-wrapper">
-          <bar-chart />
-        </div>
-      </el-col>
-    </el-row>
-
-    
+  <div >
+    <div class="flex-container">
+      <h2>欢迎进入传染病溯源预测系统</h2>
+    </div>
+    <div class="button-container">
+
+      <el-button
+        size="mini"
+        icon="el-icon-s-home"
+        plain
+        @click="godata"
+        >基础数据维护</el-button>
+        <el-button
+        type="primary"
+        size="mini"
+        icon="el-icon-cloudy"
+        plain @click="godata2"
+        >实验管理</el-button>
+    </div>
   </div>
 </template>
 
 <script>
-import PanelGroup from './dashboard/PanelGroup'
-import LineChart from './dashboard/LineChart'
-import RaddarChart from './dashboard/RaddarChart'
-import PieChart from './dashboard/PieChart'
-import BarChart from './dashboard/BarChart'
-
-const lineChartData = {
-  newVisitis: {
-    expectedData: [100, 120, 161, 134, 105, 160, 165],
-    actualData: [120, 82, 91, 154, 162, 140, 145]
-  },
-  messages: {
-    expectedData: [200, 192, 120, 144, 160, 130, 140],
-    actualData: [180, 160, 151, 106, 145, 150, 130]
-  },
-  purchases: {
-    expectedData: [80, 100, 121, 104, 105, 90, 100],
-    actualData: [120, 90, 100, 138, 142, 130, 130]
-  },
-  shoppings: {
-    expectedData: [130, 140, 141, 142, 145, 150, 160],
-    actualData: [120, 82, 91, 154, 162, 140, 130]
-  }
-}
-
 export default {
-  name: 'Index',
-  components: {
-    PanelGroup,
-    LineChart,
-    RaddarChart,
-    PieChart,
-    BarChart
-  },
+  name: "Index",
   data() {
     return {
-      lineChartData: lineChartData.newVisitis
     }
   },
   methods: {
-    handleSetLineChartData(type) {
-      this.lineChartData = lineChartData[type]
+    godata() {
+      this.$router.push({
+        path: '/data/dataBase1'
+      });
+    },
+    godata2() {
+      this.$router.push({
+        path: '/read/sampleExperiment'
+      });
     }
   }
 }
 </script>
-
-<style lang="scss" scoped>
-.dashboard-editor-container {
-  padding: 32px;
-  background-color: rgb(240, 242, 245);
-  position: relative;
-
-  .chart-wrapper {
-    background: #fff;
-    padding: 16px 16px 0;
-    margin-bottom: 32px;
-  }
+<style scoped="scoped">
+.flex-container {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 80vh; /* 使容器高度占满整个视口 */
 }
-
-@media (max-width:1024px) {
-  .chart-wrapper {
-    padding: 8px;
-  }
+.button-container{
+  display: flex;
+  justify-content: center;
+  margin-top:-35vh;
 }
-</style>
+</style>

+ 0 - 11
src/views/sample/sampleDept/index.vue

@@ -66,22 +66,11 @@
           v-hasPermi="['sample:sampleDept:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:sampleDept:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sampleDeptList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="科室" align="center" prop="name" />
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">

+ 70 - 95
src/views/sample/sampleExperiment/index.vue

@@ -9,10 +9,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="样品编号" prop="sampleInfoId">
+      <el-form-item label="样本编码" prop="sampleInfoId" v-if="sampleInfoId == null">
         <el-input
           v-model="queryParams.sampleInfoId"
-          placeholder="请输入样品编号"
+          placeholder="请输入样本编码"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -27,14 +27,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="解读或作废时间" prop="dealTime" label-width="120px">
-        <el-date-picker clearable
-          v-model="queryParams.dealTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择解读或作废时间">
-        </el-date-picker>
-      </el-form-item>
+     
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -49,99 +42,73 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
+          v-if="sampleInfoId != null"
           v-hasPermi="['sample:sampleExperiment:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['sample:sampleExperiment:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['sample:sampleExperiment:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
+          v-if="sampleInfoId != null"
           plain
-          icon="el-icon-download"
           size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:sampleExperiment:export']"
-        >导出</el-button>
+          @click="handleBack"
+        >返回</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sampleExperimentList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="实验编号" align="center" prop="id" />
       <el-table-column label="实验编码" align="center" prop="experimentCode" />
-      <el-table-column label="样品编号" align="center" prop="sampleInfoId" />
+      <el-table-column label="样本编码" align="center" prop="sampleCode" />
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.buss_read_type" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="解读或作废时间" align="center" prop="dealTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.dealTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
+      <el-table-column label="解读时间" align="center" prop="dealTime" width="180"></el-table-column>
+      <el-table-column label="报告生成时间" align="center" prop="generatorTime" width="180"></el-table-column>
       <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
-          v-if="scope.row.status !== 1"
+          v-if="scope.row.generatorStatus === 2"
             size="mini"
             type="text"
-            @click="handleDelete(scope.row)"
+            @click="openpdf(scope.row)"
           >查看报告</el-button>
           <el-button
-           v-if="scope.row.status !== 1"
-            size="mini"
-            type="text"
-            @click="handleDelete(scope.row)"
-          >重新生成</el-button>
-          <el-button
-           v-if="scope.row.status === 1"
             size="mini"
             type="text"
             @click="handlePull(scope.row)"
-          >生成报告</el-button>
+          >{{scope.row.status==1?'解读':'重新解读' }}</el-button>
           <el-button
+            v-if="scope.row.status !== 1"
             size="mini"
             type="text"
             @click="handleFilter(scope.row)"
           >过滤</el-button>
-          <!-- <el-button
+          <el-button
+           v-if="scope.row.status === 2"
+            size="mini"
+            type="text"
+            @click="handleGenerator (scope.row)"
+          >{{scope.row.generatorStatus==1?'生成报告':'重新生成' }}</el-button>
+         
+          <el-button
+            v-if="scope.row.status === 1"
             size="mini"
             type="text"
-            icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['sample:sampleExperiment:edit']"
           >修改</el-button>
           <el-button
+            v-if="scope.row.status === 1"
             size="mini"
             type="text"
-            icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['sample:sampleExperiment:remove']"
-          >删除</el-button> -->
+          >删除</el-button> 
         </template>
       </el-table-column>
     </el-table>
@@ -160,27 +127,6 @@
         <el-form-item label="实验编码" prop="experimentCode">
           <el-input v-model="form.experimentCode" placeholder="请输入实验编码" />
         </el-form-item>
-        <el-form-item label="样品编号" prop="sampleInfoId">
-          <el-input v-model="form.sampleInfoId" placeholder="请输入样品编号" />
-        </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-select v-model="form.status" placeholder="请选择状态">
-            <el-option
-              v-for="dict in dict.type.buss_read_type"
-              :key="dict.value"
-              :label="dict.label"
-              :value="parseInt(dict.value)"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="解读或作废时间" prop="dealTime">
-          <el-date-picker clearable
-            v-model="form.dealTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择解读或作废时间">
-          </el-date-picker>
-        </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
         </el-form-item>
@@ -194,7 +140,7 @@
 </template>
 
 <script>
-import { listSampleExperiment, getSampleExperiment, delSampleExperiment, addSampleExperiment, updateSampleExperiment,pullSampleExperiment } from "@/api/sample/sampleExperiment"
+import { listSampleExperiment, getSampleExperiment, delSampleExperiment, addSampleExperiment, updateSampleExperiment,pullSampleExperiment,generatorSampleExperiment } from "@/api/sample/sampleExperiment"
 
 export default {
   name: "SampleExperiment",
@@ -230,21 +176,34 @@ export default {
       },
       // 表单参数
       form: {},
+      sampleInfoId:null,
+      baseUrl: process.env.VUE_APP_BASE_API,
       // 表单校验
       rules: {
-        sampleInfoId: [
-          { required: true, message: "样品编号不能为空", trigger: "blur" }
-        ],
+        experimentCode:[ { required: true, message: "实验编码不能为空", trigger: "blur" }]
       }
     }
   },
   created() {
+    // console.log(this.$route.query.id)
+    this.sampleInfoId = this.$route.query.id;
+    this.baseid = this.$route.query.baseid;
     this.getList()
   },
   methods: {
+    handleBack(){
+      const obj = { path: "/sample/sampleInfo/" + this.baseid }
+      this.$tab.closeOpenPage(obj);
+    },
+    openpdf(row){
+      window.open(this.baseUrl+'/download/'+row.generatorFile, '_blank');
+    },
     /** 查询解读管理列表 */
     getList() {
       this.loading = true
+      if(this.sampleInfoId != null){
+        this.queryParams.sampleInfoId = this.sampleInfoId
+      }
       listSampleExperiment(this.queryParams).then(response => {
         this.sampleExperimentList = response.rows
         this.total = response.total
@@ -300,12 +259,19 @@ export default {
       const id = row.id || this.ids
       getSampleExperiment(id).then(response => {
         this.form = response.data
+        if(this.form.status != 1){
+          this.$modal.msgError("已经解读不能修改")
+          return;
+        }
         this.open = true
         this.title = "修改解读管理"
       })
     },
     /** 提交按钮 */
     submitForm() {
+      if(this.form.sampleInfoId == null || this.form.sampleInfoId == ''){
+        this.form.sampleInfoId = this.sampleInfoId
+      }
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
@@ -328,10 +294,19 @@ export default {
     handlePull(row) {
       const ids = row.id
       pullSampleExperiment(ids).then(() => {
+        this.$modal.msgSuccess("解读数据成功")
+        this.getList()
+      }).catch(() => {})
+    },
+
+    handleGenerator(row) {
+      const ids = row.id
+      generatorSampleExperiment(ids).then(() => {
         this.$modal.msgSuccess("生成报告成功")
         this.getList()
       }).catch(() => {})
     },
+
     // 过滤按钮操作
     handleFilter(row) {
       const id = row.id
@@ -340,18 +315,18 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids
-      this.$modal.confirm('是否确认删除解读管理编号为"' + ids + '"的数据项?').then(function() {
-        return delSampleExperiment(ids)
-      }).then(() => {
-        this.getList()
-        this.$modal.msgSuccess("删除成功")
-      }).catch(() => {})
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('sample/sampleExperiment/export', {
-        ...this.queryParams
-      }, `sampleExperiment_${new Date().getTime()}.xlsx`)
+      getSampleExperiment(ids).then(response => {
+        if(this.form.status != 1){
+          this.$modal.msgError("已经解读不能修改")
+          return;
+        }
+        this.$modal.confirm('是否确认删除解读管理编号为"' + ids + '"的数据项?').then(function() {
+          return delSampleExperiment(ids)
+        }).then(() => {
+          this.getList()
+          this.$modal.msgSuccess("删除成功")
+        }).catch(() => {})
+      })
     }
   }
 }

+ 0 - 11
src/views/sample/sampleHospital/index.vue

@@ -92,22 +92,11 @@
           v-hasPermi="['sample:sampleHospital:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:sampleHospital:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sampleHospitalList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="医院名称" align="center" prop="name" />
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">

+ 120 - 82
src/views/sample/sampleInfo/index.vue

@@ -8,26 +8,10 @@
       v-show="showSearch"
       label-width="100px"
     >
-      <el-form-item label="样品编号" prop="sampleCode">
+      <el-form-item label="样本编码" prop="sampleCode">
         <el-input
           v-model="queryParams.sampleCode"
-          placeholder="请输入样品编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="患者编号" prop="patientId">
-        <el-input
-          v-model="queryParams.patientId"
-          placeholder="请输入患者编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="患者电话" prop="patientPhone">
-        <el-input
-          v-model="queryParams.patientPhone"
-          placeholder="请输入患者电话"
+          placeholder="请输入样本编码"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -52,21 +36,36 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="送检医院编号" prop="sampleHospitalId">
-        <el-input
+      <el-form-item label="送检医院" prop="sampleHospitalId">
+
+        <el-select
           v-model="queryParams.sampleHospitalId"
-          placeholder="请输入送检医院编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+          placeholder="请选择送检医院"
+        >
+          <el-option
+            v-for="item in options3"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+
       </el-form-item>
-      <el-form-item label="送检科室编号" prop="sampleDeptId">
-        <el-input
+      <el-form-item label="送检科室" prop="sampleDeptId">
+        <el-select
           v-model="queryParams.sampleDeptId"
-          placeholder="请输入送检科室编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+          placeholder="请选择送检科室"
+        >
+          <el-option
+            v-for="item in options2"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+
       </el-form-item>
       <el-form-item label="医生名字" prop="doctorName">
         <el-input
@@ -98,7 +97,6 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['sample:sampleInfo:add']"
           >新增</el-button
         >
       </el-col>
@@ -110,7 +108,6 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['sample:sampleInfo:edit']"
           >修改</el-button
         >
       </el-col>
@@ -122,20 +119,15 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['sample:sampleInfo:remove']"
           >删除</el-button
         >
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="warning"
           plain
-          icon="el-icon-download"
           size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:sampleInfo:export']"
-          >导出</el-button
-        >
+          @click="handleBack"
+        >返回</el-button>
       </el-col>
       <right-toolbar
         :showSearch.sync="showSearch"
@@ -149,21 +141,15 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="样品编号" align="center" prop="sampleCode" />
-      <el-table-column label="患者编号" align="center" prop="patientId" />
+      
+      <el-table-column label="样本编码" align="center" prop="sampleCode" />
+      <el-table-column label="患者名称" align="center" prop="patientName" />
       <el-table-column label="患者电话" align="center" prop="patientPhone" />
-      <el-table-column label="样本类型" align="center" prop="sampleTypeId" />
-      <el-table-column
-        label="送检医院编号"
-        align="center"
-        prop="sampleHospitalId"
-      />
-      <el-table-column
-        label="送检科室编号"
-        align="center"
-        prop="sampleDeptId"
-      />
+
+      <el-table-column label="样本类型" align="center" prop="sampleTypeName" />
+      <el-table-column label="送检医院" align="center" prop="sampleHospitalName" />
+      <el-table-column label="送检科室" align="center" prop="sampleDeptName" />
+
       <el-table-column label="医生名字" align="center" prop="doctorName" />
       <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column
@@ -175,19 +161,22 @@
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['sample:sampleInfo:edit']"
             >修改</el-button
           >
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['sample:sampleInfo:remove']"
             >删除</el-button
           >
+
+          <el-button
+            size="mini"
+            type="text"
+            @click="gojdzx(scope.row)"
+            >实验解读</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -200,23 +189,19 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改样管理对话框 -->
+    <!-- 添加或修改样管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" 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-form-item>
-        <el-form-item label="患者编号" prop="patientId">
-          <el-input v-model="form.patientId" placeholder="请输入患者编号" />
+        <el-form-item label="样本编码" prop="sampleCode">
+          <el-input v-model="form.sampleCode" placeholder="请输入样本编码" />
         </el-form-item>
+
         <el-form-item label="患者电话" prop="patientPhone">
           <el-input v-model="form.patientPhone" placeholder="请输入患者电话" />
         </el-form-item>
         <el-form-item label="样本类型" prop="sampleTypeId">
-          <!-- <el-input v-model="form.sampleTypeId" placeholder="请输入样本类型" /> -->
-
           <el-select
-            v-model="queryParams.sampleTypeId"
+            v-model="form.sampleTypeId"
             placeholder="请选择样本类型"
             style="width: 100%;"
           >
@@ -229,17 +214,34 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="送检医院编号" prop="sampleHospitalId">
-          <el-input
-            v-model="form.sampleHospitalId"
-            placeholder="请输入送检医院编号"
-          />
+        <el-form-item label="送检医院" prop="sampleHospitalId">
+          <el-select
+          v-model="form.sampleHospitalId"
+          placeholder="请选择送检医院"
+        >
+          <el-option
+            v-for="item in options3"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+          </el-select>
+
         </el-form-item>
-        <el-form-item label="送检科室编号" prop="sampleDeptId">
-          <el-input
-            v-model="form.sampleDeptId"
-            placeholder="请输入送检科室编号"
-          />
+        <el-form-item label="送检科室" prop="sampleDeptId">
+         <el-select
+          v-model="form.sampleDeptId"
+          placeholder="请选择送检"
+        >
+          <el-option
+            v-for="item in options2"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="医生名字" prop="doctorName">
           <el-input v-model="form.doctorName" placeholder="请输入医生名字" />
@@ -267,7 +269,7 @@ import {
   delSampleInfo,
   addSampleInfo,
   updateSampleInfo,
-  getSampleTypeSelect,
+  getSampleTypeSelect,getSampleDeptSelect,getSampleHospitalSelect
 } from "@/api/sample/sampleInfo";
 
 export default {
@@ -286,7 +288,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 样管理表格数据
+      // 样管理表格数据
       sampleInfoList: [],
       // 弹出层标题
       title: "",
@@ -304,21 +306,37 @@ export default {
         sampleDeptId: null,
         doctorName: null,
       },
+      patientId:null,
       // 表单参数
       form: {},
       // 表单校验
       rules: {},
       options: [],
+      options2:[],
+      options3:[]
     };
   },
   created() {
+    this.patientId = this.$route.params && this.$route.params.id;
+    
+
     this.getList();
     this.getSampleTypeOptions();
+    this.getSampleDeptOptions();
+    this.getSampleHospitalOptions();
   },
   methods: {
-    /** 查询样品管理列表 */
+    handleBack(){
+      const obj = { path: "/sample/samplePatient"}
+      this.$tab.closeOpenPage(obj);
+    },
+    gojdzx(row){
+      this.$router.push("/read/sampleExperiment?baseid="+this.patientId+"&id=" + row.id)
+    },
+    /** 查询样本管理列表 */
     getList() {
       this.loading = true;
+      this.queryParams.patientId = this.patientId
       listSampleInfo(this.queryParams).then((response) => {
         this.sampleInfoList = response.rows;
         this.total = response.total;
@@ -333,6 +351,24 @@ export default {
           label: item.name,
         }));
       });
+    },
+     // 获取样本类型选项
+    getSampleDeptOptions() {
+      getSampleDeptSelect().then((response) => {
+        this.options2 = response.data.map((item) => ({
+          value: item.id,
+          label: item.name,
+        }));
+      });
+    },
+     // 获取样本类型选项
+    getSampleHospitalOptions() {
+      getSampleHospitalSelect().then((response) => {
+        this.options3 = response.data.map((item) => ({
+          value: item.id,
+          label: item.name,
+        }));
+      });
     },
     // 取消按钮
     cancel() {
@@ -378,7 +414,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加样管理";
+      this.title = "添加样管理";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -387,7 +423,7 @@ export default {
       getSampleInfo(id).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改样管理";
+        this.title = "修改样管理";
       });
     },
     /** 提交按钮 */
@@ -395,12 +431,14 @@ export default {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
+            this.form.patientId = this.patientId;
             updateSampleInfo(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
+            this.form.patientId = this.patientId;
             addSampleInfo(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
@@ -414,7 +452,7 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$modal
-        .confirm('是否确认删除样管理编号为"' + ids + '"的数据项?')
+        .confirm('是否确认删除样管理编号为"' + ids + '"的数据项?')
         .then(function () {
           return delSampleInfo(ids);
         })

+ 18 - 22
src/views/sample/samplePatient/index.vue

@@ -562,32 +562,21 @@
           v-hasPermi="['sample:samplePatient:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:samplePatient:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="samplePatientList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="病案号" align="center" prop="bahCode" />
       <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="出生年份(换算年龄)" align="center" prop="birth" />
+      <el-table-column label="出生年份" align="center" prop="birth" />
       <el-table-column label="性别" align="center" prop="sex">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex"/>
         </template>
       </el-table-column>
       <el-table-column label="地址" align="center" prop="address" />
-      <el-table-column label="既往健康" align="center" prop="baseJwjk" />
+      <!--  <el-table-column label="既往健康" align="center" prop="baseJwjk" />
       <el-table-column label="心血管病变" align="center" prop="baseXxgbb" />
       <el-table-column label="自身免疫性疾病" align="center" prop="baseZsmyxjb" />
       <el-table-column label="器官移植" align="center" prop="baseQgyz" />
@@ -647,23 +636,27 @@
       <el-table-column label="90天死亡" align="center" prop="return90death" />
       <el-table-column label="死亡距发病时间" align="center" prop="returnLg90death" />
       <el-table-column label="目前存活" align="center" prop="returnLive" />
+      -->
       <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center"  fixed="right" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center"  fixed="right" width="210" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['sample:samplePatient:edit']"
           >修改</el-button>
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['sample:samplePatient:remove']"
           >删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="gotoyb(scope.row)"
+          >样本管理</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -676,7 +669,7 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改样患者信息对话框 -->
+    <!-- 添加或修改样患者信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="病案号" prop="bahCode">
@@ -914,7 +907,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 样患者信息表格数据
+      // 样患者信息表格数据
       samplePatientList: [],
       // 弹出层标题
       title: "",
@@ -1001,7 +994,10 @@ export default {
     this.getList()
   },
   methods: {
-    /** 查询样品患者信息列表 */
+    gotoyb(row){
+        this.$router.push("/sample/sampleInfo/" + row.id)
+    },
+    /** 查询样本患者信息列表 */
     getList() {
       this.loading = true
       listSamplePatient(this.queryParams).then(response => {
@@ -1112,7 +1108,7 @@ export default {
     handleAdd() {
       this.reset()
       this.open = true
-      this.title = "添加样患者信息"
+      this.title = "添加样患者信息"
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -1121,7 +1117,7 @@ export default {
       getSamplePatient(id).then(response => {
         this.form = response.data
         this.open = true
-        this.title = "修改样患者信息"
+        this.title = "修改样患者信息"
       })
     },
     /** 提交按钮 */
@@ -1147,7 +1143,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids
-      this.$modal.confirm('是否确认删除样患者信息编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除样患者信息编号为"' + ids + '"的数据项?').then(function() {
         return delSamplePatient(ids)
       }).then(() => {
         this.getList()

+ 0 - 11
src/views/sample/sampleType/index.vue

@@ -66,22 +66,11 @@
           v-hasPermi="['sample:sampleType:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['sample:sampleType:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sampleTypeList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="名称" align="center" prop="name" />
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">

+ 0 - 2
src/views/statistics/popularity-prediction/index.vue

@@ -15,8 +15,6 @@
 
 <script>
 import * as d3 from "d3";
-import { phylotree } from "phylotree";
-import "phylotree/dist/phylotree.css";
 import * as echarts from 'echarts';
 
 export default {