DESKTOP-MINPJAU\Administrator hace 3 años
padre
commit
978765ce94

+ 7 - 0
src/api/public-api.js

@@ -121,4 +121,11 @@ export function getTheTransferList() {
         url: '/publicApi/getTheTransferList',
         method: 'get'
     });
+}
+
+export function getPeopleToFillInInformation() {
+    return request({
+        url: '/publicApi/getPeopleToFillInInformation',
+        method: 'get'
+    });
 }

+ 43 - 42
src/api/settings/permission-settings.js

@@ -1,69 +1,70 @@
 import request from '../../utils/request'
 
 export function getDeptTree() {
-  return request({
-    url: '/settings/getDeptTree',
-    method: 'get',
-  })
+    return request({
+        url: '/settings/getDeptTree',
+        method: 'get',
+    })
 }
 
-export function getAllUsers() {
-  return request({
-    url: '/settings/getAllUsers',
-    method: 'get',
-  })
+export function getAllUsers(data) {
+    return request({
+        url: '/settings/getAllUsers',
+        method: 'post',
+        data
+    })
 }
 
 export function getAllRoles() {
-  return request({
-    url: '/settings/getAllRoles',
-    method: 'get',
-  })
+    return request({
+        url: '/settings/getAllRoles',
+        method: 'get',
+    })
 }
 
 export function getUserRoles(code) {
-  return request({
-    url: '/settings/getUserRoles',
-    method: 'get',
-    params: { code },
-  })
+    return request({
+        url: '/settings/getUserRoles',
+        method: 'get',
+        params: {code},
+    })
 }
 
 export function saveUserRoles(data) {
-  return request({
-    url: '/settings/saveUserRoles',
-    method: 'post',
-    data,
-  })
+    return request({
+        url: '/settings/saveUserRoles',
+        method: 'post',
+        data,
+    })
 }
 
 export function addNewRole(name) {
-  return request({
-    url: '/settings/addNewRole',
-    method: 'get',
-    params: { name },
-  })
+    return request({
+        url: '/settings/addNewRole',
+        method: 'get',
+        params: {name},
+    })
 }
 
 export function getAllMenus() {
-  return request({
-    url: '/settings/getAllVueMenus',
-    method: 'get',
-  })
+    return request({
+        url: '/settings/getAllVueMenus',
+        method: 'get',
+    })
 }
 
 export function getRoleMenus(id) {
-  return request({
-    url: '/settings/getRoleVueMenus',
-    method: 'get',
-    params: { id },
-  })
+    return request({
+        url: '/settings/getRoleVueMenus',
+        method: 'get',
+        params: {id},
+    })
 }
 
 export function saveRoleMenus(data) {
-  return request({
-    url: '/settings/saveRoleVueMenus',
-    method: 'post',
-    data,
-  })
+    return request({
+        url: '/settings/saveRoleVueMenus',
+        method: 'post',
+        data,
+    })
 }

+ 3 - 0
src/components/settings/permissions/EmployeeInformationData.js

@@ -0,0 +1,3 @@
+import {getPeopleToFillInInformation} from "@/api/public-api";
+
+export const peopleAddData = await getPeopleToFillInInformation()

+ 94 - 0
src/components/settings/permissions/PersonnelInformationEditing.vue

@@ -0,0 +1,94 @@
+<template>
+  <el-dialog v-model="dialog" :title="'正在编辑:'+userInfo.name" @closed="emit('close')">
+    <el-container>
+      <el-form :model="userInfo" :inline="true" label-width="80px">
+
+        <el-form-item prop="name" label="姓名">
+          <el-input v-model="userInfo.name"></el-input>
+        </el-form-item>
+
+        <el-form-item prop="codeRs" label="人事工号">
+          <el-input v-model="userInfo.codeRs"></el-input>
+        </el-form-item>
+
+        <el-form-item prop="deptCode" label="科室">
+          <xc-select :data="peopleAddData.deptData" v-model="userInfo" :name="['deptCode','deptName']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="empPoCode" label="职务">
+          <xc-select :data="peopleAddData.empPosition" v-model="userInfo" :name="['empPoCode','position']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="empTitCode" label="职称">
+          <xc-select :data="peopleAddData.zdEmpTitle" v-model="userInfo" :name="['empTitCode','title']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="mark" label="在院标志">
+          <xc-select :data="peopleAddData.empInmark" v-model="userInfo" :name="['mark','markName']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="ifcader" label="干工标志">
+          <xc-select :data="peopleAddData.zdIfcadre" v-model="userInfo" :name="['ifcader','ifcaderName']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="orderYn" label="处方权">
+          <xc-select :data="doctorSPrescription" v-model="userInfo" :name="['orderYn','orderYnName']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="ysjb" label="病历级别">
+          <xc-select :data="peopleAddData.ysjbData" v-model="userInfo" :name="['ysjb','ysjbName']"></xc-select>
+        </el-form-item>
+
+        <el-form-item prop="ghChargeType" label="挂号号别">
+          <xc-select :data="peopleAddData.mzyZdChargeType" v-model="userInfo"
+                     :name="['ghChargeType','ghChargeTypeName']"/>
+        </el-form-item>
+
+        <el-form-item prop="doctorXzYp" label="限制级别">
+          <xc-select :data="peopleAddData.restrictedDrugLevels" v-model="userInfo"
+                     :name="['doctorXzYp','doctorXzYpName']"/>
+        </el-form-item>
+
+        <el-form-item prop="loginFlag" label="病区允许就诊">
+          <xc-select :data="peopleAddData.ysjbData" v-model="userInfo" :name="['loginFlag','loginFlagName']"></xc-select>
+        </el-form-item>
+
+
+      </el-form>
+    </el-container>
+  </el-dialog>
+</template>
+
+<script setup name="PersonnelInformationEditing">
+import {peopleAddData} from "@/components/settings/permissions/EmployeeInformationData";
+import {clone} from "@/utils/clone";
+import XcSelect from "@/components/xc/select/XcSelect.vue";
+import Sleep from "element-plus/packages/test-utils/sleep";
+
+const props = defineProps({
+  userInfo: {
+    type: Object,
+  }
+})
+const emit = defineEmits(['close'])
+const dialog = ref(true)
+let userInfo = $ref({})
+
+const doctorSPrescription = [
+  {code: '1', name: '普通处方权'},
+  {code: '2', name: '毒麻药处方权'},
+]
+
+onMounted(async () => {
+  await Sleep(500)
+  userInfo = clone(props.userInfo)
+  console.log(userInfo)
+  console.log(peopleAddData)
+})
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 9 - 0
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/SouSuoYiZhu.vue

@@ -85,11 +85,20 @@ let yaoPinXiangQing = $ref({
   code: '',
 })
 
+const hotKey = () => {
+
+}
+
 onMounted(async () => {
   await Sleep(500)
   if (searchInput) {
     searchInput.focus()
   }
+  hotKey()
+})
+
+onUnmounted(() => {
+  window.onkeydown = null
 })
 
 </script>

+ 224 - 167
src/views/settings/permissions/UserRoleSettings.vue

@@ -2,47 +2,90 @@
   <el-container>
     <el-main>
       <el-row :gutter="5">
-        <el-col :span="6">
+        <el-col :span="4">
           <div style="height: 10px"></div>
-          <el-input v-model="searchDeptContent" placeholder="请输入科室名称" clearable prefix-icon="el-icon-search"></el-input>
+          <el-input v-model="searchDeptContent" placeholder="请输入科室名称" clearable @clear="queryConditions.deptCode = '' "
+                    prefix-icon="el-icon-search"></el-input>
           <div style="height: 5px"></div>
           <el-tree
-            :data="depts"
-            :props="defaultProps"
-            default-expand-all
-            :filter-node-method="filterNode"
-            :style="{ height: tableHeight + 'px', overflowY: 'scroll' }"
-            ref="tree"
-            @node-click="handleClickDeptTreeNode"
+              :data="depts"
+              :props="defaultProps"
+              default-expand-all
+              :filter-node-method="filterNode"
+              :style="{ height: tableHeight + 'px', overflowY: 'scroll' }"
+              ref="tree"
+              @node-click="handleClickDeptTreeNode"
           >
           </el-tree>
         </el-col>
-        <el-col :span="18">
+        <el-col :span="20">
           <div style="height: 10px"></div>
-          <el-input v-model="searchUserContent" style="width: 300px" placeholder="请输入人员姓名或工号" clearable prefix-icon="el-icon-search"></el-input>
+          <el-input v-model="queryConditions.name" style="width: 300px" placeholder="请输入人员姓名或工号" clearable
+                    prefix-icon="el-icon-search"></el-input>
+          是否停用:
+          <el-select v-model="queryConditions.whetherToDisable" style="width: 80px">
+            <el-option v-for="item in dropDownSelection" :key="item.code" :value="item.code" :label="item.name">
+
+            </el-option>
+          </el-select>
+          是否有医保码:
+          <el-select v-model="queryConditions.isThereAMedicalInsuranceCode" style="width: 80px">
+            <el-option v-for="item in dropDownSelection" :key="item.code" :value="item.code" :label="item.name">
+            </el-option>
+          </el-select>
+          <el-button icon="el-icon-search" type="primary" @click="clickToQuery">
+            查询
+          </el-button>
           <div style="height: 5px"></div>
-          <el-table :data="cptUsers.slice((currentPage - 1) * pageSize, currentPage * pageSize)" :height="tableHeight - 40" stripe highlight-current-row>
+          <el-table :data="users" border
+                    :height="tableHeight - 40" stripe highlight-current-row>
             <el-table-column prop="name" label="姓名"></el-table-column>
             <el-table-column prop="code" label="编号"></el-table-column>
             <el-table-column prop="codeRs" label="工号"></el-table-column>
             <el-table-column prop="deptName" label="科室"></el-table-column>
             <el-table-column prop="title" label="职称"></el-table-column>
             <el-table-column prop="position" label="职务"></el-table-column>
-            <el-table-column label="操作">
+            <el-table-column prop="markName" label="在院标志"></el-table-column>
+            <el-table-column prop="ifcaderName" label="干工标志"></el-table-column>
+            <el-table-column prop="orderYn" label="医生处方权">
+              <template #default="scope">
+                <span v-if="scope.row.orderYn === '1'"> 普通处方权</span>
+                <span v-else-if="scope.row.orderYn === '2'">毒麻药处方权</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="ysjbName" label="病历级别"></el-table-column>
+            <el-table-column prop="ghChargeTypeName" label="挂号号别"></el-table-column>
+            <el-table-column prop="doctorXzYpName" label="限制药品级别" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="loginFlag" label="病区允许就诊">
+              <template #default="scope">
+                <span>{{ scope.row.loginFlag === '1' ? '允许' : '不允许' }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="delFlag" label="停用标志">
+              <template #default="scope">
+                <span v-if="scope.row.loginFlag === '1'">√</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="socialNo" label="身份证"></el-table-column>
+            <el-table-column prop="phoneNo" label="手机号码"></el-table-column>
+            <el-table-column prop="ybCode" label="医保编码"></el-table-column>
+            <el-table-column label="操作" fixed="right">
               <template v-slot="scope">
-                <el-button type="text" icon="el-icon-edit" @click="viewUserRoles(scope.row)">人员角色</el-button>
+                <el-button type="text" size="small" @click="viewUserRoles(scope.row)">角色</el-button>
+                <br>
+                <el-button type="text" @click="clickToEdit(scope.row)">编辑</el-button>
               </template>
             </el-table-column>
           </el-table>
           <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[25, 50, 75]"
-            :page-size="pageSize"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="cptUsers.length"
-            style="margin-top: 5px"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="queryConditions.currentPage"
+              :page-sizes="[30, 50, 75]"
+              :page-size="queryConditions.pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="queryConditions.total"
+              style="margin-top: 5px"
           ></el-pagination>
         </el-col>
       </el-row>
@@ -69,166 +112,180 @@
       </el-dialog>
     </el-main>
   </el-container>
+  <PersonnelInformationEditing :userInfo="userInfo" v-if="editDialog"
+                               @close="editDialog = false"/>
 </template>
 
-<script>
-import { computed, onMounted, ref, watchEffect } from 'vue'
+<script setup name="UserRoleSettings">
 import store from '@/store'
-import { addNewRole, getAllRoles, getAllUsers, getDeptTree, getUserRoles, saveUserRoles } from '@/api/settings/permission-settings'
-import { ElMessage, ElMessageBox } from 'element-plus'
-export default {
-  setup() {
-    const windowSize = store.state.app.windowSize
-    const tableHeight = windowSize.h - 45
-
-    const depts = ref([])
-    const users = ref([])
-    const roles = ref([])
-
-    const cptUsers = computed(() => {
-      return users.value.filter((item) => {
-        return item.deptCode.indexOf(currentDeptCode.value) !== -1 && (item.name.indexOf(searchUserContent.value) !== -1 || item.codeRs.indexOf(searchUserContent.value) !== -1)
-      })
-    })
-    const currentDeptCode = ref('')
-    const searchDeptContent = ref('')
-    const searchUserContent = ref('')
-
-    const defaultProps = {
-      id: 'code',
-      label: 'name',
-      children: 'children',
-    }
-    const tree = ref(null)
-    watchEffect(() => {
-      if (searchDeptContent.value) {
-        if (tree.value) {
-          tree.value.filter(searchDeptContent.value)
-        }
-      } else {
-        if (tree.value) {
-          tree.value.filter(null)
-        }
-      }
-    })
-    const filterNode = (value, data) => {
-      if (!value) return true
-      return data.name.indexOf(value) !== -1
-    }
-    const handleClickDeptTreeNode = (row) => {
-      currentDeptCode.value = row.code
-    }
+import {
+  addNewRole,
+  getAllRoles,
+  getAllUsers,
+  getDeptTree,
+  getUserRoles,
+  saveUserRoles
+} from '@/api/settings/permission-settings'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import PersonnelInformationEditing from "@/components/settings/permissions/PersonnelInformationEditing.vue";
 
-    const pageSize = ref(25)
-    const currentPage = ref(1)
-    const handleSizeChange = (val) => {
-      pageSize.value = val
-    }
-    const handleCurrentChange = (val) => {
-      currentPage.value = val
-    }
+const windowSize = store.state.app.windowSize
+const tableHeight = windowSize.h - 45
 
-    const viewUserRoles = (val) => {
-      currentUser.value = val
-      roleDialog.value = true
-      getUserRoles(val.code).then((res) => {
-        toggleSelection(res)
-      })
-    }
+const depts = ref([])
+const users = ref([])
+const roles = ref([])
+
+let queryConditions = $ref({
+  code: '',
+  deptCode: '',
+  whetherToDisable: 9,
+  isThereAMedicalInsuranceCode: 9,
+  pageSize: 30,
+  currentPage: 1,
+  total: 0
+})
+
+let userInfo = $ref({})
+let editDialog = $ref(false)
 
-    const currentUser = ref({})
-    const roleDialog = ref(false)
-    const roleTable = ref(null)
-    const selectedRoles = ref([])
-    const handleSelectRoles = (val) => {
-      selectedRoles.value = val
+const searchDeptContent = ref('')
+
+const defaultProps = {
+  id: 'code',
+  label: 'name',
+  children: 'children',
+}
+const tree = ref(null)
+watchEffect(() => {
+  if (searchDeptContent.value) {
+    if (tree.value) {
+      tree.value.filter(searchDeptContent.value)
     }
-    const toggleSelection = (rows) => {
-      roleTable.value.clearSelection()
-      if (rows && rows.length > 0) {
-        rows.forEach((row) => {
-          roles.value.forEach((role) => {
-            if (row === role.id) {
-              roleTable.value.toggleRowSelection(role)
-            }
-          })
-        })
-      }
+  } else {
+    if (tree.value) {
+      tree.value.filter(null)
     }
+  }
+})
+const filterNode = (value, data) => {
+  if (!value) return true
+  return data.name.indexOf(value) !== -1
+}
+const handleClickDeptTreeNode = (row) => {
+  searchDeptContent.value = row.name
+  queryConditions.deptCode = row.code
+  clickToQuery()
+}
 
-    const beforeAddRole = () => {
-      ElMessageBox.prompt('请输入要添加的角色名称', '添加新角色', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-      })
-        .then(({ value }) => {
-          addNewRole(value).then(() => {
-            ElMessage({
-              message: '添加成功。',
-              type: 'success',
-              duration: 2500,
-              showClose: true,
-            })
-            getAllRoles().then((res) => {
-              roles.value = res
-            })
-          })
-        })
-        .catch(() => {})
-    }
+const handleSizeChange = (val) => {
+  queryConditions.pageSize = val
+  clickToQuery()
+}
+const handleCurrentChange = (val) => {
+  queryConditions.currentPage = val
+  getAllUsers(queryConditions).then(res => {
+    users.value = res.records
+  })
 
-    const saveRoles = () => {
-      const param = {
-        code: currentUser.value.code,
-        roles: selectedRoles.value,
-      }
-      saveUserRoles(param).then(() => {
-        roleDialog.value = false
-        ElMessage({
-          message: '保存成功',
-          type: 'success',
-          duration: 2500,
-          showClose: true,
-        })
-      })
-    }
+}
+
+const viewUserRoles = (val) => {
+  currentUser.value = val
+  roleDialog.value = true
+  getUserRoles(val.code).then((res) => {
+    toggleSelection(res)
+  })
+}
 
-    onMounted(() => {
-      getAllUsers().then((res) => {
-        users.value = res
+const currentUser = ref({})
+const roleDialog = ref(false)
+const roleTable = ref(null)
+const selectedRoles = ref([])
+const handleSelectRoles = (val) => {
+  selectedRoles.value = val
+}
+const toggleSelection = (rows) => {
+  roleTable.value.clearSelection()
+  if (rows && rows.length > 0) {
+    rows.forEach((row) => {
+      roles.value.forEach((role) => {
+        if (row === role.id) {
+          roleTable.value.toggleRowSelection(role)
+        }
       })
-      getAllRoles().then((res) => {
-        roles.value = res
+    })
+  }
+}
+
+const clickToEdit = (row) => {
+  console.log(row)
+  editDialog = true
+  userInfo = row
+}
+
+const beforeAddRole = () => {
+  ElMessageBox.prompt('请输入要添加的角色名称', '添加新角色', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+  })
+      .then(({value}) => {
+        addNewRole(value).then(() => {
+          ElMessage({
+            message: '添加成功。',
+            type: 'success',
+            duration: 2500,
+            showClose: true,
+          })
+          getAllRoles().then((res) => {
+            roles.value = res
+          })
+        })
       })
-      getDeptTree().then((res) => {
-        depts.value = res
+      .catch(() => {
       })
+}
+
+const saveRoles = () => {
+  const param = {
+    code: currentUser.value.code,
+    roles: selectedRoles.value,
+  }
+  saveUserRoles(param).then(() => {
+    roleDialog.value = false
+    ElMessage({
+      message: '保存成功',
+      type: 'success',
+      duration: 2500,
+      showClose: true,
     })
+  })
+}
 
-    return {
-      tree,
-      depts,
-      tableHeight,
-      searchDeptContent,
-      searchUserContent,
-      users,
-      cptUsers,
-      filterNode,
-      defaultProps,
-      pageSize,
-      currentPage,
-      handleSizeChange,
-      handleCurrentChange,
-      viewUserRoles,
-      currentUser,
-      roleDialog,
-      roles,
-      handleClickDeptTreeNode,
-      handleSelectRoles,
-      saveRoles,
-      roleTable,
-      beforeAddRole,
-    }
-  },
+const clickToQuery = () => {
+  queryConditions.total = 0
+  queryConditions.currentPage = 1
+  getAllUsers(queryConditions).then(res => {
+    users.value = res.records
+    queryConditions.total = res.total
+  })
 }
+
+
+onMounted(() => {
+  clickToQuery()
+  getAllRoles().then((res) => {
+    roles.value = res
+  })
+  getDeptTree().then((res) => {
+    depts.value = res
+  })
+})
+
+const dropDownSelection = [
+  {code: 1, name: '是'},
+  {code: 2, name: '否'},
+  {code: 9, name: '全部'}
+]
+
 </script>