lihong 2 лет назад
Родитель
Сommit
d08e8e6997

+ 51 - 0
src/api/dictionary/oprt-lecel.js

@@ -0,0 +1,51 @@
+import request from '../../utils/request'
+
+export function queryZdIcd9Cm3(data) {
+  return request({
+    url: '/opLevelManagement/queryZdIcd9Cm3',
+    method: 'post',
+    data,
+  })
+}
+
+export function saveZdIcd9Cm3(data) {
+  return request({
+    url: '/opLevelManagement/saveZdIcd9Cm3',
+    method: 'post',
+    data,
+  })
+}
+
+
+export function queryOpLevelManagement(data) {
+  return request({
+    url: '/opLevelManagement/queryOpLevelManagement',
+    method: 'post',
+    data,
+  })
+}
+
+
+export function saveOpLevelManagement(data) {
+  return request({
+    url: '/opLevelManagement/saveOpLevelManagement',
+    method: 'post',
+    data,
+  })
+}
+
+export function queryOprtInfo(data) {
+  return request({
+    url: '/opLevelManagement/queryOprtInfo',
+    method: 'post',
+    data,
+  })
+}
+
+export function getEmpCodeRs(code) {
+  return request({
+    url: '/opLevelManagement/getEmpCodeRs',
+    method: 'get',
+    params: { code },
+  })
+}

+ 10 - 0
src/router/modules/dashboard.js

@@ -408,6 +408,16 @@ const route = [
                 component: createNameComponent(() => import('@/views/dictionary/EmrDataMaintenance.vue')),
                 meta: {title: '电子病历数据源维护'},
             },
+            {
+                path: 'oprtLevel',
+                component: createNameComponent(() => import('@/views/dictionary/OprtLevel.vue')),
+                meta: {title: '手术级别管理'},
+            },
+            {
+                path: 'oprtDoctorLevel',
+                component: createNameComponent(() => import('@/views/dictionary/OprtDoctorLevel.vue')),
+                meta: {title: '手术医生级别管理'},
+            },
         ],
     },
     {

+ 267 - 0
src/views/dictionary/OprtDoctorLevel.vue

@@ -0,0 +1,267 @@
+<template>
+    <el-container>
+        <el-aside width="40%">
+            <page-layer>
+                <template #header>
+                    医生:
+                    <SelectStaffCode v-model="asideQueryParam" :name="['code','nameDoctor']"></SelectStaffCode>
+                    <el-button icon="Search" type="primary" @click="queryInfo">查询</el-button>
+                    <el-button  type="success" @click="addInfo">添加</el-button>
+                </template>
+                <template #main>
+                    <el-table :data="asideTableData"
+                              :height="windowSize.h - 100" highlight-current-row @row-click="selectDoctor">
+                        <el-table-column label="医生编码" prop="code"></el-table-column>
+                        <el-table-column label="医生工号" prop="codeDoctor"></el-table-column>
+                        <el-table-column label="医生姓名" prop="nameDoctor"></el-table-column>
+                    </el-table>
+                    <el-pagination
+                            small
+                            :current-page="asideQueryParam.currentPage"
+                            :page-size="asideQueryParam.pageSize"
+                            :page-sizes="[20, 30, 40, 50]"
+                            :total="asideQueryParam.total"
+                            layout="total, sizes, prev, pager, next, jumper"
+                            style="margin-top: 5px"
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                    ></el-pagination>
+                </template>
+            </page-layer>
+        </el-aside>
+        <el-main>
+            <div style="width: 100%;height: 100%;display: flex">
+                <div style="width: 45%">
+                    <div style="color: #1294fb;text-align: center;margin-bottom: 5px">
+                        请选择要配置的手术
+                    </div>
+                    <div>
+                        <div>
+                            关键字:
+                            <el-input v-model="leftQueryParam.code" placeholder="支持手术编码,名称,拼音" clearable prefix-icon="Search" style="width: 170px"/>
+                            <el-button icon="Search" type="primary" @click="queryidc9Info">查询</el-button>
+                        </div>
+                        <div>
+                            <el-table :data="leftTableData"
+                                      :height="windowSize.h - 100" @selection-change="handleSelectionChange" highlight-current-row>
+                                <el-table-column type="selection" width="55" />
+                                <el-table-column label="手术编码" prop="code"></el-table-column>
+                                <el-table-column label="手术名称" prop="name" show-overflow-tooltip></el-table-column>
+                            </el-table>
+
+                        </div>
+                    </div>
+                    <el-pagination
+                            small
+                            :current-page="leftQueryParam.currentPage"
+                            :page-size="leftQueryParam.pageSize"
+                            :page-sizes="[20, 30, 40, 50]"
+                            :total="leftQueryParam.total"
+                            layout="total, sizes, prev, pager, next"
+                            style="margin-top: 5px"
+                            @size-change="leftHandleSizeChange"
+                            @current-change="leftHandleCurrentChange"
+                    ></el-pagination>
+                </div>
+                <div style="width: 5%;height:89%;display: flex;align-items: center">
+                    <div style="width: 10px;height: 10px;padding-left: 12px;cursor: pointer" @click="addRight">></div>
+                </div>
+                <div style="width: 45%">
+                    <div style="color: #1294fb;text-align: center;margin-bottom: 5px">
+                        已配置的手术
+                    </div>
+                    <div>
+                        <div>
+                            <el-button  type="success" @click="saveInfo">保存</el-button>
+                        </div>
+                        <div>
+                            <el-table :data="mainTableData"
+                                      :height="windowSize.h - 100" highlight-current-row>
+                                <el-table-column label="手术编码" prop="codeOp"></el-table-column>
+                                <el-table-column label="手术名称" prop="codeOpName" show-overflow-tooltip></el-table-column>
+                                <el-table-column label="操作">
+                                    <template #default="scope">
+                                        <el-popconfirm
+                                                cancel-button-text="取消"
+                                                confirm-button-text="确认"
+                                                icon="Info"
+                                                iconColor="#F56C6C"
+                                                title="是否删除"
+                                                @confirm="delClick(scope.$index, scope.row)"
+                                        >
+                                            <template #reference>
+                                                <el-button size="small" type="danger">删除</el-button>
+                                            </template>
+                                        </el-popconfirm>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </div>
+                    </div>
+                </div>
+
+            </div>
+
+        </el-main>
+    </el-container>
+</template>
+
+<script setup name="OprtDoctorLevel">
+import SelectStaffCode from '@/components/SelectStaffCode.vue'
+import {queryOpLevelManagement, saveOpLevelManagement,queryOprtInfo,getEmpCodeRs,queryZdIcd9Cm3} from '@/api/dictionary/oprt-lecel'
+import {computed} from 'vue'
+import store from '@/store'
+import {stringIsBlank} from '@/utils/blank-utils'
+import {ElMessage} from 'element-plus'
+import PageLayer from "@/layout/PageLayer";
+import { Check, Close } from '@element-plus/icons-vue'
+
+const value1 = ref(true)
+const windowSize = computed(() => {
+    return store.state.app.windowSize
+})
+const asideQueryParam = ref({
+    nameDoctor:'',
+    codeDoctor:'',
+    code:'',
+    currentPage:1,
+    pageSize:30,
+    total:0,
+})
+
+
+const leftQueryParam = ref({
+    code:'',
+    opScaleList:[3,4],
+    currentPage:1,
+    pageSize:30,
+    total:0,
+})
+
+const mainQueryParam = ref({
+    code:'',
+    codeOp:'',
+    codeOpName:'',
+    currentPage:1,
+    pageSize:100000,
+    total:0,
+})
+
+
+const asideTableData = ref([])
+
+const mainTableData = ref([])
+const leftTableData = ref([])
+
+const queryidc9Info = ()=>{
+    queryZdIcd9Cm3(leftQueryParam.value).then((res)=>{
+        leftTableData.value =  res.records
+        leftQueryParam.value.total =  res.total
+    })
+}
+
+const selectionDoctor = ref({})
+
+const selectDoctor = (row)=>{
+    selectionDoctor.value = row
+    mainQueryParam.value.code = row.code
+    queryidc9Info()
+    oprtQueryInfo()
+}
+
+const queryInfo = ()=>{
+    queryOpLevelManagement(asideQueryParam.value).then((res)=>{
+        asideTableData.value =  res.records
+        asideQueryParam.value.total =  res.total
+    })
+}
+
+const oprtQueryInfo=()=>{
+    queryOprtInfo(mainQueryParam.value).then((res)=>{
+        mainTableData.value = res.records
+    })
+}
+
+
+
+const addInfo=()=>{
+    getEmpCodeRs(asideQueryParam.value.code).then((res)=>{
+        asideQueryParam.value.codeDoctor =res
+        asideTableData.value.unshift({code:asideQueryParam.value.code,codeDoctor:asideQueryParam.value.codeDoctor,nameDoctor:asideQueryParam.value.nameDoctor})
+    })
+}
+
+const handleSizeChange = (val) => {
+    asideQueryParam.value.pageSize = val
+    queryInfo()
+}
+
+const leftHandleSizeChange = (val) => {
+    leftQueryParam.value.pageSize = val
+    queryidc9Info()
+}
+
+const handleCurrentChange = (val) => {
+    asideQueryParam.value.currentPage = val
+    queryInfo()
+}
+
+const leftHandleCurrentChange = (val) => {
+    leftQueryParam.value.currentPage = val
+    queryidc9Info()
+}
+
+const multipleSelection = ref([])
+const handleSelectionChange=(val)=>{
+    multipleSelection.value = val
+}
+
+const addRight = ()=>{
+    if(multipleSelection.value.length <=0){
+        ElMessage.error('请至少选择一条手术')
+        return
+    }
+    for (let i = multipleSelection.value.length-1; i >= 0  ; i--) {
+          let temp = {
+              codeOp:multipleSelection.value[i].code,
+              codeOpName:multipleSelection.value[i].name,
+          }
+        if(isInclude(mainTableData.value,multipleSelection.value[i].code)){
+            ElMessage.error(`手术编码${multipleSelection.value[i].code}已有,请不要重复添加`)
+            return
+        }
+        mainTableData.value.unshift(temp)
+    }
+}
+
+
+function isInclude(data,code){
+    for (let i = 0; i <data.length ; i++) {
+        if(data[i].codeOp===code){
+            return true
+        }
+    }
+    return false
+}
+
+const saveInfo =()=>{
+
+    let param = {
+        code:selectionDoctor.value.code,
+        codeDoctor:selectionDoctor.value.codeDoctor,
+        nameDoctor:selectionDoctor.value.nameDoctor,
+        saveData:mainTableData.value
+    }
+    saveOpLevelManagement(param).then((res)=>{
+
+    })
+}
+
+const delClick=(index,row)=>{
+    mainTableData.value.splice(index, 1)
+}
+</script>
+
+<style scoped>
+
+</style>

+ 117 - 0
src/views/dictionary/OprtLevel.vue

@@ -0,0 +1,117 @@
+<template>
+    <page-layer>
+        <template #header>
+            关键字:
+            <el-input v-model="queryParam.code" placeholder="支持手术编码,名称,拼音" clearable prefix-icon="Search" style="width: 170px"/>
+            <el-button icon="Search" type="primary" @click="queryInfo">查询</el-button>
+        </template>
+        <template #main>
+            <el-table :data="tableData"
+                      :height="windowSize.h - 120" highlight-current-row>
+                <el-table-column label="手术编码" prop="code"></el-table-column>
+                <el-table-column label="手术名称" prop="name"></el-table-column>
+                <el-table-column label="手术级别" >
+                    <template #default="scope">
+                        <el-select v-model="scope.row.opScale"  style="width: 80px;"  size="small">
+                            <el-option
+                                    key="1"
+                                    label="1"
+                                    value="1"
+                            />
+                            <el-option
+                                    key="2"
+                                    label="2"
+                                    value="2"
+                            />
+                            <el-option
+                                    key="3"
+                                    label="3"
+                                    value="3"
+                            />
+                            <el-option
+                                    key="4"
+                                    label="4"
+                                    value="4"
+                            />
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作">
+                    <template #default="scope">
+                        <el-popconfirm
+                                cancel-button-text="取消"
+                                confirm-button-text="确认"
+                                icon="Info"
+                                iconColor="#F56C6C"
+                                title="是否保存"
+                                @confirm="saveInfo(scope.$index, scope.row)"
+                        >
+                            <template #reference>
+                                <el-button size="small" type="success">保存</el-button>
+                            </template>
+                        </el-popconfirm>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination
+                    :current-page="queryParam.currentPage"
+                    :page-size="queryParam.pageSize"
+                    :page-sizes="[20, 30, 40, 50]"
+                    :total="queryParam.total"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    style="margin-top: 5px"
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange"
+            ></el-pagination>
+        </template>
+    </page-layer>
+</template>
+
+<script setup name="OprtLevel">
+import {queryZdIcd9Cm3, saveZdIcd9Cm3} from '@/api/dictionary/oprt-lecel'
+import {computed} from 'vue'
+import store from '@/store'
+import {stringIsBlank} from '@/utils/blank-utils'
+import {ElMessage} from 'element-plus'
+import PageLayer from "@/layout/PageLayer";
+
+
+const windowSize = computed(() => {
+    return store.state.app.windowSize
+})
+const queryParam = ref({
+    code:'',
+    currentPage:1,
+    pageSize:30,
+    total:0,
+})
+
+const tableData = ref([])
+
+const queryInfo = ()=>{
+    queryZdIcd9Cm3(queryParam.value).then((res)=>{
+        tableData.value =  res.records
+        queryParam.value.total =  res.total
+    })
+}
+
+const handleSizeChange = (val) => {
+    queryParam.value.pageSize = val
+    queryInfo()
+}
+const handleCurrentChange = (val) => {
+    queryParam.value.currentPage = val
+    queryInfo()
+}
+
+const saveInfo =(index,row)=>{
+    saveZdIcd9Cm3(row).then((res)=>{
+
+    })
+}
+
+</script>
+
+<style scoped>
+
+</style>