赵殿龙 1 år sedan
förälder
incheckning
ba943714be

+ 36 - 0
src/api/dict.js

@@ -116,3 +116,39 @@ export function edit_field_dict(data) {
     data: data
   })
 }
+
+// 病历目录-质控字典-列表
+export function get_word_map(data) {
+  return request({
+    url: '/quality_rule/get_word_map',
+    method: 'post',
+    data: data
+  })
+}
+
+// 病历目录-质控字典-删除
+export function del_word_map(data) {
+  return request({
+    url: '/quality_rule/del_word_map',
+    method: 'post',
+    data: data
+  })
+}
+
+// 病历目录-质控字典-新增
+export function add_word_map(data) {
+  return request({
+    url: '/quality_rule/add_word_map',
+    method: 'post',
+    data: data
+  })
+}
+
+// 病历目录-质控字典-修改
+export function edit_word_map(data) {
+  return request({
+    url: '/quality_rule/edit_word_map',
+    method: 'post',
+    data: data
+  })
+}

+ 0 - 0
src/api/rule/config.js


+ 89 - 54
src/views/dict/qc/components/CreateDialog.vue

@@ -1,40 +1,54 @@
 <template>
-  <el-dialog
-    :title="titleStr"
-    :visible.sync="data.bSwitch"
-    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-dialog :title="titleStr" :visible.sync="data.bSwitch" width="40%">
+    <el-form
+      ref="ruleForm"
+      :model="ruleForm"
+      :rules="rules"
+      label-width="140px"
+      class="demo-ruleForm"
+    >
+      <el-form-item label="字典名称" prop="name">
+        <el-input v-model="ruleForm.name" placeholder="请输入" />
       </el-form-item>
-      <el-form-item label="手术操作名称" prop="ssmc">
-        <el-input v-model="ruleForm.ssmc" placeholder="请输入" />
-      </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-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-select>
+      <el-form-item label="映射名称" prop="keywords">
+        <el-tag
+          v-for="tag in ruleForm.keywords"
+          :key="tag"
+          size="-"
+          closable
+          effect="plain"
+          :disable-transitions="false"
+          @close="handleClose(tag)"
+        >
+          {{ tag }}
+        </el-tag>
+        <el-input
+          v-if="inputVisible"
+          ref="saveTagInput"
+          v-model="inputValue"
+          class="input-new-tag"
+          @keyup.enter.native="handleInputConfirm"
+          @blur="handleInputConfirm"
+        />
+        <el-button
+          v-else
+          class="button-new-tag"
+          @click="showInput"
+        >+ 添加</el-button>
       </el-form-item>
     </el-form>
     <span slot="footer" class="dialog-footer">
       <el-button @click="data.bSwitch = false">取 消</el-button>
-      <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
+      <el-button
+        type="primary"
+        @click="submitForm('ruleForm')"
+      >确 定</el-button>
     </span>
   </el-dialog>
 </template>
 
 <script>
-import { ssczAdd, ssczSave } from '@/api/dict'
+import { add_word_map, edit_word_map } from '@/api/dict'
 export default {
   props: {
     data: {
@@ -49,25 +63,15 @@ export default {
   },
   data() {
     return {
+      inputVisible: false,
+      inputValue: '',
       ruleForm: {
-        ssbm: '',
-        ssmc: '',
-        sslb: '',
-        lrxx: ''
+        name: '',
+        keywords: []
       },
       rules: {
-        ssbm: [
-          { required: true, message: '请输入', trigger: 'blur' }
-        ],
-        ssmc: [
-          { required: true, message: '请输入', trigger: 'blur' }
-        ],
-        sslb: [
-          { required: true, message: '请选择', trigger: 'blur' }
-        ],
-        lrxx: [
-          { required: true, message: '请选择', trigger: 'blur' }
-        ]
+        name: [{ required: true, message: '请输入', trigger: 'blur' }],
+        keywords: [{ required: true, message: '请输入', trigger: 'blur' }]
       }
     }
   },
@@ -78,31 +82,43 @@ export default {
   },
   created() {
     if (this.data.row.id) {
-      const {
-        SSBM,
-        SSMC,
-        SSLB,
-        LRXX,
-        id } = this.data.row
-      this.ruleForm.ssbm = SSBM
-      this.ruleForm.ssmc = SSMC
+      const { name, keyword, id } = this.data.row
+      this.ruleForm.name = name
+      this.ruleForm.keywords = keyword.split('、')
       this.ruleForm.id = id
-      this.ruleForm.sslb = SSLB
-      this.ruleForm.lrxx = LRXX
     }
   },
   methods: {
+    handleClose(tag) {
+      this.ruleForm.keywords.splice(this.ruleForm.keywords.indexOf(tag), 1)
+    },
+
+    showInput() {
+      this.inputVisible = true
+      this.$nextTick((_) => {
+        this.$refs.saveTagInput.$refs.input.focus()
+      })
+    },
+
+    handleInputConfirm() {
+      const inputValue = this.inputValue
+      if (inputValue) {
+        this.ruleForm.keywords.push(inputValue)
+      }
+      this.inputVisible = false
+      this.inputValue = ''
+    },
     submitForm(formName) {
       this.$refs[formName].validate(async(valid) => {
         if (valid) {
           if (this.ruleForm.id) {
-            ssczSave(this.ruleForm).then(res => {
+            edit_word_map(this.ruleForm).then((res) => {
               this.data.bSwitch = false
               this.$emit('refresh')
               this.$message.success(res.m || '操作成功')
             })
           } else {
-            ssczAdd(this.ruleForm).then(res => {
+            add_word_map(this.ruleForm).then((res) => {
               this.data.bSwitch = false
               this.$emit('refresh')
               this.$message.success(res.m || '操作成功')
@@ -120,5 +136,24 @@ export default {
 <style lang="scss" scoped>
 .demo-ruleForm {
   width: 80%;
+  .el-tag {
+    margin-right: 10px;
+    margin-bottom: 10px;
+  }
+  // .el-tag + .el-tag {
+  //   margin-right: 10px;
+  // }
+  .button-new-tag {
+    margin-right: 10px;
+    height: 32px;
+    line-height: 30px;
+    padding-top: 0;
+    padding-bottom: 0;
+  }
+  .input-new-tag {
+    width: 90px;
+    margin-right: 10px;
+    vertical-align: top;
+  }
 }
 </style>

+ 4 - 4
src/views/dict/qc/components/SearchBox.vue

@@ -2,10 +2,10 @@
   <div class="app-container">
     <el-form :inline="true" :model="data" class="demo-form-inline">
       <el-form-item label="">
-        <el-input v-model="data.ssbm" clearable placeholder="字典名称" />
+        <el-input v-model="data.name" clearable placeholder="字典名称" />
       </el-form-item>
       <el-form-item label="">
-        <el-input v-model="data.ssmc" clearable placeholder="映射名称" />
+        <el-input v-model="data.keyword" clearable placeholder="映射名称" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" @click="onSubmit">查询</el-button>
@@ -22,8 +22,8 @@ export default {
       type: Object,
       default() {
         return {
-          ssbm: '',
-          ssmc: ''
+          name: '',
+          keyword: ''
         }
       }
     }

+ 16 - 3
src/views/dict/qc/components/TableBox.vue

@@ -17,13 +17,13 @@
         align="center"
       />
       <el-table-column
-        prop="SSBM"
+        prop="name"
         label="字典名称"
         align="center"
         width="200"
       />
       <el-table-column
-        prop="SSMC"
+        prop="keyword"
         label="映射名称"
         align="center"
       />
@@ -36,7 +36,7 @@
       >
         <template slot-scope="scope">
           <el-button type="text" @click="onEdit(scope.row)">修改</el-button>
-          <el-button type="text" style="color: #F56C6C;">删除</el-button>
+          <el-button type="text" style="color: #F56C6C;" @click="onDel(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -47,6 +47,7 @@
 
 <script>
 import CreateDialog from './CreateDialog.vue'
+import { del_word_map } from '@/api/dict'
 
 export default {
   components: {
@@ -83,6 +84,18 @@ export default {
       this.createData.row = row
       this.createData.bSwitch = true
     },
+    onDel(row) {
+      this.$confirm('是否确认删除该数据?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        del_word_map({ id: row.id }).then((res) => {
+          this.$message.success(res.m || '操作成功')
+          this.$emit('refresh')
+        })
+      })
+    },
     handleRefresh() {
       this.$emit('refresh')
     }

+ 11 - 15
src/views/dict/qc/index.vue

@@ -15,7 +15,7 @@
 <script>
 import SearchBoxVue from './components/SearchBox.vue'
 import TableBoxVue from './components/TableBox.vue'
-import { getSsczList } from '@/api/dict'
+import { get_word_map } from '@/api/dict'
 
 export default {
   components: {
@@ -26,8 +26,8 @@ export default {
     return {
       loading: false,
       searchData: {
-        ssbm: '',
-        ssmc: ''
+        name: '',
+        keyword: ''
       },
       tableData: [],
       paginationData: {
@@ -43,8 +43,8 @@ export default {
   methods: {
     handleReset() {
       this.searchData = {
-        ssbm: '',
-        ssmc: ''
+        name: '',
+        keyword: ''
       }
     },
     handleRefresh() {
@@ -52,25 +52,21 @@ export default {
     },
     async getList() {
       const {
-        ssbm,
-        ssmc,
-        sslb,
-        lrxx
+        name,
+        keyword
       } = this.searchData
       const { page, limit } = this.paginationData
       const params = {
-        ssbm,
-        ssmc,
-        sslb,
-        lrxx,
+        keyword,
+        name,
         page,
         page_size: limit
       }
       this.loading = true
-      getSsczList(params).then(res => {
+      get_word_map(params).then(res => {
         const { p } = res
         this.paginationData.total = p.count
-        this.tableData = p.list
+        this.tableData = p.data
       }).catch(error => {
         console.log(error)
       }).finally(() => {

+ 22 - 4
src/views/rule/config/components/SearchBox.vue

@@ -1,6 +1,19 @@
 <template>
   <div class="app-container">
     <el-form :inline="true" :model="data" class="demo-form-inline">
+      <el-form-item label="">
+        <el-select v-model="data.sslb" filterable clearable placeholder="病历类型">
+          <el-option label="介入治疗" value="介入治疗" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="">
+        <el-select v-model="data.sslb" filterable clearable placeholder="质控项目">
+          <el-option label="介入治疗" value="介入治疗" />
+          <el-option label="手术" value="手术" />
+          <el-option label="治疗性操作" value="治疗性操作" />
+          <el-option label="诊断性操作" value="诊断性操作" />
+        </el-select>
+      </el-form-item>
       <el-form-item label="">
         <el-input v-model="data.ssbm" clearable placeholder="手术操作编码" />
       </el-form-item>
@@ -35,10 +48,15 @@ export default {
       type: Object,
       default() {
         return {
-          ssbm: '',
-          ssmc: '',
-          sslb: '',
-          lrxx: ''
+          changjing: '',
+          department: [],
+          object: '',
+          type: [],
+          is_not: '',
+          description: '',
+          score: '',
+          error_level: '',
+          status: ''
         }
       }
     }

+ 9 - 4
src/views/rule/config/index.vue

@@ -27,10 +27,15 @@ export default {
     return {
       loading: false,
       searchData: {
-        ssbm: '',
-        ssmc: '',
-        sslb: '',
-        lrxx: ''
+        changjing: '',
+        department: [],
+        object: '',
+        type: [],
+        is_not: '',
+        description: '',
+        score: '',
+        error_level: '',
+        status: ''
       },
       tableData: [],
       paginationData: {