赵殿龙 преди 1 година
родител
ревизия
d7a7b1eba3

+ 36 - 0
src/api/rule/data.js

@@ -26,3 +26,39 @@ export function options_list(data) {
     params: data
   })
 }
+
+// 数据源-医院列表
+export function hospitalList(data) {
+  return request({
+    url: '/data_source/hospitalList',
+    method: 'get',
+    params: data
+  })
+}
+
+// 数据源-医院添加
+export function hospitalAdd(data) {
+  return request({
+    url: '/data_source/hospitalAdd',
+    method: 'post',
+    data: data
+  })
+}
+
+// 数据源-新增
+export function data_source_add(data) {
+  return request({
+    url: '/data_source/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 数据源-编辑
+export function data_source_edit(data) {
+  return request({
+    url: '/data_source/edit',
+    method: 'post',
+    data: data
+  })
+}

+ 102 - 36
src/views/rule/data/components/CreateDialog.vue

@@ -5,25 +5,38 @@
     width="40%"
   >
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="140px" class="demo-ruleForm">
-      <el-form-item label="手术操作编码" prop="ssbm">
-        <el-input v-model="ruleForm.ssbm" placeholder="请输入" />
+      <el-form-item label="青苗表名" prop="table_name">
+        <el-select v-model="ruleForm.qingmiao_table_name" filterable clearable placeholder="请选择" style="width: 100%;">
+          <el-option v-for="(item, index) of options.table_name" :key="'qingmiao_table_name' + index" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
-      <el-form-item label="手术操作名称" prop="ssmc">
-        <el-input v-model="ruleForm.ssmc" placeholder="请输入" />
+      <el-form-item label="菁苗字段名称" prop="qingmiao_field_name">
+        <el-select v-model="ruleForm.qingmiao_field_name" filterable clearable placeholder="请选择" style="width: 100%;">
+          <el-option v-for="(item, index) of options.EMR_YZB.field_name" :key="'qingmiao_field_name' + index" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
-      <el-form-item label="操作类型" prop="sslb">
-        <el-select v-model="ruleForm.sslb" filterable clearable placeholder="请选择">
-          <el-option label="介入治疗" value="介入治疗" />
-          <el-option label="手术" value="手术" />
-          <el-option label="治疗性操作" value="治疗性操作" />
-          <el-option label="诊断性操作" value="诊断性操作" />
+      <el-form-item label="菁苗字段" prop="qingmiao_field">
+        <el-select v-model="ruleForm.qingmiao_field" filterable clearable placeholder="菁苗字段" style="width: 100%;">
+          <el-option v-for="(item, index) of options.EMR_YZB.field" :key="'qingmiao_field' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
-      <el-form-item label="录入选项" prop="lrxx">
-        <el-select v-model="ruleForm.lrxx" filterable clearable placeholder="请选择">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+      <el-form-item label="医院名称" prop="hospital_name">
+        <el-select v-model="ruleForm.hospital_name" filterable clearable placeholder="医院名称" style="width: 87%;">
+          <el-option v-for="(item, index) of hospitals" :key="'hospital_name' + index" :label="item.name" :value="item.name" />
         </el-select>
+        <el-button type="primary" plain icon="el-icon-plus" style="margin-left: 10px;" @click="open" />
+      </el-form-item>
+      <el-form-item label="医院字段" prop="hospital_field">
+        <el-input v-model="ruleForm.hospital_field" clearable placeholder="请输入" />
+      </el-form-item>
+      <el-form-item label="医院一级目录">
+        <el-input v-model="ruleForm.hospital_one" clearable placeholder="请输入" />
+      </el-form-item>
+      <el-form-item label="医院二级目录">
+        <el-input v-model="ruleForm.hospital_two" clearable placeholder="请输入" />
+      </el-form-item>
+      <el-form-item label="医院三级目录">
+        <el-input v-model="ruleForm.hospital_three" clearable placeholder="请输入" />
       </el-form-item>
     </el-form>
     <span slot="footer" class="dialog-footer">
@@ -34,7 +47,8 @@
 </template>
 
 <script>
-import { ssczAdd, ssczSave } from '@/api/dict'
+import { data_source_add, data_source_edit, hospitalList, hospitalAdd } from '@/api/rule/data'
+
 export default {
   props: {
     data: {
@@ -45,27 +59,49 @@ export default {
           row: {}
         }
       }
+    },
+    options: {
+      type: Object,
+      default() {
+        return {
+          table_name: [],
+          EMR_YZB: {
+            field_name: [],
+            field: []
+          },
+          hospital_name: [],
+          hospital_field: []
+        }
+      }
     }
   },
   data() {
     return {
+      hospitals: [],
       ruleForm: {
-        ssbm: '',
-        ssmc: '',
-        sslb: '',
-        lrxx: ''
+        qingmiao_table_name: '',
+        qingmiao_field_name: '',
+        qingmiao_field: '',
+        hospital_name: '',
+        hospital_field: '',
+        hospital_one: '',
+        hospital_two: '',
+        hospital_three: ''
       },
       rules: {
-        ssbm: [
-          { required: true, message: '请输入', trigger: 'blur' }
+        qingmiao_table_name: [
+          { required: true, message: '请选择', trigger: 'blur' }
         ],
-        ssmc: [
-          { required: true, message: '请输入', trigger: 'blur' }
+        qingmiao_field_name: [
+          { required: true, message: '请选择', trigger: 'blur' }
         ],
-        sslb: [
+        qingmiao_field: [
           { required: true, message: '请选择', trigger: 'blur' }
         ],
-        lrxx: [
+        hospital_field: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        hospital_name: [
           { required: true, message: '请选择', trigger: 'blur' }
         ]
       }
@@ -77,32 +113,62 @@ export default {
     }
   },
   created() {
+    this.getHospitalList()
     if (this.data.row.id) {
       const {
-        SSBM,
-        SSMC,
-        SSLB,
-        LRXX,
-        id } = this.data.row
-      this.ruleForm.ssbm = SSBM
-      this.ruleForm.ssmc = SSMC
+        qingmiao_table_name,
+        qingmiao_field_name,
+        qingmiao_field,
+        hospital_name,
+        hospital_field,
+        hospital_one,
+        hospital_two,
+        hospital_three,
+        id
+      } = this.data.row
+      this.ruleForm.qingmiao_table_name = qingmiao_table_name
+      this.ruleForm.qingmiao_field_name = qingmiao_field_name
+      this.ruleForm.qingmiao_field = qingmiao_field
+      this.ruleForm.hospital_name = hospital_name
+      this.ruleForm.hospital_field = hospital_field
+      this.ruleForm.hospital_one = hospital_one
+      this.ruleForm.hospital_two = hospital_two
+      this.ruleForm.hospital_three = hospital_three
       this.ruleForm.id = id
-      this.ruleForm.sslb = SSLB
-      this.ruleForm.lrxx = LRXX
     }
   },
   methods: {
+    // 添加医院
+    open() {
+      this.$prompt('请输入医院名称', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        inputPattern: /^[\S]+$/,
+        inputErrorMessage: '请输入'
+      }).then(({ value }) => {
+        hospitalAdd({ name: value }).then(res => {
+          this.$message.success(res.m || '操作成功')
+          this.getHospitalList()
+        })
+      })
+    },
+    // 获取医院列表
+    getHospitalList() {
+      hospitalList().then(res => {
+        this.hospitals = Array.isArray(res.p) ? res.p : []
+      })
+    },
     submitForm(formName) {
       this.$refs[formName].validate(async(valid) => {
         if (valid) {
           if (this.ruleForm.id) {
-            ssczSave(this.ruleForm).then(res => {
+            data_source_edit(this.ruleForm).then(res => {
               this.data.bSwitch = false
               this.$emit('refresh')
               this.$message.success(res.m || '操作成功')
             })
           } else {
-            ssczAdd(this.ruleForm).then(res => {
+            data_source_add(this.ruleForm).then(res => {
               this.data.bSwitch = false
               this.$emit('refresh')
               this.$message.success(res.m || '操作成功')

+ 21 - 12
src/views/rule/data/components/SearchBox.vue

@@ -2,33 +2,28 @@
   <div class="app-container">
     <el-form :inline="true" :model="data" class="demo-form-inline">
       <el-form-item label="">
-        <el-select v-model="data.qingmiao_table_name" filterable clearable placeholder="菁苗表名">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+        <el-select v-model="data.table_name" filterable clearable placeholder="菁苗表名">
+          <el-option v-for="(item, index) of options.table_name" :key="'table_name' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
       <el-form-item label="">
         <el-select v-model="data.qingmiao_field_name" filterable clearable placeholder="菁苗字段名称">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+          <el-option v-for="(item, index) of options.EMR_YZB.field_name" :key="'qingmiao_field_name' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
       <el-form-item label="">
         <el-select v-model="data.qingmiao_field" filterable clearable placeholder="菁苗字段">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+          <el-option v-for="(item, index) of options.EMR_YZB.field" :key="'qingmiao_field' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
       <el-form-item label="">
         <el-select v-model="data.hospital_name" filterable clearable placeholder="医院名称">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+          <el-option v-for="(item, index) of options.hospital_name" :key="'hospital_name' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
       <el-form-item label="">
         <el-select v-model="data.hospital_field" filterable clearable placeholder="医院字段">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
+          <el-option v-for="(item, index) of options.hospital_field" :key="'hospital_field' + index" :label="item" :value="item" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -46,13 +41,27 @@ export default {
       type: Object,
       default() {
         return {
-          qingmiao_table_name: '',
+          table_name: '',
           qingmiao_field_name: '',
           qingmiao_field: '',
           hospital_name: '',
           hospital_field: ''
         }
       }
+    },
+    options: {
+      type: Object,
+      default() {
+        return {
+          table_name: [],
+          EMR_YZB: {
+            field_name: [],
+            field: []
+          },
+          hospital_name: [],
+          hospital_field: []
+        }
+      }
     }
   },
   methods: {

+ 29 - 4
src/views/rule/data/components/TableBox.vue

@@ -2,7 +2,6 @@
   <div>
     <div class="btn-box">
       <el-button type="primary" icon="el-icon-plus" @click="onCreate">新增</el-button>
-      <el-button type="primary" icon="el-icon-download" @click="onExport">导出</el-button>
     </div>
     <el-table
       v-loading="loading"
@@ -65,16 +64,18 @@
       >
         <template slot-scope="scope">
           <el-button type="text" @click="onEdit(scope.row)">修改</el-button>
+          <el-button type="text" style="color: #F56C6C;" @click="onDel(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
     <!-- 新增、编辑 -->
-    <CreateDialog v-if="createData.bSwitch" :data="createData" @refresh="handleRefresh" />
+    <CreateDialog v-if="createData.bSwitch" :data="createData" :options="options" @refresh="handleRefresh" />
   </div>
 </template>
 
 <script>
 import CreateDialog from './CreateDialog.vue'
+import { data_source_del } from '@/api/rule/data'
 
 export default {
   components: {
@@ -92,6 +93,20 @@ export default {
       default() {
         return false
       }
+    },
+    options: {
+      type: Object,
+      default() {
+        return {
+          table_name: [],
+          EMR_YZB: {
+            field_name: [],
+            field: []
+          },
+          hospital_name: [],
+          hospital_field: []
+        }
+      }
     }
   },
   data() {
@@ -114,8 +129,18 @@ export default {
     handleRefresh() {
       this.$emit('refresh')
     },
-    onExport() {
-      this.$emit('export')
+    // 删除
+    onDel(row) {
+      this.$confirm('是否确认删除该数据?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        data_source_del({ id: row.id }).then((res) => {
+          this.$message.success(res.m || '操作成功')
+          this.$emit('refresh')
+        })
+      })
     }
   }
 }

+ 25 - 9
src/views/rule/data/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
-    <SearchBoxVue :data="searchData" @search="handleSearch" />
-    <TableBoxVue :loading="loading" :data="tableData" style="margin-top: -40px;" @refresh="handleRefresh" @export="handleExport" />
+    <SearchBoxVue :data="searchData" :options="options" @search="handleSearch" @reset="handleReset" />
+    <TableBoxVue :loading="loading" :data="tableData" :options="options" style="margin-top: -40px;" @refresh="handleRefresh" @export="handleExport" />
     <pagination
       :auto-scroll="false"
       :total="paginationData.total"
@@ -26,7 +26,7 @@ export default {
     return {
       loading: false,
       searchData: {
-        qingmiao_table_name: '',
+        table_name: '',
         qingmiao_field_name: '',
         qingmiao_field: '',
         hospital_name: '',
@@ -39,9 +39,11 @@ export default {
         limit: 10
       },
       options: {
-        qingmiao_table_name: [],
-        qingmiao_field_name: [],
-        qingmiao_field: [],
+        table_name: [],
+        EMR_YZB: {
+          field_name: [],
+          field: []
+        },
         hospital_name: [],
         hospital_field: []
       }
@@ -56,15 +58,29 @@ export default {
     getOptionsData() {
       options_list().then(res => {
         const { p } = res
-        this.objects = Array.isArray(p) ? p : []
+        const { table_name, EMR_YZB, hospital_name, hospital_field } = p
+        this.options.table_name = Array.isArray(table_name) ? table_name : []
+        this.options.EMR_YZB = EMR_YZB
+        this.options.hospital_name = Array.isArray(hospital_name) ? hospital_name : []
+        this.options.hospital_field = Array.isArray(hospital_field) ? hospital_field : []
       })
     },
     handleRefresh() {
+      this.getOptionsData()
       this.getList()
     },
+    handleReset() {
+      this.searchData = {
+        table_name: '',
+        qingmiao_field_name: '',
+        qingmiao_field: '',
+        hospital_name: '',
+        hospital_field: ''
+      }
+    },
     async getList() {
       const {
-        qingmiao_table_name,
+        table_name,
         qingmiao_field_name,
         qingmiao_field,
         hospital_name,
@@ -72,7 +88,7 @@ export default {
       } = this.searchData
       const { page, limit } = this.paginationData
       const params = {
-        qingmiao_table_name,
+        table_name,
         qingmiao_field_name,
         qingmiao_field,
         hospital_name,