Browse Source

增删改查

yuwandanmian 1 năm trước cách đây
mục cha
commit
a828021402

+ 36 - 0
src/api/knowledge.js

@@ -8,3 +8,39 @@ export function illnessList(data) {
     data: data
   })
 }
+
+// 疾病库-新增
+export function illnessAdd(data) {
+  return request({
+    url: '/disease/diseaseAdd',
+    method: 'post',
+    data: data
+  })
+}
+
+// 疾病库-详情
+export function illnessInfo(data) {
+  return request({
+    url: '/disease/diseaseInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 疾病库-编辑
+export function illnessUpdate(data) {
+  return request({
+    url: '/disease/diseaseSave',
+    method: 'post',
+    data: data
+  })
+}
+
+// 疾病库-删除
+export function illnessDelete(data) {
+  return request({
+    url: '/disease/diseaseDelete',
+    method: 'post',
+    data: data
+  })
+}

+ 182 - 0
src/views/knowledge/illness/components/CreateDaialog.vue

@@ -0,0 +1,182 @@
+<template>
+  <div>
+    <el-dialog
+      :title="titleStr"
+      :visible.sync="data.bSwitch"
+      width="600px"
+      top="5vh"
+    >
+      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm">
+        <el-form-item label="科室名称">
+          <el-select v-model="ruleForm.KSMC" filterable clearable placeholder="请选择" style="width: 100%;">
+            <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="疾病名称" prop="JBMC">
+          <el-input v-model="ruleForm.JBMC" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="疾病别名" prop="BM">
+          <el-input v-model="ruleForm.BM" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="疾病编码">
+          <el-input v-model="ruleForm.JBBM" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="鉴别诊断">
+          <el-input v-model="ruleForm.JBZD" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="症状">
+          <el-input v-model="ruleForm.ZZ" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="体征">
+          <el-input v-model="ruleForm.TZ" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="药品">
+          <el-input v-model="ruleForm.YP" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="治疗">
+          <el-input v-model="ruleForm.ZL" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="检查">
+          <el-input v-model="ruleForm.JC" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="检验">
+          <el-input v-model="ruleForm.JJ" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="并发症">
+          <el-input v-model="ruleForm.BFZ" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="参考文献">
+          <el-input v-model="ruleForm.CKWX" placeholder="请输入" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="data.bSwitch = false">取 消</el-button>
+        <el-button type="primary" @click="onSubmit">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getDeportmentList } from '@/api/admin'
+import { illnessAdd, illnessInfo, illnessUpdate } from '@/api/knowledge'
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          bSwitch: false,
+          id: ''
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      ruleForm: {
+        KSMC: '',
+        JBMC: '',
+        BM: '',
+        JBBM: '',
+        JBZD: '',
+        ZZ: '',
+        TZ: '',
+        YP: '',
+        ZL: '',
+        JC: '',
+        JJ: '',
+        BFZ: '',
+        CKWX: ''
+      },
+      rules: {
+        JBMC: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        BM: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ]
+      },
+      deportments: []
+    }
+  },
+  computed: {
+    titleStr() {
+      return this.data.id ? '编辑' : '新增'
+    }
+  },
+  created() {
+    if (this.data.id) {
+      this.getInfo()
+    }
+    this.getDeportmentList()
+  },
+  methods: {
+    // 详情
+    getInfo() {
+      illnessInfo({ id: this.data.id }).then(res => {
+        const { p } = res
+        this.ruleForm = p.data
+      }).catch(error => {
+        console.log(error)
+      })
+    },
+    // 部门
+    getDeportmentList() {
+      getDeportmentList().then(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]
+            })
+          }
+        }
+      }).catch(error => {
+        console.log(error)
+      })
+    },
+    // 提交
+    onSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          if (this.data.id) {
+            this.editSubmit()
+          } else {
+            this.createSubmit()
+          }
+        } else {
+          return false
+        }
+      })
+    },
+    createSubmit() {
+      illnessAdd(this.ruleForm).then(res => {
+        const { m } = res
+        this.$message.success(m || '成功')
+        this.data.bSwitch = false
+        this.$emit('refresh')
+      }).catch(error => {
+        console.log(error)
+      })
+    },
+    editSubmit() {
+      illnessUpdate(this.ruleForm).then(res => {
+        const { m } = res
+        this.$message.success(m || '成功')
+        this.data.bSwitch = false
+        this.$emit('refresh')
+      }).catch(error => {
+        console.log(error)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.demo-ruleForm {
+  width: 85%;
+}
+</style>

+ 1 - 3
src/views/knowledge/illness/components/SearchBox.vue

@@ -3,7 +3,7 @@
     <div class="btn-box">
       <el-button type="primary" icon="el-icon-s-data" style="float: left;" @click="show = !show">筛选</el-button>
       <div style="float: right;">
-        <el-button type="primary" icon="el-icon-plus" style="margin-right: 10px;">新增</el-button>
+        <el-button type="primary" icon="el-icon-plus" style="margin-right: 10px;" @click="$emit('create')">新增</el-button>
         <el-popover
           placement="bottom-end"
           title=""
@@ -221,7 +221,6 @@ export default {
     },
     getDeportmentList() {
       getDeportmentList().then(res => {
-        console.log(res)
         const { p } = res
         if (Object.keys(p.list).length) {
           for (const key in p.list) {
@@ -230,7 +229,6 @@ export default {
               name: p.list[key]
             })
           }
-          console.log(this.deportments, 'this.deportments')
         }
       }).catch(error => {
         console.log(error)

+ 17 - 3
src/views/knowledge/illness/components/TableBox.vue

@@ -124,8 +124,7 @@
         fixed="right"
       >
         <template slot-scope="scope">
-          <el-button type="text">详情</el-button>
-          <el-button type="text">编辑</el-button>
+          <el-button type="text" @click="onEdit(scope.row)">编辑</el-button>
           <el-button type="text" @click="onDelConfirm(scope.row)">删除</el-button>
         </template>
       </el-table-column>
@@ -134,6 +133,7 @@
 </template>
 
 <script>
+import { illnessDelete } from '@/api/knowledge'
 
 export default {
   props: {
@@ -162,7 +162,21 @@ export default {
     },
     // 删除
     onDelConfirm(row) {
-      console.log(row)
+      this.$confirm(`是否删除【${row.JBMC}】信息?`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        illnessDelete({ id: row.id }).then(res => {
+          const { m } = res
+          this.$message.success(m || '成功')
+          this.$emit('refresh')
+        })
+      })
+    },
+    // 编辑
+    onEdit(row) {
+      this.$emit('edit', row)
     }
   }
 }

+ 28 - 61
src/views/knowledge/illness/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
-    <SearchBoxVue :data="searchData" :codes="tableShowCode" @search="handleSearch" @reset="handleReset" @codesChange="handleCodesChange" />
-    <TableBoxVue :loading="loading" :data="tableData" :codes="tableShowCode" style="margin-top: -40px;" @download="handleDownLoad" />
+    <SearchBoxVue :data="searchData" :codes="tableShowCode" @search="handleSearch" @reset="handleReset" @codesChange="handleCodesChange" @create="handleCreate" />
+    <TableBoxVue :loading="loading" :data="tableData" :codes="tableShowCode" style="margin-top: -40px;" @download="handleDownLoad" @edit="handleEdit" @refresh="handleRefresh" />
     <pagination
       :auto-scroll="false"
       :total="paginationData.total"
@@ -9,6 +9,8 @@
       :limit="paginationData.page_size"
       @pagination="handlePagination"
     />
+    <!-- 新建、编辑 -->
+    <CreateDaialogVue v-if="createData.bSwitch" :data="createData" @refresh="handleRefresh" />
   </div>
 </template>
 
@@ -17,12 +19,14 @@ import SearchBoxVue from './components/SearchBox.vue'
 import TableBoxVue from './components/TableBox.vue'
 import { userSearchLogExport } from '@/api/excel'
 import { illnessList } from '@/api/knowledge'
+import CreateDaialogVue from './components/CreateDaialog.vue'
 // import { dateFormat } from '@/filters/index'
 
 export default {
   components: {
     SearchBoxVue,
-    TableBoxVue
+    TableBoxVue,
+    CreateDaialogVue
   },
   data() {
     return {
@@ -70,6 +74,10 @@ export default {
         total: 0,
         page: 1,
         page_size: 10
+      },
+      createData: {
+        bSwitch: false,
+        id: ''
       }
     }
   },
@@ -142,79 +150,24 @@ export default {
         const { p } = res
         this.paginationData.total = p.count
         this.tableData = p.list
-        this.tableData = [{
-          'id': 20,
-          'FLAG': 'EK_ZLSJBMC',
-          'KSMC': '儿科',
-          'JBMC': '这里是疾病名称',
-          'BM': '这里是别名',
-          'JBBM': '这里是疾病编码',
-          'JBZD': '这里是鉴别诊断',
-          'ZZ': '这里是症状',
-          'TZ': '这里是体征',
-          'YP': '这里是药品',
-          'ZL': '这里是治疗',
-          'JC': '这里是检查',
-          'JJ': '这里是检验',
-          'BFZ': '这里是并发症',
-          'CKWX': '这里是参考文献',
-          'created_at': '2023-06-06 14:24:51',
-          'updated_at': '2023-06-06 14:24:51'
-        },
-        {
-          'id': 21,
-          'FLAG': 'ZLSJBMCYYY',
-          'KSMC': '',
-          'JBMC': '这里是疾病名称111',
-          'BM': '这里是别名111',
-          'JBBM': '这里是疾病编码111',
-          'JBZD': '这里是鉴别诊断111',
-          'ZZ': '这里是症状111',
-          'TZ': '这里是体征111',
-          'YP': '这里是药品111',
-          'ZL': '这里是治疗111',
-          'JC': '这里是检查111',
-          'JJ': '这里是检验111',
-          'BFZ': '这里是并发症111',
-          'CKWX': '这里是参考文献111',
-          'created_at': '2023-06-06 14:24:51',
-          'updated_at': '2023-06-06 14:24:51'
-        },
-        {
-          'id': 22,
-          'FLAG': 'ZLSJBMCEEE',
-          'KSMC': '',
-          'JBMC': '这里是疾病名称222',
-          'BM': '这里是别名222',
-          'JBBM': '这里是疾病编码222',
-          'JBZD': '',
-          'ZZ': '',
-          'TZ': '',
-          'YP': '',
-          'ZL': '',
-          'JC': '',
-          'JJ': '',
-          'BFZ': '',
-          'CKWX': '',
-          'created_at': '2023-06-06 14:24:51',
-          'updated_at': '2023-06-06 14:24:51'
-        }
-        ]
       }).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()
     },
+    // 重置
     handleReset() {
       this.searchData = {
         FLAG: '',
@@ -239,6 +192,7 @@ export default {
         SSBM: ''
       }
     },
+    // 导出
     handleDownLoad() {
       const { name, dep_id, time, keyword } = this.searchData
       const params = {
@@ -267,6 +221,19 @@ export default {
           navigator.msSaveBlob(blob, fileName)
         }
       })
+    },
+    // 新增
+    handleCreate() {
+      this.createData.id = ''
+      this.createData.bSwitch = true
+    },
+    handleEdit(row) {
+      this.createData.id = row.id
+      this.createData.bSwitch = true
+    },
+    // 刷新
+    handleRefresh() {
+      this.getList()
     }
   }
 }