zdl 1 yıl önce
ebeveyn
işleme
aac97b2523

+ 10 - 0
src/api/knowledge.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 疾病库列表
+export function illnessList(data) {
+  return request({
+    url: '/disease/diseaseList',
+    method: 'post',
+    data: data
+  })
+}

+ 203 - 0
src/views/knowledge/illness/components/SearchBox.vue

@@ -0,0 +1,203 @@
+<template>
+  <div class="app-container">
+    <div class="btn-box">
+      <el-button type="primary" icon="el-icon-search" style="float: left;" @click="show = !show">筛选</el-button>
+      <el-button type="primary" icon="el-icon-download" style="float: right;" @click="onExcelDownload">导出</el-button>
+    </div>
+    <el-collapse-transition>
+      <div v-if="show" style="margin-bottom: 16px;">
+        <el-form :inline="true" :model="data" class="demo-form-inline">
+          <el-form-item label="">
+            <el-input v-model="data.FLAG" placeholder="序号" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-select v-model="data.KSMC" filterable clearable placeholder="科室">
+              <el-option v-for="item of deportments" :key="item.id" :label="item.name" :value="item.name" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.JBMC" placeholder="疾病名称" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.BM" placeholder="疾病别名" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.JBBM" placeholder="疾病编码" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.JBZD" placeholder="鉴别诊断" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.ZZ" placeholder="症状" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.TZ" placeholder="体征" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.YP" placeholder="药品" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.ZL" placeholder="治疗" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.JC" placeholder="检查" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.JJ" placeholder="检验" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.BFZ" placeholder="并发症" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-input v-model="data.CKWX" placeholder="参考文献" />
+          </el-form-item>
+          <el-form-item label="">
+            <el-date-picker
+              v-model="data.createStartTime"
+              type="date"
+              :picker-options="pickerOptions1"
+              placeholder="创建时间-开始"
+            />
+          </el-form-item>
+          <el-form-item label="">
+            <el-date-picker
+              v-model="data.createEndTime"
+              type="date"
+              :picker-options="pickerOptions2"
+              placeholder="创建时间-结束"
+            />
+          </el-form-item>
+          <el-form-item label="">
+            <el-date-picker
+              v-model="data.updateStartTime"
+              type="date"
+              :picker-options="pickerOptions3"
+              placeholder="更新时间-开始"
+            />
+          </el-form-item>
+          <el-form-item label="">
+            <el-date-picker
+              v-model="data.updateEndTime"
+              type="date"
+              :picker-options="pickerOptions4"
+              placeholder="更新时间-结束"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="onSubmit">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-collapse-transition>
+  </div>
+</template>
+
+<script>
+import { getDeportmentList } from '@/api/admin'
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          FLAG: '',
+          KSMC: '',
+          JBMC: '',
+          BM: '',
+          JBBM: '',
+          JBZD: '',
+          ZZ: '',
+          TZ: '',
+          YP: '',
+          ZL: '',
+          JC: '',
+          JJ: '',
+          BFZ: '',
+          CKWX: '',
+          createStartTime: '',
+          createEndTime: '',
+          updateStartTime: '',
+          updateEndTime: '',
+          SSMC: '',
+          SSBM: ''
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      pickerOptions1: {
+        disabledDate: (time) => {
+          if (this.data.createEndTime) {
+            return time.getTime() > new Date(this.data.createEndTime).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      pickerOptions2: {
+        disabledDate: (time) => {
+          if (this.data.createStartTime) {
+            return time.getTime() < new Date(this.data.createStartTime).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      pickerOptions3: {
+        disabledDate: (time) => {
+          if (this.data.updateEndTime) {
+            return time.getTime() > new Date(this.data.updateEndTime).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      pickerOptions4: {
+        disabledDate: (time) => {
+          if (this.data.updateStartTime) {
+            return time.getTime() < new Date(this.data.updateStartTime).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      deportments: [],
+      show: false
+    }
+  },
+  created() {
+    this.getDeportmentList()
+  },
+  methods: {
+    onSubmit() {
+      console.log(this.data, 'this.data')
+      this.$emit('search')
+    },
+    getDeportmentList() {
+      getDeportmentList().then(res => {
+        console.log(res)
+        const { p } = res
+        if (Object.keys(p.list).length) {
+          for (const key in p.list) {
+            this.deportments.push({
+              id: key,
+              name: p.list[key]
+            })
+          }
+          console.log(this.deportments, 'this.deportments')
+        }
+      }).catch(error => {
+        console.log(error)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.btn-box {
+  overflow: hidden;
+  margin-bottom: 15px;
+}
+</style>

+ 155 - 0
src/views/knowledge/illness/components/TableBox.vue

@@ -0,0 +1,155 @@
+<template>
+  <div class="app-container">
+    <el-table
+      v-loading="loading"
+      :data="data"
+      style="width: 100%"
+    >
+      <el-table-column
+        prop="id"
+        label="序号"
+        width="100"
+        show-overflow-tooltip
+        align="center"
+        fixed="left"
+      />
+      <el-table-column
+        prop="KSMC"
+        label="科室"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="JBMC"
+        label="疾病名称"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="BM"
+        label="疾病别名"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="JBBM"
+        label="疾病编码"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="JBZD"
+        label="鉴别诊断"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="ZZ"
+        label="症状"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="TZ"
+        label="体征"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="YP"
+        label="药品"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="ZL"
+        label="治疗"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="JC"
+        label="检查"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="JJ"
+        label="检验"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="BFZ"
+        label="并发症"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="CKWX"
+        label="参考文献"
+        width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="created_at"
+        label="创建时间"
+        width="200"
+      />
+      <el-table-column
+        prop="created_at"
+        label="更新时间"
+        width="200"
+      />
+      <el-table-column
+        prop="updated_at"
+        label="查询时间"
+        width="200"
+      />
+      <el-table-column
+        prop=""
+        label="操作"
+        width="200"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button type="text">详情</el-button>
+          <el-button type="text">编辑</el-button>
+          <el-button type="text" @click="onDelConfirm(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+
+export default {
+  props: {
+    data: {
+      type: Array,
+      default() {
+        return []
+      }
+    },
+    loading: {
+      type: Boolean,
+      default() {
+        return false
+      }
+    }
+  },
+  methods: {
+    onExcelDownload() {
+      this.$emit('download')
+    },
+    // 删除
+    onDelConfirm(row) {
+      console.log(row)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 156 - 2
src/views/knowledge/illness/index.vue

@@ -1,12 +1,166 @@
 <template>
   <div>
-    11111
+    <SearchBoxVue :data="searchData" @search="handleSearch" />
+    <TableBoxVue :loading="loading" :data="tableData" style="margin-top: -40px;" @download="handleDownLoad" />
+    <pagination
+      :auto-scroll="false"
+      :total="paginationData.total"
+      :page="paginationData.page"
+      :limit="paginationData.page_size"
+      @pagination="handlePagination"
+    />
   </div>
 </template>
 
 <script>
-export default {
+import SearchBoxVue from './components/SearchBox.vue'
+import TableBoxVue from './components/TableBox.vue'
+import { userSearchLogExport } from '@/api/excel'
+import { illnessList } from '@/api/knowledge'
+// import { dateFormat } from '@/filters/index'
 
+export default {
+  components: {
+    SearchBoxVue,
+    TableBoxVue
+  },
+  data() {
+    return {
+      loading: false,
+      searchData: {
+        FLAG: '',
+        KSMC: '',
+        JBMC: '',
+        BM: '',
+        JBBM: '',
+        JBZD: '',
+        ZZ: '',
+        TZ: '',
+        YP: '',
+        ZL: '',
+        JC: '',
+        JJ: '',
+        BFZ: '',
+        CKWX: '',
+        createStartTime: '',
+        createEndTime: '',
+        updateStartTime: '',
+        updateEndTime: '',
+        SSMC: '',
+        SSBM: ''
+      },
+      tableData: [],
+      paginationData: {
+        total: 0,
+        page: 1,
+        page_size: 10
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    getList() {
+      const {
+        FLAG,
+        KSMC,
+        JBMC,
+        BM,
+        JBBM,
+        JBZD,
+        ZZ,
+        TZ,
+        YP,
+        ZL,
+        JC,
+        JJ,
+        BFZ,
+        CKWX,
+        // createStartTime,
+        // createEndTime,
+        // updateStartTime,
+        // updateEndTime,
+        SSMC,
+        SSBM
+      } = this.searchData
+      const { page, page_size } = this.paginationData
+      const params = {
+        FLAG,
+        KSMC,
+        JBMC,
+        BM,
+        JBBM,
+        JBZD,
+        ZZ,
+        TZ,
+        YP,
+        ZL,
+        JC,
+        JJ,
+        BFZ,
+        CKWX,
+        // createStartTime,
+        // createEndTime,
+        // updateStartTime,
+        // updateEndTime,
+        SSMC,
+        SSBM,
+        page,
+        page_size
+      }
+      // params.start_time = start_time ? dateFormat(start_time, 'YYYYMMDD') : ''
+      // params.end_time = end_time ? dateFormat(end_time, 'YYYYMMDD') : ''
+      this.loading = true
+      illnessList(params).then(res => {
+        const { p } = res
+        this.paginationData.total = p.count
+        this.tableData = p.list
+      }).catch(error => {
+        console.log(error)
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    handlePagination(param) {
+      this.paginationData.page = param.page
+      this.paginationData.limit = param.limit
+      this.getList()
+    },
+    handleSearch() {
+      this.paginationData.page = 1
+      this.getList()
+    },
+    handleDownLoad() {
+      const { name, dep_id, time, keyword } = this.searchData
+      const params = {
+        name,
+        dep_id,
+        keyword
+      }
+      if (time && time.length) {
+        params.start_time = time[0]
+        params.end_time = time[1]
+      }
+      userSearchLogExport(params).then(res => {
+        const content = res.data // 后台返回二进制数据
+        const blob = new Blob([content])
+        const fileName = `科研探索日志.csv`
+        if ('download' in document.createElement('a')) { // 非IE下载
+          const elink = document.createElement('a')
+          elink.download = fileName
+          elink.style.display = 'none'
+          elink.href = URL.createObjectURL(blob)
+          document.body.appendChild(elink)
+          elink.click()
+          URL.revokeObjectURL(elink.href) // 释放URL 对象
+          document.body.removeChild(elink)
+        } else { // IE10+下载
+          navigator.msSaveBlob(blob, fileName)
+        }
+      })
+    }
+  }
 }
 </script>