提交merge1.3
This commit is contained in:
@@ -99,17 +99,6 @@ import axios from 'axios';
|
||||
const env = import.meta.env.MODE;
|
||||
export function invokeYbPlugin5001(data) {
|
||||
|
||||
<<<<<<< HEAD
|
||||
if(env == 'development'){
|
||||
return axios.create(
|
||||
{
|
||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
baseURL: '/ybplugin',//ybplugin
|
||||
// 超时
|
||||
timeout: 60000
|
||||
}
|
||||
).post('/api/data/', data);
|
||||
=======
|
||||
return axios
|
||||
.create({
|
||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
@@ -120,7 +109,6 @@ if(env == 'development'){
|
||||
.post('http://localhost:5001/api/data/', data);
|
||||
}
|
||||
// }
|
||||
>>>>>>> v1.3
|
||||
|
||||
export function invokeYbPlugin5000(data) {
|
||||
return axios
|
||||
@@ -128,15 +116,7 @@ export function invokeYbPlugin5000(data) {
|
||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
baseURL: '',
|
||||
// 超时
|
||||
<<<<<<< HEAD
|
||||
timeout: 60000
|
||||
}
|
||||
).post('http://localhost:5000/api/data/', data);
|
||||
}
|
||||
}
|
||||
=======
|
||||
timeout: 60000,
|
||||
})
|
||||
.post('http://localhost:5000/api/data/', data);
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -1,34 +1,5 @@
|
||||
<template>
|
||||
<div
|
||||
<<<<<<< HEAD
|
||||
:class="{ 'has-logo': showLogo }"
|
||||
:style="{
|
||||
backgroundColor:
|
||||
sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground,
|
||||
}"
|
||||
class="sidebar-layout"
|
||||
>
|
||||
<!-- <logo v-if="showLogo" :collapse="isCollapse" /> -->
|
||||
<el-menu
|
||||
:default-active="activeMenu"
|
||||
:collapse="isCollapse"
|
||||
:background-color="
|
||||
sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground
|
||||
"
|
||||
:text-color="sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor"
|
||||
:unique-opened="true"
|
||||
:active-text-color="theme"
|
||||
:collapse-transition="false"
|
||||
mode="horizontal"
|
||||
>
|
||||
<sidebar-item
|
||||
v-for="(route, index) in sidebarRouters"
|
||||
:key="route.path + index"
|
||||
:item="route"
|
||||
:base-path="route.path"
|
||||
/>
|
||||
</el-menu>
|
||||
=======
|
||||
:class="{ 'has-logo': showLogo }"
|
||||
class="sidebar-wrapper"
|
||||
:style="{
|
||||
@@ -60,7 +31,6 @@
|
||||
</el-menu>
|
||||
</div>
|
||||
</div>
|
||||
>>>>>>> v1.3
|
||||
<navbar @setLayout="setLayout" class="navbar-container" />
|
||||
<settings ref="settingRef" />
|
||||
</div>
|
||||
@@ -103,9 +73,6 @@ function setLayout() {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
<<<<<<< HEAD
|
||||
/* 移除滚动条样式 */
|
||||
=======
|
||||
.sidebar-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -152,7 +119,6 @@ function setLayout() {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
.el-menu--horizontal {
|
||||
display: flex !important;
|
||||
@@ -161,12 +127,7 @@ function setLayout() {
|
||||
background-color: transparent !important;
|
||||
min-width: auto;
|
||||
flex-wrap: nowrap;
|
||||
<<<<<<< HEAD
|
||||
overflow: hidden !important;
|
||||
white-space: nowrap;
|
||||
=======
|
||||
height: 50px;
|
||||
>>>>>>> v1.3
|
||||
|
||||
& > .el-menu-item,
|
||||
& > .el-sub-menu {
|
||||
@@ -175,16 +136,11 @@ function setLayout() {
|
||||
color: #fff;
|
||||
padding: 0 15px !important;
|
||||
font-size: 14px;
|
||||
<<<<<<< HEAD
|
||||
min-width: auto !important;
|
||||
white-space: nowrap;
|
||||
=======
|
||||
min-width: 120px !important;
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
:deep(.svg-icon) {
|
||||
@@ -194,13 +150,9 @@ function setLayout() {
|
||||
|
||||
:deep(.el-sub-menu__title) {
|
||||
padding-right: 25px !important;
|
||||
<<<<<<< HEAD
|
||||
white-space: nowrap;
|
||||
=======
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
:deep(.el-sub-menu__icon-arrow) {
|
||||
@@ -212,30 +164,6 @@ function setLayout() {
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
/* 水平布局,并与 Navbar 正确配合 */
|
||||
.sidebar-layout {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
|
||||
& > .el-menu {
|
||||
flex: 1;
|
||||
height: 50px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
&.has-logo {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
=======
|
||||
.navbar-container {
|
||||
flex-shrink: 0;
|
||||
height: 50px;
|
||||
@@ -267,7 +195,6 @@ function setLayout() {
|
||||
min-width: 60px !important;
|
||||
font-size: 11px;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,38 +1,10 @@
|
||||
import { createApp } from 'vue';
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 修复 util._extend 已弃用警告(仅在 Node.js 环境中需要)
|
||||
if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
||||
try {
|
||||
import('util').then(util => {
|
||||
if (!util._extend) {
|
||||
util._extend = function(destination, source) {
|
||||
for (var key in source) {
|
||||
if (source.hasOwnProperty(key)) {
|
||||
destination[key] = source[key];
|
||||
}
|
||||
}
|
||||
return destination;
|
||||
};
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('util._extend 补丁加载失败:', e);
|
||||
}
|
||||
}
|
||||
|
||||
import Cookies from 'js-cookie'
|
||||
|
||||
import ElementPlus from 'element-plus'
|
||||
import zhCn from 'element-plus/es/locale/lang/zh-cn'
|
||||
import 'element-plus/dist/index.css'
|
||||
=======
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
// 导入 hiprint 并挂载到全局 window 对象
|
||||
import { hiprint } from 'vue-plugin-hiprint';
|
||||
window.hiprint = hiprint;
|
||||
>>>>>>> v1.3
|
||||
|
||||
import ElementPlus from 'element-plus';
|
||||
import zhCn from 'element-plus/es/locale/lang/zh-cn';
|
||||
@@ -47,13 +19,8 @@ import router from './router';
|
||||
import directive from './directive'; // directive
|
||||
|
||||
// 注册指令
|
||||
<<<<<<< HEAD
|
||||
import plugins from './plugins' // plugins
|
||||
import { download, downloadGet } from '@/utils/request'
|
||||
=======
|
||||
import plugins from './plugins'; // plugins
|
||||
import { download, downloadGet } from '@/utils/request';
|
||||
>>>>>>> v1.3
|
||||
|
||||
// svg图标
|
||||
import 'virtual:svg-icons-register';
|
||||
@@ -108,48 +75,6 @@ if (chrome.webview !== undefined) {
|
||||
}
|
||||
|
||||
// 全局方法挂载
|
||||
<<<<<<< HEAD
|
||||
app.config.globalProperties.useDict = useDict
|
||||
app.config.globalProperties.download = download
|
||||
app.config.globalProperties.downloadGet = downloadGet
|
||||
app.config.globalProperties.parseTime = parseTime
|
||||
app.config.globalProperties.resetForm = resetForm
|
||||
app.config.globalProperties.handleTree = handleTree
|
||||
app.config.globalProperties.addDateRange = addDateRange
|
||||
app.config.globalProperties.selectDictLabel = selectDictLabel
|
||||
app.config.globalProperties.selectDictLabels = selectDictLabels
|
||||
app.config.globalProperties.formatDateStr = formatDateStr
|
||||
|
||||
// 全局挂载请求实例
|
||||
app.config.globalProperties.$http = request
|
||||
// 全局组件挂载
|
||||
app.component('DictTag', DictTag)
|
||||
app.component('Pagination', Pagination)
|
||||
app.component('TreeSelect', TreeSelect)
|
||||
app.component('FileUpload', FileUpload)
|
||||
app.component('ImageUpload', ImageUpload)
|
||||
app.component('ImagePreview', ImagePreview)
|
||||
app.component('RightToolbar', RightToolbar)
|
||||
app.component('Editor', Editor)
|
||||
// 使用element-plus 并且设置全局的大小
|
||||
app.use(ElementPlus, {
|
||||
locale: zhCn,
|
||||
// 支持 large、default、small
|
||||
size: Cookies.get('size') || 'default'
|
||||
})
|
||||
app.use(ElMessage)
|
||||
app.use(registerComponents)
|
||||
app.use(router)
|
||||
app.use(store)
|
||||
app.use(plugins)
|
||||
app.use(elementIcons)
|
||||
app.component('svg-icon', SvgIcon)
|
||||
directive(app)
|
||||
// 全局禁止点击遮罩层关闭弹窗
|
||||
ElDialog.props.closeOnClickModal.default = false;
|
||||
|
||||
app.mount('#app')
|
||||
=======
|
||||
app.config.globalProperties.useDict = useDict;
|
||||
app.config.globalProperties.download = download;
|
||||
app.config.globalProperties.downloadGet = downloadGet;
|
||||
@@ -187,4 +112,3 @@ app.use(ElementPlus, {
|
||||
});
|
||||
|
||||
app.mount('#app');
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -51,15 +51,11 @@ export const constantRoutes = [
|
||||
component: () => import('@/views/register'),
|
||||
hidden: true,
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
// 401权限不足路由
|
||||
=======
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
component: () => import('@/views/error/404'),
|
||||
hidden: true,
|
||||
},
|
||||
>>>>>>> v1.3
|
||||
{
|
||||
path: '/401',
|
||||
component: () => import('@/views/error/401'),
|
||||
@@ -79,11 +75,6 @@ export const constantRoutes = [
|
||||
},
|
||||
],
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
// 个人中心路由
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
{
|
||||
path: '/user',
|
||||
component: Layout,
|
||||
@@ -94,40 +85,6 @@ export const constantRoutes = [
|
||||
path: 'profile',
|
||||
component: () => import('@/views/system/user/profile/index'),
|
||||
name: 'Profile',
|
||||
<<<<<<< HEAD
|
||||
meta: { title: '个人中心', icon: 'user' }
|
||||
}
|
||||
]
|
||||
},
|
||||
// 套餐管理相关路由 - 添加到公共路由确保始终可用
|
||||
{
|
||||
path: '/maintainSystem/Inspection/PackageManagement',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: () => import('@/views/maintainSystem/Inspection/PackageManagement.vue'),
|
||||
name: 'DirectPackageManagement',
|
||||
meta: { title: '套餐管理' }
|
||||
}
|
||||
]
|
||||
},
|
||||
// {
|
||||
// path: '/reservationRecord2/appoinmentmanage',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// children: [
|
||||
// {
|
||||
// path: '',
|
||||
// component: () => import('@/views/appoinmentmanage/clinicRoom/index.vue'),
|
||||
// name: 'DirectClinicRoom',
|
||||
// meta: { title: '门诊出诊医生诊室设置' }
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
]
|
||||
=======
|
||||
meta: { title: '个人中心', icon: 'user' },
|
||||
},
|
||||
],
|
||||
@@ -137,7 +94,6 @@ export const constantRoutes = [
|
||||
component: () => import('@/views/inpatientNurse/tprSheet/index.vue'),
|
||||
},
|
||||
];
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 动态路由 - 基于用户权限动态加载的路由
|
||||
export const dynamicRoutes = [
|
||||
@@ -282,15 +238,9 @@ export const dynamicRoutes = [
|
||||
path: 'set/:tenantId(\\d+)',
|
||||
component: () => import('@/views/system/tenant/setUser'),
|
||||
name: 'SetUser',
|
||||
<<<<<<< HEAD
|
||||
meta: { title: '所属用户', activeMenu: '/system/tenant' }
|
||||
}
|
||||
]
|
||||
=======
|
||||
meta: { title: '所属用户', activeMenu: '/system/basicmanage/tenant' },
|
||||
},
|
||||
],
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
//租户合同管理路由
|
||||
{
|
||||
@@ -303,132 +253,6 @@ export const dynamicRoutes = [
|
||||
path: 'set/:tenantId(\\d+)',
|
||||
component: () => import('@/views/system/tenant/setContract'),
|
||||
name: 'SetContract',
|
||||
<<<<<<< HEAD
|
||||
meta: { title: '合同管理', activeMenu: '/system/tenant' }
|
||||
}
|
||||
]
|
||||
},
|
||||
// 用户角色分配路由
|
||||
// {
|
||||
// path: '/system/user-auth',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// permissions: ['system:user:edit'],
|
||||
// children: [
|
||||
// {
|
||||
// path: 'role/:userId(\\d+)',
|
||||
// component: () => import('@/views/system/user/authRole'),
|
||||
// name: 'AuthRole',
|
||||
// meta: { title: '分配角色', activeMenu: '/system/user' }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// // 角色用户分配路由
|
||||
// {
|
||||
// path: '/system/role-auth',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// permissions: ['system:role:edit'],
|
||||
// children: [
|
||||
// {
|
||||
// path: 'user/:roleId(\\d+)',
|
||||
// component: () => import('@/views/system/role/authUser'),
|
||||
// name: 'AuthUser',
|
||||
// meta: { title: '分配用户', activeMenu: '/system/role' }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// // 字典数据路由
|
||||
// {
|
||||
// path: '/system/dict-data',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// permissions: ['system:dict:list'],
|
||||
// children: [
|
||||
// {
|
||||
// path: 'index/:dictId(\\d+)',
|
||||
// component: () => import('@/views/system/dict/data'),
|
||||
// name: 'Data',
|
||||
// meta: { title: '字典数据', activeMenu: '/system/dict' }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// 系统监控路由
|
||||
// {
|
||||
// path: '/monitor',
|
||||
// component: Layout,
|
||||
// redirect: '/monitor/operlog',
|
||||
// name: 'Monitor',
|
||||
// meta: { title: '系统监控', icon: 'monitor' },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'operlog', // 操作日志路由
|
||||
// component: () => import('@/views/monitor/operlog/index.vue'),
|
||||
// name: 'Operlog',
|
||||
// meta: { title: '操作日志', icon: 'operlog', permissions: ['monitor:operlog:list'] }
|
||||
// },
|
||||
// {
|
||||
// path: 'logininfor', // 登录日志路由
|
||||
// component: () => import('@/views/monitor/logininfor/index.vue'),
|
||||
// name: 'Logininfor',
|
||||
// meta: { title: '登录日志', icon: 'logininfor', permissions: ['monitor:logininfor:list'] }
|
||||
// },
|
||||
// {
|
||||
// path: 'job', // 定时任务路由
|
||||
// component: () => import('@/views/monitor/job/index.vue'),
|
||||
// name: 'Job',
|
||||
// meta: { title: '定时任务', icon: 'job', permissions: ['monitor:job:list'] }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// 系统工具路由
|
||||
// {
|
||||
// path: '/tool',
|
||||
// component: Layout,
|
||||
// redirect: '/tool/gen',
|
||||
// name: 'Tool',
|
||||
// meta: { title: '系统工具', icon: 'tool' },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'gen', // 代码生成路由
|
||||
// component: () => import('@/views/tool/gen/index.vue'),
|
||||
// name: 'Gen',
|
||||
// meta: { title: '代码生成', icon: 'gen', permissions: ['tool:gen:list'] }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// 定时任务日志路由
|
||||
// {
|
||||
// path: '/monitor/job-log',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// permissions: ['monitor:job:list'],
|
||||
// children: [
|
||||
// {
|
||||
// path: 'index/:jobId(\\d+)',
|
||||
// component: () => import('@/views/monitor/job/log'),
|
||||
// name: 'JobLog',
|
||||
// meta: { title: '调度日志', activeMenu: '/monitor/job' }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// 代码生成编辑路由
|
||||
// {
|
||||
// path: '/tool/gen-edit',
|
||||
// component: Layout,
|
||||
// hidden: true,
|
||||
// permissions: ['tool:gen:edit'],
|
||||
// children: [
|
||||
// {
|
||||
// path: 'index/:tableId(\\d+)',
|
||||
// component: () => import('@/views/tool/gen/editTable'),
|
||||
// name: 'GenEdit',
|
||||
// meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
]
|
||||
=======
|
||||
meta: { title: '合同管理', activeMenu: '/system/basicmanage/tenant' },
|
||||
},
|
||||
],
|
||||
@@ -504,7 +328,6 @@ export const dynamicRoutes = [
|
||||
],
|
||||
},
|
||||
];
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 合并常量路由和动态路由,确保所有路由都能被访问
|
||||
const allRoutes = [...constantRoutes, ...dynamicRoutes];
|
||||
|
||||
@@ -19,12 +19,7 @@ const useUserStore = defineStore(
|
||||
roles: [],
|
||||
permissions: [],
|
||||
tenantId: '',
|
||||
<<<<<<< HEAD
|
||||
hospitalName:'',
|
||||
status: '' // 用户状态:0-启用(管理员), 1-禁用(普通人员)
|
||||
=======
|
||||
hospitalName:''
|
||||
>>>>>>> v1.3
|
||||
}),
|
||||
actions: {
|
||||
// 登录
|
||||
@@ -69,10 +64,6 @@ const useUserStore = defineStore(
|
||||
this.avatar = avatar
|
||||
this.hospitalName = res.optionJson.hospitalName
|
||||
|
||||
<<<<<<< HEAD
|
||||
this.status = user.status // 保存用户状态
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
|
||||
@@ -1,37 +1,17 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<!-- 跌倒/坠床评估护理记录单主容器 -->
|
||||
<div>
|
||||
<div class="business">
|
||||
<!-- 已有记录展示表格 -->
|
||||
<el-table
|
||||
=======
|
||||
<div>
|
||||
<div class="business">
|
||||
<!-- <el-table
|
||||
>>>>>>> v1.3
|
||||
:data="tableDataSource"
|
||||
border
|
||||
stripe
|
||||
fit
|
||||
:header-cell-style="{ background: '#f2f2f2', color: 'black' }"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!-- 记录时间列 -->
|
||||
<el-table-column prop="content.recordTime" label="记录时间" />
|
||||
<!-- 评估分数列 -->
|
||||
<el-table-column prop="content.totalScore" label="评估分数" />
|
||||
<!-- 护理措施列 -->
|
||||
<el-table-column prop="content.patientCareSessionsTableList" label="护理措施" />
|
||||
<!-- 责任护士列 -->
|
||||
<el-table-column prop="content.nurseSignature" label="责任护士" />
|
||||
<!-- 操作列:编辑和删除按钮 -->
|
||||
=======
|
||||
<el-table-column prop="content.recordTime" label="记录时间" />
|
||||
<el-table-column prop="content.totalScore" label="评估分数" />
|
||||
<el-table-column prop="content.patientCareSessionsTableList" label="护理措施" />
|
||||
<el-table-column prop="content.nurseSignature" label="责任护士" />
|
||||
>>>>>>> v1.3
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
@@ -50,20 +30,6 @@
|
||||
@click="handleDelete(scope.row)"
|
||||
:disabled="admissionDataForm !== undefined"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 跌倒/坠床评估护理记录单表单区域 -->
|
||||
<div name="跌倒/坠床评估护理记录单" class="changeMajor" style="width: 99.9%">
|
||||
<div>
|
||||
<!-- 表单主体 -->
|
||||
<el-form ref="formRef" :model="form" style="width: 99.9%">
|
||||
<!-- 标题行 -->
|
||||
=======
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -73,7 +39,6 @@
|
||||
<div name="跌倒/坠床评估护理记录单" class="changeMajor" style="width: 99.9%">
|
||||
<div>
|
||||
<el-form ref="formRef" :model="form" style="width: 99.9%">
|
||||
>>>>>>> v1.3
|
||||
<el-form-item style="text-align: center">
|
||||
<div
|
||||
style="
|
||||
@@ -89,18 +54,10 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 日期时间选择器 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="日期:" class="changeMajorFromItem" style="width: 100%">
|
||||
<el-row :span="20">
|
||||
<el-col :span="8" style="padding-left: 0px !important">
|
||||
<el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 日期时间选择器 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-date-picker
|
||||
v-model="form.ZKDATE"
|
||||
type="datetime"
|
||||
@@ -110,10 +67,6 @@
|
||||
style="width: 800px"
|
||||
:disabled="admissionDataForm !== undefined"
|
||||
/>
|
||||
<<<<<<< HEAD
|
||||
<!-- 时间选择器被注释掉 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<!-- <span style="margin-left: 5px">时间:</span>
|
||||
<el-time-picker
|
||||
v-model="form.ZKTIME"
|
||||
@@ -124,10 +77,6 @@
|
||||
/> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<<<<<<< HEAD
|
||||
<!-- 新增/保存按钮 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-col :span="5">
|
||||
<el-button
|
||||
v-if="!updateFlag"
|
||||
@@ -151,10 +100,6 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 危险因素评估表格 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item style="padding-top: 10px; margin: 0px !important">
|
||||
<el-table
|
||||
:data="dangerData"
|
||||
@@ -162,10 +107,6 @@
|
||||
:span-method="handleSpan"
|
||||
style="text-align: center"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!-- 动态生成表格列 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-table-column
|
||||
v-for="column in dangerColumns"
|
||||
:key="column.key"
|
||||
@@ -174,10 +115,6 @@
|
||||
:label="column.title"
|
||||
align="center"
|
||||
/>
|
||||
<<<<<<< HEAD
|
||||
<!-- 选择列(复选框) -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-table-column prop="id" label="选择" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-checkbox v-model="row.checked" @change="handleDangerChange(row)" />
|
||||
@@ -186,10 +123,6 @@
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 总分显示 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item
|
||||
style="text-align: center; margin-bottom: 0px; padding: 0px"
|
||||
class="changeMajorFromItem"
|
||||
@@ -202,10 +135,6 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 护理措施表格 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item style="padding-top: 10px">
|
||||
<el-table
|
||||
:data="nursingData"
|
||||
@@ -213,10 +142,6 @@
|
||||
:span-method="arraySpanMethod"
|
||||
style="width: 100%"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!-- 动态生成表格列 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-table-column
|
||||
v-for="column in nursingColumns"
|
||||
:key="column.key"
|
||||
@@ -225,10 +150,6 @@
|
||||
:label="column.title"
|
||||
align="center"
|
||||
/>
|
||||
<<<<<<< HEAD
|
||||
<!-- 选择列(复选框) -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-table-column prop="id" label="选择" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-checkbox v-model="row.checked" @change="handleNursingChange(row)" />
|
||||
@@ -237,10 +158,6 @@
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 护士签字输入框 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item
|
||||
style="text-align: center; margin-bottom: 0px; padding: 0px"
|
||||
class="changeMajorFromItem"
|
||||
@@ -260,10 +177,6 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 备注信息 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item>
|
||||
<el-row :span="20">
|
||||
<el-col :span="5">
|
||||
@@ -284,26 +197,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
// 组件选项定义
|
||||
defineOptions({
|
||||
name: '跌倒/坠床评估护理记录单',
|
||||
});
|
||||
|
||||
// 导入所需模块
|
||||
import { ref, reactive, computed, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
|
||||
// 使用路由相关功能
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
// 定义引用变量
|
||||
const queryRef = ref();
|
||||
const formRef = ref();
|
||||
|
||||
// 基本数据变量
|
||||
=======
|
||||
defineOptions({
|
||||
name: 'FallBedFallAssessment',
|
||||
});
|
||||
@@ -328,7 +221,6 @@ const router = useRouter();
|
||||
const queryRef = ref();
|
||||
const formRef = ref();
|
||||
|
||||
>>>>>>> v1.3
|
||||
const wardCode = ref('');
|
||||
const patientId = ref('');
|
||||
const visitId = ref('');
|
||||
@@ -342,20 +234,6 @@ const totalScore = ref(0);
|
||||
const lastSubmit = ref('');
|
||||
const admissionDataForm = ref(route.params.admissionData);
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 表单数据模型
|
||||
const form = reactive({
|
||||
ZKDATE: '', // 日期
|
||||
ZKTIME: '', // 时间
|
||||
recordTime: '', // 记录时间
|
||||
totalScore: 0, // 总分
|
||||
bedFallRiskAssessmentList: [], // 跌倒风险评估列表
|
||||
nurseSignature: '', // 护士签名
|
||||
patientCareSessionsCheckedList: [], // 护理措施选中列表
|
||||
});
|
||||
|
||||
// 危险因素表格列配置
|
||||
=======
|
||||
const form = reactive({
|
||||
ZKDATE: '',
|
||||
ZKTIME: '',
|
||||
@@ -367,7 +245,6 @@ const form = reactive({
|
||||
});
|
||||
|
||||
// 危险因素表格列
|
||||
>>>>>>> v1.3
|
||||
const dangerColumns = [
|
||||
{
|
||||
key: 'content',
|
||||
@@ -432,11 +309,7 @@ const dangerData = ref([
|
||||
{ id: '27', evalContent: '麻醉止痛剂', score: 2, checked: false },
|
||||
]);
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 护理措施表格列配置
|
||||
=======
|
||||
// 护理措施表格列
|
||||
>>>>>>> v1.3
|
||||
const nursingColumns = [
|
||||
{
|
||||
key: 'content',
|
||||
@@ -473,33 +346,21 @@ const instructions = [
|
||||
'3.评分≥5,高度风险,每周至少评估一次,需采取适宜的预防措施,同时填写《预防患者跌倒/坠床知情告知书》',
|
||||
];
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 计算属性:计算选中的危险因素总分
|
||||
=======
|
||||
// 计算属性
|
||||
>>>>>>> v1.3
|
||||
const calculate = computed(() => {
|
||||
return dangerData.value
|
||||
.filter((option) => option.checked)
|
||||
.reduce((total, option) => total + option.score, 0);
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 计算属性:判断表单是否为空
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const isFormEmpty = computed(() => {
|
||||
return (
|
||||
form.ZKDATE === '' && form.ZKTIME === '' && form.recordTime === '' && form.nurseSignature === ''
|
||||
);
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 危险因素选择变化处理函数
|
||||
=======
|
||||
// 方法 - 不再需要handleData方法,通过表单输入和按钮加载数据
|
||||
|
||||
>>>>>>> v1.3
|
||||
const handleDangerChange = (row) => {
|
||||
totalScore.value = calculate.value;
|
||||
form.bedFallRiskAssessmentList = dangerData.value
|
||||
@@ -507,20 +368,12 @@ const handleDangerChange = (row) => {
|
||||
.map((item) => item.id);
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 护理措施选择变化处理函数
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const handleNursingChange = (row) => {
|
||||
form.patientCareSessionsCheckedList = nursingData.value
|
||||
.filter((item) => item.checked)
|
||||
.map((item) => item.id);
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 初始化函数:加载模拟数据
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const init = async () => {
|
||||
// 使用模拟数据,不再调用后端API
|
||||
try {
|
||||
@@ -582,10 +435,6 @@ const init = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 危险因素表格合并单元格处理函数
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const handleSpan = ({ row, column, rowIndex, columnIndex }) => {
|
||||
if (columnIndex === 0) {
|
||||
if (rowIndex === 0) {
|
||||
@@ -632,10 +481,6 @@ const handleSpan = ({ row, column, rowIndex, columnIndex }) => {
|
||||
return [1, 1];
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 护理措施表格合并单元格处理函数
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
|
||||
// 护理措施
|
||||
if (columnIndex === 0) {
|
||||
@@ -652,14 +497,8 @@ const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
|
||||
return [1, 1];
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 提交表单处理函数
|
||||
const onSubmit = async () => {
|
||||
// 检查上次提交时间,防止重复提交
|
||||
=======
|
||||
const onSubmit = async () => {
|
||||
// 检查上次提交时间
|
||||
>>>>>>> v1.3
|
||||
if (lastSubmit.value && new Date() - lastSubmit.value < 2000) {
|
||||
ElMessage.error('禁止重复提交!');
|
||||
return;
|
||||
@@ -684,16 +523,6 @@ const onSubmit = async () => {
|
||||
|
||||
if (isFormEmpty.value) {
|
||||
ElMessage.error('请填写跌倒/坠床评估护理记录单后再进行操作');
|
||||
<<<<<<< HEAD
|
||||
} else {
|
||||
form.totalScore = totalScore.value;
|
||||
|
||||
// 模拟保存数据,不再调用后端API
|
||||
console.log('保存的数据:', form);
|
||||
|
||||
if (updateFlag.value) {
|
||||
// 模拟更新操作
|
||||
=======
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -720,35 +549,22 @@ const onSubmit = async () => {
|
||||
// 更新本地数据
|
||||
if (updateFlag.value) {
|
||||
// 更新操作
|
||||
>>>>>>> v1.3
|
||||
const updatedIndex = tableDataSource.value.findIndex((item) => item.id === updateId.value);
|
||||
if (updatedIndex !== -1) {
|
||||
tableDataSource.value[updatedIndex].content = { ...form };
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
ElMessage.success('模拟更新成功');
|
||||
} else {
|
||||
// 模拟新增操作
|
||||
=======
|
||||
ElMessage.success('更新成功');
|
||||
} else {
|
||||
// 新增操作
|
||||
>>>>>>> v1.3
|
||||
const newRecord = {
|
||||
id: Date.now().toString(),
|
||||
content: { ...form },
|
||||
};
|
||||
tableDataSource.value.unshift(newRecord);
|
||||
<<<<<<< HEAD
|
||||
ElMessage.success('模拟新增成功');
|
||||
}
|
||||
|
||||
=======
|
||||
ElMessage.success('保存成功');
|
||||
}
|
||||
|
||||
// 处理返回逻辑
|
||||
>>>>>>> v1.3
|
||||
if (admissionDataForm.value !== undefined) {
|
||||
const admissionDataBack = JSON.parse(admissionDataForm.value);
|
||||
admissionDataBack.project2 = totalScore.value;
|
||||
@@ -769,13 +585,6 @@ const onSubmit = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
reset();
|
||||
}
|
||||
};
|
||||
|
||||
// 编辑记录处理函数
|
||||
=======
|
||||
// 重置表单
|
||||
reset();
|
||||
} catch (error) {
|
||||
@@ -784,7 +593,6 @@ const onSubmit = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
const handleUpdate = (row) => {
|
||||
const loginUser = JSON.parse(window.localStorage.getItem('loginUser'));
|
||||
|
||||
@@ -814,10 +622,6 @@ const handleUpdate = (row) => {
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 重置表单函数
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const reset = () => {
|
||||
Object.assign(form, {
|
||||
ZKDATE: '',
|
||||
@@ -850,10 +654,6 @@ const reset = () => {
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 删除记录处理函数
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const handleDelete = (row) => {
|
||||
const loginUser = JSON.parse(window.localStorage.getItem('loginUser'));
|
||||
|
||||
@@ -877,10 +677,6 @@ const handleDelete = (row) => {
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 打印预览函数(暂未实现)
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const dc_ajax_preview = () => {
|
||||
var args = {
|
||||
report: urlAddRandomNo('./grf/NurseRecord_Pressure_208.grf'),
|
||||
@@ -891,10 +687,6 @@ const dc_ajax_preview = () => {
|
||||
webapp_ws_ajax_run(args);
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 数据转换函数,用于报表打印
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const transformData = () => {
|
||||
const jsonDate = [...tableDataSource.value];
|
||||
|
||||
@@ -1041,11 +833,7 @@ const transformData = () => {
|
||||
return transformedData;
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 组件挂载后执行的生命周期函数
|
||||
=======
|
||||
// 生命周期钩子
|
||||
>>>>>>> v1.3
|
||||
onMounted(() => {
|
||||
try {
|
||||
// 安全获取用户信息
|
||||
@@ -1058,9 +846,6 @@ onMounted(() => {
|
||||
wardCode.value = window.localStorage.getItem('wardInfo') || '';
|
||||
admissionDataForm.value = route.params.admissionData;
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 自动初始化表格数据,不再依赖患者ID参数
|
||||
=======
|
||||
// 获取患者信息
|
||||
if (patientInfo.value) {
|
||||
patientId.value = patientInfo.value.patientId || '';
|
||||
@@ -1068,7 +853,6 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
// 自动初始化表格数据
|
||||
>>>>>>> v1.3
|
||||
// 延迟执行,确保所有数据都已初始化
|
||||
setTimeout(() => {
|
||||
init();
|
||||
@@ -1081,28 +865,17 @@ onMounted(() => {
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 页面样式定义 */
|
||||
=======
|
||||
|
||||
// 暴露接口
|
||||
defineExpose({ form, submit: onSubmit, reset });
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
>>>>>>> v1.3
|
||||
.business {
|
||||
background: white;
|
||||
border-radius: 5px;
|
||||
padding: 10px 16px;
|
||||
<<<<<<< HEAD
|
||||
height: calc(100vh - var(--barHeight) * 1px - 50px);
|
||||
=======
|
||||
height: calc(100vh - 250px);
|
||||
>>>>>>> v1.3
|
||||
overflow: auto;
|
||||
display: grid;
|
||||
grid-row-gap: 16px;
|
||||
@@ -1161,14 +934,4 @@ defineExpose({ form, submit: onSubmit, reset });
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
/* 备注信息列表样式 */
|
||||
.instructions-list {
|
||||
list-style-type: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -2,15 +2,6 @@
|
||||
<div class="hospital-record-form">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="病案首页(一)" name="first">
|
||||
<<<<<<< HEAD
|
||||
<medicalRecordFirst :formData="formData"></medicalRecordFirst>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="病案首页(二)" name="second">
|
||||
<medicalRecordSecond :formData="formData"></medicalRecordSecond>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="病案附页(一)" name="third">
|
||||
<medicalRecordThird :formData="formData"></medicalRecordThird>
|
||||
=======
|
||||
<medicalRecordFirst
|
||||
ref="firstRef"
|
||||
:formData="formData"
|
||||
@@ -28,16 +19,10 @@
|
||||
:formData="formData"
|
||||
@onCaseThird="updateCaseFirstDatas"
|
||||
></medicalRecordThird>
|
||||
>>>>>>> v1.3
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<div class="form-footer">
|
||||
<<<<<<< HEAD
|
||||
<button @click="printForm" class="print-btn">打印表单</button>
|
||||
<button @click="resetForm" class="reset-btn">重置表单</button>
|
||||
</div>
|
||||
=======
|
||||
<!-- <button @click="printForm" class="print-btn">打印表单</button> -->
|
||||
<button @click="resetForm" class="reset-btn">重置表单</button>
|
||||
</div>
|
||||
@@ -45,7 +30,6 @@
|
||||
<!-- <el-drawer v-model="drawer" size="100%">
|
||||
<medicalRecordPrint ref="recordPrintRef"></medicalRecordPrint>
|
||||
</el-drawer> -->
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -53,12 +37,8 @@
|
||||
defineOptions({
|
||||
name: 'HospitalRecordForm',
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
import { ref, reactive } from 'vue';
|
||||
=======
|
||||
import { ref, reactive, nextTick } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
>>>>>>> v1.3
|
||||
// import medicalRecordFirst from './components/medicalRecordFirst.vue';
|
||||
import medicalRecordFirst from '@/views/hospitalRecord/components/medicalRecordFirst.vue';
|
||||
import medicalRecordSecond from '@/views/hospitalRecord/components/medicalRecordSecond.vue';
|
||||
@@ -66,121 +46,6 @@ import medicalRecordThird from '@/views/hospitalRecord/components/medicalRecordT
|
||||
import medicalRecordFirstPrint from '@/views/hospitalRecord/components/medicalRecordFirstPrint.json';
|
||||
import medicalRecordSecondPrint from '@/views/hospitalRecord/components/medicalRecordSecondPrint.json';
|
||||
import medicalRecordThirdPrint from '@/views/hospitalRecord/components/medicalRecordThirdPrint.json';
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
hospital: {
|
||||
orgCode: '41275054-7',
|
||||
paymentMethod: '城乡居民基本医疗保险'
|
||||
},
|
||||
patient: {
|
||||
healthCardNo: '',
|
||||
name: '',
|
||||
gender: '',
|
||||
birthDate: '',
|
||||
age: '',
|
||||
nationality: '中国',
|
||||
nativePlace: '',
|
||||
ethnicity: '汉族',
|
||||
idCardNo: '',
|
||||
householdAddress: '',
|
||||
workUnit: '',
|
||||
contactName: '',
|
||||
contactRelation: '',
|
||||
contactAddress: '',
|
||||
contactPhone: ''
|
||||
},
|
||||
admission: {
|
||||
times: 1,
|
||||
hospitalNo: '',
|
||||
recordNo: '',
|
||||
channel: '',
|
||||
admitTime: '',
|
||||
department: '',
|
||||
ward: '',
|
||||
confirmDate: '',
|
||||
dischargeTime: '',
|
||||
dischargeDepartment: '',
|
||||
dischargeWard: '',
|
||||
hospitalDays: ''
|
||||
},
|
||||
diagnosis: {
|
||||
mainDiagnosis: '',
|
||||
otherDiagnosis: ''
|
||||
},
|
||||
medicalInfo: {
|
||||
bloodTransfusion: '2',
|
||||
bloodType: '',
|
||||
rhType: '',
|
||||
drugAllergy: '1'
|
||||
},
|
||||
doctorInfo: {
|
||||
departmentDirector: '',
|
||||
chiefPhysician: '',
|
||||
attendingPhysician: '',
|
||||
residentPhysician: '',
|
||||
chargeNurse: '',
|
||||
chiefResident: '',
|
||||
intern: '',
|
||||
recordQuality: '1',
|
||||
coder: '',
|
||||
qualityControlDate: ''
|
||||
}
|
||||
});
|
||||
|
||||
const activeName = ref('first');
|
||||
|
||||
// 打印表单
|
||||
const printForm = () => {
|
||||
// 创建一个新的打印窗口
|
||||
const printWindow = window.open('', '_blank');
|
||||
let printContent
|
||||
// 获取模板字符串并替换转义的插值标记
|
||||
if(activeName.value == 'first') {
|
||||
printContent = medicalRecordFirstPrint.printContent;
|
||||
}else if(activeName.value == 'second') {
|
||||
printContent = medicalRecordSecondPrint.printContent;
|
||||
}else {
|
||||
printContent = medicalRecordThirdPrint.printContent;
|
||||
}
|
||||
// 这里可以进行实际的数据替换操作
|
||||
printContent = printContent.replace(/\$\{([^}]+)\}/g, (match, expr) => {
|
||||
// 简单示例:实际应根据expr内容进行数据提取
|
||||
return eval(expr); // 注意:实际使用中应避免eval,这里仅为示例
|
||||
});
|
||||
// 将内容写入打印窗口并打印
|
||||
printWindow.document.write(printContent);
|
||||
printWindow.document.close();
|
||||
}
|
||||
|
||||
function handleClick() {
|
||||
|
||||
}
|
||||
|
||||
// 重置表单
|
||||
const resetForm = () => {
|
||||
Object.keys(formData).forEach(key => {
|
||||
if (typeof formData[key] === 'object') {
|
||||
Object.keys(formData[key]).forEach(subKey => {
|
||||
formData[key][subKey] = '';
|
||||
});
|
||||
} else {
|
||||
formData[key] = '';
|
||||
}
|
||||
});
|
||||
|
||||
// 重置默认值
|
||||
formData.hospital.orgCode = '41275054-7';
|
||||
formData.hospital.paymentMethod = '城乡居民基本医疗保险';
|
||||
formData.patient.nationality = '中国';
|
||||
formData.patient.ethnicity = '汉族';
|
||||
formData.admission.times = 1;
|
||||
formData.medicalInfo.bloodTransfusion = '2';
|
||||
formData.medicalInfo.drugAllergy = '1';
|
||||
formData.doctorInfo.recordQuality = '1';
|
||||
};
|
||||
=======
|
||||
import formDataJs from '../views/doctorstation/components/store/medicalpage';
|
||||
import medicalRecordPrint from '../views/hospitalRecord/components/medicalRecordPrint.vue';
|
||||
import { previewPrint } from '../utils/printUtils';
|
||||
@@ -790,7 +655,6 @@ defineExpose({
|
||||
setFormData,
|
||||
printFun,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -860,13 +724,9 @@ label {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
input, select, textarea {
|
||||
=======
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
>>>>>>> v1.3
|
||||
width: 100%;
|
||||
padding: 8px;
|
||||
border: 1px solid #ccc;
|
||||
@@ -887,12 +747,8 @@ textarea {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
.print-btn, .reset-btn {
|
||||
=======
|
||||
.print-btn,
|
||||
.reset-btn {
|
||||
>>>>>>> v1.3
|
||||
padding: 10px 20px;
|
||||
margin: 0 10px;
|
||||
border: none;
|
||||
@@ -902,11 +758,7 @@ textarea {
|
||||
}
|
||||
|
||||
.print-btn {
|
||||
<<<<<<< HEAD
|
||||
background-color: #4CAF50;
|
||||
=======
|
||||
background-color: #4caf50;
|
||||
>>>>>>> v1.3
|
||||
color: white;
|
||||
}
|
||||
|
||||
@@ -937,8 +789,4 @@ textarea {
|
||||
margin: 2cm;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
<template>
|
||||
<div class="medical-form">
|
||||
<<<<<<< HEAD
|
||||
<h2 style="text-align: center;">{{ userStore.hospitalName || '长春市朝阳区中医院' }} -入院记录</h2>
|
||||
|
||||
=======
|
||||
<h2 style="text-align: center">
|
||||
{{ userStore.hospitalName || '长春市朝阳区中医院' }} -入院记录
|
||||
</h2>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<!-- 滚动内容区域 -->
|
||||
<div class="form-scroll-container">
|
||||
<el-form
|
||||
@@ -23,23 +18,6 @@
|
||||
<h4 class="section-title">基础信息</h4>
|
||||
<div class="adaptive-grid form-section">
|
||||
<el-form-item label="姓名" prop="patientName" class="grid-item required">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
placeholder="请输入姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="住院号" prop="hospitalNo" class="grid-item required">
|
||||
<el-input
|
||||
v-model="formData.hospitalNo"
|
||||
placeholder="请输入住院号"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择" style="width: 100%;">
|
||||
=======
|
||||
<el-input v-model="formData.patientName" placeholder="请输入姓名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="住院号" prop="hospitalNo" class="grid-item required">
|
||||
@@ -47,43 +25,17 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择" style="width: 100%">
|
||||
>>>>>>> v1.3
|
||||
<el-option label="男" value="男"></el-option>
|
||||
<el-option label="女" value="女"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model.number="formData.age"
|
||||
placeholder="请输入年龄"
|
||||
clearable
|
||||
/>
|
||||
=======
|
||||
<el-input v-model.number="formData.age" placeholder="请输入年龄" clearable />
|
||||
>>>>>>> v1.3
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="民族" prop="nation" class="grid-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.nation"
|
||||
placeholder="请输入民族"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="职业" prop="occupation" class="grid-item">
|
||||
<el-input
|
||||
v-model="formData.occupation"
|
||||
placeholder="请输入职业"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="婚姻状况" prop="marriage" class="grid-item">
|
||||
<el-select v-model="formData.marriage" placeholder="请选择" clearable style="width: 100%;">
|
||||
=======
|
||||
<el-input v-model="formData.nation" placeholder="请输入民族" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="职业" prop="occupation" class="grid-item">
|
||||
@@ -96,48 +48,12 @@
|
||||
clearable
|
||||
style="width: 100%"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-option label="已婚" value="已婚"></el-option>
|
||||
<el-option label="未婚" value="未婚"></el-option>
|
||||
<el-option label="离异" value="离异"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="出生地" prop="birthplace" class="grid-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.birthplace"
|
||||
placeholder="请输入出生地"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="入院时间" prop="admissionTime" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.admissionTime"
|
||||
type="datetime"
|
||||
placeholder="选择入院时间"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
style="width: 100%;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="记录时间" prop="recordTime" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.recordTime"
|
||||
type="datetime"
|
||||
placeholder="选择记录时间"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
style="width: 100%;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="病史陈述者" prop="historyReporter" class="grid-item">
|
||||
<el-input
|
||||
v-model="formData.historyReporter"
|
||||
placeholder="请输入陈述者"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="可靠程度" prop="reliability" class="grid-item">
|
||||
<el-select v-model="formData.reliability" placeholder="请选择" style="width: 100%;">
|
||||
=======
|
||||
<el-input v-model="formData.birthplace" placeholder="请输入出生地" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="入院时间" prop="admissionTime" class="grid-item required">
|
||||
@@ -163,7 +79,6 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="可靠程度" prop="reliability" class="grid-item">
|
||||
<el-select v-model="formData.reliability" placeholder="请选择" style="width: 100%">
|
||||
>>>>>>> v1.3
|
||||
<el-option label="可靠" value="可靠"></el-option>
|
||||
<el-option label="基本可靠" value="基本可靠"></el-option>
|
||||
<el-option label="不可靠" value="不可靠"></el-option>
|
||||
@@ -175,137 +90,76 @@
|
||||
<h4 class="section-title">病史信息</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="主诉" prop="complaint" class="history-item required">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.complaint"
|
||||
type="textarea"
|
||||
placeholder="请输入主诉"
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.complaint"
|
||||
type="textarea"
|
||||
placeholder="请输入主诉"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="200"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="现病史" prop="presentIllness" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
type="textarea"
|
||||
placeholder="请详细描述现病史"
|
||||
=======
|
||||
|
||||
<el-form-item label="现病史" prop="presentIllness" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
type="textarea"
|
||||
placeholder="请详细描述现病史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="既往史" prop="pastHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.pastHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入既往史"
|
||||
=======
|
||||
|
||||
<el-form-item label="既往史" prop="pastHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.pastHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入既往史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="800"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="个人史" prop="personalHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入个人史"
|
||||
=======
|
||||
|
||||
<el-form-item label="个人史" prop="personalHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入个人史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="婚育史" prop="maritalHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.maritalHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入婚育史"
|
||||
=======
|
||||
|
||||
<el-form-item label="婚育史" prop="maritalHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.maritalHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入婚育史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="月经史" prop="menstrualHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.menstrualHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入月经史"
|
||||
=======
|
||||
|
||||
<el-form-item label="月经史" prop="menstrualHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.menstrualHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入月经史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="家族史" prop="familyHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入家族史"
|
||||
=======
|
||||
|
||||
<el-form-item label="家族史" prop="familyHistory" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
type="textarea"
|
||||
placeholder="请输入家族史"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
@@ -317,17 +171,10 @@
|
||||
<h4 class="section-title">中医望闻问切</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="望闻问切" prop="tcmInfo" class="history-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.tcmInfo"
|
||||
type="textarea"
|
||||
placeholder="请输入中医望闻问切结果"
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.tcmInfo"
|
||||
type="textarea"
|
||||
placeholder="请输入中医望闻问切结果"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="600"
|
||||
show-word-limit
|
||||
@@ -341,33 +188,16 @@
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="体温" prop="temp" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model.number="formData.temp"
|
||||
type="number"
|
||||
step="0.1"
|
||||
placeholder="如36.0"
|
||||
=======
|
||||
<el-input
|
||||
v-model.number="formData.temp"
|
||||
type="number"
|
||||
step="0.1"
|
||||
placeholder="如36.0"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">℃</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="脉搏" prop="pulse" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.pulse"
|
||||
type="number"
|
||||
placeholder="如76"
|
||||
=======
|
||||
|
||||
<el-form-item label="脉搏" prop="pulse" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
@@ -375,21 +205,11 @@
|
||||
v-model.number="formData.pulse"
|
||||
type="number"
|
||||
placeholder="如76"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="呼吸" prop="respiration" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.respiration"
|
||||
type="number"
|
||||
placeholder="如16"
|
||||
=======
|
||||
|
||||
<el-form-item label="呼吸" prop="respiration" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
@@ -397,42 +217,23 @@
|
||||
v-model.number="formData.respiration"
|
||||
type="number"
|
||||
placeholder="如16"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="血压" prop="bp" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model="formData.bp"
|
||||
placeholder="如188/94"
|
||||
=======
|
||||
|
||||
<el-form-item label="血压" prop="bp" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model="formData.bp"
|
||||
placeholder="如188/94"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
@blur="validateBloodPressure"
|
||||
/>
|
||||
<span class="unit">mmHg</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="身高" prop="height" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.height"
|
||||
type="number"
|
||||
placeholder="如165"
|
||||
=======
|
||||
|
||||
<el-form-item label="身高" prop="height" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
@@ -440,21 +241,11 @@
|
||||
v-model.number="formData.height"
|
||||
type="number"
|
||||
placeholder="如165"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">cm</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="体重" prop="weight" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.weight"
|
||||
type="number"
|
||||
placeholder="如79"
|
||||
=======
|
||||
|
||||
<el-form-item label="体重" prop="weight" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
@@ -462,124 +253,69 @@
|
||||
v-model.number="formData.weight"
|
||||
type="number"
|
||||
placeholder="如79"
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">kg</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="BMI" prop="bmi" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model="formData.bmi"
|
||||
placeholder="如29.02"
|
||||
readonly
|
||||
/>
|
||||
=======
|
||||
|
||||
<el-form-item label="BMI" prop="bmi" class="grid-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.bmi" placeholder="如29.02" readonly />
|
||||
>>>>>>> v1.3
|
||||
<span class="unit">kg/m²</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label="一般情况" prop="general" class="history-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.general"
|
||||
type="textarea"
|
||||
placeholder="请输入一般情况"
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.general"
|
||||
type="textarea"
|
||||
placeholder="请输入一般情况"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="300"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="皮肤粘膜" prop="skin" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.skin"
|
||||
type="textarea"
|
||||
placeholder="请输入皮肤粘膜情况"
|
||||
=======
|
||||
|
||||
<el-form-item label="皮肤粘膜" prop="skin" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.skin"
|
||||
type="textarea"
|
||||
placeholder="请输入皮肤粘膜情况"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="300"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="胸部(心、肺)" prop="chest" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.chest"
|
||||
type="textarea"
|
||||
placeholder="请输入胸部检查结果"
|
||||
=======
|
||||
|
||||
<el-form-item label="胸部(心、肺)" prop="chest" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.chest"
|
||||
type="textarea"
|
||||
placeholder="请输入胸部检查结果"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="腹部" prop="abdomen" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.abdomen"
|
||||
type="textarea"
|
||||
placeholder="请输入腹部检查结果"
|
||||
=======
|
||||
|
||||
<el-form-item label="腹部" prop="abdomen" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.abdomen"
|
||||
type="textarea"
|
||||
placeholder="请输入腹部检查结果"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="四肢/神经系统" prop="limbsNervous" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.limbsNervous"
|
||||
type="textarea"
|
||||
placeholder="请输入四肢及神经系统检查结果"
|
||||
=======
|
||||
|
||||
<el-form-item label="四肢/神经系统" prop="limbsNervous" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.limbsNervous"
|
||||
type="textarea"
|
||||
placeholder="请输入四肢及神经系统检查结果"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
@@ -591,17 +327,10 @@
|
||||
<h4 class="section-title">辅助检查</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="检查结果" prop="auxExam" class="history-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.auxExam"
|
||||
type="textarea"
|
||||
placeholder="请输入辅助检查结果"
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.auxExam"
|
||||
type="textarea"
|
||||
placeholder="请输入辅助检查结果"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
@@ -613,37 +342,21 @@
|
||||
<h4 class="section-title">初步诊断</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="中医诊断" prop="tcmDiagnosis" class="history-item">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="formData.tcmDiagnosis"
|
||||
type="textarea"
|
||||
placeholder="如:胸痹心痛(气阴两虚证)"
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.tcmDiagnosis"
|
||||
type="textarea"
|
||||
placeholder="如:胸痹心痛(气阴两虚证)"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="西医诊断" prop="westernDiagnosis" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.westernDiagnosis"
|
||||
type="textarea"
|
||||
placeholder="如:1.冠状动脉粥样硬化性心脏病"
|
||||
=======
|
||||
|
||||
<el-form-item label="西医诊断" prop="westernDiagnosis" class="history-item">
|
||||
<el-input
|
||||
v-model="formData.westernDiagnosis"
|
||||
type="textarea"
|
||||
placeholder="如:1.冠状动脉粥样硬化性心脏病"
|
||||
>>>>>>> v1.3
|
||||
autosize
|
||||
maxlength="800"
|
||||
show-word-limit
|
||||
@@ -653,32 +366,6 @@
|
||||
|
||||
<!-- 7. 签名信息(三列布局) -->
|
||||
<h4 class="section-title">签名信息</h4>
|
||||
<<<<<<< HEAD
|
||||
<div class="adaptive-grid form-section" style="grid-template-columns: repeat(3, 1fr);">
|
||||
<el-form-item label="医师签名" prop="doctorSign" class="grid-item">
|
||||
<el-input
|
||||
v-model="formData.doctorSign"
|
||||
placeholder="请签名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="上级医师签名" prop="superiorSign" class="grid-item">
|
||||
<el-input
|
||||
v-model="formData.superiorSign"
|
||||
placeholder="请签名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="记录日期" prop="signDate" class="grid-item">
|
||||
<el-date-picker
|
||||
v-model="formData.signDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
style="width: 100%;"
|
||||
=======
|
||||
<div class="adaptive-grid form-section" style="grid-template-columns: repeat(3, 1fr)">
|
||||
<el-form-item label="医师签名" prop="doctorSign" class="grid-item">
|
||||
<el-input v-model="formData.doctorSign" placeholder="请签名" clearable />
|
||||
@@ -695,7 +382,6 @@
|
||||
placeholder="选择日期"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
style="width: 100%"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
@@ -707,22 +393,11 @@
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<admissionRecord v-if="isShowprintDom" ref="recordPrintRef"></admissionRecord>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, watch, onMounted } from 'vue';
|
||||
<<<<<<< HEAD
|
||||
import { ElInput, ElSelect, ElOption, ElDatePicker, ElButton, ElMessage, ElMessageBox, ElForm, ElFormItem } from 'element-plus';
|
||||
import useUserStore from '../store/modules/user';
|
||||
|
||||
defineOptions({
|
||||
name: 'InHospitalRecord',
|
||||
components: { ElInput, ElSelect, ElOption, ElDatePicker, ElButton, ElForm, ElFormItem }
|
||||
=======
|
||||
import { previewPrint } from '../utils/printUtils';
|
||||
import admissionRecord from '../views/hospitalRecord/components/admissionRecord.vue';
|
||||
import {
|
||||
@@ -742,7 +417,6 @@ const recordPrintRef = ref();
|
||||
defineOptions({
|
||||
name: 'InHospitalRecord',
|
||||
components: { ElInput, ElSelect, ElOption, ElDatePicker, ElButton, ElForm, ElFormItem },
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// Props与事件
|
||||
@@ -768,28 +442,6 @@ const formData = reactive({
|
||||
gender: patient?.genderEnum_enumText || '',
|
||||
age: patient?.age || '',
|
||||
nation: '',
|
||||
<<<<<<< HEAD
|
||||
occupation: '',// 职业
|
||||
marriage: '',// 婚姻状况
|
||||
birthplace: '',// 出生地
|
||||
admissionTime: '',// 入院时间
|
||||
recordTime: '',// 记录时间
|
||||
historyReporter: '',// 病史陈述者
|
||||
reliability: '可靠',// 可靠程度
|
||||
// 病史信息
|
||||
complaint: '',// 主诉
|
||||
presentIllness: '',// 现病史
|
||||
pastIllness: '',// 既往史
|
||||
personalHistory: '',// 个人史
|
||||
allergyHistory: '',// 过敏史
|
||||
pastHistory: '',// 既往史
|
||||
familyHistory: '',// 家族史
|
||||
maritalHistory: '',// 婚姻史
|
||||
menstrualHistory: '',// 月经史
|
||||
// 中医信息
|
||||
tcmInfo: '',
|
||||
|
||||
=======
|
||||
occupation: '', // 职业
|
||||
marriage: '', // 婚姻状况
|
||||
birthplace: '', // 出生地
|
||||
@@ -810,7 +462,6 @@ const formData = reactive({
|
||||
// 中医信息
|
||||
tcmInfo: '',
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 体格检查
|
||||
temp: '',
|
||||
pulse: '',
|
||||
@@ -824,20 +475,6 @@ const formData = reactive({
|
||||
chest: '',
|
||||
abdomen: '',
|
||||
limbsNervous: '',
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 辅助检查
|
||||
auxExam: '',
|
||||
|
||||
// 诊断信息
|
||||
tcmDiagnosis: '',
|
||||
westernDiagnosis: '',
|
||||
|
||||
// 签名信息
|
||||
doctorSign: '',
|
||||
superiorSign: '',
|
||||
signDate: ''
|
||||
=======
|
||||
|
||||
// 辅助检查
|
||||
auxExam: '',
|
||||
@@ -850,35 +487,10 @@ const formData = reactive({
|
||||
doctorSign: '',
|
||||
superiorSign: '',
|
||||
signDate: '',
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// 表单校验规则
|
||||
const rules = reactive({
|
||||
<<<<<<< HEAD
|
||||
name: [
|
||||
{ required: true, message: '请填写姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
hospitalNo: [
|
||||
{ required: true, message: '请填写住院号', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
gender: [
|
||||
{ required: true, message: '请选择性别', trigger: ['change', 'submit'] }
|
||||
],
|
||||
age: [
|
||||
{ required: true, message: '请填写年龄', trigger: ['blur', 'submit'] },
|
||||
{ type: 'number', min: 1, max: 120, message: '年龄需在1-120岁之间', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
admissionTime: [
|
||||
{ required: true, message: '请选择入院时间', trigger: ['change', 'submit'] }
|
||||
],
|
||||
recordTime: [
|
||||
{ required: true, message: '请选择记录时间', trigger: ['change', 'submit'] }
|
||||
],
|
||||
chiefComplaint: [
|
||||
{ required: true, message: '请填写主诉', trigger: ['blur', 'submit'] }
|
||||
]
|
||||
=======
|
||||
name: [{ required: true, message: '请填写姓名', trigger: ['blur', 'submit'] }],
|
||||
hospitalNo: [{ required: true, message: '请填写住院号', trigger: ['blur', 'submit'] }],
|
||||
gender: [{ required: true, message: '请选择性别', trigger: ['change', 'submit'] }],
|
||||
@@ -895,7 +507,6 @@ const rules = reactive({
|
||||
admissionTime: [{ required: true, message: '请选择入院时间', trigger: ['change', 'submit'] }],
|
||||
recordTime: [{ required: true, message: '请选择记录时间', trigger: ['change', 'submit'] }],
|
||||
chiefComplaint: [{ required: true, message: '请填写主诉', trigger: ['blur', 'submit'] }],
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// 生命周期
|
||||
@@ -912,19 +523,11 @@ onMounted(() => {
|
||||
}
|
||||
if (!formData.patientName) {
|
||||
formData.patientName = patient?.patientName || '';
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
if (!formData.gender) {
|
||||
formData.gender = patient?.genderEnum_enumText || '';
|
||||
}
|
||||
if (!formData.age) {
|
||||
=======
|
||||
}
|
||||
if (!formData.gender) {
|
||||
formData.gender = patient?.genderEnum_enumText || '';
|
||||
}
|
||||
if (!formData.age) {
|
||||
>>>>>>> v1.3
|
||||
formData.age = patient?.age || '';
|
||||
}
|
||||
if (!formData.hospitalNo) {
|
||||
@@ -943,23 +546,6 @@ watch([() => formData.height, () => formData.weight], ([newHeight, newWeight]) =
|
||||
});
|
||||
|
||||
// 入院时间变化处理
|
||||
<<<<<<< HEAD
|
||||
watch(() => formData.admissionTime, (val) => {
|
||||
if (val && !formData.recordTime) {
|
||||
ElMessageBox.confirm(
|
||||
'是否将记录时间同步为入院时间?',
|
||||
'时间同步提示',
|
||||
{
|
||||
confirmButtonText: '同步',
|
||||
cancelButtonText: '手动设置',
|
||||
type: 'info'
|
||||
}
|
||||
).then(() => {
|
||||
formData.recordTime = val;
|
||||
}).catch(() => {});
|
||||
}
|
||||
});
|
||||
=======
|
||||
watch(
|
||||
() => formData.admissionTime,
|
||||
(val) => {
|
||||
@@ -976,7 +562,6 @@ watch(
|
||||
}
|
||||
}
|
||||
);
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 血压格式校验
|
||||
const validateBloodPressure = () => {
|
||||
@@ -998,11 +583,6 @@ const submit = () => {
|
||||
validateBloodPressure();
|
||||
if (!formData.bp) return; // 格式错误时终止提交
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
emits('submitOk', formData);
|
||||
ElMessage.success('记录保存成功!');
|
||||
}
|
||||
@@ -1011,37 +591,6 @@ const submit = () => {
|
||||
|
||||
// 新增:重置表单方法(带确认提示)
|
||||
const handleReset = () => {
|
||||
<<<<<<< HEAD
|
||||
ElMessageBox.confirm(
|
||||
'确定要重置表单吗?所有已填写内容将被清空,且不可恢复',
|
||||
'重置确认',
|
||||
{
|
||||
confirmButtonText: '确认重置',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
center: true
|
||||
}
|
||||
).then(() => {
|
||||
// 执行表单重置
|
||||
formRef.value.resetFields();
|
||||
// 保留患者基础信息和默认值(避免清空关键基础数据)
|
||||
formData.patientName = patient?.name || '';
|
||||
formData.hospitalNo = patient?.busNo || '';
|
||||
formData.gender = patient?.genderEnum_enumText || '';
|
||||
formData.age = patient?.age || '';
|
||||
formData.reliability = '可靠';
|
||||
// 重置时间为当前时间
|
||||
const today = new Date();
|
||||
formData.admissionTime = formatDateTime(today);
|
||||
formData.recordTime = formatDateTime(today);
|
||||
formData.signDate = formatDateTime(today);
|
||||
// 重置成功提示
|
||||
ElMessage.success('表单已成功重置');
|
||||
}).catch(() => {
|
||||
// 取消重置提示
|
||||
ElMessage.info('已取消表单重置');
|
||||
});
|
||||
=======
|
||||
ElMessageBox.confirm('确定要重置表单吗?所有已填写内容将被清空,且不可恢复', '重置确认', {
|
||||
confirmButtonText: '确认重置',
|
||||
cancelButtonText: '取消',
|
||||
@@ -1069,7 +618,6 @@ const handleReset = () => {
|
||||
// 取消重置提示
|
||||
ElMessage.info('已取消表单重置');
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
};
|
||||
|
||||
// 表单数据赋值
|
||||
@@ -1089,10 +637,6 @@ const formatDateTime = (date) => {
|
||||
return `${year}-${month}-${day} ${hour}:${minute}`;
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 暴露接口
|
||||
defineExpose({ formData, submit, setFormData, handleReset });
|
||||
=======
|
||||
// 打印方法
|
||||
const printFun = () => {
|
||||
console.log('入院记录打印');
|
||||
@@ -1108,7 +652,6 @@ const printFun = () => {
|
||||
|
||||
// 暴露接口
|
||||
defineExpose({ formData, submit, setFormData, handleReset, printFun });
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -1116,12 +659,7 @@ defineExpose({ formData, submit, setFormData, handleReset, printFun });
|
||||
.medical-form {
|
||||
max-width: 1200px;
|
||||
width: 100%;
|
||||
<<<<<<< HEAD
|
||||
height: 700px;
|
||||
margin: 15px auto;
|
||||
=======
|
||||
height: 28000px;
|
||||
>>>>>>> v1.3
|
||||
padding: 15px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 8px;
|
||||
@@ -1257,12 +795,8 @@ defineExpose({ formData, submit, setFormData, handleReset, printFun });
|
||||
.adaptive-grid {
|
||||
grid-template-columns: 1fr; /* 小屏幕下单列显示 */
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
.grid-item, .history-item {
|
||||
=======
|
||||
.grid-item,
|
||||
.history-item {
|
||||
>>>>>>> v1.3
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
/* 小屏幕按钮居中 */
|
||||
@@ -1277,8 +811,4 @@ defineExpose({ formData, submit, setFormData, handleReset, printFun });
|
||||
grid-template-columns: repeat(2, 1fr); /* 中等屏幕下两列显示 */
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -14,11 +14,7 @@
|
||||
label-width="120px"
|
||||
label-align="left"
|
||||
class="doc-content"
|
||||
<<<<<<< HEAD
|
||||
style="height: 60vh; overflow: scroll;"
|
||||
=======
|
||||
style="height: 60vh; overflow: scroll"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<!-- 患者与手术基础信息 -->
|
||||
<section class="doc-section">
|
||||
@@ -27,35 +23,12 @@
|
||||
<el-form-item label="患者姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" clearable />
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" type="number" placeholder="请输入年龄" />
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室" prop="department" class="grid-item required">
|
||||
<el-input v-model="formData.department" placeholder="如:普外科" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="病房/床号" prop="bedNo" class="grid-item required">
|
||||
<el-input v-model="formData.bedNo" placeholder="如:502-03" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
@@ -72,7 +45,6 @@
|
||||
<el-input v-model="formData.bedNo" placeholder="如:502-03" clearable />
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="手术日期/时间" prop="operationDateTime" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.operationDateTime"
|
||||
@@ -91,25 +63,6 @@
|
||||
<el-form-item label="手术者" prop="surgeon" class="grid-item required">
|
||||
<el-input v-model="formData.surgeon" placeholder="主刀医师姓名" clearable />
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="第一助手" prop="firstAssistant" class="grid-item required">
|
||||
<el-input v-model="formData.firstAssistant" placeholder="第一助手姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="第二助手" prop="secondAssistant" class="grid-item">
|
||||
<el-input v-model="formData.secondAssistant" placeholder="第二助手姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="麻醉医师" prop="anesthesiologist" class="grid-item required">
|
||||
<el-input v-model="formData.anesthesiologist" placeholder="麻醉医师姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="巡回护士" prop="circulatingNurse" class="grid-item required">
|
||||
<el-input v-model="formData.circulatingNurse" placeholder="巡回护士姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="第一助手" prop="firstAssistant" class="grid-item required">
|
||||
<el-input v-model="formData.firstAssistant" placeholder="第一助手姓名" clearable />
|
||||
@@ -127,7 +80,6 @@
|
||||
<el-input v-model="formData.circulatingNurse" placeholder="巡回护士姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="器械护士" prop="scrubNurse" class="grid-item required">
|
||||
<el-input v-model="formData.scrubNurse" placeholder="器械护士姓名" clearable />
|
||||
</el-form-item>
|
||||
@@ -137,13 +89,6 @@
|
||||
<!-- 手术详情 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">三、手术详情</h2>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="手术名称" prop="operationName" class="full-width-item required">
|
||||
<el-input v-model="formData.operationName" placeholder="规范手术名称(如:腹腔镜下胆囊切除术)" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="手术名称" prop="operationName" class="full-width-item required">
|
||||
<el-input
|
||||
@@ -153,7 +98,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="手术方式" prop="operationMethod" class="full-width-item required">
|
||||
<el-select v-model="formData.operationMethod" placeholder="选择手术方式">
|
||||
<el-option label="开放手术" value="开放手术" />
|
||||
@@ -161,14 +105,6 @@
|
||||
<el-option label="介入手术" value="介入手术" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="手术入路" prop="surgicalApproach" class="full-width-item required">
|
||||
<el-input v-model="formData.surgicalApproach" placeholder="如:右上腹经腹直肌切口" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="术中发现" prop="intraoperativeFindings" class="full-width-item required">
|
||||
=======
|
||||
|
||||
<el-form-item label="手术入路" prop="surgicalApproach" class="full-width-item required">
|
||||
<el-input
|
||||
@@ -183,7 +119,6 @@
|
||||
prop="intraoperativeFindings"
|
||||
class="full-width-item required"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-input
|
||||
v-model="formData.intraoperativeFindings"
|
||||
type="textarea"
|
||||
@@ -193,11 +128,6 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="手术过程" prop="operationProcess" class="full-width-item required">
|
||||
<el-input
|
||||
v-model="formData.operationProcess"
|
||||
@@ -216,13 +146,6 @@
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="术中出血量" prop="bloodLoss" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model.number="formData.bloodLoss" type="number" placeholder="请输入出血量" />
|
||||
<span class="unit">ml</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
<el-input
|
||||
v-model.number="formData.bloodLoss"
|
||||
type="number"
|
||||
@@ -232,24 +155,12 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="输血情况" prop="bloodTransfusion" class="grid-item">
|
||||
<el-select v-model="formData.bloodTransfusion" placeholder="是否输血">
|
||||
<el-option label="是" value="是" />
|
||||
<el-option label="否" value="否" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="引流管放置" prop="drainageTube" class="grid-item">
|
||||
<el-input v-model="formData.drainageTube" placeholder="如:腹腔引流管1根" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="标本处理" prop="specimenDisposal" class="grid-item required">
|
||||
<el-input v-model="formData.specimenDisposal" placeholder="如:胆囊标本送病理检查" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="引流管放置" prop="drainageTube" class="grid-item">
|
||||
<el-input v-model="formData.drainageTube" placeholder="如:腹腔引流管1根" clearable />
|
||||
@@ -263,7 +174,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="手术结束时间" prop="operationEndTime" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.operationEndTime"
|
||||
@@ -272,11 +182,6 @@
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="患者去向" prop="patientDestination" class="grid-item required">
|
||||
<el-select v-model="formData.patientDestination" placeholder="选择去向">
|
||||
<el-option label="ICU" value="ICU" />
|
||||
@@ -289,43 +194,25 @@
|
||||
<!-- 签署区域 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">五、签署确认</h2>
|
||||
<<<<<<< HEAD
|
||||
<div class="adaptive-grid signature-area" style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));">
|
||||
=======
|
||||
<div
|
||||
class="adaptive-grid signature-area"
|
||||
style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr))"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="手术者签名" prop="surgeonSignature" class="grid-item required">
|
||||
<el-input v-model="formData.surgeonSignature" placeholder="主刀医师签字" clearable />
|
||||
<div class="signature-tip">请手术者亲笔签名</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="记录者签名" prop="recorderSignature" class="grid-item required">
|
||||
<el-input v-model="formData.recorderSignature" placeholder="记录者签字" clearable />
|
||||
<div class="signature-tip">请记录者(如第一助手)签字</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="记录日期" prop="recordDate" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.recordDate"
|
||||
type="date"
|
||||
placeholder="选择记录日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
<<<<<<< HEAD
|
||||
style="width: 100%;"
|
||||
=======
|
||||
style="width: 100%"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
@@ -339,22 +226,11 @@
|
||||
<el-button type="warning" @click="handleReset">重置表单</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<intOperRecordSheet v-if="isShowprintDom" ref="recordPrintRef"></intOperRecordSheet>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
<<<<<<< HEAD
|
||||
import { ElMessage, ElMessageBox, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElDatePicker, ElButton } from 'element-plus';
|
||||
|
||||
// 医院名称
|
||||
const hospitalName = '长春市朝阳区中医院';
|
||||
defineOptions({
|
||||
name: 'iInHospitalSurgicalRecord'
|
||||
=======
|
||||
import intOperRecordSheet from '../views/hospitalRecord/components/intOperRecordSheet.vue';
|
||||
import {
|
||||
ElMessage,
|
||||
@@ -374,7 +250,6 @@ const recordPrintRef = ref();
|
||||
const hospitalName = '长春市朝阳区中医院';
|
||||
defineOptions({
|
||||
name: 'iInHospitalSurgicalRecord',
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
// 表单引用
|
||||
const formRef = ref(null);
|
||||
@@ -388,115 +263,6 @@ const formData = reactive({
|
||||
age: '',
|
||||
department: '',
|
||||
bedNo: '',
|
||||
<<<<<<< HEAD
|
||||
operationDateTime: '',// 手术日期时间
|
||||
|
||||
// 手术团队信息
|
||||
surgeon: '',// 主刀医师
|
||||
firstAssistant: '',// 第一助手
|
||||
secondAssistant: '',// 第二助手
|
||||
anesthesiologist: '',// 麻醉医师
|
||||
circulatingNurse: '',// 巡回护士
|
||||
scrubNurse: '',// 器械护士
|
||||
|
||||
// 手术详情
|
||||
operationName: '',// 规范手术名称
|
||||
operationMethod: '',// 手术方式
|
||||
surgicalApproach: '',// 手术入路
|
||||
intraoperativeFindings: '',// 术中发现
|
||||
operationProcess: '',// 手术过程
|
||||
|
||||
// 术后情况
|
||||
bloodLoss: '',// 术中出血量
|
||||
bloodTransfusion: '',// 输血情况
|
||||
drainageTube: '',// 引流管放置
|
||||
specimenDisposal: '',// 标本处理
|
||||
operationEndTime: '',// 手术结束时间
|
||||
patientDestination: '',// 患者去向
|
||||
|
||||
// 签署信息
|
||||
surgeonSignature: '',// 手术者签名
|
||||
recorderSignature: '',// 记录者签名
|
||||
recordDate: ''// 记录日期
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = reactive({
|
||||
busNo: [
|
||||
{ required: true, message: '请填写住院号', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
patientName: [
|
||||
{ required: true, message: '请填写患者姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
gender: [
|
||||
{ required: true, message: '请选择性别', trigger: ['change', 'submit'] }
|
||||
],
|
||||
age: [
|
||||
{ required: true, message: '请填写年龄', trigger: ['blur', 'submit'] },
|
||||
{ type: 'number', min: 0, max: 150, message: '年龄需在0-150之间', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
department: [
|
||||
{ required: true, message: '请填写科室', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
bedNo: [
|
||||
{ required: true, message: '请填写病房/床号', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
operationDateTime: [
|
||||
{ required: true, message: '请选择手术日期时间', trigger: ['change', 'submit'] }
|
||||
],
|
||||
surgeon: [
|
||||
{ required: true, message: '请填写手术者姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
firstAssistant: [
|
||||
{ required: true, message: '请填写第一助手姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
anesthesiologist: [
|
||||
{ required: true, message: '请填写麻醉医师姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
circulatingNurse: [
|
||||
{ required: true, message: '请填写巡回护士姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
scrubNurse: [
|
||||
{ required: true, message: '请填写器械护士姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
operationName: [
|
||||
{ required: true, message: '请填写手术名称', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
operationMethod: [
|
||||
{ required: true, message: '请选择手术方式', trigger: ['change', 'submit'] }
|
||||
],
|
||||
surgicalApproach: [
|
||||
{ required: true, message: '请填写手术入路', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
intraoperativeFindings: [
|
||||
{ required: true, message: '请描述术中发现', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
operationProcess: [
|
||||
{ required: true, message: '请描述手术过程', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
bloodLoss: [
|
||||
{ required: true, message: '请填写术中出血量', trigger: ['blur', 'submit'] },
|
||||
{ type: 'number', min: 0, message: '出血量不能为负数', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
specimenDisposal: [
|
||||
{ required: true, message: '请填写标本处理方式', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
operationEndTime: [
|
||||
{ required: true, message: '请选择手术结束时间', trigger: ['change', 'submit'] }
|
||||
],
|
||||
patientDestination: [
|
||||
{ required: true, message: '请选择患者去向', trigger: ['change', 'submit'] }
|
||||
],
|
||||
surgeonSignature: [
|
||||
{ required: true, message: '请手术者签名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
recorderSignature: [
|
||||
{ required: true, message: '请记录者签名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
recordDate: [
|
||||
{ required: true, message: '请选择记录日期', trigger: ['change', 'submit'] }
|
||||
]
|
||||
=======
|
||||
operationDateTime: '', // 手术日期时间
|
||||
|
||||
// 手术团队信息
|
||||
@@ -584,7 +350,6 @@ const rules = reactive({
|
||||
surgeonSignature: [{ required: true, message: '请手术者签名', trigger: ['blur', 'submit'] }],
|
||||
recorderSignature: [{ required: true, message: '请记录者签名', trigger: ['blur', 'submit'] }],
|
||||
recordDate: [{ required: true, message: '请选择记录日期', trigger: ['change', 'submit'] }],
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// 生命周期
|
||||
@@ -594,10 +359,6 @@ onMounted(() => {
|
||||
formData.operationDateTime = formatDateTime(today);
|
||||
formData.operationEndTime = formatDateTime(today);
|
||||
formData.recordDate = formatDate(today);
|
||||
<<<<<<< HEAD
|
||||
});
|
||||
|
||||
=======
|
||||
if (!formData.patientName) {
|
||||
formData.patientName = patient?.patientName || '';
|
||||
}
|
||||
@@ -620,23 +381,17 @@ onMounted(() => {
|
||||
|
||||
const emits = defineEmits(['submitOk']);
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 提交表单
|
||||
const submit = () => {
|
||||
formRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
ElMessage.success('手术记录保存成功');
|
||||
console.log('手术记录数据:', formData);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
emits('submitOk', formData);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 表单数据赋值
|
||||
const setFormData = (data) => {
|
||||
if (data) {
|
||||
@@ -647,7 +402,6 @@ const setFormData = (data) => {
|
||||
}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 打印功能
|
||||
const handlePrint = () => {
|
||||
formRef.value.validate((valid) => {
|
||||
@@ -661,23 +415,11 @@ const handlePrint = () => {
|
||||
|
||||
// 重置表单
|
||||
const handleReset = () => {
|
||||
<<<<<<< HEAD
|
||||
ElMessageBox.confirm(
|
||||
'确定要重置表单吗?所有已填写内容将被清空',
|
||||
'确认重置',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
=======
|
||||
ElMessageBox.confirm('确定要重置表单吗?所有已填写内容将被清空', '确认重置', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
>>>>>>> v1.3
|
||||
formRef.value.resetFields();
|
||||
const today = new Date();
|
||||
formData.operationDateTime = formatDateTime(today);
|
||||
@@ -703,14 +445,6 @@ const formatDateTime = (date) => {
|
||||
const minute = String(date.getMinutes()).padStart(2, '0');
|
||||
return `${year}-${month}-${day} ${hour}:${minute}`;
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 样式与原代码保持一致,无需修改 */
|
||||
.medical-document {
|
||||
max-width: 1200px;
|
||||
=======
|
||||
const printFun = () => {
|
||||
console.log('入院记录打印');
|
||||
isShowprintDom.value = true;
|
||||
@@ -730,16 +464,12 @@ defineExpose({ submit, setFormData, printFun });
|
||||
.medical-document {
|
||||
max-width: 1440px; /* PC端最优宽度,兼顾大屏和常规屏 */
|
||||
width: 98%; /* 占满父容器98%,保留少量边距 */
|
||||
>>>>>>> v1.3
|
||||
margin: 20px auto;
|
||||
padding: 30px;
|
||||
background: #fff;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
font-family: 'SimSun', '宋体', serif;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
box-sizing: border-box; /* 确保内边距不撑大容器 */
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
.doc-header {
|
||||
@@ -778,13 +508,6 @@ defineExpose({ submit, setFormData, printFun });
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
.adaptive-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 15px 20px;
|
||||
margin-bottom: 15px;
|
||||
=======
|
||||
/* 自适应网格:PC端优先展示多列,优化列宽比例 */
|
||||
.adaptive-grid {
|
||||
display: grid;
|
||||
@@ -793,7 +516,6 @@ defineExpose({ submit, setFormData, printFun });
|
||||
gap: 15px 20px;
|
||||
margin-bottom: 15px;
|
||||
width: 100%;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
.grid-item {
|
||||
@@ -847,21 +569,6 @@ defineExpose({ submit, setFormData, printFun });
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
@media (max-width: 768px) {
|
||||
.medical-document {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.adaptive-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.doc-title {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
=======
|
||||
/* 仅针对小屏设备做基础适配,优先保证PC端体验 */
|
||||
@media (max-width: 768px) {
|
||||
.medical-document {
|
||||
@@ -877,14 +584,11 @@ defineExpose({ submit, setFormData, printFun });
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
.section-title {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/* 超宽屏(≥1920px)优化:适度增大间距,提升视觉体验 */
|
||||
@media (min-width: 1920px) {
|
||||
.medical-document {
|
||||
@@ -897,47 +601,26 @@ defineExpose({ submit, setFormData, printFun });
|
||||
}
|
||||
|
||||
/* 打印样式保留 */
|
||||
>>>>>>> v1.3
|
||||
@media print {
|
||||
.btn-group {
|
||||
display: none;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
.medical-document {
|
||||
box-shadow: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
|
||||
.el-input__inner, .el-select__input, .el-textarea__inner {
|
||||
=======
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.el-input__inner,
|
||||
.el-select__input,
|
||||
.el-textarea__inner {
|
||||
>>>>>>> v1.3
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
.el-form-item__label {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -22,35 +22,12 @@
|
||||
<el-form-item label="姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" clearable />
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" type="number" placeholder="请输入年龄" />
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室/病区" prop="department" class="grid-item required">
|
||||
<el-input v-model="formData.department" placeholder="如:内科疗区" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="病房/床号" prop="bedNo" class="grid-item required">
|
||||
<el-input v-model="formData.bedNo" placeholder="如:307-12" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<div class="input-with-unit">
|
||||
@@ -67,7 +44,6 @@
|
||||
<el-input v-model="formData.bedNo" placeholder="如:307-12" clearable />
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="入院日期" prop="admissionDate" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.admissionDate"
|
||||
@@ -86,19 +62,11 @@
|
||||
<el-form-item label="经治医师" prop="treatingDoctor" class="grid-item required">
|
||||
<el-input v-model="formData.treatingDoctor" placeholder="请输入医师姓名" clearable />
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="主治医师" prop="attendingDoctor" class="grid-item required">
|
||||
<el-input v-model="formData.attendingDoctor" placeholder="请输入医师姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="主治医师" prop="attendingDoctor" class="grid-item required">
|
||||
<el-input v-model="formData.attendingDoctor" placeholder="请输入医师姓名" clearable />
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="科主任" prop="departmentHead" class="grid-item required">
|
||||
<el-input v-model="formData.departmentHead" placeholder="请输入主任姓名" clearable />
|
||||
</el-form-item>
|
||||
@@ -108,11 +76,6 @@
|
||||
<!-- 病情与诊断 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">三、病情与诊断</h2>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="病情状况" prop="condition" class="full-width-item required">
|
||||
<el-input
|
||||
v-model="formData.condition"
|
||||
@@ -123,11 +86,6 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<div class="diagnosis-container">
|
||||
<el-form-item label="中医诊断" prop="tcmDiagnosis" class="diagnosis-item">
|
||||
<el-input
|
||||
@@ -139,11 +97,6 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="西医诊断" prop="westernDiagnosis" class="diagnosis-item">
|
||||
<el-input
|
||||
v-model="formData.westernDiagnosis"
|
||||
@@ -160,11 +113,6 @@
|
||||
<!-- 治疗与检查计划 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">四、治疗与检查计划</h2>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="治疗方案" prop="treatmentPlan" class="full-width-item required">
|
||||
<el-input
|
||||
v-model="formData.treatmentPlan"
|
||||
@@ -175,17 +123,12 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="进一步检查项目" prop="examinationItems" class="full-width-item required">
|
||||
=======
|
||||
|
||||
<el-form-item
|
||||
label="进一步检查项目"
|
||||
prop="examinationItems"
|
||||
class="full-width-item required"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-input
|
||||
v-model="formData.examinationItems"
|
||||
type="textarea"
|
||||
@@ -215,25 +158,14 @@
|
||||
<!-- 签署区域(优化后:三列自适应+细节样式) -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">六、签署确认</h2>
|
||||
<<<<<<< HEAD
|
||||
<div class="adaptive-grid signature-area" style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));">
|
||||
=======
|
||||
<div
|
||||
class="adaptive-grid signature-area"
|
||||
style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr))"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="患者或家属签字" prop="patientSignature" class="grid-item required">
|
||||
<el-input v-model="formData.patientSignature" placeholder="请签字" clearable />
|
||||
<div class="signature-tip">请填写患者或家属签字</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-form-item label="与患者关系" prop="relationship" class="grid-item">
|
||||
<el-input v-model="formData.relationship" placeholder="如:本人、配偶、子女" clearable />
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
|
||||
<el-form-item label="与患者关系" prop="relationship" class="grid-item">
|
||||
<el-input
|
||||
@@ -243,44 +175,27 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="签字日期" prop="signatureDate" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.signatureDate"
|
||||
type="date"
|
||||
placeholder="选择签字日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
<<<<<<< HEAD
|
||||
style="width: 100%;"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
=======
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="沟通医师签字" prop="doctorSignature" class="grid-item required">
|
||||
<el-input v-model="formData.doctorSignature" placeholder="请签字" clearable />
|
||||
<div class="signature-tip">请填写沟通医师签字</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="沟通日期" prop="communicationDate" class="grid-item required">
|
||||
<el-date-picker
|
||||
v-model="formData.communicationDate"
|
||||
type="datetime"
|
||||
placeholder="选择沟通日期时间"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
<<<<<<< HEAD
|
||||
style="width: 100%;"
|
||||
=======
|
||||
style="width: 100%"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
@@ -298,9 +213,6 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
<<<<<<< HEAD
|
||||
import { ElMessage, ElMessageBox, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElDatePicker, ElButton } from 'element-plus';
|
||||
=======
|
||||
import {
|
||||
ElMessage,
|
||||
ElMessageBox,
|
||||
@@ -312,15 +224,10 @@ import {
|
||||
ElDatePicker,
|
||||
ElButton,
|
||||
} from 'element-plus';
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 医院名称
|
||||
const hospitalName = '长春市朝阳区中医院';
|
||||
defineOptions({
|
||||
<<<<<<< HEAD
|
||||
name: 'InHospitalCommunicate'
|
||||
});
|
||||
=======
|
||||
name: 'InHospitalCommunicate',
|
||||
});
|
||||
// Props与事件
|
||||
@@ -353,7 +260,6 @@ onMounted(() => {
|
||||
});
|
||||
const patient = props.patientInfo;
|
||||
console.log('patient1111=======>', JSON.stringify(patient));
|
||||
>>>>>>> v1.3
|
||||
// 表单引用
|
||||
const formRef = ref(null);
|
||||
|
||||
@@ -367,34 +273,14 @@ const formData = reactive({
|
||||
department: '',
|
||||
bedNo: '',
|
||||
admissionDate: '',
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 医疗团队
|
||||
treatingDoctor: '',
|
||||
attendingDoctor: '',
|
||||
departmentHead: '',
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 病情诊断
|
||||
condition: '',
|
||||
tcmDiagnosis: '',
|
||||
westernDiagnosis: '',
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 治疗检查
|
||||
treatmentPlan: '',
|
||||
examinationItems: '',
|
||||
|
||||
// 风险告知
|
||||
riskNotification: '',
|
||||
|
||||
=======
|
||||
|
||||
// 治疗检查
|
||||
treatmentPlan: '',
|
||||
@@ -403,78 +289,16 @@ const formData = reactive({
|
||||
// 风险告知
|
||||
riskNotification: '',
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 签署信息
|
||||
patientSignature: '',
|
||||
relationship: '',
|
||||
signatureDate: '',
|
||||
doctorSignature: '',
|
||||
<<<<<<< HEAD
|
||||
communicationDate: ''
|
||||
=======
|
||||
communicationDate: '',
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = reactive({
|
||||
<<<<<<< HEAD
|
||||
hospitalNo: [
|
||||
{ required: true, message: '请填写住院号', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
patientName: [
|
||||
{ required: true, message: '请填写患者姓名', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
gender: [
|
||||
{ required: true, message: '请选择性别', trigger: ['change', 'submit'] }
|
||||
],
|
||||
age: [
|
||||
{ required: true, message: '请填写年龄', trigger: ['blur', 'submit'] },
|
||||
{ type: 'number', min: 0, max: 150, message: '年龄需在0-150之间', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
department: [
|
||||
{ required: true, message: '请填写科室/病区', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
bedNo: [
|
||||
{ required: true, message: '请填写病房/床号', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
admissionDate: [
|
||||
{ required: true, message: '请选择入院日期', trigger: ['change', 'submit'] }
|
||||
],
|
||||
treatingDoctor: [
|
||||
{ required: true, message: '请填写经治医师', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
attendingDoctor: [
|
||||
{ required: true, message: '请填写主治医师', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
departmentHead: [
|
||||
{ required: true, message: '请填写科主任', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
condition: [
|
||||
{ required: true, message: '请描述病情状况', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
treatmentPlan: [
|
||||
{ required: true, message: '请填写治疗方案', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
examinationItems: [
|
||||
{ required: true, message: '请填写检查项目', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
riskNotification: [
|
||||
{ required: true, message: '请填写风险告知内容', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
patientSignature: [
|
||||
{ required: true, message: '请填写患者或家属签字', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
signatureDate: [
|
||||
{ required: true, message: '请选择签字日期', trigger: ['change', 'submit'] }
|
||||
],
|
||||
doctorSignature: [
|
||||
{ required: true, message: '请填写医师签字', trigger: ['blur', 'submit'] }
|
||||
],
|
||||
communicationDate: [
|
||||
{ required: true, message: '请选择沟通日期', trigger: ['change', 'submit'] }
|
||||
]
|
||||
=======
|
||||
hospitalNo: [{ required: true, message: '请填写住院号', trigger: ['blur', 'submit'] }],
|
||||
patientName: [{ required: true, message: '请填写患者姓名', trigger: ['blur', 'submit'] }],
|
||||
gender: [{ required: true, message: '请选择性别', trigger: ['change', 'submit'] }],
|
||||
@@ -500,7 +324,6 @@ const rules = reactive({
|
||||
signatureDate: [{ required: true, message: '请选择签字日期', trigger: ['change', 'submit'] }],
|
||||
doctorSignature: [{ required: true, message: '请填写医师签字', trigger: ['blur', 'submit'] }],
|
||||
communicationDate: [{ required: true, message: '请选择沟通日期', trigger: ['change', 'submit'] }],
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
// 生命周期
|
||||
@@ -512,27 +335,19 @@ onMounted(() => {
|
||||
formData.communicationDate = formatDateTime(today);
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const emits = defineEmits(['submitOk']);
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 提交表单
|
||||
const submit = () => {
|
||||
formRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
ElMessage.success('记录保存成功');
|
||||
console.log('表单数据:', formData);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
emits('submitOk', formData);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 表单数据赋值
|
||||
const setFormData = (data) => {
|
||||
if (data) {
|
||||
@@ -540,7 +355,6 @@ const setFormData = (data) => {
|
||||
}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 打印功能
|
||||
const handlePrint = () => {
|
||||
formRef.value.validate((valid) => {
|
||||
@@ -554,23 +368,11 @@ const handlePrint = () => {
|
||||
|
||||
// 重置表单
|
||||
const handleReset = () => {
|
||||
<<<<<<< HEAD
|
||||
ElMessageBox.confirm(
|
||||
'确定要重置表单吗?所有已填写内容将被清空',
|
||||
'确认重置',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
=======
|
||||
ElMessageBox.confirm('确定要重置表单吗?所有已填写内容将被清空', '确认重置', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
>>>>>>> v1.3
|
||||
formRef.value.resetFields();
|
||||
const today = new Date();
|
||||
formData.admissionDate = formatDate(today);
|
||||
@@ -596,11 +398,8 @@ const formatDateTime = (date) => {
|
||||
const minute = String(date.getMinutes()).padStart(2, '0');
|
||||
return `${year}-${month}-${day} ${hour}:${minute}`;
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
defineExpose({ submit, setFormData });
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -732,21 +531,6 @@ defineExpose({ submit, setFormData });
|
||||
.medical-document {
|
||||
padding: 15px;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.diagnosis-container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.adaptive-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.doc-title {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
=======
|
||||
|
||||
.diagnosis-container {
|
||||
grid-template-columns: 1fr;
|
||||
@@ -760,7 +544,6 @@ defineExpose({ submit, setFormData });
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
.section-title {
|
||||
font-size: 16px;
|
||||
}
|
||||
@@ -771,40 +554,21 @@ defineExpose({ submit, setFormData });
|
||||
.btn-group {
|
||||
display: none;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
.medical-document {
|
||||
box-shadow: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.el-input__inner, .el-select__input, .el-textarea__inner {
|
||||
=======
|
||||
|
||||
.el-input__inner,
|
||||
.el-select__input,
|
||||
.el-textarea__inner {
|
||||
>>>>>>> v1.3
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
.el-form-item__label {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -1,29 +1,15 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<!-- 门诊病历表单主容器 -->
|
||||
<div class="medical-form">
|
||||
<!-- 患者基本信息展示区域 -->
|
||||
=======
|
||||
<div class="medical-form">
|
||||
>>>>>>> v1.3
|
||||
<div class="patient-name">
|
||||
患者姓名:{{ patient?.patientName || '未知' }} 病历号:{{
|
||||
patient?.busNo || '未知'
|
||||
}}
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
<!-- 医院名称和标题 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<h2 style="text-align: center">{{ userStore.hospitalName }}</h2>
|
||||
<h2 style="text-align: center">门诊病历</h2>
|
||||
|
||||
<!-- 滚动内容区域 -->
|
||||
<div class="form-scroll-container">
|
||||
<<<<<<< HEAD
|
||||
<!-- Element Plus表单组件 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
@@ -32,58 +18,34 @@
|
||||
label-align="left"
|
||||
class="medical-full-form"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!-- 基础信息区域标题 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<h4 class="section-title">基础信息</h4>
|
||||
<!-- 1. 基础信息:单行自适应排列 -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<<<<<<< HEAD
|
||||
<!-- 身高输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="身高" prop="height" class="row-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.height" type="text" placeholder="请输入" />
|
||||
<span class="unit">cm</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 体重输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="体重" prop="weight" class="row-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.weight" type="text" placeholder="请输入" />
|
||||
<span class="unit">kg</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 体温输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="体温" prop="temperature" class="row-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.temperature" type="text" placeholder="请输入" />
|
||||
<span class="unit">℃</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 脉搏输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="脉搏" prop="pulse" class="row-item">
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.pulse" type="text" placeholder="请输入" />
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 发病日期选择项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="发病日期" prop="onsetDate" class="row-item">
|
||||
<el-date-picker
|
||||
v-model="formData.onsetDate"
|
||||
@@ -96,19 +58,10 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<!-- 病史信息区域标题 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<h4 class="section-title">病史信息</h4>
|
||||
<!-- 2. 病史信息:单行自适应排列(新增调整) -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<<<<<<< HEAD
|
||||
<!-- 现病史输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="现病史" prop="presentIllness" class="row-item history-item">
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
@@ -117,17 +70,9 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 既往史输入项 -->
|
||||
<el-form-item label="既往史" prop="pastIllness" class="row-item history-item">
|
||||
<el-input v-model="formData.pastIllness" type="textarea" placeholder="无" autosize />
|
||||
</el-form-item>
|
||||
<!-- 个人史输入项 -->
|
||||
=======
|
||||
<el-form-item label="既往史" prop="pastIllness" class="row-item history-item">
|
||||
<el-input v-model="formData.pastIllness" type="textarea" placeholder="无" autosize />
|
||||
</el-form-item>
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="个人史" prop="personalHistory" class="row-item history-item">
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
@@ -136,10 +81,6 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 过敏史输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="过敏史" prop="allergyHistory" class="row-item history-item">
|
||||
<el-input
|
||||
v-model="formData.allergyHistory"
|
||||
@@ -148,10 +89,6 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<!-- 家族史输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="家族史" prop="familyHistory" class="row-item history-item">
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
@@ -162,11 +99,6 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<!-- 主诉、查体(治疗)、处置、辅助检查区域标题 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<h4 class="section-title">主诉、查体(治疗)、处置、辅助检查</h4>
|
||||
<!-- 3. 主诉(必填) -->
|
||||
<el-form-item label="主诉" prop="complaint" class="required form-item-single">
|
||||
@@ -179,10 +111,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 4. 查体、处理、辅助检查 -->
|
||||
<<<<<<< HEAD
|
||||
<!-- 查体(治疗)输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="查体(治疗)" prop="physicalExam" class="form-item-single">
|
||||
<el-input
|
||||
v-model="formData.physicalExam"
|
||||
@@ -193,10 +121,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 处置输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="处置" prop="treatment" class="form-item-single">
|
||||
<el-input
|
||||
v-model="formData.treatment"
|
||||
@@ -207,10 +131,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 辅助检查输入项 -->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="辅助检查" prop="auxiliaryExam" class="form-item-single">
|
||||
<el-input
|
||||
v-model="formData.auxiliaryExam"
|
||||
@@ -226,62 +146,24 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
// 导入Vue相关功能和组件
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
import { reactive, ref, onBeforeMount, onMounted, watch } from 'vue';
|
||||
import useUserStore from '../store/modules/user';
|
||||
import { ElInput, ElMessage, ElForm, ElFormItem } from 'element-plus';
|
||||
import { patientInfo } from '../views/doctorstation/components/store/patient';
|
||||
import { pa } from 'element-plus/es/locales.mjs';
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 定义组件选项
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
defineOptions({
|
||||
name: 'OutpatientMedicalRecord',
|
||||
components: { ElInput, ElMessage, ElForm, ElFormItem },
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
// // Props与事件,去掉props.patientInfo改为直接从store获取
|
||||
=======
|
||||
// // Props与事件, 去掉props.patientInfo改为直接从store获取
|
||||
>>>>>>> v1.3
|
||||
// const props = defineProps({
|
||||
// patientInfo: {
|
||||
// type: Object,
|
||||
// required: true,
|
||||
// },
|
||||
// });
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 定义组件接收的属性(目前为空)
|
||||
const props = defineProps({});
|
||||
|
||||
// 定义组件触发的事件
|
||||
const emits = defineEmits(['submitOk']);
|
||||
|
||||
// 数据初始化
|
||||
// 获取用户store实例,用于获取医院名称等全局信息
|
||||
const userStore = useUserStore();
|
||||
// 患者信息引用,存储当前就诊患者的基本信息
|
||||
const patient = ref(null);
|
||||
// 表单引用,用于访问表单实例进行验证等操作
|
||||
const formRef = ref(null);
|
||||
|
||||
// 表单数据(全部字符类型)
|
||||
// 存储门诊病历表单的所有字段数据
|
||||
const formData = reactive({
|
||||
height: '', // 身高(cm)
|
||||
weight: '', // 体重(kg)
|
||||
temperature: '', // 体温(℃)
|
||||
pulse: '', // 脉搏(次/分)
|
||||
onsetDate: '', // 发病日期
|
||||
complaint: '', // 主诉(必填项)
|
||||
=======
|
||||
const props = defineProps({});
|
||||
const emits = defineEmits(['submitOk']);
|
||||
|
||||
@@ -298,28 +180,17 @@ const formData = reactive({
|
||||
pulse: '', // 脉搏
|
||||
onsetDate: '', // 发病日期
|
||||
complaint: '', // 主诉(必填)
|
||||
>>>>>>> v1.3
|
||||
presentIllness: '', // 现病史
|
||||
pastIllness: '', // 既往史
|
||||
personalHistory: '', // 个人史
|
||||
allergyHistory: '', // 过敏史
|
||||
<<<<<<< HEAD
|
||||
physicalExam: '', // 查体结果
|
||||
treatment: '', // 处理方案
|
||||
auxiliaryExam: '', // 辅助检查结果
|
||||
=======
|
||||
physicalExam: '', // 查体
|
||||
treatment: '', // 处理
|
||||
auxiliaryExam: '', // 辅助检查
|
||||
>>>>>>> v1.3
|
||||
familyHistory: '', // 家族史
|
||||
});
|
||||
|
||||
// 表单校验规则
|
||||
<<<<<<< HEAD
|
||||
// 定义表单字段的验证规则,目前仅主诉为必填项
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const rules = reactive({
|
||||
complaint: [
|
||||
{
|
||||
@@ -331,23 +202,6 @@ const rules = reactive({
|
||||
});
|
||||
|
||||
// 提交函数
|
||||
<<<<<<< HEAD
|
||||
// 用于触发表单验证并提交数据到父组件
|
||||
const submit = () => {
|
||||
// 表单验证
|
||||
formRef.value.validate((isValid) => {
|
||||
if (isValid) {
|
||||
// 触发submitOk事件,传递表单数据
|
||||
emits('submitOk', formData);
|
||||
// 显示成功消息
|
||||
ElMessage.success('提交成功');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 日期格式化工具函数
|
||||
// 将Date对象格式化为 YYYY-MM-DD HH:mm 格式的字符串
|
||||
=======
|
||||
const submit = () => {
|
||||
formRef.value.validate((isValid) => {
|
||||
if (isValid) {
|
||||
@@ -356,7 +210,6 @@ const submit = () => {
|
||||
});
|
||||
};
|
||||
// 日期格式化工具
|
||||
>>>>>>> v1.3
|
||||
const formatDateTime = (date) => {
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
@@ -365,36 +218,17 @@ const formatDateTime = (date) => {
|
||||
const minute = String(date.getMinutes()).padStart(2, '0');
|
||||
return `${year}-${month}-${day} ${hour}:${minute}`;
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 表单数据赋值函数
|
||||
// 用于外部组件向表单填充已有数据
|
||||
const setFormData = (data) => {
|
||||
if (data) {
|
||||
// 将传入的数据合并到表单数据中
|
||||
=======
|
||||
// 表单数据赋值
|
||||
const setFormData = (data) => {
|
||||
if (data) {
|
||||
>>>>>>> v1.3
|
||||
Object.assign(formData, data);
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 生命周期钩子 - 组件挂载前
|
||||
onBeforeMount(() => {});
|
||||
|
||||
// 生命周期钩子 - 组件挂载后
|
||||
onMounted(() => {
|
||||
console.log('当前患者信息:', patientInfo);
|
||||
// 从store获取患者信息
|
||||
=======
|
||||
// 生命周期
|
||||
onBeforeMount(() => {});
|
||||
onMounted(() => {
|
||||
console.log('当前患者信息:', patientInfo);
|
||||
>>>>>>> v1.3
|
||||
patient.value = patientInfo.value;
|
||||
// 初始化发病日期为当前时间
|
||||
if (!formData.onsetDate) {
|
||||
@@ -403,10 +237,6 @@ onMounted(() => {
|
||||
});
|
||||
|
||||
// 监听患者信息变化,实现联动显示
|
||||
<<<<<<< HEAD
|
||||
// 当patientInfo发生变化时更新本地patient引用
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
watch(
|
||||
() => patientInfo.value,
|
||||
(newPatientInfo) => {
|
||||
@@ -415,12 +245,7 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 暴露接口供父组件调用
|
||||
// 将formData、submit方法和setFormData方法暴露给父组件使用
|
||||
=======
|
||||
// 暴露接口
|
||||
>>>>>>> v1.3
|
||||
defineExpose({ formData, submit, setFormData });
|
||||
</script>
|
||||
|
||||
@@ -430,23 +255,15 @@ defineExpose({ formData, submit, setFormData });
|
||||
max-width: 1200px;
|
||||
width: 100%;
|
||||
min-height: 800px;
|
||||
<<<<<<< HEAD
|
||||
height: 900px;
|
||||
=======
|
||||
height: auto;
|
||||
>>>>>>> v1.3
|
||||
margin: 15px auto;
|
||||
padding: 15px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 8px;
|
||||
font-family: Arial, sans-serif;
|
||||
box-sizing: border-box;
|
||||
<<<<<<< HEAD
|
||||
overflow: visible;
|
||||
=======
|
||||
overflow: hidden; /* 防止内部内容溢出 */
|
||||
position: relative;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/* 顶部姓名样式 */
|
||||
@@ -461,19 +278,12 @@ defineExpose({ formData, submit, setFormData });
|
||||
/* 滚动内容容器 */
|
||||
.form-scroll-container {
|
||||
width: 100%;
|
||||
<<<<<<< HEAD
|
||||
max-height: 80vh;
|
||||
=======
|
||||
max-height: 55vh;
|
||||
>>>>>>> v1.3
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: #ccc #f5f5f5;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
position: relative;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
.form-scroll-container::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
@@ -489,11 +299,8 @@ defineExpose({ formData, submit, setFormData });
|
||||
/* 完整表单容器 */
|
||||
.medical-full-form {
|
||||
width: 100%;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
min-width: 0; /* 防止内容强制拉伸容器 */
|
||||
box-sizing: border-box;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/* 区域通用样式 */
|
||||
@@ -515,11 +322,8 @@ defineExpose({ formData, submit, setFormData });
|
||||
flex-wrap: wrap; /* 自动换行 */
|
||||
align-items: flex-start; /* 顶部对齐,适配文本域高度 */
|
||||
gap: 15px; /* 统一元素间距 */
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
.row-item {
|
||||
margin-bottom: 0; /* 取消底部间距,避免换行重叠 */
|
||||
@@ -590,17 +394,11 @@ defineExpose({ formData, submit, setFormData });
|
||||
.medical-form {
|
||||
height: 80vh;
|
||||
padding: 10px;
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
.form-scroll-container {
|
||||
height: calc(100% - 35px);
|
||||
=======
|
||||
overflow: hidden;
|
||||
}
|
||||
.form-scroll-container {
|
||||
height: calc(100% - 35px);
|
||||
max-height: none;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
.el-form {
|
||||
label-width: 70px !important;
|
||||
@@ -619,8 +417,4 @@ defineExpose({ formData, submit, setFormData });
|
||||
--el-input-textarea-min-height: 80px;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -501,8 +501,6 @@ export function getGroupMarkers(tableData) {
|
||||
}
|
||||
});
|
||||
return tableData;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -532,5 +530,4 @@ export function formatInventory(quantity, partPercent, unitCode, minUnitCode) {
|
||||
// 整除情况
|
||||
const result = absQuantity / partPercent;
|
||||
return isNegative ? '-' + result : result + ' ' + unitCode;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
@@ -3,11 +3,7 @@
|
||||
* 集中管理所有打印相关功能
|
||||
*/
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 打印模板映射表
|
||||
=======
|
||||
// 打印模板映射表 .
|
||||
>>>>>>> v1.3
|
||||
const TEMPLATE_MAP = {
|
||||
// CLINIC_CHARGE: () => import('@/views/charge/cliniccharge/components/template.json'),
|
||||
// DISPOSAL: () => import('@/views/clinicmanagement/disposal/components/disposalTemplate.json'),
|
||||
@@ -25,8 +21,6 @@ const TEMPLATE_MAP = {
|
||||
OUTPATIENT_REGISTRATION: () => import('@/components/Print/OutpatientRegistration.json'),
|
||||
//门诊收费
|
||||
OUTPATIENT_CHARGE: () => import('@/components/Print/OutpatientBilling.json'),
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
//门诊病历
|
||||
OUTPATIENT_MEDICAL_RECORD: () => import('@/components/Print/OutpatientMedicalRecord.json'),
|
||||
//门诊输液贴
|
||||
@@ -46,7 +40,6 @@ const TEMPLATE_MAP = {
|
||||
//中药医生处方单
|
||||
DOC_CHINESE_MEDICINE_PRESCRIPTION: () =>
|
||||
import('@/components/Print/DocChineseMedicinePrescription.json'),
|
||||
>>>>>>> v1.3
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -134,8 +127,6 @@ export const PRINT_TEMPLATE = {
|
||||
PRESCRIPTION: 'PRESCRIPTION',
|
||||
//处置单
|
||||
DISPOSAL: 'DISPOSAL',
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
//门诊病历
|
||||
OUTPATIENT_MEDICAL_RECORD: 'OUTPATIENT_MEDICAL_RECORD',
|
||||
//门诊输液贴
|
||||
@@ -152,7 +143,6 @@ export const PRINT_TEMPLATE = {
|
||||
PHARMACY_PRESCRIPTION: 'PHARMACY_PRESCRIPTION',
|
||||
//中药医生处方单
|
||||
DOC_CHINESE_MEDICINE_PRESCRIPTION: 'DOC_CHINESE_MEDICINE_PRESCRIPTION',
|
||||
>>>>>>> v1.3
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -173,10 +163,7 @@ export function getPrinterList() {
|
||||
}
|
||||
|
||||
import useUserStore from '@/store/modules/user';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
import { ElMessage } from 'element-plus';
|
||||
>>>>>>> v1.3
|
||||
|
||||
/**
|
||||
* 获取当前登录用户ID
|
||||
@@ -329,8 +316,6 @@ export async function selectPrinterAndPrint(
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 预览打印
|
||||
export function previewPrint(elementDom) {
|
||||
if (elementDom) {
|
||||
@@ -347,7 +332,6 @@ export function previewPrint(elementDom) {
|
||||
}
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 默认导出简化的打印方法
|
||||
export default {
|
||||
print: simplePrint,
|
||||
|
||||
@@ -104,14 +104,6 @@
|
||||
style="width: 200px"
|
||||
:class="{ 'error-border': scope.row.error }"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<el-option
|
||||
v-for="dict in med_category_code"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
=======
|
||||
<template v-if="scope.row.itemCode == '1'">
|
||||
<el-option
|
||||
v-for="dict in med_category_code"
|
||||
@@ -128,7 +120,6 @@
|
||||
:value="dict.value"
|
||||
/>
|
||||
</template>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
</template>
|
||||
@@ -226,15 +217,11 @@ import {
|
||||
deletePharmacyDepartment,
|
||||
} from './components/pharmacyDepartment';
|
||||
const { proxy } = getCurrentInstance();
|
||||
<<<<<<< HEAD
|
||||
const { med_category_code } = proxy.useDict('med_category_code');
|
||||
=======
|
||||
const { distribution_category_code, med_category_code, device_category_code } = proxy.useDict(
|
||||
'distribution_category_code',
|
||||
'med_category_code',
|
||||
'device_category_code'
|
||||
);
|
||||
>>>>>>> v1.3
|
||||
import { nextTick } from 'vue';
|
||||
|
||||
const diagnosisTreatmentList = ref([]);
|
||||
|
||||
@@ -36,12 +36,8 @@ export function updateWarehouse(data) {
|
||||
// 删除
|
||||
export function deleteWarehouse(data) {
|
||||
return request({
|
||||
<<<<<<< HEAD
|
||||
url: '/base-data-manage/location/location',
|
||||
=======
|
||||
// url: '/base-data-manage/location/location?locationId=' + data.locationId,
|
||||
url: '/base-data-manage/location/location?busNo=' + data.busNo,
|
||||
>>>>>>> v1.3
|
||||
method: 'delete',
|
||||
params: {
|
||||
locationId: data.locationId,
|
||||
|
||||
@@ -292,38 +292,12 @@ function submitForm() {
|
||||
|
||||
// 删除
|
||||
function handelDelete(data) {
|
||||
<<<<<<< HEAD
|
||||
proxy.$modal.confirm('是否确认删除该仓库位置?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
loading.value = true;
|
||||
deleteWarehouse({ locationId: data.id, busNo: data.busNo }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
getPageList();
|
||||
} else {
|
||||
// 检查错误信息是否与药品数据关联有关
|
||||
if (res.msg && res.msg.includes('药品')) {
|
||||
proxy.$modal.msgError('该仓库名称已有药品信息请核对确认');
|
||||
} else {
|
||||
proxy.$modal.msgError('删除失败:' + (res.msg || '未知错误'));
|
||||
}
|
||||
}
|
||||
}).catch(() => {
|
||||
proxy.$modal.msgError('删除失败');
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
=======
|
||||
loading.value = true;
|
||||
console.log(data, 'data');
|
||||
deleteWarehouse({ busNo: data.busNo }).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
loading.value = false;
|
||||
getPageList();
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
// // 停用
|
||||
|
||||
@@ -757,11 +757,7 @@ const transformFormData = (form) => {
|
||||
ybNo,
|
||||
title,
|
||||
comment,
|
||||
<<<<<<< HEAD
|
||||
practitionerId,
|
||||
=======
|
||||
busNo,
|
||||
>>>>>>> v1.3
|
||||
} = form.value;
|
||||
|
||||
return {
|
||||
@@ -779,11 +775,7 @@ const transformFormData = (form) => {
|
||||
appointmentRequiredFlag,
|
||||
extraDetails,
|
||||
comment,
|
||||
<<<<<<< HEAD
|
||||
practitionerId,
|
||||
=======
|
||||
busNo,
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
chargeItemDefinitionFormData: {
|
||||
id,
|
||||
@@ -822,11 +814,7 @@ const transformFormEditData = (form) => {
|
||||
ybNo,
|
||||
title,
|
||||
comment,
|
||||
<<<<<<< HEAD
|
||||
practitionerId,
|
||||
=======
|
||||
busNo,
|
||||
>>>>>>> v1.3
|
||||
} = form.value;
|
||||
|
||||
return {
|
||||
@@ -844,11 +832,7 @@ const transformFormEditData = (form) => {
|
||||
appointmentRequiredFlag,
|
||||
extraDetails,
|
||||
comment,
|
||||
<<<<<<< HEAD
|
||||
practitionerId,
|
||||
=======
|
||||
busNo,
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -94,14 +94,6 @@
|
||||
v-model="form.unitCode"
|
||||
clearable
|
||||
filterable
|
||||
<<<<<<< HEAD
|
||||
remote
|
||||
reserve-keyword
|
||||
:remote-method="handleUnitCodeSearch"
|
||||
:loading="unitCodeLoading"
|
||||
@focus="handleUnitCodeFocus"
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
@change="handleUnitCodeChange"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>
|
||||
@@ -269,11 +261,7 @@
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
<<<<<<< HEAD
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
=======
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -479,12 +467,7 @@ function getDeptTree() {
|
||||
|
||||
/** 查询地点下拉树结构 */
|
||||
function getLocationTree() {
|
||||
<<<<<<< HEAD
|
||||
locationTreeSelect({ formList: '11,16,17' }).then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
=======
|
||||
locationTreeSelect({ formList: '11,16' }).then((response) => {
|
||||
>>>>>>> v1.3
|
||||
locationOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -103,12 +103,7 @@
|
||||
:data="deviceList"
|
||||
@selection-change="handleSelectionChange"
|
||||
width="90%"
|
||||
<<<<<<< HEAD
|
||||
/>
|
||||
<el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange" width="90%" border resizable-column>
|
||||
=======
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column
|
||||
label="编码"
|
||||
@@ -116,11 +111,7 @@
|
||||
key="busNo"
|
||||
prop="busNo"
|
||||
:show-overflow-tooltip="true"
|
||||
<<<<<<< HEAD
|
||||
width="200"
|
||||
=======
|
||||
width="150"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
<el-table-column
|
||||
label="器材名称"
|
||||
@@ -128,9 +119,6 @@
|
||||
key="name"
|
||||
prop="name"
|
||||
:show-overflow-tooltip="true"
|
||||
<<<<<<< HEAD
|
||||
width="200"
|
||||
=======
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
@@ -140,7 +128,6 @@
|
||||
prop="size"
|
||||
width="100"
|
||||
:show-overflow-tooltip="true"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="拼音"
|
||||
@@ -174,17 +161,6 @@
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
label="包装规格"
|
||||
align="center"
|
||||
key="size"
|
||||
prop="size"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
label="拆零比"
|
||||
align="center"
|
||||
key="partPercent"
|
||||
@@ -206,11 +182,7 @@
|
||||
key="minUnitCode_dictText"
|
||||
prop="minUnitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
<<<<<<< HEAD
|
||||
width="120"
|
||||
=======
|
||||
width="100"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="所属科室"
|
||||
|
||||
@@ -129,11 +129,7 @@
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
<<<<<<< HEAD
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
=======
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -210,18 +206,9 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="财务类型" prop="itemTypeCode">
|
||||
<<<<<<< HEAD
|
||||
<el-select
|
||||
v-model="form.itemTypeCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
=======
|
||||
<el-select v-model="form.itemTypeCode" clearable filterable>
|
||||
<!-- :disabled="form.isEditInfoDisable === 1" -->
|
||||
|
||||
>>>>>>> v1.3
|
||||
<el-option
|
||||
v-for="category in fin_type_code"
|
||||
:key="category.value"
|
||||
@@ -263,10 +250,6 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="诊疗子项">
|
||||
<<<<<<< HEAD
|
||||
<div v-if="form.isEditInfoDisable === 0" style="position: relative">
|
||||
<PopoverList @search="handleSearch" :width="1000" :modelValue="item.name">
|
||||
=======
|
||||
<div style="position: relative">
|
||||
<PopoverList
|
||||
@search="handleSearch"
|
||||
@@ -274,7 +257,6 @@
|
||||
:modelValue="item.name"
|
||||
@focus="popoverListhandleFocus(item.name)"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<template #popover-content="{}">
|
||||
<medicineList
|
||||
@selectRow="(row) => selectRow(row, index)"
|
||||
@@ -300,11 +282,7 @@
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
<span v-else>{{ item.name || '' }}</span>
|
||||
=======
|
||||
<!-- <span v-else>{{ item.name || '' }}</span> -->
|
||||
>>>>>>> v1.3
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@@ -409,10 +387,6 @@ const diagnosisTreatmentList = ref([]);
|
||||
const data = reactive({
|
||||
form: {},
|
||||
rules: {
|
||||
<<<<<<< HEAD
|
||||
busNo: [{ required: true, message: "编码不能为空", trigger: "blur" }],
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: '诊疗目录不能为空', trigger: 'blur' }],
|
||||
permittedUnitCode: [{ required: true, message: '使用单位不能为空', trigger: 'blur' }],
|
||||
@@ -678,8 +652,6 @@ function handleSearch(value) {
|
||||
medicineSearchKey.value = value;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
function popoverListhandleFocus(value) {
|
||||
// debugger;
|
||||
console.log(value);
|
||||
@@ -689,15 +661,11 @@ function popoverListhandleFocus(value) {
|
||||
medicineSearchKey.value = value;
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
function selectRow(row, index) {
|
||||
treatmentItems.value[index].name = row.name;
|
||||
treatmentItems.value[index].adviceDefinitionId = row.id;
|
||||
treatmentItems.value[index].retailPrice = row.retailPrice || 0;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
medicineSearchKey.value = '';
|
||||
>>>>>>> v1.3
|
||||
calculateTotalPrice();
|
||||
}
|
||||
|
||||
|
||||
@@ -101,86 +101,6 @@
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 添加外层滚动容器,确保表格可以水平滚动 -->
|
||||
<div class="table-scroll-container">
|
||||
<!-- 移除style="width: 100%",让Element UI表格根据内容自动调整 -->
|
||||
<el-table v-loading="loading" :data="diseaseList" @selection-change="handleSelectionChange" border resizable>
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<!-- 使用prop属性并设置合适的最小宽度,启用列宽调整 -->
|
||||
<el-table-column label="编码" align="center" prop="conditionCode" min-width="150" />
|
||||
<!-- 名称列使用标准配置 -->
|
||||
<el-table-column
|
||||
label="名称"
|
||||
align="center"
|
||||
prop="name"
|
||||
min-width="280"
|
||||
/>
|
||||
<!-- 其他列使用标准配置 -->
|
||||
<el-table-column
|
||||
label="疾病分类"
|
||||
align="center"
|
||||
prop="sourceEnum_enumText"
|
||||
min-width="180"
|
||||
/>
|
||||
<el-table-column
|
||||
label="拼音助记码"
|
||||
align="center"
|
||||
prop="pyStr"
|
||||
min-width="220"
|
||||
/>
|
||||
<el-table-column
|
||||
label="类型"
|
||||
align="center"
|
||||
prop="typeCode_dictText"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保编码"
|
||||
align="center"
|
||||
prop="ybNo"
|
||||
min-width="180"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保标记"
|
||||
align="center"
|
||||
prop="ybMatchFlag_enumText"
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保对码标志"
|
||||
align="center"
|
||||
prop="ybMatchFlag_enumText"
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
prop="statusEnum_enumText"
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="描述"
|
||||
align="center"
|
||||
prop="description"
|
||||
min-width="250"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
min-width="120"
|
||||
class-name="small-padding"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination
|
||||
=======
|
||||
<el-table v-loading="loading" :data="diseaseList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column label="编码" align="center" key="conditionCode" prop="conditionCode" />
|
||||
@@ -259,7 +179,6 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
>>>>>>> v1.3
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
|
||||
@@ -121,15 +121,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="规格" prop="totalVolume">
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="form.totalVolume"
|
||||
placeholder=""
|
||||
clearable
|
||||
/>
|
||||
=======
|
||||
<el-input v-model="form.totalVolume" placeholder="" clearable />
|
||||
>>>>>>> v1.3
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
@@ -464,11 +456,7 @@
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
<<<<<<< HEAD
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
=======
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -877,25 +865,13 @@ function setValue(row) {
|
||||
approvalNumber: formatValue(row.approvalNo), // 批准文号
|
||||
manufacturerText: formatValue(row.manufacturerName), // 生产厂家
|
||||
basicFlag: formatValue(row.essentialDrugFlag), // 基药标识
|
||||
<<<<<<< HEAD
|
||||
// injectFlag: row., // 注射药物
|
||||
// childrenFlag: row.pediatricUse, // 儿童用药标志
|
||||
// selfFlag: row., // 自制药标识
|
||||
// activeFlag: row., // 是否活性
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
restrictedFlag: formatValue(row.restrictedFlag), // 限制使用
|
||||
restrictedScope: formatValue(row.restrictedScope), // 限制使用范围
|
||||
rxFlag: formatValue(row.rxFlag), // 处方标志
|
||||
chrgitmLv: formatValue(
|
||||
row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3'
|
||||
), // 医保等级
|
||||
<<<<<<< HEAD
|
||||
// antibioticFlag: row., // 抗生素
|
||||
};
|
||||
=======
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
setFlag(form.value);
|
||||
}
|
||||
|
||||
@@ -912,11 +888,6 @@ function formatValue(str) {
|
||||
|
||||
// 显示弹框
|
||||
function edit() {
|
||||
<<<<<<< HEAD
|
||||
// getList();
|
||||
console.log(props, '22222');
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
title.value = '编辑药品';
|
||||
reset();
|
||||
activeName.value = 'basic';
|
||||
@@ -973,20 +944,10 @@ function setFlag(data) {
|
||||
function reset() {
|
||||
form.value = {
|
||||
id: undefined,
|
||||
<<<<<<< HEAD
|
||||
medicineCode: '',
|
||||
medicineName: '',
|
||||
tradeName: '',
|
||||
spec: '',
|
||||
manufacturer: '',
|
||||
rxFlag: '0', // 默认设置为非处方
|
||||
dose: undefined,
|
||||
=======
|
||||
medicationDefId: undefined,
|
||||
locationId: undefined,
|
||||
activeFlag: undefined,
|
||||
doseFrom: undefined,
|
||||
>>>>>>> v1.3
|
||||
rateCode: undefined,
|
||||
approvalNumber: undefined,
|
||||
name: undefined,
|
||||
@@ -1032,12 +993,8 @@ function reset() {
|
||||
thoPartAttributeEnum: undefined,
|
||||
usageLimit: undefined,
|
||||
basicFlag: undefined,
|
||||
<<<<<<< HEAD
|
||||
chrgitmLv: '3',
|
||||
=======
|
||||
rxFlag: undefined,
|
||||
chrgitmLv: '3', // 默认设置为自费
|
||||
>>>>>>> v1.3
|
||||
};
|
||||
antibioticForm.value = {
|
||||
antibioticCode: undefined,
|
||||
@@ -1084,16 +1041,9 @@ function submitForm() {
|
||||
|
||||
proxy.$refs['medicationRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
<<<<<<< HEAD
|
||||
// 处理抗生素相关字段
|
||||
if (form.value.activeFlag == 1) {
|
||||
form.value.antibioticCode = antibioticForm.value.antibioticCode === undefined ? '3' : antibioticForm.value.antibioticCode;
|
||||
form.value.restrictedEnum = antibioticForm.value.restrictedEnum === undefined ? '4' : antibioticForm.value.restrictedEnum;
|
||||
=======
|
||||
if (form.value.activeFlag == true) {
|
||||
form.value.antibioticCode = antibioticForm.value.antibioticCode;
|
||||
form.value.restrictedEnum = antibioticForm.value.restrictedEnum;
|
||||
>>>>>>> v1.3
|
||||
form.value.minRateCode = antibioticForm.value.minRateCode;
|
||||
form.value.maxRateCode = antibioticForm.value.maxRateCode;
|
||||
form.value.dddUnitCode = antibioticForm.value.dddUnitCode;
|
||||
|
||||
@@ -155,11 +155,8 @@
|
||||
:show-overflow-tooltip="true"
|
||||
min-width="110"
|
||||
width="200px"
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
sortable
|
||||
:sort-by="(row) => getPinyinFirstLetter(row)"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格"
|
||||
|
||||
@@ -129,9 +129,6 @@ export function getChargeInfo(param) {
|
||||
method: 'get',
|
||||
params: param
|
||||
})
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
=======
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,4 +151,3 @@ export function WxPayResult (data) {
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -31,43 +31,6 @@
|
||||
<template v-for="(item, index) in formData.selfPay" :key="index">
|
||||
<div v-show="item.payEnum != 220500" class="payment-item">
|
||||
<span>支付方式:</span>
|
||||
<<<<<<< HEAD
|
||||
<el-select
|
||||
v-model="item.payEnum"
|
||||
placeholder="选择支付方式"
|
||||
style="width: 160px"
|
||||
@change="clearAmount(index)"
|
||||
>
|
||||
<el-option
|
||||
v-for="payEnum in selfPayMethods"
|
||||
:key="payEnum.value"
|
||||
:label="payEnum.label"
|
||||
:value="payEnum.value"
|
||||
:disabled="isMethodDisabled(payEnum.value)"
|
||||
/>
|
||||
</el-select>
|
||||
<span>支付金额:</span>
|
||||
<div class="suffix-wrapper">
|
||||
<el-input-number
|
||||
v-model="item.amount"
|
||||
:precision="2"
|
||||
:min="0"
|
||||
:max="getMax(index)"
|
||||
:controls="false"
|
||||
placeholder="金额"
|
||||
class="amount-input"
|
||||
@change="handleAmountChange"
|
||||
/>
|
||||
<span class="suffix-text">元</span>
|
||||
</div>
|
||||
<el-button
|
||||
type="danger"
|
||||
circle
|
||||
:icon="Delete"
|
||||
@click="removePayment(index)"
|
||||
v-if="index > 0"
|
||||
/>
|
||||
=======
|
||||
<img
|
||||
v-if="item.payEnum == 220100 || item.payEnum == 220200"
|
||||
:src="imgs[item.payEnum == 220100 ? 0 : 1]"
|
||||
@@ -108,7 +71,6 @@
|
||||
@click="removePayment(index)"
|
||||
v-if="index > 0"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
<div class="add-payment">
|
||||
@@ -136,8 +98,6 @@
|
||||
/>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
</div>
|
||||
<div class="payment-item">
|
||||
<span>{{ payTypeText }}支付:</span>
|
||||
@@ -149,7 +109,6 @@
|
||||
/>
|
||||
<el-button link type="primary" @click="handleWxPay()">扫码支付</el-button>
|
||||
<el-button link type="primary" @click="getWxPayResult()">查看结果</el-button>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<div>
|
||||
<el-table :data="props.details" max-height="200" border>
|
||||
@@ -194,9 +153,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { savePayment, unprecharge, dispenseMedicalConsumables, getChargeInfo } from './api';
|
||||
=======
|
||||
import {
|
||||
savePayment,
|
||||
unprecharge,
|
||||
@@ -205,7 +161,6 @@ import {
|
||||
WxPayResult,
|
||||
getChargeInfo,
|
||||
} from './api';
|
||||
>>>>>>> v1.3
|
||||
import { computed, watch, reactive, ref, getCurrentInstance, nextTick } from 'vue';
|
||||
import { Delete } from '@element-plus/icons-vue';
|
||||
import { debounce } from 'lodash-es';
|
||||
@@ -264,13 +219,6 @@ const props = defineProps({
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
<<<<<<< HEAD
|
||||
const { charge_discount } = proxy.useDict('charge_discount');
|
||||
|
||||
const userStore = useUserStore();
|
||||
const discountRadio = ref(undefined);
|
||||
const discountAmount = ref(0);
|
||||
=======
|
||||
// 单位字典
|
||||
const { unit_code } = proxy.useDict('unit_code');
|
||||
|
||||
@@ -278,7 +226,6 @@ const userStore = useUserStore();
|
||||
const discountRadio = ref();
|
||||
const discountAmount = ref(0);
|
||||
const txtCode = ref('');
|
||||
>>>>>>> v1.3
|
||||
|
||||
const formData = reactive({
|
||||
totalAmount: 0,
|
||||
@@ -301,121 +248,6 @@ watch(
|
||||
|
||||
const emit = defineEmits(['close']);
|
||||
let displayAmountTemp = 0;
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 打印小票
|
||||
function printReceipt(param) {
|
||||
let total = 0;
|
||||
props.chargedItems.forEach((item) => {
|
||||
total += item.totalPrice || 0;
|
||||
});
|
||||
// 构造一个新的对象,添加头 "data"
|
||||
const result = {
|
||||
data: [
|
||||
{
|
||||
...param,
|
||||
// 基础支付类型
|
||||
YB_FUND_PAY:
|
||||
param.detail?.find((t) => t.payEnum === 100000)?.amount.toFixed(2) + ' 元' ?? 0, // 基金支付总额
|
||||
SELF_PAY: param.detail?.find((t) => t.payEnum === 200000)?.amount.toFixed(2) + ' 元' ?? 0, // 个人负担总金额
|
||||
OTHER_PAY: param.detail?.find((t) => t.payEnum === 300000)?.amount ?? 0, // 其他(如医院负担金额)
|
||||
|
||||
// 基本医保统筹基金支出
|
||||
YB_TC_FUND_AMOUNT:
|
||||
param.detail?.find((t) => t.payEnum === 110000)?.amount.toFixed(2) + ' 元' ?? 0, // 基本医保统筹基金支出
|
||||
YB_BC_FUND_AMOUNT:
|
||||
param.detail?.find((t) => t.payEnum === 120000)?.amount.toFixed(2) + ' 元' ?? 0, // 补充医疗保险基金支出
|
||||
YB_JZ_FUND_AMOUNT:
|
||||
param.detail?.find((t) => t.payEnum === 130000)?.amount.toFixed(2) + ' 元' ?? 0, // 医疗救助基金支出
|
||||
// YB_OTHER_AMOUNT: param.detail.find((t) => t.payEnum === 140000)?.amount ?? 0, // 其他支出
|
||||
|
||||
// 职工基本医疗保险
|
||||
// YB_TC_ZG_FUND_VALUE: param.detail.find((t) => t.payEnum === 110100)?.amount ?? 0, // 职工基本医疗保险
|
||||
// YB_TC_JM_FUND_VALUE: param.detail.find((t) => t.payEnum === 110200)?.amount ?? 0, // 居民基本医疗保险(修正原错误注释)
|
||||
|
||||
// 补充医疗保险基金支出细分
|
||||
// YB_BC_JM_DB_VALUE: param.detail.find((t) => t.payEnum === 120100)?.amount ?? 0, // 全体参保人的居民大病保险
|
||||
// YB_BC_DE_BZ_VALUE: param.detail.find((t) => t.payEnum === 120200)?.amount ?? 0, // 大额医疗费用补助
|
||||
// YB_BC_ZG_DE_BZ_VALUE: param.detail.find((t) => t.payEnum === 120300)?.amount ?? 0, // 企业职工大额医疗费用补助
|
||||
// YB_BC_GWY_BZ_VALUE: param.detail.find((t) => t.payEnum === 120400)?.amount ?? 0, // 公务员医疗补助
|
||||
|
||||
// 其他支出细分
|
||||
// OTHER_PAY_DD_FUND_VALUE: param.detail.find((t) => t.payEnum === 300001)?.amount ?? 0, // 兜底基金支出
|
||||
// OTHER_PAY_YW_SH_FUND_VALUE: param.detail.find((t) => t.payEnum === 300002)?.amount ?? 0, // 意外伤害基金支出
|
||||
// OTHER_PAY_LX_YL_FUND_VALUE: param.detail.find((t) => t.payEnum === 300003)?.amount ?? 0, // 离休人员医疗保障金支出
|
||||
// OTHER_PAY_LX_YH_FUND_VALUE: param.detail.find((t) => t.payEnum === 300004)?.amount ?? 0, // 离休人员优惠金支出
|
||||
// OTHER_PAY_CZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300005)?.amount ?? 0, // 财政基金支出
|
||||
// OTHER_PAY_CZ_YZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300006)?.amount ?? 0, // 财政预支支出
|
||||
// OTHER_PAY_ZG_DB_FUND_VALUE: param.detail.find((t) => t.payEnum === 300007)?.amount ?? 0, // 职工大病基金支出
|
||||
// OTHER_PAY_EY_FUND_VALUE: param.detail.find((t) => t.payEnum === 300008)?.amount ?? 0, // 二乙基金支出
|
||||
// OTHER_PAY_QX_JZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300009)?.amount ?? 0, // 倾斜救助支出
|
||||
// OTHER_PAY_YL_JZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300010)?.amount ?? 0, // 医疗救助再救助基金
|
||||
// HOSP_PART_AMT: param.detail.find((t) => t.payEnum === 300011)?.amount ?? 0, // 医院负担金额
|
||||
|
||||
// 医保结算返回值
|
||||
FULAMT_OWNPAY_AMT:
|
||||
param.detail?.find((t) => t.payEnum === 1)?.amount.toFixed(2) + ' 元' ?? 0, // 全自费金额
|
||||
// OVERLMT_SELFPAY: param.detail.find((t) => t.payEnum === 3)?.amount ?? 0, // 超限价自费费用
|
||||
// PRESELFPAY_AMT: param.detail.find((t) => t.payEnum === 4)?.amount ?? 0, // 先行自付金额
|
||||
INSCP_SCP_AMT: param.detail?.find((t) => t.payEnum === 5)?.amount.toFixed(2) + ' 元' ?? 0, // 符合政策范围金额
|
||||
// ACT_PAY_DEDC: param.detail.find((t) => t.payEnum === 6)?.amount ?? 0, // 实际支付起付线
|
||||
// POOL_PROP_SELFPAY: param.detail.find((t) => t.payEnum === 7)?.amount ?? 0, // 基本医疗保险统筹基金支付比例
|
||||
// BALC: param.detail.find((t) => t.payEnum === 8)?.amount ?? 0, // 余额
|
||||
|
||||
// 特殊支付方式
|
||||
SELF_YB_ZH_PAY:
|
||||
param.detail?.find((t) => t.payEnum === 210000)?.amount.toFixed(2) + ' 元' ?? 0, // 个人医保账户支付
|
||||
// SELF_YB_ZH_GJ_VALUE: param.detail.find((t) => t.payEnum === 210100)?.amount ?? 0, // 账户共济支付金额
|
||||
// SELF_CASH_PAY: param.detail.find((t) => t.payEnum === 220000)?.amount ?? 0, // 个人现金支付金额
|
||||
// SELF_VX_PAY: param.detail.find((t) => t.payEnum === 230000)?.amount ?? 0, // 微信支付金额
|
||||
// SELF_ALI_PAY: param.detail.find((t) => t.payEnum === 240000)?.amount ?? 0, // 阿里支付金额
|
||||
|
||||
// 现金支付细分
|
||||
// SELF_CASH_VALUE: param.detail.find((t) => t.payEnum === 220400)?.amount ?? 0, // 个人现金支付金额(现金)
|
||||
// SELF_CASH_VX_VALUE: param.detail.find((t) => t.payEnum === 220100)?.amount ?? 0, // 个人现金支付金额(微信)
|
||||
// SELF_CASH_ALI_VALUE: param.detail.find((t) => t.payEnum === 220200)?.amount ?? 0, // 个人现金支付金额(支付宝)
|
||||
// SELF_CASH_UNION_VALUE: param.detail.find((t) => t.payEnum === 220300)?.amount ?? 0, // 个人现金支付金额(银联)
|
||||
|
||||
// 基金类型(扩展)
|
||||
// BIRTH_FUND: param.detail.find((t) => t.payEnum === 510100)?.amount ?? 0, // 生育基金
|
||||
// RETIREE_MEDICAL: param.detail.find((t) => t.payEnum === 340100)?.amount ?? 0, // 离休人员医疗保障基金
|
||||
// URBAN_BASIC_MEDICAL: param.detail.find((t) => t.payEnum === 390100)?.amount ?? 0, // 城乡居民基本医疗保险基金
|
||||
// URBAN_SERIOUS_ILLNESS: param.detail.find((t) => t.payEnum === 390200)?.amount ?? 0, // 城乡居民大病医疗保险基金
|
||||
// MEDICAL_ASSISTANCE: param.detail.find((t) => t.payEnum === 610100)?.amount ?? 0, // 医疗救助基金
|
||||
// GOVERNMENT_SUBSIDY: param.detail.find((t) => t.payEnum === 640100)?.amount ?? 0, // 政府兜底基金
|
||||
// ACCIDENT_INSURANCE: param.detail.find((t) => t.payEnum === 390400)?.amount ?? 0, // 意外伤害基金
|
||||
// CARE_INSURANCE: param.detail.find((t) => t.payEnum === 620100)?.amount ?? 0, // 照护保险基金
|
||||
// FINANCIAL_FUND: param.detail.find((t) => t.payEnum === 360100)?.amount ?? 0, // 财政基金
|
||||
// HOSPITAL_ADVANCE: param.detail.find((t) => t.payEnum === 999900)?.amount ?? 0, // 医院垫付
|
||||
// SUPPLEMENTARY_INSURANCE: param.detail.find((t) => t.payEnum === 390300)?.amount ?? 0, // 城乡居民大病补充保险基金
|
||||
// HEALTHCARE_PREPAYMENT: param.detail.find((t) => t.payEnum === 360300)?.amount ?? 0, // 保健预支基金
|
||||
Mr_QR_Code: param.regNo,
|
||||
sex: props.patientInfo.genderEnum_enumText,
|
||||
age: props.patientInfo.age,
|
||||
personType: '职工医保',
|
||||
fixmedinsName: param.fixmedinsName + '门诊收费明细',
|
||||
name: props.patientInfo.patientName, // 姓名
|
||||
gender: props.patientInfo.genderEnum_enumText, // 性别
|
||||
age: props.patientInfo.age, // 年龄
|
||||
encounterBusNo: props.patientInfo.encounterBusNo, // 病例号
|
||||
currentDate: currentDate.value, // 收费日期
|
||||
chargedItems: props.chargedItems, // 收费项目
|
||||
totalAmount: props.totalAmount.toFixed(2) + ' 元', // 应收金额
|
||||
itemTotalAmount: total.toFixed(2) + ' 元', // 应收金额
|
||||
displayAmount: displayAmountTemp + ' 元', // 实收金额
|
||||
returnedAmount: returnedAmount.value + ' 元', // 应找零
|
||||
userName: userStore.nickName,
|
||||
},
|
||||
],
|
||||
};
|
||||
const printElements = templateJson;
|
||||
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
|
||||
|
||||
hiprintTemplate.print2(result.data[0], {
|
||||
printer: 'xp',
|
||||
title: '门诊收费结算单',
|
||||
});
|
||||
=======
|
||||
|
||||
// 获取单位字典数据的方法
|
||||
const getUnitLabel = (unitCode) => {
|
||||
@@ -748,12 +580,9 @@ async function printReceipt(param) {
|
||||
console.error('打印失败:', error);
|
||||
proxy.$modal.msgError('打印失败: ' + error.message);
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
const throttledGetList = debounce(submit, 300);
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
function handleWxPay() {
|
||||
wxPay({
|
||||
txtCode: txtCode.value,
|
||||
@@ -778,7 +607,6 @@ function getWxPayResult() {
|
||||
});
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
function handleOpen() {
|
||||
formData.totalAmount = props.totalAmount;
|
||||
formData.selfPay[0].amount = props.totalAmount;
|
||||
@@ -786,11 +614,6 @@ function handleOpen() {
|
||||
|
||||
async function submit() {
|
||||
displayAmountTemp = displayAmount.value;
|
||||
<<<<<<< HEAD
|
||||
console.log(parseFloat(displayAmount.value), 'parseFloat(displayAmount.value)');
|
||||
console.log(formData.totalAmount, 'formData.totalAmount');
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
|
||||
let amount = formData.selfPay
|
||||
.reduce((sum, item) => {
|
||||
@@ -813,12 +636,8 @@ async function submit() {
|
||||
.then((res) => {
|
||||
if (res.code == 200) {
|
||||
getChargeInfo({ paymentId: props.paymentId }).then((res) => {
|
||||
<<<<<<< HEAD
|
||||
printReceipt(res.data);
|
||||
=======
|
||||
// 传递完整的选中数据信息到打印方法
|
||||
printReceipt({ ...res.data, chargedItems: props.chargedItems });
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
formData.selfPay = [{ payEnum: 220100, amount: 0.0, payLevelEnum: 2 }];
|
||||
emit('close', 'success', res.msg);
|
||||
@@ -874,19 +693,11 @@ async function print() {
|
||||
const currentDate = ref(new Date().toLocaleString());
|
||||
|
||||
const selfPayMethods = [
|
||||
<<<<<<< HEAD
|
||||
{ label: '现金', value: 220400 },
|
||||
{ label: '微信', value: 220100 },
|
||||
{ label: '支付宝', value: 220200 },
|
||||
{ label: '银联', value: 220300 },
|
||||
{ label: '优惠', value: 220500 },
|
||||
=======
|
||||
{ label: '现金', value: 220400, isWebPay: false },
|
||||
{ label: '微信', value: 220100, isWebPay: true },
|
||||
{ label: '支付宝', value: 220200, isWebPay: true },
|
||||
{ label: '银联', value: 220300, isWebPay: true },
|
||||
{ label: '优惠', value: 220500, isWebPay: false },
|
||||
>>>>>>> v1.3
|
||||
];
|
||||
|
||||
// 计算剩余可输入金额
|
||||
|
||||
@@ -83,20 +83,6 @@
|
||||
:disabled="buttonDisabled">
|
||||
自费转医保
|
||||
</el-button>
|
||||
<<<<<<< HEAD
|
||||
<el-button type="primary" @click="studentPayTosStudentSelf()" style="margin-left: 20px"
|
||||
:disabled="buttonDisabled">
|
||||
学生医保转学生自费
|
||||
</el-button>
|
||||
<el-button type="primary" @click="studentSelfToStudentPay()" style="margin-left: 20px"
|
||||
:disabled="buttonDisabled">
|
||||
学生自费转学生医保
|
||||
</el-button>
|
||||
<span style="float: right">合计金额:{{ totalAmounts ? totalAmounts.toFixed(2) : 0 }}元</span>
|
||||
</div>
|
||||
<el-table ref="chargeListRef" height="530" :data="chargeList" row-key="id"
|
||||
@selection-change="handleSelectionChange" v-loading="chargeLoading" :span-method="objectSpanMethod" border>
|
||||
=======
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="studentPayTosStudentSelf()"
|
||||
@@ -127,7 +113,6 @@
|
||||
:span-method="objectSpanMethod"
|
||||
border
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-table-column type="selection" :selectable="checkSelectable" width="55" />
|
||||
<el-table-column label="单据号" align="center" prop="busNo" width="180" />
|
||||
<el-table-column label="收费项目" align="center" prop="itemName" width="200" />
|
||||
@@ -137,9 +122,6 @@
|
||||
<el-table-column label="费用性质" align="center" prop="contractName" />
|
||||
<el-table-column label="收费状态" align="center" prop="statusEnum_enumText" width="150">
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<el-tag :type="scope.row.statusEnum === 1 ? 'default' : 'success'" disable-transitions>
|
||||
=======
|
||||
<el-tag v-if="scope.row.statusEnum === 1" disable-transitions>
|
||||
{{ scope.row.statusEnum_enumText }}
|
||||
</el-tag>
|
||||
@@ -150,7 +132,6 @@
|
||||
{{ scope.row.statusEnum_enumText }}
|
||||
</el-tag>
|
||||
<el-tag v-else type="warning" disable-transitions>
|
||||
>>>>>>> v1.3
|
||||
{{ scope.row.statusEnum_enumText }}
|
||||
</el-tag>
|
||||
</template>
|
||||
@@ -161,11 +142,6 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="收款人" align="center" prop="entererId_dictText" />
|
||||
<<<<<<< HEAD
|
||||
<el-table-column label="操作" align="center" fixed="right" header-align="center" class-name="no-hover-column">
|
||||
<template #default="scope">
|
||||
<el-button :disabled="!scope.row.paymentId" link type="primary" @click="printCharge(scope.row)">
|
||||
=======
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
@@ -180,7 +156,6 @@
|
||||
type="primary"
|
||||
@click="printCharge(scope.row)"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
打印
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -292,10 +267,6 @@ function handleTotalAmount() {
|
||||
totalAmounts.value = chargeList.value.reduce((accumulator, currentRow) => {
|
||||
return new Decimal(accumulator).add(currentRow.totalPrice.toFixed(2) || 0);
|
||||
}, new Decimal(0));
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
} else {
|
||||
totalAmounts.value = selectedRows.value.reduce((accumulator, currentRow) => {
|
||||
return new Decimal(accumulator).add(currentRow.totalPrice.toFixed(2) || 0);
|
||||
@@ -652,8 +623,6 @@ function objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||||
return [1, 1];
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// function printCharge(row) {
|
||||
// // 打印功能实现
|
||||
// let rows = [];
|
||||
@@ -667,7 +636,6 @@ function objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||||
// proxy.$refs['chargeDialogRef'].printReceipt(res.data);
|
||||
// });
|
||||
// }
|
||||
>>>>>>> v1.3
|
||||
function printCharge(row) {
|
||||
// 打印功能实现
|
||||
let rows = [];
|
||||
@@ -678,9 +646,6 @@ function printCharge(row) {
|
||||
});
|
||||
chargedItems.value = rows;
|
||||
getChargeInfo({ paymentId: row.paymentId }).then((res) => {
|
||||
<<<<<<< HEAD
|
||||
proxy.$refs['chargeDialogRef'].printReceipt(res.data);
|
||||
=======
|
||||
// 设置实收金额
|
||||
if (res.data && res.data.detail) {
|
||||
const amountDetail = res.data.detail.find((item) => item.payEnum == 220000);
|
||||
@@ -712,7 +677,6 @@ function printCharge(row) {
|
||||
proxy.$refs['chargeDialogRef'].printReceipt(enhancedPrintData);
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -724,8 +688,4 @@ function printCharge(row) {
|
||||
:deep(.el-table__body) tr:hover td.no-hover-column {
|
||||
background-color: inherit !important;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -166,16 +166,6 @@ const props = defineProps({
|
||||
type: Object,
|
||||
default: undefined,
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
medfee_paymtd_code: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
feeType: {
|
||||
type: String,
|
||||
default: '',
|
||||
}
|
||||
=======
|
||||
orgId: {
|
||||
type: String,
|
||||
default: '',
|
||||
@@ -184,7 +174,6 @@ const props = defineProps({
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
@@ -228,38 +228,6 @@ export function gerPreInfo(userMaessage) {
|
||||
return request({
|
||||
url: '/yb-request/per-info',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
params: userMaessage
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据就诊卡号查询挂号记录
|
||||
* 注意:此接口可能不存在,实际使用getOutpatientRegistrationCurrent接口
|
||||
* 保留此函数以便将来使用,目前使用getOutpatientRegistrationCurrent替代
|
||||
*/
|
||||
export function getRegistrationByCardNo(query) {
|
||||
// 如果后端提供了专门的接口,可以取消注释使用
|
||||
// return request({
|
||||
// url: '/charge-manage/register/encounter-by-card',
|
||||
// method: 'get',
|
||||
// params: query
|
||||
// })
|
||||
// 暂时使用现有的接口
|
||||
return getOutpatientRegistrationCurrent(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 补打挂号
|
||||
*/
|
||||
export function reprintRegistration(data) {
|
||||
return request({
|
||||
url: '/charge-manage/register/reprint',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
=======
|
||||
params: userMaessage,
|
||||
});
|
||||
}
|
||||
@@ -285,4 +253,3 @@ export function WxPayResult(data) {
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
<el-input v-model="form.name" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<<<<<<< HEAD
|
||||
<el-col :span="6">
|
||||
<el-form-item label="民族" prop="nationalityCode" label-width="80px">
|
||||
=======
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别" prop="genderEnum">
|
||||
<el-radio-group v-model="form.genderEnum" :disabled="isViewMode">
|
||||
@@ -66,7 +62,6 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="民族" prop="nationalityCode">
|
||||
>>>>>>> v1.3
|
||||
<el-select v-model="form.nationalityCode" clearable filterable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in nationality_code"
|
||||
@@ -106,87 +101,10 @@
|
||||
<!-- 第二行:证件类别、证件号码、*年龄 -->
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="证件类别" prop="typeCode" label-width="80px">
|
||||
<el-select
|
||||
v-model="form.typeCode"
|
||||
placeholder="就诊卡"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in sys_idtype"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="证件号码" prop="idCard" label-width="80px">
|
||||
<el-input v-model="form.idCard" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="年龄" prop="age" label-width="80px">
|
||||
<el-input
|
||||
v-model="form.age"
|
||||
:disabled="isViewMode"
|
||||
@input="handleAgeInput"
|
||||
placeholder="请输入龄"
|
||||
>
|
||||
<template #suffix>岁</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 第三行:国籍、*联系方式、工作单位 -->
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="国籍" prop="countryCode" label-width="80px">
|
||||
<el-select v-model="form.countryCode" placeholder="请选择国籍" clearable filterable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in countryCodeList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系方式" prop="phone" label-width="80px">
|
||||
<el-input v-model="form.phone" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期" prop="birthDate">
|
||||
<el-date-picker
|
||||
v-model="form.birthDate"
|
||||
type="date"
|
||||
placeholder="请选择出生日期"
|
||||
format="YYYY年MM月DD日"
|
||||
:disabled="isViewMode"
|
||||
value-format="YYYY-MM-DD"
|
||||
@change="handleBirthDateChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 第三行:就诊卡号、职业、邮政编码 -->
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="就诊卡号" prop="identifierNo">
|
||||
<el-input v-model="form.identifierNo" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="国家编码" prop="countryCode">
|
||||
<el-input v-model="form.countryCode" clearable :disabled="isViewMode" />
|
||||
@@ -199,7 +117,6 @@
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-row>
|
||||
>>>>>>> v1.3
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职业" prop="prfsEnum">
|
||||
<el-select v-model="form.prfsEnum" placeholder="职业" clearable :disabled="isViewMode">
|
||||
@@ -423,11 +340,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="PatientAddDialog">
|
||||
<<<<<<< HEAD
|
||||
import { watch, defineProps } from "vue";
|
||||
=======
|
||||
import { watch } from 'vue';
|
||||
>>>>>>> v1.3
|
||||
import pcas from 'china-division/dist/pcas-code.json';
|
||||
import { addPatient, patientlLists, getOutpatientRegistrationList } from './outpatientregistration';
|
||||
import {
|
||||
@@ -689,21 +602,9 @@ const validateGuardianInfo = (rule, value, callback) => {
|
||||
const data = reactive({
|
||||
isViewMode: false,
|
||||
form: {
|
||||
<<<<<<< HEAD
|
||||
typeCode: '08',
|
||||
birthDate: undefined,
|
||||
age: undefined,
|
||||
genderEnum: '1', // 默认设置为'男'
|
||||
hukouAddressSelect: undefined,
|
||||
hukouAddress: undefined,
|
||||
postalCode: undefined,
|
||||
companyAddress: undefined,
|
||||
patientDerived: undefined,
|
||||
=======
|
||||
typeCode: '01',
|
||||
tempFlag: '1',
|
||||
// genderEnum: 0,
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '姓名不能为空', trigger: 'change' },
|
||||
@@ -720,22 +621,7 @@ const data = reactive({
|
||||
genderEnum: [{ required: true, message: '请选择性别', trigger: 'change' }],
|
||||
age: [{ required: true, message: '年龄不能为空', trigger: 'change' }],
|
||||
phone: [{ required: true, message: '联系方式不能为空', trigger: 'change' }],
|
||||
<<<<<<< HEAD
|
||||
identifierNo: [{ required: true, message: '就诊卡号不能为空', trigger: 'change' }],
|
||||
idCard: [
|
||||
{ required: false, message: '证件号码不能为空', trigger: 'change' },
|
||||
{ validator: validateIdCard, trigger: 'blur' },
|
||||
{ validator: validateUniquePatient, trigger: 'blur' }
|
||||
],
|
||||
birthDate: [{ required: false, message: '请选择出生日期', trigger: 'change' }],
|
||||
// 监护人信息条件验证规则
|
||||
guardianName: [{ validator: validateGuardianInfo, trigger: 'blur' }],
|
||||
guardianRelation: [{ validator: validateGuardianInfo, trigger: 'blur' }],
|
||||
guardianPhone: [{ validator: validateGuardianInfo, trigger: 'blur' }],
|
||||
guardianIdNo: [{ validator: validateGuardianInfo, trigger: 'blur' }],
|
||||
=======
|
||||
idCard: [{ required: true, message: '证件号不能为空', trigger: 'change' }],
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
});
|
||||
|
||||
@@ -757,76 +643,6 @@ const props = defineProps({
|
||||
}
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 处理出生日期变化,自动计算年龄
|
||||
function handleBirthDateChange() {
|
||||
if (form.value.birthDate) {
|
||||
const birthDate = new Date(form.value.birthDate);
|
||||
const today = new Date();
|
||||
|
||||
let age = today.getFullYear() - birthDate.getFullYear();
|
||||
const monthDiff = today.getMonth() - birthDate.getMonth();
|
||||
|
||||
// 计算精确年龄
|
||||
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
|
||||
age--;
|
||||
}
|
||||
|
||||
form.value.age = age;
|
||||
}
|
||||
}
|
||||
|
||||
// 处理年龄输入,自动计算出生日期
|
||||
function handleAgeInput() {
|
||||
// 提取数字部分
|
||||
const ageMatch = form.value.age.match(/\d+/);
|
||||
if (ageMatch) {
|
||||
const age = parseInt(ageMatch[0]);
|
||||
// 移除非数字字符,保留数字和可能的单位
|
||||
form.value.age = age ;
|
||||
|
||||
// 计算出生日期
|
||||
const today = new Date();
|
||||
const birthYear = today.getFullYear() - age;
|
||||
const birthMonth = today.getMonth();
|
||||
const birthDay = today.getDate();
|
||||
|
||||
const birthDate = new Date(birthYear, birthMonth, birthDay);
|
||||
|
||||
// 格式化为YYYY-MM-DD
|
||||
const formattedBirthDate = birthDate.toISOString().split('T')[0];
|
||||
form.value.birthDate = formattedBirthDate;
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => form.value.idCard,
|
||||
(newIdCard) => {
|
||||
if (newIdCard && newIdCard.length === 18) {
|
||||
const birthYear = parseInt(newIdCard.substring(6, 10));
|
||||
const birthMonth = parseInt(newIdCard.substring(10, 12));
|
||||
const birthDay = parseInt(newIdCard.substring(12, 14));
|
||||
|
||||
// 设置出生日期
|
||||
form.value.birthDate = `${birthYear}-${birthMonth.toString().padStart(2, '0')}-${birthDay.toString().padStart(2, '0')}`;
|
||||
const today = new Date();
|
||||
const currentYear = today.getFullYear();
|
||||
const currentMonth = today.getMonth() + 1;
|
||||
const currentDay = today.getDate();
|
||||
|
||||
let age = currentYear - birthYear;
|
||||
|
||||
// 如果当前月份小于出生月份,或者月份相同但当前日期小于出生日期,则年龄减1
|
||||
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDay < birthDay)) {
|
||||
age--;
|
||||
}
|
||||
|
||||
form.value.age = age;
|
||||
|
||||
form.value.age = age ;
|
||||
}
|
||||
}
|
||||
);
|
||||
=======
|
||||
// watch(
|
||||
// () => form.value.idCard,
|
||||
// (newIdCard) => {
|
||||
@@ -851,7 +667,6 @@ watch(
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
>>>>>>> v1.3
|
||||
/** 查询菜单列表 */
|
||||
function getList() {
|
||||
patientlLists().then((response) => {
|
||||
|
||||
@@ -11,11 +11,7 @@
|
||||
<el-text size="large" style="display: block; margin-bottom: 15px">
|
||||
退费日期:{{ currentDate }}
|
||||
</el-text>
|
||||
<<<<<<< HEAD
|
||||
<el-text size="large">费用性质:{{ getFeeTypeText }}</el-text>
|
||||
=======
|
||||
<el-text size="large">费用性质:{{ props.category || '自费' }}</el-text>
|
||||
>>>>>>> v1.3
|
||||
<div class="amount-row">
|
||||
<el-text size="large">应退金额:</el-text>
|
||||
<el-text size="large" type="primary" class="amount">
|
||||
@@ -160,39 +156,16 @@ const props = defineProps({
|
||||
type: [],
|
||||
default: [],
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
medfee_paymtd_code: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
feeType: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
contractName: {
|
||||
type: String,
|
||||
default: '', // 新增:接收费用性质名称
|
||||
},
|
||||
registerInfo: {
|
||||
type: Object,
|
||||
default: () => ({}), // 原挂号记录信息
|
||||
}
|
||||
=======
|
||||
eventType: {
|
||||
type: String,
|
||||
default: 1,
|
||||
},
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const reason = ref('');
|
||||
<<<<<<< HEAD
|
||||
const userStore = useUserStore();
|
||||
=======
|
||||
const preCancelData = ref([]);
|
||||
const loading = ref(false);
|
||||
>>>>>>> v1.3
|
||||
|
||||
const formData = reactive({
|
||||
totalAmount: 0,
|
||||
@@ -255,29 +228,10 @@ watch(
|
||||
function submit() {
|
||||
console.log(props.chargeItemIds);
|
||||
|
||||
<<<<<<< HEAD
|
||||
if (parseFloat(displayAmount.value) < formData.totalAmount) {
|
||||
proxy.$modal.msgError('请输入正确的金额');
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取当前时间作为退号操作日期
|
||||
const returnDate = formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss');
|
||||
|
||||
// 获取当前用户信息作为操作工号(使用用户管理中的用户账号)
|
||||
// userStore.name 对应后端的 userName(用户账号),如 'admin'
|
||||
const operatorId = userStore.name || null; // 退号操作工号(用户账号)
|
||||
const operatorName = userStore.nickName || userStore.name || ''; // 退号操作人姓名
|
||||
|
||||
// 计算退款总金额
|
||||
const refundAmount = formData.selfPay.reduce((sum, item) => sum + (Number(item.amount) || 0), 0);
|
||||
|
||||
=======
|
||||
// if (parseFloat(displayAmount.value) < formData.totalAmount) {
|
||||
// proxy.$modal.msgError('请输入正确的金额');
|
||||
// return;
|
||||
// }
|
||||
>>>>>>> v1.3
|
||||
cancelRegister({
|
||||
paymentEnum: 0,
|
||||
kindEnum: 1,
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
</el-popover>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-col :span="6" style="padding: 0">
|
||||
<el-button type="primary" icon="Plus" @click="handleAddPatient" style="width: 65px">
|
||||
新建
|
||||
@@ -77,7 +75,6 @@
|
||||
学生卡
|
||||
</el-button> -->
|
||||
</el-col>
|
||||
>>>>>>> v1.3
|
||||
<el-col :span="5">
|
||||
<el-form-item label="姓名:" prop="name">
|
||||
<el-input v-model="form.name" placeholder="姓名" :disabled="true" />
|
||||
@@ -280,10 +277,6 @@
|
||||
setchargeItem;
|
||||
}
|
||||
"
|
||||
<<<<<<< HEAD
|
||||
@clear="handleOrgClear"
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -554,100 +547,6 @@
|
||||
<span>{{ parseTime(scope.row.registerTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<<<<<<< HEAD
|
||||
<!-- 退号记录相关列 -->
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退号日期/时间"
|
||||
align="center"
|
||||
key="returnDate"
|
||||
prop="returnDate"
|
||||
width="180"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.returnDate ? parseTime(scope.row.returnDate) : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退号原因"
|
||||
align="center"
|
||||
key="returnReason"
|
||||
prop="returnReason"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.returnReason || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退号操作人"
|
||||
align="center"
|
||||
key="operatorName"
|
||||
prop="operatorName"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.operatorName || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退号操作工号"
|
||||
align="center"
|
||||
key="operatorId"
|
||||
prop="operatorId"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.operatorId || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退款金额"
|
||||
align="center"
|
||||
key="refundAmount"
|
||||
prop="refundAmount"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.refundAmount ? scope.row.refundAmount.toFixed(2) + ' 元' : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="queryType === 'returned'"
|
||||
label="退款方式"
|
||||
align="center"
|
||||
key="refundMethod"
|
||||
prop="refundMethod"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.refundMethod || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 操作列:只在全部和正常挂号标签页显示,退号记录标签页不显示 -->
|
||||
<el-table-column
|
||||
v-if="queryType !== 'returned'"
|
||||
label="操作"
|
||||
align="center"
|
||||
width="120"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
:disabled="scope.row.statusEnum === 6 || scope.row.statusEnum !== 1"
|
||||
:title="getReturnTooltip(scope.row)"
|
||||
@click="handleReturn(scope.row)"
|
||||
>
|
||||
退号
|
||||
</el-button>
|
||||
=======
|
||||
<el-table-column label="操作" align="center" key="registerTime" prop="registerTime" do>
|
||||
<template #default="scope">
|
||||
<!-- <el-tooltip
|
||||
@@ -675,7 +574,6 @@
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- </el-tooltip> -->
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -725,25 +623,7 @@
|
||||
:patientInfo="patientInfo"
|
||||
:paymentId="paymentId"
|
||||
:chargeItemIds="chargeItemIdList"
|
||||
<<<<<<< HEAD
|
||||
:feeType="patientInfo.medfeePaymtdCode || ''"
|
||||
:contractName="patientInfo.contractName || ''"
|
||||
:medfee_paymtd_code="medfee_paymtd_code"
|
||||
:registerInfo="registerInfo"
|
||||
/>
|
||||
<ReprintDialog
|
||||
:open="openReprintDialog"
|
||||
@close="
|
||||
(value) => {
|
||||
if (value == 'success') {
|
||||
getList();
|
||||
}
|
||||
openReprintDialog = false;
|
||||
}
|
||||
"
|
||||
=======
|
||||
:eventType="eventType"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
@@ -776,26 +656,11 @@ import ReprintDialog from './components/reprintDialog.vue';
|
||||
import { handleColor } from '@/utils/his';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import { formatDate, formatDateStr } from '@/utils/index';
|
||||
<<<<<<< HEAD
|
||||
import { getConfigKey } from '@/api/system/config';
|
||||
|
||||
const patientInfo = ref({});
|
||||
// 监护人规定年龄配置
|
||||
const guardianAgeConfig = ref(null);
|
||||
|
||||
// 跳转到患者档案管理页面
|
||||
const goToPatientRecord = () => {
|
||||
// 使用Vue Router进行路由导航,在当前页面打开新的路由层级
|
||||
router.push('/system/basicmanage/patientmanagement');
|
||||
};
|
||||
|
||||
=======
|
||||
import { isValidCNPhoneNumber } from '../../../utils/validate';
|
||||
import { ElMessage } from 'element-plus';
|
||||
|
||||
const patientInfo = ref({});
|
||||
const eventType = ref(0);
|
||||
>>>>>>> v1.3
|
||||
const router = useRouter();
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_normal_disable, sys_user_sex, med_chrgitm_type,medfee_paymtd_code } = proxy.useDict(
|
||||
@@ -846,14 +711,8 @@ const patientInfoList = ref(undefined);
|
||||
// 费用性质
|
||||
const contractList = ref(undefined);
|
||||
// const locationOptions = ref(undefined); // 地点树选项
|
||||
<<<<<<< HEAD
|
||||
const doctorList = ref(undefined); // 医生选项(过滤后的)
|
||||
const allDoctorList = ref(undefined); // 所有医生选项(用于过滤)
|
||||
const healthcareList = ref(undefined); // 挂号项目选项
|
||||
=======
|
||||
const doctorList = ref(undefined); // 医生选项
|
||||
const healthcareList = ref([]); // 挂号项目选项
|
||||
>>>>>>> v1.3
|
||||
const orgOptions = ref(undefined); // 科室选项
|
||||
const readCardLoading = ref(false);
|
||||
const transformedData = ref({});
|
||||
@@ -1171,32 +1030,6 @@ function setchargeItem() {
|
||||
healthcareData.length > 0 ? healthcareData[0].price + healthcareData[0].activityPrice : '';
|
||||
form.value.definitionId = healthcareData.length > 0 ? healthcareData[0].definitionId : '';
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
|
||||
/** 处理挂号类型变化 */
|
||||
function handleServiceTypeChange() {
|
||||
// 先设置费用项信息
|
||||
setchargeItem();
|
||||
// 然后根据就诊科室和挂号类型过滤医生
|
||||
filterDoctorsByHealthcare();
|
||||
}
|
||||
|
||||
/** 处理科室清空 */
|
||||
function handleOrgClear() {
|
||||
// 清空科室时,清空相关数据
|
||||
form.value.orgId = undefined;
|
||||
form.value.organizationId = undefined;
|
||||
healthcareList.value = [];
|
||||
form.value.serviceTypeId = undefined;
|
||||
form.value.practitionerId = undefined;
|
||||
form.value.doctorName = '';
|
||||
// 如果有医生列表,显示所有医生
|
||||
if (allDoctorList.value) {
|
||||
doctorList.value = allDoctorList.value;
|
||||
}
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
/** 查询患者信息 */
|
||||
function getList() {
|
||||
@@ -1479,10 +1312,6 @@ function handleAdd() {
|
||||
transformedData.value = transformFormData(form.value);
|
||||
console.log(transformedData, 'transformedData门诊挂号');
|
||||
chargeItemIdList.value = [];
|
||||
<<<<<<< HEAD
|
||||
patientInfo.value.patientId = form.value.patientId;
|
||||
patientInfo.value.medfeePaymtdCode = form.value.contractNo; // 设置费用性质
|
||||
=======
|
||||
// patientInfo.value.patientId = form.value.patientId;
|
||||
patientInfo.value = {
|
||||
patientId: form.value.patientId,
|
||||
@@ -1500,7 +1329,6 @@ function handleAdd() {
|
||||
practitionerName: form.value.doctorName || '',
|
||||
healthcareName: '', // 可根据实际情况补充
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
proxy.$refs['outpatientRegistrationRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (!isValidCNPhoneNumber(patientInfo.value.phone)) {
|
||||
@@ -1518,15 +1346,8 @@ function handleAdd() {
|
||||
addOutpatientRegistration(transformedData.value)
|
||||
.then((res) => {
|
||||
if (res.code == 200) {
|
||||
<<<<<<< HEAD
|
||||
console.log('挂号成功,返回数据:', res.data);
|
||||
// 立即刷新列表,确保挂号信息显示在当日已挂号列表中
|
||||
getList();
|
||||
|
||||
=======
|
||||
console.log('78989798', 'res', res);
|
||||
// proxy.$modal.msgSuccess('挂号成功');
|
||||
>>>>>>> v1.3
|
||||
chrgBchno.value = res.data.chrgBchno;
|
||||
registerBusNo.value = res.data.busNo;
|
||||
totalAmount.value = res.data.psnCashPay;
|
||||
@@ -1583,56 +1404,15 @@ function handleSearchPatient(value) {
|
||||
patientSearchKey.value = value;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
function getReturnTooltip(row) {
|
||||
if (!row) {
|
||||
return '';
|
||||
}
|
||||
if (row.statusEnum == 6) {
|
||||
return '已退号';
|
||||
}
|
||||
if (row.statusEnum != 1) {
|
||||
return '该患者医生已接诊,不能退号!';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function handleReturn(row) {
|
||||
if (row.statusEnum != 1) {
|
||||
proxy.$modal.msgError('该患者医生已接诊,不能退号!');
|
||||
return;
|
||||
}
|
||||
=======
|
||||
function handleReturn(row, type = '1') {
|
||||
>>>>>>> v1.3
|
||||
openRefundDialog.value = true;
|
||||
patientInfo.value.patientId = row.patientId;
|
||||
patientInfo.value.encounterId = row.encounterId;
|
||||
totalAmount.value = row.totalPrice;
|
||||
chargeItemIdList.value = row.chargeItemIds.split(',');
|
||||
paymentId.value = row.paymentId;
|
||||
<<<<<<< HEAD
|
||||
// 从挂号记录中获取正确的费用性质
|
||||
patientInfo.value.medfeePaymtdCode = row.contractNo; // 使用挂号记录中的费用性质代码
|
||||
patientInfo.value.contractName = row.contractName; // 保存费用性质名称用于显示
|
||||
|
||||
// 保存完整的原挂号记录信息,用于退号记录
|
||||
registerInfo.value = {
|
||||
...row, // 保存完整的挂号记录
|
||||
patientName: row.patientName,
|
||||
age: row.age,
|
||||
genderEnum_enumText: row.genderEnum_enumText,
|
||||
registerTime: row.registerTime,
|
||||
totalPrice: row.totalPrice,
|
||||
encounterId: row.encounterId,
|
||||
patientId: row.patientId,
|
||||
};
|
||||
|
||||
console.log('退号费用性质:', row.contractNo, row.contractName);
|
||||
=======
|
||||
eventType.value = type;
|
||||
console.log(paymentId.value);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function handleReturnRegister() {
|
||||
|
||||
@@ -110,11 +110,7 @@
|
||||
"top": 57,
|
||||
"height": 13.5,
|
||||
"width": 145.5,
|
||||
<<<<<<< HEAD
|
||||
"title": "机构名称:长春大学医院",
|
||||
=======
|
||||
"title": "机构名称:长春市朝阳区中医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontSize": 9,
|
||||
|
||||
@@ -357,11 +357,7 @@ async function print() {
|
||||
...reportValue.value, // 将 reportValue.value 中的所有属性展开到 result 中
|
||||
nickName: userStore.nickName,
|
||||
orgName: userStore.orgName,
|
||||
<<<<<<< HEAD
|
||||
fixmedinsName: '长春大学医院',
|
||||
=======
|
||||
fixmedinsName: '长春市朝阳区中医院医院',
|
||||
>>>>>>> v1.3
|
||||
queryTime: queryTime.value[0] + '~' + queryTime.value[1],
|
||||
zfAmount: new Decimal(reportValue.value.zhSum || 0).add(reportValue.value.fundSum || 0),
|
||||
feeAmount: new Decimal(reportValue.value.DIAGNOSTIC_FEE || 0)
|
||||
|
||||
@@ -473,11 +473,7 @@ async function print() {
|
||||
...reportValue.value, // 将 reportValue.value 中的所有属性展开到 result 中
|
||||
nickName: userStore.nickName,
|
||||
orgName: userStore.orgName,
|
||||
<<<<<<< HEAD
|
||||
fixmedinsName: userStore.hospitalName,
|
||||
=======
|
||||
fixmedinsName: userStore.hospitalName,
|
||||
>>>>>>> v1.3
|
||||
createTime: formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss'),
|
||||
scheduler: userStore.nickName,
|
||||
timeRange: queryTime.value[0] + '~' + queryTime.value[1],
|
||||
|
||||
@@ -92,8 +92,6 @@ export function printBloodCode (query) {
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
|
||||
/**
|
||||
@@ -106,4 +104,3 @@ export function getEnPrescriptionInfo(data) {
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -33,13 +33,8 @@
|
||||
"left": 0,
|
||||
"top": 22.5,
|
||||
"height": 12,
|
||||
<<<<<<< HEAD
|
||||
"width": 88.5,
|
||||
"title": "长春大学医院",
|
||||
=======
|
||||
"width": 420,
|
||||
"title": "长春市朝阳区中医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontSize": 13.5,
|
||||
|
||||
@@ -8,11 +8,7 @@
|
||||
@close="close"
|
||||
>
|
||||
<el-table :data="recordList" highlight-current-row max-height="650" style="width: 100%" border>
|
||||
<<<<<<< HEAD
|
||||
<el-table-column prop="occurrenceTime" label="执行时间" align="center" />
|
||||
=======
|
||||
<el-table-column prop="recordTime" label="执行时间" align="center" />
|
||||
>>>>>>> v1.3
|
||||
<el-table-column prop="statusEnum_enumText" label="执行状态" align="center" />
|
||||
<el-table-column prop="orgName" label="执行科室" align="center" />
|
||||
<el-table-column prop="practitionerName" label="执行人" align="center" />
|
||||
|
||||
@@ -37,11 +37,7 @@
|
||||
"top": 16.5,
|
||||
"height": 22.5,
|
||||
"width": 120,
|
||||
<<<<<<< HEAD
|
||||
"title": "长春大学医院",
|
||||
=======
|
||||
"title": "长春市朝阳区中医院医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontFamily": "Microsoft YaHei",
|
||||
|
||||
@@ -44,24 +44,16 @@
|
||||
<el-table-column prop="patientName" label="姓名" align="center" />
|
||||
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
|
||||
<el-table-column prop="age" label="年龄" align="center" />
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-table-column prop="receptionTime" label="挂号时间" align="center" />
|
||||
>>>>>>> v1.3
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
<<<<<<< HEAD
|
||||
layout="total, sizes, prev, pager, next"
|
||||
@pagination="getPatientList"
|
||||
=======
|
||||
@pagination="getPatientList"
|
||||
:pager-count="1"
|
||||
:layout="'total, prev, pager, next'"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -106,10 +98,7 @@
|
||||
>
|
||||
打印处置单
|
||||
</el-button>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-button type="primary" plain @click.stop="getEnPrescription()"> 处方单 </el-button>
|
||||
>>>>>>> v1.3
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<el-form
|
||||
@@ -296,28 +285,16 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" prop="unitPrice" label="单价">
|
||||
<<<<<<< HEAD
|
||||
<template #default="scope">
|
||||
<span>
|
||||
{{ scope.unitPrice ? scope.unitPrice.toFixed(2) : '0.00' + ' 元' }}
|
||||
=======
|
||||
<template #default="{ row }">
|
||||
<span>
|
||||
{{ row.unitPrice ? row.unitPrice.toFixed(2) : '0.00' + ' 元' }}
|
||||
>>>>>>> v1.3
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" prop="totalPrice" label="总价">
|
||||
<<<<<<< HEAD
|
||||
<template #default="scope">
|
||||
<span>
|
||||
{{ scope.totalPrice ? scope.totalPrice.toFixed(2) : '0.00' + ' 元' }}
|
||||
=======
|
||||
<template #default="{ row }">
|
||||
<span>
|
||||
{{ row.totalPrice ? row.totalPrice.toFixed(2) : '0.00' + ' 元' }}
|
||||
>>>>>>> v1.3
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -358,11 +335,8 @@ import { formatDateStr } from '@/utils';
|
||||
import { hiprint } from 'vue-plugin-hiprint';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import { getGroupMarkers } from '@/utils/his';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
import { simplePrint, PRINT_TEMPLATE } from '@/utils/printUtils.js';
|
||||
>>>>>>> v1.3
|
||||
// 患者搜索
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
@@ -450,10 +424,6 @@ function handleServiceCategoryChange(value) {
|
||||
deviceList.value = res.data.records.filter((item) => {
|
||||
return item.requestTable == 'wor_device_request';
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
activityList.value = res.data.records.filter((item) => {
|
||||
return (
|
||||
item.requestTable == 'wor_service_request' ||
|
||||
@@ -537,8 +507,6 @@ function handleBatchValidate(type) {
|
||||
};
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 批量操作校验
|
||||
function handleBatchValidate(type) {
|
||||
let params = [];
|
||||
@@ -577,7 +545,6 @@ function handleBatchValidate(type) {
|
||||
};
|
||||
});
|
||||
|
||||
>>>>>>> v1.3
|
||||
return [...activityList, ...deviceList];
|
||||
} else if (type === 'cancel') {
|
||||
let list = [...activitySelectedList.value, ...deviceSelectedList.value];
|
||||
@@ -742,8 +709,6 @@ function printPrescription() {
|
||||
}); //开始打印
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 查看本次就诊处方单
|
||||
function getEnPrescription() {
|
||||
getEnPrescriptionInfo({ encounterId: currentPatient.value.encounterId }).then((res) => {
|
||||
@@ -761,7 +726,6 @@ function getEnPrescription() {
|
||||
});
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 打印处置单
|
||||
function printDisposal() {
|
||||
let requestIds = deviceActivityList.value
|
||||
@@ -869,9 +833,6 @@ function handleCancel(row) {
|
||||
});
|
||||
}
|
||||
// 打印瓶贴
|
||||
<<<<<<< HEAD
|
||||
function printBottleLabel() {
|
||||
=======
|
||||
// function printBottleLabel() {
|
||||
// let result = [];
|
||||
// // 过滤出全部输液药品
|
||||
@@ -966,7 +927,6 @@ function printBottleLabel() {
|
||||
// });
|
||||
// }
|
||||
async function printBottleLabel() {
|
||||
>>>>>>> v1.3
|
||||
let result = [];
|
||||
// 过滤出全部输液药品
|
||||
let selectRows = activityListRef.value.getSelectionRows();
|
||||
@@ -1045,16 +1005,6 @@ async function printBottleLabel() {
|
||||
infuseData: item,
|
||||
};
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
const printElements = templateJson;
|
||||
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
|
||||
console.log(result, '打印机列表');
|
||||
hiprintTemplate.print2(result, {
|
||||
// printer: 'Xprinter XP-365B',
|
||||
height: 210,
|
||||
width: 148,
|
||||
});
|
||||
=======
|
||||
console.log(result, '打印数据');
|
||||
await simplePrint(PRINT_TEMPLATE.OUTPATIENT_INFUSION, result);
|
||||
// console.log('打印成功');
|
||||
@@ -1065,7 +1015,6 @@ async function printBottleLabel() {
|
||||
// height: 210,
|
||||
// width: 148,
|
||||
// });
|
||||
>>>>>>> v1.3
|
||||
// 直接打印回调
|
||||
// 发送任务到打印机成功
|
||||
// hiprintTemplate.on('printSuccess', function (e) {
|
||||
@@ -1285,8 +1234,4 @@ function getRecord(row) {
|
||||
:deep(.el-table__body) tr:hover td.no-hover-column {
|
||||
background-color: inherit !important;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -27,11 +27,7 @@
|
||||
<span>CF0000000001</span>
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<<<<<<< HEAD
|
||||
<h2>长春大学医院</h2>
|
||||
=======
|
||||
<h2>长春市朝阳区中医院医院</h2>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<h3>处方单</h3>
|
||||
|
||||
@@ -211,28 +211,6 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
<<<<<<< HEAD
|
||||
getList();
|
||||
// function getList() {
|
||||
// queryParams.value.organizationId = props.patientInfo.orgId;
|
||||
// getAdviceBaseInfo(queryParams.value).then((res) => {
|
||||
// if (res.data.records.length > 0) {
|
||||
// adviceBaseList.value = res.data.records.filter((item) => {
|
||||
// if (item.adviceType == 1 || item.adviceType == 2) {
|
||||
// return handleQuantity(item) != 0;
|
||||
// } else {
|
||||
// return true;
|
||||
// }
|
||||
// });
|
||||
// total.value = res.data.total;
|
||||
// nextTick(() => {
|
||||
// currentIndex.value = 0;
|
||||
// // adviceBaseRef.value.setCurrentRow(adviceBaseList.value[0]);
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
=======
|
||||
getList();
|
||||
function getList() {
|
||||
queryParams.value.organizationId = props.patientInfo.orgId;
|
||||
@@ -253,7 +231,6 @@ function getList() {
|
||||
}
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
// 从priceList列表中获取价格
|
||||
function getPriceFromInventory(row) {
|
||||
if (row.priceList && row.priceList.length > 0) {
|
||||
|
||||
@@ -273,12 +273,7 @@ export function singOut(data) {
|
||||
url: '/doctor-station/advice/sign-off',
|
||||
method: 'post',
|
||||
data: data,
|
||||
<<<<<<< HEAD
|
||||
skipErrorMsg: true
|
||||
})
|
||||
=======
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
/**
|
||||
* 获取患者本次就诊处方
|
||||
|
||||
@@ -269,25 +269,6 @@ function removeDiagnosis(row, index) {
|
||||
}
|
||||
|
||||
function save() {
|
||||
<<<<<<< HEAD
|
||||
// 为每个诊断项添加诊断医生和诊断时间
|
||||
const diagnosisChildList = tcmDiagonsisSaveList.value.map(item => ({
|
||||
...item,
|
||||
diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || '',
|
||||
diagnosisTime: new Date().toLocaleString('zh-CN')
|
||||
}));
|
||||
|
||||
saveTcmDiagnosis({
|
||||
patientId: props.patientInfo.patientId,
|
||||
encounterId: props.patientInfo.encounterId,
|
||||
diagnosisChildList: diagnosisChildList,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
emit('close');
|
||||
proxy.$modal.msgSuccess('诊断已保存');
|
||||
}
|
||||
});
|
||||
=======
|
||||
if(props.updateZy.length>0){
|
||||
updateTcmDiagnosis({
|
||||
patientId: props.patientInfo.patientId,
|
||||
@@ -312,7 +293,6 @@ function save() {
|
||||
});
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function submit() {
|
||||
|
||||
@@ -8,10 +8,6 @@
|
||||
<el-button icon="Search" @click="queryDiagnosisUse" />
|
||||
</template>
|
||||
</el-input>
|
||||
<<<<<<< HEAD
|
||||
<el-tree ref="treeRef" :data="tree" node-key="id" :props="{ label: 'name', children: 'children' }"
|
||||
highlight-current default-expand-all :filter-node-method="filterNode" @node-click="handleNodeClick">
|
||||
=======
|
||||
<el-tree
|
||||
ref="treeRef"
|
||||
:data="tree"
|
||||
@@ -24,22 +20,17 @@
|
||||
@node-click="handleNodeClick"
|
||||
max-height="650"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<template #default="{ node, data }">
|
||||
<div class="custom-tree-node">
|
||||
<span>{{ node.label }}</span>
|
||||
<span class="tree-node-actions">
|
||||
<template v-if="node.level === 1 && data.name != '常用' && data.name != '历史'">
|
||||
<<<<<<< HEAD
|
||||
<el-button style="color: #000000" type="text" size="small" @click.stop="addChild(data)">
|
||||
=======
|
||||
<el-button
|
||||
style="color: #000000"
|
||||
type="text"
|
||||
size="small"
|
||||
@click.stop="addChild(data)"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
@@ -48,13 +39,6 @@
|
||||
<el-popconfirm width="200" :hide-after="10" title="确认删除此常用诊断吗" placement="top-start"
|
||||
@confirm="deleteChild(data)">
|
||||
<template #reference>
|
||||
<<<<<<< HEAD
|
||||
<el-button style="color: #000000" v-if="
|
||||
node.level === 2 &&
|
||||
node.parent.data.name != '常用' &&
|
||||
node.parent.data.name != '历史'
|
||||
" type="text" size="small" @click.stop="">
|
||||
=======
|
||||
<el-button
|
||||
style="color: #000000"
|
||||
v-if="
|
||||
@@ -66,7 +50,6 @@
|
||||
size="small"
|
||||
@click.stop=""
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-icon>
|
||||
<Minus />
|
||||
</el-icon>
|
||||
@@ -117,11 +100,6 @@
|
||||
<el-table-column label="诊断名称" align="center" prop="name">
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`diagnosisList.${scope.$index}.name`" :rules="rules.name">
|
||||
<<<<<<< HEAD
|
||||
<el-popover :popper-style="{ padding: '0' }" placement="bottom-start" :visible="scope.row.showPopover"
|
||||
trigger="manual" :width="800">
|
||||
<diagnosislist :diagnosisSearchkey="diagnosisSearchkey" @selectDiagnosis="handleSelsectDiagnosis" />
|
||||
=======
|
||||
<el-popover
|
||||
:popper-style="{ padding: '0' }"
|
||||
placement="bottom-start"
|
||||
@@ -134,7 +112,6 @@
|
||||
:diagnosisSearchkey="diagnosisSearchkey"
|
||||
@selectDiagnosis="handleSelsectDiagnosis"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
<template #reference>
|
||||
<el-input v-model="scope.row.name" placeholder="请选择诊断" @input="handleChange"
|
||||
@focus="handleFocus(scope.row, scope.$index)" @blur="handleBlur(scope.row)" />
|
||||
@@ -143,17 +120,9 @@
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<el-table-column label="诊断医生" align="center" prop="diagnosisDoctor" width="120" />
|
||||
<el-table-column label="诊断时间" align="center" prop="diagnosisTime" width="150" />
|
||||
<el-table-column label="诊断代码" align="center" prop="ybNo" width="180" />
|
||||
<el-table-column label="诊断类型" align="center" prop="maindiseFlag" width="120">
|
||||
=======
|
||||
<el-table-column label="医保码" align="center" prop="ybNo" width="180" />
|
||||
<el-table-column label="类别" align="center" prop="typeName" width="100" />
|
||||
<el-table-column label="诊断类型" align="center" prop="maindiseFlag">
|
||||
>>>>>>> v1.3
|
||||
<template #default="scope">
|
||||
<div style="display:flex;flex-direction:column;align-items:center;gap:5px;">
|
||||
<el-checkbox
|
||||
@@ -192,11 +161,6 @@
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<<<<<<< HEAD
|
||||
<diagnosisdialog :openDiagnosis="openDiagnosis" @close="closeDiagnosisDialog" :radio="orgOrUser" />
|
||||
<AddDiagnosisDialog :openAddDiagnosisDialog="openAddDiagnosisDialog" :patientInfo="props.patientInfo"
|
||||
@close="closeDiagnosisDialog" />
|
||||
=======
|
||||
<diagnosisdialog
|
||||
:openDiagnosis="openDiagnosis"
|
||||
@close="closeDiagnosisDialog"
|
||||
@@ -208,7 +172,6 @@
|
||||
:patientInfo="props.patientInfo"
|
||||
@close="closeDiagnosisDialog"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -287,46 +250,6 @@ function refreshData() {
|
||||
}
|
||||
let maxNo = 99;
|
||||
function getList() {
|
||||
<<<<<<< HEAD
|
||||
if (!props.patientInfo || !props.patientInfo.encounterId) {
|
||||
console.warn('患者就诊信息不完整,无法获取诊断数据');
|
||||
return;
|
||||
}
|
||||
|
||||
getEncounterDiagnosis(props.patientInfo.encounterId).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// 为每个诊断项添加默认的诊断医生和时间(如果不存在)
|
||||
form.value.diagnosisList = res.data.map(item => ({
|
||||
...item,
|
||||
diagnosisDoctor: item.diagnosisDoctor || props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,
|
||||
diagnosisTime: item.diagnosisTime || new Date().toLocaleString('zh-CN')
|
||||
}));
|
||||
|
||||
// 获取诊断列表后按排序号排序
|
||||
form.value.diagnosisList.sort((a, b) => (a.diagSrtNo || 0) - (b.diagSrtNo || 0));
|
||||
|
||||
emits('diagnosisSave', false);
|
||||
}
|
||||
});
|
||||
|
||||
getTcmDiagnosis({ encounterId: props.patientInfo.encounterId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if (res.data.illness && res.data.illness.length > 0 && res.data.symptom) {
|
||||
res.data.illness.forEach((item, index) => {
|
||||
form.value.diagnosisList.push({
|
||||
name: item.name + '-' + (res.data.symptom[index]?.name || ''),
|
||||
ybNo: item.ybNo,
|
||||
medTypeCode: item.medTypeCode,
|
||||
diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,
|
||||
diagnosisTime: new Date().toLocaleString('zh-CN')
|
||||
});
|
||||
});
|
||||
}
|
||||
emits('diagnosisSave', false);
|
||||
}
|
||||
});
|
||||
|
||||
=======
|
||||
getEncounterDiagnosis(props.patientInfo.encounterId)
|
||||
.then((res) => {
|
||||
if (res.code == 200) {
|
||||
@@ -362,7 +285,6 @@ function getList() {
|
||||
}
|
||||
});
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
getTree();
|
||||
}
|
||||
|
||||
@@ -487,22 +409,10 @@ function getTree() {
|
||||
function handleAddDiagnosis() {
|
||||
proxy.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
<<<<<<< HEAD
|
||||
if (!allowAdd.value) {
|
||||
proxy.$modal.msgWarning('请先填写病历');
|
||||
return;
|
||||
}
|
||||
// 计算现有最大排序号
|
||||
const maxSortNo = form.value.diagnosisList.length > 0
|
||||
? Math.max(...form.value.diagnosisList.map(item => item.diagSrtNo || 0))
|
||||
: 0;
|
||||
|
||||
=======
|
||||
// if (!allowAdd.value) {
|
||||
// proxy.$modal.msgWarning('请先填写病历');
|
||||
// return;
|
||||
// }
|
||||
>>>>>>> v1.3
|
||||
form.value.diagnosisList.push({
|
||||
showPopover: false,
|
||||
name: undefined,
|
||||
@@ -717,14 +627,10 @@ defineExpose({ getList, getDetail, handleSaveDiagnosis });
|
||||
.el-checkbox.is-bordered.el-checkbox--small {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
.tree-with-scrollbar {
|
||||
max-height: 650px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
.custom-tree-node {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -1,25 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<<<<<<< HEAD
|
||||
<el-scrollbar height="200px">
|
||||
<el-table
|
||||
ref="emrTemplateRef"
|
||||
:data="emrTemplate"
|
||||
row-key="id"
|
||||
highlight-current-row
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column label="模板名称" align="center" prop="templateName" />
|
||||
<!-- <el-table-column label="使用范围" align="center" prop="useScopeCode" /> -->
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click.stop="handelDelete(scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-scrollbar>
|
||||
|
||||
=======
|
||||
<el-table
|
||||
ref="emrTemplateRef"
|
||||
:data="emrTemplate"
|
||||
@@ -36,7 +16,6 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
>>>>>>> v1.3
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
@@ -67,11 +46,7 @@ const props = defineProps({
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
getList();
|
||||
=======
|
||||
getList();
|
||||
>>>>>>> v1.3
|
||||
function getList() {
|
||||
queryParams.value.useScopeCode = 1;
|
||||
getEmrTemplateList(queryParams.value).then((res) => {
|
||||
|
||||
@@ -276,10 +276,6 @@ function getRowDisabled(row) {
|
||||
* 新增处方按钮操作
|
||||
*/
|
||||
function handleAddPrescription() {
|
||||
<<<<<<< HEAD
|
||||
console.log('新增处方按钮操作 - 打开新增处方弹窗');
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
title.value = '新增处方';
|
||||
openPrescriptionDialog();
|
||||
}
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
/*
|
||||
* @Author: sjjh
|
||||
* @Date: 2025-09-20 17:02:37
|
||||
<<<<<<< HEAD
|
||||
* @Description:
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
|
||||
// ====== 文书记录
|
||||
=======
|
||||
* @Description:
|
||||
*/
|
||||
import request from '@/utils/request';
|
||||
@@ -21,17 +14,11 @@ export function saveOrUpdateRecord(data) {
|
||||
data,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
// 新增记录
|
||||
export function addRecord(data) {
|
||||
return request({
|
||||
url: '/document/record/addRecord',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data
|
||||
})
|
||||
}
|
||||
=======
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -69,31 +56,21 @@ export function deleteTemplate(id) {
|
||||
});
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 根据患者ID或就诊ID获取文书记录列表,只针对不需返回患者具体信息的列表,体温单除外,单独处理
|
||||
|
||||
export function getRecordByEncounterIdList(params) {
|
||||
return request({
|
||||
url: '/document/record/getRecordByEncounterIdList',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params
|
||||
})
|
||||
=======
|
||||
params,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
// 初始化文书定义
|
||||
export function init() {
|
||||
return request({
|
||||
url: '/document/record/init',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
})
|
||||
=======
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
// ====== 文书模板
|
||||
@@ -102,40 +79,22 @@ export function addTemplate(data) {
|
||||
return request({
|
||||
url: '/document/template/add',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data
|
||||
})
|
||||
=======
|
||||
data,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
//
|
||||
export function getListByDefinitionId(definitionId) {
|
||||
return request({
|
||||
url: '/document/template/getListByDefinitionId',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params: {definitionId}
|
||||
})
|
||||
=======
|
||||
params: { definitionId },
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
// 更新模板
|
||||
export function updateTemplate(data) {
|
||||
return request({
|
||||
url: '/document/template/update',
|
||||
method: 'put',
|
||||
<<<<<<< HEAD
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
=======
|
||||
data,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -7,13 +7,6 @@
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
<el-scrollbar class="emr-history-scrollbar-container" style="width: 100%">
|
||||
<div v-for="item in historyData" :key="item.id" class="scrollbar-item">
|
||||
<el-tooltip effect="dark" :content="`${item.name}(${item.recordTime})`" placement="bottom">
|
||||
<el-text class="w-150px mb-2" truncated @click="handleNodeClick(item)">
|
||||
{{ item.name }}({{ item.recordTime }})
|
||||
=======
|
||||
<el-scrollbar
|
||||
class="emr-history-scrollbar-container"
|
||||
style="width: 100%; height: calc(100vh - 300px)"
|
||||
@@ -37,7 +30,6 @@
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
>>>>>>> v1.3
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
@@ -46,13 +38,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { ref, reactive, defineEmits, unref } from 'vue';
|
||||
import { getRecordByEncounterIdList } from '../api';
|
||||
=======
|
||||
import { ref, reactive, defineEmits, unref, nextTick } from 'vue';
|
||||
import { getRecordByEncounterIdList, deleteRecord } from '../api';
|
||||
>>>>>>> v1.3
|
||||
import { ElTree } from 'element-plus';
|
||||
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus';
|
||||
import { patientInfo } from '../../store/patient.js';
|
||||
@@ -62,13 +49,10 @@ const props = defineProps({
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
selectedRecordId: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
const definitionId = defineModel('definitionId', {
|
||||
type: String,
|
||||
@@ -97,20 +81,13 @@ const queryList = async () => {
|
||||
historyData.value = [];
|
||||
}
|
||||
} catch (error) {
|
||||
<<<<<<< HEAD
|
||||
// ElMessage.error('获取模板树失败');
|
||||
=======
|
||||
// ElMessage.error(' 获取模板树失败 ');
|
||||
>>>>>>> v1.3
|
||||
historyData.value = [];
|
||||
}
|
||||
};
|
||||
const handleNodeClick = (data) => {
|
||||
emits('historyClick', data);
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
const currentSelectTemplate = ref({});
|
||||
=======
|
||||
// 删除历史记录
|
||||
const handleDelete = async (item) => {
|
||||
try {
|
||||
@@ -128,7 +105,6 @@ const handleDelete = async (item) => {
|
||||
}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
defineExpose({ queryList });
|
||||
</script>
|
||||
|
||||
@@ -152,8 +128,6 @@ defineExpose({ queryList });
|
||||
& + .scrollbar-item {
|
||||
margin-top: 8px;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.selected-history-item {
|
||||
@@ -164,7 +138,6 @@ defineExpose({ queryList });
|
||||
color: #d9d9d9;
|
||||
cursor: not-allowed;
|
||||
opacity: 0.6;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,19 +9,6 @@
|
||||
</div> -->
|
||||
<el-scrollbar class="emr-template-scrollbar-container" style="width: 100%">
|
||||
<div v-for="item in templateData" :key="item.id" class="scrollbar-item">
|
||||
<<<<<<< HEAD
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="`${item.name}`"
|
||||
placement="bottom"
|
||||
>
|
||||
<el-text class="2" truncated @click="handleNodeClick(item)">
|
||||
<div class="template-item">{{ item.name }}
|
||||
<el-space>
|
||||
<el-icon><Edit @click="handleEdit(item)" /></el-icon>
|
||||
</el-space></div>
|
||||
|
||||
=======
|
||||
<el-tooltip effect="dark" :content="`${item.name}`" placement="bottom">
|
||||
<el-text class="2" truncated @click="handleNodeClick(item)">
|
||||
<div class="template-item">
|
||||
@@ -31,7 +18,6 @@
|
||||
<el-icon><Delete @click="handleDelete(item)" /></el-icon>
|
||||
</el-space>
|
||||
</div>
|
||||
>>>>>>> v1.3
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
@@ -41,19 +27,11 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, defineEmits, unref } from 'vue';
|
||||
<<<<<<< HEAD
|
||||
import { getListByDefinitionId } from '../api';
|
||||
import { ElTree } from 'element-plus';
|
||||
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus';
|
||||
import { patientInfo } from '../../store/patient.js';
|
||||
const emits = defineEmits(['templateClick','edit']);
|
||||
=======
|
||||
import { getListByDefinitionId, deleteTemplate } from '../api';
|
||||
import { ElTree } from 'element-plus';
|
||||
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus';
|
||||
import { patientInfo } from '../../store/patient.js';
|
||||
const emits = defineEmits(['templateClick', 'edit']);
|
||||
>>>>>>> v1.3
|
||||
const props = defineProps({
|
||||
definitionId: {
|
||||
type: String,
|
||||
@@ -73,17 +51,6 @@ const queryParams = ref({
|
||||
isPage: 0,
|
||||
});
|
||||
const templateData = ref([]);
|
||||
<<<<<<< HEAD
|
||||
const queryList = async () => {
|
||||
try {
|
||||
if ( unref(definitionId)&&unref(definitionId) !== '') {
|
||||
const res = await getListByDefinitionId(unref(definitionId));
|
||||
templateData.value = res.data || [];
|
||||
}else{
|
||||
templateData.value = [];
|
||||
}
|
||||
|
||||
=======
|
||||
// 删除模板
|
||||
const handleDelete = async (item) => {
|
||||
try {
|
||||
@@ -102,7 +69,6 @@ const queryList = async () => {
|
||||
} else {
|
||||
templateData.value = [];
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
} catch (error) {
|
||||
ElMessage.error('获取模板失败');
|
||||
templateData.value = [];
|
||||
@@ -120,38 +86,6 @@ defineExpose({ queryList });
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.emr-template-container {
|
||||
<<<<<<< HEAD
|
||||
height: 100%;
|
||||
// padding: 8px;
|
||||
|
||||
.emr-template-scrollbar-container{
|
||||
padding: 8px;
|
||||
height: 100%;
|
||||
.scrollbar-item {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
background: var(--el-color-primary-light-9);
|
||||
& + .scrollbar-item {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.el-text{
|
||||
width: calc(100% - 0px);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 8px;
|
||||
}
|
||||
.template-item{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
=======
|
||||
height: 100%;
|
||||
// padding: 8px;
|
||||
|
||||
@@ -181,5 +115,4 @@ defineExpose({ queryList });
|
||||
}
|
||||
}
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
</style>
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
<<<<<<< HEAD
|
||||
<!--
|
||||
* @Author: sjjh
|
||||
* @Date: 2025-09-18 15:41:10
|
||||
* @Description: 门诊病历组件
|
||||
-->
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<template>
|
||||
<div class="emr-use-container">
|
||||
<div
|
||||
@@ -51,26 +43,13 @@
|
||||
<!-- <el-button type="primary" @click="newEmr">新建</el-button> -->
|
||||
<el-button type="primary" @click="saveAsModel">存为模版</el-button>
|
||||
<el-button @click="refresh">刷新</el-button>
|
||||
<<<<<<< HEAD
|
||||
<el-button type="primary" @click="save">保存</el-button>
|
||||
<!-- <el-button type="primary" @click="print">打印</el-button> -->
|
||||
=======
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
<el-button type="primary" @click="save">保存</el-button>
|
||||
<el-button type="primary" @click="print">打印</el-button>
|
||||
>>>>>>> v1.3
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="operate-main">
|
||||
<el-scrollbar class="template-tree-scrollbar">
|
||||
<<<<<<< HEAD
|
||||
<component
|
||||
:is="currentComponent"
|
||||
ref="emrComponentRef"
|
||||
:patientInfo="props.patientInfo"
|
||||
@submitOk="handleSubmitOk"
|
||||
/>
|
||||
=======
|
||||
<div v-loading="loading" class="loading-container">
|
||||
<component
|
||||
:is="currentComponent"
|
||||
@@ -79,7 +58,6 @@
|
||||
@submitOk="handleSubmitOk"
|
||||
/>
|
||||
</div>
|
||||
>>>>>>> v1.3
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,10 +70,7 @@
|
||||
@historyClick="handleHistoryClick"
|
||||
ref="historyRef"
|
||||
v-model:definitionId="currentSelectTemplate.id"
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
:selectedRecordId="selectedHistoryRecordId"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="模版" name="model">
|
||||
@@ -119,20 +94,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { getCurrentInstance, nextTick, onBeforeMount, onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus';
|
||||
import { getTreeList } from '@/views/basicmanage/caseTemplates/api';
|
||||
import { addRecord, addTemplate } from './api';
|
||||
import { patientInfo } from '../store/patient.js';
|
||||
import dayjs from 'dayjs';
|
||||
// 打印工具
|
||||
// import { simplePrint, PRINT_TEMPLATE } from '@/utils/printUtils.js';
|
||||
const { proxy } = getCurrentInstance();
|
||||
const emits = defineEmits(['emrSaved']);
|
||||
const props = defineProps({
|
||||
/** 患者信息 doctorStation 传递信息*/
|
||||
=======
|
||||
import { nextTick, onMounted, ref, watch } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { getTreeList } from '@/views/basicmanage/caseTemplates/api';
|
||||
@@ -146,7 +107,6 @@ const { proxy } = getCurrentInstance();
|
||||
const emits = defineEmits([]);
|
||||
const props = defineProps({
|
||||
/** 患者信息 doctorStation 传递信息*/
|
||||
>>>>>>> v1.3
|
||||
patientInfo: {
|
||||
type: Object,
|
||||
required: true,
|
||||
@@ -169,10 +129,7 @@ const queryParams = ref({
|
||||
useRanges: [1, 2], // 0 暂不使用 1 全院 2 科室 3 个人
|
||||
organizationId: userStore.orgId,
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const loading = ref(false); // 数据加载状态
|
||||
>>>>>>> v1.3
|
||||
|
||||
const currentSelectTemplate = ref({
|
||||
id: '',
|
||||
@@ -182,10 +139,7 @@ const emrComponentRef = ref(null);
|
||||
const quicklyactiveName = ref('history');
|
||||
const leftShow = ref(true);
|
||||
const rightShow = ref(true);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const templateTree = ref(null);
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 树配置(模板树)
|
||||
const defaultProps = {
|
||||
@@ -198,12 +152,9 @@ const queryTemplateTree = async () => {
|
||||
try {
|
||||
const res = await getTreeList(queryParams.value);
|
||||
templateData.value = res.data || [];
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
// 组件挂载后,患者信息变化时会自动调用selectDefaultTemplate
|
||||
// 这里不再重复调用,避免重复操作
|
||||
>>>>>>> v1.3
|
||||
} catch (error) {
|
||||
// ElMessage.error('获取模板树失败');
|
||||
templateData.value = [];
|
||||
@@ -223,9 +174,6 @@ const handleNodeClick = (data, node) => {
|
||||
};
|
||||
// currentComponent.value = null;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
historyRef.value?.queryList();
|
||||
=======
|
||||
|
||||
// 确保组件状态更新后再查询历史记录
|
||||
nextTick(() => {
|
||||
@@ -240,7 +188,6 @@ const handleNodeClick = (data, node) => {
|
||||
}, 100);
|
||||
});
|
||||
|
||||
>>>>>>> v1.3
|
||||
templateRef.value?.queryList();
|
||||
};
|
||||
|
||||
@@ -300,14 +247,6 @@ const handleSubmitOk = async (data) => {
|
||||
editForm.value.encounterId = patientInfo.value.encounterId;
|
||||
editForm.value.patientId = patientInfo.value.patientId;
|
||||
editForm.value.recordTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
||||
<<<<<<< HEAD
|
||||
await addRecord(editForm.value);
|
||||
ElMessage.success('病历保存成功');
|
||||
historyRef.value?.queryList();
|
||||
templateRef.value?.queryList();
|
||||
// 通知父组件病历保存成功
|
||||
emits('emrSaved', true);
|
||||
=======
|
||||
// 提交病历
|
||||
await saveOrUpdateRecord(editForm.value);
|
||||
ElMessage.success('保存成功');
|
||||
@@ -320,18 +259,12 @@ const handleSubmitOk = async (data) => {
|
||||
setTimeout(() => {
|
||||
loadLatestMedicalRecord();
|
||||
}, 100);
|
||||
>>>>>>> v1.3
|
||||
} catch (error) {
|
||||
ElMessage.error('提交失败');
|
||||
console.log(error);
|
||||
}
|
||||
} else if (currentOperate.value === 'addTemplate') {
|
||||
<<<<<<< HEAD
|
||||
// 新增或者编辑模板
|
||||
// editTemplateForm.value.id=
|
||||
=======
|
||||
// 新增或修改模板
|
||||
>>>>>>> v1.3
|
||||
editTemplateForm.value.name =
|
||||
currentSelectTemplate.value.name + dayjs().format('YYYY/MM/DD HH:mm');
|
||||
editTemplateForm.value.contextJson = JSON.stringify(data);
|
||||
@@ -346,26 +279,12 @@ const refresh = () => {
|
||||
templateRef.value?.queryList();
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
const deleteEmr = async () => {
|
||||
try {
|
||||
// 这里应该添加实际的删除逻辑
|
||||
ElMessage.success('删除成功!');
|
||||
} catch (error) {
|
||||
ElMessage.error('删除失败');
|
||||
}
|
||||
};
|
||||
|
||||
const save = async () => {
|
||||
try {
|
||||
=======
|
||||
const save = async () => {
|
||||
try {
|
||||
if (editForm.value && editForm.value.printCount && editForm.value.printCount > 0) {
|
||||
ElMessage.warning('该病历已打印,不允许修改');
|
||||
return;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
currentOperate.value = 'add';
|
||||
await emrComponentRef.value?.submit();
|
||||
} catch (error) {
|
||||
@@ -373,8 +292,6 @@ const save = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 重置表单数据
|
||||
const resetForm = async () => {
|
||||
try {
|
||||
@@ -419,7 +336,6 @@ const resetForm = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
const historyRef = ref(null);
|
||||
const handleHistoryClick = (data) => {
|
||||
newEmr();
|
||||
@@ -428,8 +344,6 @@ const handleHistoryClick = (data) => {
|
||||
emrComponentRef.value?.setFormData(JSON.parse(editForm.value.contentJson));
|
||||
});
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
// 默认选中门诊病历模板
|
||||
const selectOutpatientMedicalRecordTemplate = async () => {
|
||||
@@ -532,17 +446,13 @@ const loadLatestMedicalRecord = async () => {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
const templateRef = ref(null);
|
||||
|
||||
const handleTemplateClick = (data) => {
|
||||
newEmr();
|
||||
editForm.value = data;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
editForm.value.id = '';
|
||||
editForm.value.recordTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
||||
>>>>>>> v1.3
|
||||
nextTick(() => {
|
||||
emrComponentRef.value?.setFormData(JSON.parse(editForm.value.contextJson));
|
||||
});
|
||||
@@ -555,12 +465,6 @@ const templateEdit = (data) => {
|
||||
const templateEditVisible = ref(false);
|
||||
// const templateEditSubmitOk = () => {};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 打印方法实现
|
||||
const print = async () => {
|
||||
try {
|
||||
// 检查是否有选中的病历模板
|
||||
=======
|
||||
// 定义病历模板类型与打印模板的映射关系
|
||||
const templateToPrintTemplateMap = {
|
||||
// 手术记录相关模板
|
||||
@@ -593,46 +497,19 @@ const getPrintTemplateByTemplateName = (templateName) => {
|
||||
// 打印
|
||||
const print = async () => {
|
||||
try {
|
||||
>>>>>>> v1.3
|
||||
if (!currentSelectTemplate.value || !currentSelectTemplate.value.id) {
|
||||
ElMessage.warning('请先选择病历模板');
|
||||
return;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 检查是否已保存
|
||||
if (!editForm.value.id || editForm.value.id === '') {
|
||||
ElMessage.warning('请先保存病历后再进行打印');
|
||||
return;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 获取当前病历组件的表单数据
|
||||
const formData = emrComponentRef.value?.formData || {};
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 准备打印数据(不依赖子组件的getPrintData方法)
|
||||
// const printData = {
|
||||
// // 使用当前选中的模板信息
|
||||
// templateInfo: currentSelectTemplate.value,
|
||||
// // 添加患者信息
|
||||
// patientInfo: props.patientInfo,
|
||||
// // 添加打印时间
|
||||
// printTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
// // 添加基本病历信息
|
||||
// emrInfo: {
|
||||
// documentName: currentSelectTemplate.value.name || '住院病历',
|
||||
// documentId: currentSelectTemplate.value.id || '',
|
||||
// encounterId: props.patientInfo.encounterId || '',
|
||||
// patientId: props.patientInfo.patientId || '',
|
||||
// recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
// },
|
||||
// // 添加病历表单数据(包含红框内的所有字段)
|
||||
// formData: formData,
|
||||
// doctorName: userStore.nickName,
|
||||
// };
|
||||
|
||||
=======
|
||||
// 获取诊断数据
|
||||
let diagnosisList = [];
|
||||
let diagnosisText = '';
|
||||
@@ -659,7 +536,6 @@ const print = async () => {
|
||||
const selectedPrintTemplate = getPrintTemplateByTemplateName(templateName);
|
||||
|
||||
// 打印数据
|
||||
>>>>>>> v1.3
|
||||
const printData = {
|
||||
// 模板信息
|
||||
templateName: currentSelectTemplate.value.name || '住院病历',
|
||||
@@ -683,30 +559,16 @@ const print = async () => {
|
||||
department: props.patientInfo.department || '',
|
||||
attendingDoctor: props.patientInfo.attendingDoctor || '',
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
// 诊断信息
|
||||
diagnosisList: JSON.stringify(diagnosisList),
|
||||
diagnosisText: diagnosisText,
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 病历信息
|
||||
documentName: currentSelectTemplate.value.name || '住院病历',
|
||||
documentId: currentSelectTemplate.value.id || '',
|
||||
recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
printTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 表单数据 - 需要将嵌套结构展开
|
||||
...flattenObject(formData),
|
||||
};
|
||||
|
||||
// 执行打印
|
||||
await simplePrint(PRINT_TEMPLATE.OUTPATIENT_MEDICAL_RECORD, printData);
|
||||
ElMessage.success('打印成功');
|
||||
} catch (error) {
|
||||
console.error('打印失败:', error);
|
||||
=======
|
||||
//病历号
|
||||
busNo: props.patientInfo.busNo || '',
|
||||
//费用类型
|
||||
@@ -733,7 +595,6 @@ const print = async () => {
|
||||
|
||||
ElMessage.success('打印成功');
|
||||
} catch (error) {
|
||||
>>>>>>> v1.3
|
||||
ElMessage.error('打印失败: ' + (error.message || '未知错误'));
|
||||
}
|
||||
};
|
||||
@@ -767,17 +628,6 @@ const templateEditSubmitOk = () => {
|
||||
historyRef.value?.queryList();
|
||||
templateRef.value?.queryList();
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
// onBeforeMount(() => {});
|
||||
// 刚进页面默认显示门诊病历
|
||||
const selectDefaultTemplate = () => {
|
||||
nextTick(() => {
|
||||
// 查找门诊病历(1.0.0)节点
|
||||
const findTemplate = (nodes) => {
|
||||
for (const node of nodes) {
|
||||
if (node.children && node.children.length > 0) {
|
||||
const found = findTemplate(node.children);
|
||||
=======
|
||||
|
||||
// 选择默认模板 - 获取门诊病历分类下的第一个模板
|
||||
const selectDefaultTemplate = () => {
|
||||
@@ -805,41 +655,14 @@ const selectDefaultTemplate = () => {
|
||||
// 递归查找子节点
|
||||
if (node.children && node.children.length > 0) {
|
||||
const found = findOutpatientRecordCategoryAndFirstTemplate(node.children);
|
||||
>>>>>>> v1.3
|
||||
if (found) {
|
||||
return found;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
// 根据ID查找门诊病历模板
|
||||
if (node.document && node.document.id === '1963474077201162242') {
|
||||
return node;
|
||||
}
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
<<<<<<< HEAD
|
||||
const defaultTemplate = findTemplate(templateData.value);
|
||||
if (defaultTemplate) {
|
||||
// 模拟点击节点
|
||||
const mockNode = {
|
||||
isLeaf: true,
|
||||
};
|
||||
handleNodeClick(defaultTemplate, mockNode);
|
||||
}
|
||||
});
|
||||
};
|
||||
onMounted(async () => {
|
||||
console.log('hospitalizationEmr mounted', userStore);
|
||||
await queryTemplateTree();
|
||||
selectDefaultTemplate();
|
||||
});
|
||||
|
||||
defineExpose({ state });
|
||||
=======
|
||||
const defaultTemplate = findOutpatientRecordCategoryAndFirstTemplate(templateData.value);
|
||||
if (defaultTemplate) {
|
||||
nextTick(() => {
|
||||
@@ -899,7 +722,6 @@ onMounted(async () => {
|
||||
});
|
||||
|
||||
// defineExpose({ state }); // state未使用
|
||||
>>>>>>> v1.3
|
||||
|
||||
const disNode = () => {
|
||||
leftShow.value = !leftShow.value;
|
||||
@@ -1013,14 +835,6 @@ const disNode_R = () => {
|
||||
}
|
||||
|
||||
.operate-main {
|
||||
<<<<<<< HEAD
|
||||
height: calc(100vh - 150px);
|
||||
flex: auto;
|
||||
}
|
||||
.operate-main .template-tree-scrollbar {
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
=======
|
||||
flex: 1;
|
||||
min-height: 0; /* 允许flex子项高度收缩 */
|
||||
display: flex;
|
||||
@@ -1044,7 +858,6 @@ const disNode_R = () => {
|
||||
.operate-main .template-tree-scrollbar > * {
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1066,13 +879,10 @@ const disNode_R = () => {
|
||||
transition-duration: 300ms;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
/* 加载状态样式 */
|
||||
.loading-container {
|
||||
min-height: 400px;
|
||||
position: relative;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
</style>
|
||||
|
||||
@@ -19,11 +19,7 @@
|
||||
<span>{{ item.prescriptionNo }}</span>
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<<<<<<< HEAD
|
||||
<h2>长春大学医院</h2>
|
||||
=======
|
||||
<h2>长春市朝阳区中医院医院</h2>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<h3>处方单</h3>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,17 +59,6 @@
|
||||
<el-table-column label="数量" align="center" prop="quantity" />
|
||||
<el-table-column label="单位" align="center" prop="unitCode_dictText" />
|
||||
<el-table-column label="收款金额" align="center" prop="totalPrice" />
|
||||
<<<<<<< HEAD
|
||||
<el-table-column label="发放状态" align="center">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.dispenseStatus != 0" type="danger">
|
||||
{{ scope.row.dispenseStatus_enumText }}
|
||||
</el-tag>
|
||||
<el-tag v-else type="default">{{ scope.row.serviceStatus_enumText }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<el-table-column label="支付状态" align="center" prop="refundStatus_enumText">
|
||||
<template #default="scope">
|
||||
<el-tag
|
||||
|
||||
@@ -3,11 +3,7 @@
|
||||
<div
|
||||
class="prescription-section"
|
||||
v-for="(prescription, pIndex) in tcmPrescriptionList"
|
||||
<<<<<<< HEAD
|
||||
:key="pIndex"
|
||||
=======
|
||||
:key="prescription.id"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<div class="section-header">
|
||||
<div class="title first-prescription">
|
||||
@@ -22,20 +18,6 @@
|
||||
<plus />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
<<<<<<< HEAD
|
||||
class="delete-icon"
|
||||
title="删除处方单"
|
||||
@click="handleDeletePrescriptionClick(pIndex)"
|
||||
:class="{ 'disabled-icon': isPrescriptionDeletable(pIndex) !== true }"
|
||||
style="font-size: 20px !important; margin-left: 10px; color: #f56c6c"
|
||||
>
|
||||
<minus />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="summary">
|
||||
<span class="summary-item">药品数: {{ getPrescriptionMedicineCount(pIndex) }}种</span>
|
||||
<span class="summary-item">总价: ¥ {{ getPrescriptionTotalPrice(pIndex) }}</span>
|
||||
=======
|
||||
class="add-icon"
|
||||
title="删除处方"
|
||||
@click="deletePrescription(prescription)"
|
||||
@@ -50,7 +32,6 @@
|
||||
{{ prescription.prescriptionList ? prescription.prescriptionList.length : '0' }}种
|
||||
</span>
|
||||
<span class="summary-item">总价: ¥ {{ calculatePrescriptionTotal(pIndex) }}</span>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -93,15 +74,8 @@
|
||||
:value="item.accountId"
|
||||
/>
|
||||
</el-select>
|
||||
<<<<<<< HEAD
|
||||
<span class="doctor-station"> 配方名称: </span>
|
||||
<el-input v-model="formulaName" placeholder=" " style="width: 100px" />
|
||||
<span class="doctor-station"> 用药途径: </span>
|
||||
<el-select v-model="methodCode" placeholder="费用性质" style="width: 120px">
|
||||
=======
|
||||
<span class="doctor-station"> 用法: </span>
|
||||
<el-select v-model="prescription.methodCode" placeholder="用法" style="width: 120px">
|
||||
>>>>>>> v1.3
|
||||
<el-option
|
||||
v-for="dict in method_code"
|
||||
:key="dict.value"
|
||||
@@ -271,23 +245,6 @@
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
<<<<<<< HEAD
|
||||
<span class="doctor-station"> 脚注: </span>
|
||||
<el-select
|
||||
v-model="footNote"
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
style="width: 120px; margin-right: 20px"
|
||||
placeholder="">
|
||||
<el-option
|
||||
v-for="dict in hjerbal_footnotes"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
=======
|
||||
<!-- 单次剂量 -->
|
||||
<el-form-item
|
||||
label="特殊煎法:"
|
||||
@@ -305,7 +262,6 @@
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<span class="total-amount">
|
||||
总金额:{{
|
||||
@@ -474,13 +430,9 @@ import { calculateQuantityByDays, formatNumber } from '@/utils/his';
|
||||
import Decimal from 'decimal.js';
|
||||
import tcmdiagnosisDialog from './tcmdiagnosisDialog';
|
||||
import { Delete, Minus } from '@element-plus/icons-vue';
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
import { ElMessage } from 'element-plus';
|
||||
import printUtils, { PRINT_TEMPLATE } from '@/utils/printUtils';
|
||||
import { advicePrint } from '@/api/public';
|
||||
>>>>>>> v1.3
|
||||
const emit = defineEmits(['selectDiagnosis']);
|
||||
const total = ref(0);
|
||||
const queryParams = ref({});
|
||||
@@ -494,10 +446,6 @@ const encounterId = ref('');
|
||||
const accountId = ref('');
|
||||
const encounterDiagnosisId = ref('');
|
||||
|
||||
<<<<<<< HEAD
|
||||
const tcmPrescriptionList = ref([
|
||||
{
|
||||
=======
|
||||
let prescriptionIdCounter = 1;
|
||||
const generatePrescriptionId = () => {
|
||||
return `prescription_${Date.now()}_${prescriptionIdCounter++}`;
|
||||
@@ -506,7 +454,6 @@ const generatePrescriptionId = () => {
|
||||
const tcmPrescriptionList = ref([
|
||||
{
|
||||
id: generatePrescriptionId(),
|
||||
>>>>>>> v1.3
|
||||
prescriptionList: [],
|
||||
conditionDefinitionId: '',
|
||||
accountId: '',
|
||||
@@ -526,35 +473,9 @@ const tcmPrescriptionList = ref([
|
||||
const unitCodeList = ref([]);
|
||||
const adviceTableRef = ref([]);
|
||||
const organization = ref([]);
|
||||
<<<<<<< HEAD
|
||||
const conditionDefinitionId = ref('');
|
||||
const diagnosisName = ref('');
|
||||
const diagnosisInfo = ref({});
|
||||
const rateCode = ref('');
|
||||
const footNote = ref('');
|
||||
const decoctionMethod = ref('');
|
||||
const chineseHerbsDoseQuantity = ref('');
|
||||
const dispensePerDuration = ref('');
|
||||
const formulaName = ref('');
|
||||
const sufferingFlag = ref(false);
|
||||
const methodCode = ref('');
|
||||
const loading = ref(false);
|
||||
const rowRules = ref({
|
||||
conditionDefinitionId: [{ required: true, message: '请选择诊断', trigger: 'change' }],
|
||||
minUnitQuantity: [{ required: true, message: '请输入单次剂量', trigger: 'change' }],
|
||||
doseQuantity: [{ required: true, message: '请输入单次剂量单位', trigger: 'change' }],
|
||||
quantity: [{ required: true, message: '请输入数量', trigger: 'change' }],
|
||||
dispensePerDuration: [{ required: true, message: '请输入用药天数', trigger: 'change' }],
|
||||
formulaName: [{ required: true, message: '请输入配方名称', trigger: 'change' }],
|
||||
executeNum: [{ required: true, message: '请输入执行次数', trigger: 'change' }],
|
||||
rateCode: [{ required: true, message: '请选择频次', trigger: 'change' }],
|
||||
methodCode: [{ required: true, message: '请选择给药途径', trigger: 'change' }],
|
||||
orgId: [{ required: true, message: '请选择执行科室', trigger: 'change' }],
|
||||
=======
|
||||
const loading = ref(false);
|
||||
const rowRules = ref({
|
||||
minUnitQuantity: [{ required: true, message: '请输入单次剂量', trigger: 'change' }],
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
const unitMap = ref({
|
||||
dose: 'dose',
|
||||
@@ -584,39 +505,6 @@ const inputRefs = ref({}); // 存储输入框实例
|
||||
const requiredProps = ref([]); // 存储必填项 prop 顺序
|
||||
const totalAmount = ref(0);
|
||||
const tcmDianosis = ref();
|
||||
<<<<<<< HEAD
|
||||
const { method_code, unit_code, rate_code, method_of_decocting_medicine,hjerbal_footnotes,distribution_category_code } = proxy.useDict(
|
||||
'method_code',
|
||||
'unit_code',
|
||||
'rate_code',
|
||||
'method_of_decocting_medicine',
|
||||
'hjerbal_footnotes',
|
||||
'distribution_category_code'
|
||||
);
|
||||
|
||||
const adviceTypeList = ref([
|
||||
{
|
||||
label: '西药',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
label: '中成药',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
label: '耗材',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
label: '诊疗',
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
label: '全部',
|
||||
value: '',
|
||||
},
|
||||
]);
|
||||
=======
|
||||
const { method_code, unit_code, rate_code, distribution_category_code, dosage_instruction } =
|
||||
proxy.useDict(
|
||||
'method_code',
|
||||
@@ -626,7 +514,6 @@ const { method_code, unit_code, rate_code, distribution_category_code, dosage_in
|
||||
'dosage_instruction'
|
||||
);
|
||||
|
||||
>>>>>>> v1.3
|
||||
onMounted(() => {
|
||||
document.addEventListener('keydown', escKeyListener);
|
||||
});
|
||||
@@ -652,64 +539,6 @@ function getList() {
|
||||
});
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
function getListInfo(addNewRow) {
|
||||
// 确保isAdding变量存在
|
||||
if (typeof isAdding !== 'undefined') {
|
||||
isAdding.value = false;
|
||||
}
|
||||
|
||||
// 确保有患者信息
|
||||
if (!props.patientInfo || !props.patientInfo.encounterId) {
|
||||
console.error('患者信息不完整');
|
||||
return;
|
||||
}
|
||||
|
||||
getTcmAdviceList({ encounterId: props.patientInfo.encounterId }).then((res) => {
|
||||
if (res && res.data && Array.isArray(res.data)) {
|
||||
// 处理返回的数据
|
||||
if (res.data.length > 0) {
|
||||
// 如果有数据,清空当前列表并重新添加
|
||||
tcmPrescriptionList.value = [];
|
||||
|
||||
res.data.forEach((item) => {
|
||||
try {
|
||||
// 解析contentJson获取完整的医嘱数据
|
||||
const contentData = item.contentJson ? JSON.parse(item.contentJson) : {};
|
||||
|
||||
// 创建一个新的处方对象
|
||||
const newPrescription = {
|
||||
...item,
|
||||
...contentData,
|
||||
// 确保关键显示字段存在
|
||||
adviceName: contentData.adviceName || item.adviceName || '',
|
||||
quantity: contentData.quantity || item.quantity || '',
|
||||
totalPrice: contentData.totalPrice || item.totalPrice || '',
|
||||
diagnosisName: contentData.diagnosisName || item.diagnosisName || '',
|
||||
positionName: contentData.positionName || item.positionName || '',
|
||||
doseUnitCode_dictText: contentData.doseUnitCode_dictText || item.doseUnitCode_dictText || '',
|
||||
chineseHerbsDoseQuantity: contentData.chineseHerbsDoseQuantity || item.chineseHerbsDoseQuantity || '',
|
||||
prescriptionList: [contentData]
|
||||
};
|
||||
|
||||
// 添加到处方列表
|
||||
tcmPrescriptionList.value.push(newPrescription);
|
||||
} catch (error) {
|
||||
console.error('解析医嘱数据失败:', error, '数据项:', item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 重新计算总金额
|
||||
handleTotalAmount();
|
||||
|
||||
if (props.activeTab == 'prescription' && addNewRow) {
|
||||
handleAddMedicine();
|
||||
}
|
||||
} else {
|
||||
console.error('获取医嘱列表失败或数据格式错误:', res);
|
||||
// 保持当前列表不变,不要清空
|
||||
=======
|
||||
async function getListInfo(addNewRow) {
|
||||
// 重置所有处方的添加状态
|
||||
tcmPrescriptionList.value.forEach((prescription) => {
|
||||
@@ -785,28 +614,14 @@ async function getListInfo(addNewRow) {
|
||||
tcmPrescriptionList.value.accountId = contractList.value[0].accountId;
|
||||
if (props.activeTab == 'prescription' && addNewRow) {
|
||||
handleAddMedicine(0);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('获取医嘱列表异常:', error);
|
||||
// 保持当前列表不变,不要清空
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
|
||||
tcmDiagnosisList.value = getFromDiagnosis(props.patientInfo.encounterId);
|
||||
|
||||
getContract({ encounterId: props.patientInfo.encounterId }).then((res) => {
|
||||
contractList.value = res?.data || [];
|
||||
}).catch(error => {
|
||||
console.error('获取合同信息失败:', error);
|
||||
});
|
||||
|
||||
accountId.value = props.patientInfo.accountId || '';
|
||||
=======
|
||||
|
||||
tcmDiagnosisList.value = getFromDiagnosis(props.patientInfo.encounterId);
|
||||
accountId.value = props.patientInfo.accountId;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function getDiagnosisInfo() {
|
||||
@@ -822,11 +637,7 @@ function getDiagnosisInfo() {
|
||||
});
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
// 默认选择第一个诊断
|
||||
=======
|
||||
// 默认选择第一个诊断
|
||||
>>>>>>> v1.3
|
||||
if (diagnosisList.value.length > 0) {
|
||||
const firstDiagnosis = diagnosisList.value[0];
|
||||
tcmPrescriptionList.value.forEach((prescription) => {
|
||||
@@ -1156,18 +967,8 @@ function handleDelete(pIndex) {
|
||||
prescription.expandOrder = [];
|
||||
prescription.isAdding = false;
|
||||
adviceQueryParams.value.adviceType = undefined;
|
||||
<<<<<<< HEAD
|
||||
// 删除行会出现组号混乱的情况,所以这里重新更新标记
|
||||
const allPrescriptions = tcmPrescriptionList.value.flatMap(p => p.prescriptionList);
|
||||
groupMarkers.value = getGroupMarkers(allPrescriptions);
|
||||
}
|
||||
|
||||
|
||||
|
||||
=======
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
function handleNumberClick(item, index, pIndex) {
|
||||
const prescription = tcmPrescriptionList.value[pIndex];
|
||||
prescription.prescriptionList[index].unitPrice = item.price;
|
||||
@@ -1247,117 +1048,6 @@ function handleSave(pIndex) {
|
||||
}
|
||||
|
||||
// 单行处方保存
|
||||
<<<<<<< HEAD
|
||||
function handleSaveSign(row, index) {
|
||||
try {
|
||||
// 直接执行保存逻辑,不再进行表单验证
|
||||
row.isEdit = false;
|
||||
isAdding.value = false;
|
||||
expandOrder.value = [];
|
||||
|
||||
// 确保必要的字段有值
|
||||
if (props.patientInfo) {
|
||||
row.patientId = props.patientInfo.patientId;
|
||||
row.encounterId = props.patientInfo.encounterId;
|
||||
}
|
||||
|
||||
row.accountId = accountId.value || '';
|
||||
row.quantity = row.minUnitQuantity || 1; // 确保数量有值
|
||||
row.conditionId = conditionId.value || '';
|
||||
row.conditionDefinitionId = conditionDefinitionId.value || '';
|
||||
row.encounterDiagnosisId = encounterDiagnosisId.value || '';
|
||||
row.diagnosisName = diagnosisName.value || '';
|
||||
|
||||
// 计算单价
|
||||
if (row.unitCodeList && row.unitCode) {
|
||||
const unitItem = row.unitCodeList.find((item) => item.value === row.unitCode);
|
||||
if (unitItem?.type !== 'unit' && row.unitPrice) {
|
||||
row.unitPrice = new Decimal(row.unitPrice).div(row.partPercent || 1).toFixed(2);
|
||||
}
|
||||
}
|
||||
|
||||
// 计算总金额
|
||||
if (row.minUnitQuantity && row.unitPrice) {
|
||||
row.totalPrice = new Decimal(row.minUnitQuantity).mul(row.unitPrice).toFixed(2);
|
||||
}
|
||||
|
||||
// 确保显示所需的字段都有值
|
||||
row.adviceName = row.adviceName || '未命名药品';
|
||||
row.positionName = row.positionName || '默认药房';
|
||||
|
||||
// 创建要保存的数据对象,避免循环引用
|
||||
const saveData = {
|
||||
...row,
|
||||
// 排除可能导致循环引用的复杂对象
|
||||
unitCodeList: undefined,
|
||||
stockList: undefined,
|
||||
contentJson: undefined
|
||||
};
|
||||
|
||||
// 序列化数据用于存储
|
||||
saveData.contentJson = JSON.stringify(saveData);
|
||||
|
||||
// 只保存当前行的数据,而不是整个列表
|
||||
savePrescription({ adviceSaveList: [saveData] }).then((res) => {
|
||||
if (res && res.code === 200) {
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
// 此处错误调用getListInfo,导致医嘱信息被覆盖,从而不显示。
|
||||
// getListInfo(true);
|
||||
nextId.value = 1;
|
||||
} else {
|
||||
proxy.$modal.msgError('保存失败,请重试');
|
||||
console.error('保存失败响应:', res);
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('保存处方失败:', error);
|
||||
proxy.$modal.msgError('保存失败,请检查网络或联系管理员');
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('处理保存时出错:', error);
|
||||
proxy.$modal.msgError('操作异常,请重试');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function handleSaveBatch() {
|
||||
// 收集所有需要保存的处方项目
|
||||
let saveList = [];
|
||||
|
||||
// 遍历所有处方
|
||||
for (const prescription of tcmPrescriptionList.value) {
|
||||
if (prescription.prescriptionList) {
|
||||
// 检查处方是否有必填的付数
|
||||
if (!prescription.chineseHerbsDoseQuantity || prescription.chineseHerbsDoseQuantity == 0) {
|
||||
proxy.$modal.msgWarning('请输入付数');
|
||||
return;
|
||||
}
|
||||
|
||||
// 收集该处方下需要保存的项目
|
||||
const itemsToSave = prescription.prescriptionList
|
||||
.filter((item) => item.statusEnum == 1)
|
||||
.map((item, index) => {
|
||||
return {
|
||||
...item,
|
||||
accountId: accountId.value,
|
||||
conditionId: prescription.conditionId,
|
||||
encounterDiagnosisId: prescription.encounterDiagnosisId,
|
||||
conditionDefinitionId: prescription.conditionDefinitionId,
|
||||
encounterId: props.patientInfo.encounterId,
|
||||
patientId: props.patientInfo.patientId,
|
||||
requestId: item.requestId,
|
||||
groupId: item.groupId ? item.groupId : timestamp.toString(),
|
||||
chineseHerbsDoseQuantity: prescription.chineseHerbsDoseQuantity,
|
||||
dbOpType: item.requestId ? '2' : '1',
|
||||
};
|
||||
});
|
||||
|
||||
// 将项目添加到保存列表
|
||||
saveList = saveList.concat(itemsToSave);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查是否有可保存的项目
|
||||
=======
|
||||
function handleSaveSign(row, index, pIndex) {
|
||||
const prescription = tcmPrescriptionList.value[pIndex];
|
||||
const formRefName = 'formRef' + pIndex + '-' + index;
|
||||
@@ -1408,15 +1098,10 @@ function handleSaveBatch(pIndex) {
|
||||
dbOpType: item.requestId ? '2' : '1',
|
||||
};
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
if (saveList.length == 0) {
|
||||
proxy.$modal.msgWarning('当前没有可保存医嘱');
|
||||
return;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 保存处方
|
||||
=======
|
||||
if (
|
||||
prescription.chineseHerbsDoseQuantity == undefined ||
|
||||
prescription.chineseHerbsDoseQuantity == 0
|
||||
@@ -1424,22 +1109,11 @@ function handleSaveBatch(pIndex) {
|
||||
proxy.$modal.msgWarning('请输入付数');
|
||||
return;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
saveTcmAdvice({ adviceSaveList: saveList }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
getListInfo(true);
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 重置所有处方的nextId
|
||||
tcmPrescriptionList.value.forEach(prescription => {
|
||||
if (prescription.nextId) {
|
||||
prescription.nextId = 1;
|
||||
}
|
||||
});
|
||||
=======
|
||||
prescription.nextId = 1;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1607,21 +1281,6 @@ function validateGroups(saveList) {
|
||||
return true;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=======
|
||||
async function handlePrint(pIndex) {
|
||||
const prescription = tcmPrescriptionList.value[pIndex];
|
||||
const selectedRows = prescription.prescriptionList.filter((item) => item.check);
|
||||
@@ -1683,7 +1342,6 @@ async function handlePrint(pIndex) {
|
||||
ElMessage.error('中药处方打印失败: ' + error.message);
|
||||
}
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
defineExpose({ getListInfo, getDiagnosisInfo });
|
||||
</script>
|
||||
|
||||
@@ -1799,29 +1457,4 @@ defineExpose({ getListInfo, getDiagnosisInfo });
|
||||
.add-icon:hover {
|
||||
background-color: #ecf5ff;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.delete-icon {
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
padding: 4px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.delete-icon:hover {
|
||||
background-color: #fef0f0;
|
||||
}
|
||||
|
||||
.delete-icon.disabled-icon {
|
||||
cursor: not-allowed;
|
||||
color: #c0c4cc !important;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.delete-icon.disabled-icon:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -15,11 +15,6 @@
|
||||
<el-button icon="Search" @click="getPatientList" />
|
||||
</template>
|
||||
</el-input>
|
||||
<<<<<<< HEAD
|
||||
<el-date-picker v-model="registerTime" @change="handleTimeChange" type="daterange"
|
||||
style="width: 100%; margin-bottom: 10px" :clearable="false" placeholder="挂号时间" format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" />
|
||||
=======
|
||||
<el-date-picker
|
||||
v-model="registerTime"
|
||||
@change="handleTimeChange"
|
||||
@@ -30,7 +25,6 @@
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
<el-scrollbar height="700px">
|
||||
<div v-for="(item, index) in patientList" :class="item.active ? 'patient-card actived' : 'patient-card'"
|
||||
:key="item.id" @click="handleCardClick(item, index)">
|
||||
@@ -87,14 +81,6 @@
|
||||
{{
|
||||
Object.keys(patientInfo).length !== 0
|
||||
? patientInfo.patientName +
|
||||
<<<<<<< HEAD
|
||||
' / ' +
|
||||
patientInfo.age +
|
||||
' / ' +
|
||||
patientInfo.genderEnum_enumText +
|
||||
' / ' +
|
||||
patientInfo.contractName
|
||||
=======
|
||||
' / ' +
|
||||
patientInfo.age +
|
||||
' / ' +
|
||||
@@ -105,29 +91,16 @@
|
||||
patientInfo.phone +
|
||||
'/' +
|
||||
patientInfo.busNo
|
||||
>>>>>>> v1.3
|
||||
: '-'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="挂号时间:" width="300">
|
||||
{{ Object.keys(patientInfo).length !== 0 ? formatDate(patientInfo.registerTime) : '-' }}
|
||||
</el-descriptions-item>
|
||||
<<<<<<< HEAD
|
||||
<el-descriptions-item label="医生:" width="150">{{
|
||||
userStore.name
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="" width="350">
|
||||
<!-- 初诊 / 复诊 按钮 -->
|
||||
<el-radio v-model="visitType" label="FIRST" :disabled="visitTypeDisabled">初诊</el-radio>
|
||||
<el-radio v-model="visitType" label="FOLLOW_UP" :disabled="visitTypeDisabled">复诊</el-radio>
|
||||
|
||||
<!-- 原有按钮 -->
|
||||
=======
|
||||
<el-descriptions-item label="医生:" width="250">
|
||||
{{ userStore.nickName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="" width="300">
|
||||
>>>>>>> v1.3
|
||||
<el-button type="primary" plain @click.stop="handleFinish(patientInfo.encounterId)">
|
||||
完诊
|
||||
</el-button>
|
||||
@@ -140,31 +113,11 @@
|
||||
<el-button type="primary" plain @click.stop="getEnPrescription(patientInfo.encounterId)">
|
||||
处方单
|
||||
</el-button>
|
||||
<<<<<<< HEAD
|
||||
<el-button type="primary" plain @click.stop="openDialog = true">
|
||||
办理住院
|
||||
</el-button>
|
||||
<el-button type="primary" plain @click.stop="handleCancelEncounter">
|
||||
取消接诊
|
||||
</el-button>
|
||||
=======
|
||||
<el-button type="primary" plain @click.stop="onHospitalization"> 办理住院 </el-button>
|
||||
>>>>>>> v1.3
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div style="padding: 10px">
|
||||
<<<<<<< HEAD
|
||||
<el-tabs type="card" style="width: 100%; height: 100%" v-loading="loading" v-model="activeTab"
|
||||
@tab-change="handleClick(activeTab)">
|
||||
<el-tab-pane label="病历" name="emr">
|
||||
<Emr :patientInfo="patientInfo" ref="emrRef" @save="
|
||||
(value) => {
|
||||
saveStatus = value;
|
||||
}
|
||||
" :visitType="visitType" :firstVisitDate="firstVisitDate" />
|
||||
</el-tab-pane>
|
||||
=======
|
||||
<el-tabs
|
||||
type="card"
|
||||
style="width: 100%; height: 100%"
|
||||
@@ -190,7 +143,6 @@
|
||||
"
|
||||
/>
|
||||
</el-tab-pane> -->
|
||||
>>>>>>> v1.3
|
||||
<el-tab-pane label="诊断" name="diagnosis">
|
||||
<Diagnosis :patientInfo="patientInfo" ref="diagnosisRef" @diagnosisSave="
|
||||
(value) => {
|
||||
@@ -199,16 +151,12 @@
|
||||
" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="医嘱" name="prescription">
|
||||
<<<<<<< HEAD
|
||||
<prescriptionlist :patientInfo="patientInfo" ref="prescriptionRef" :activeTab="activeTab" />
|
||||
=======
|
||||
<prescriptionlist
|
||||
:patientInfo="patientInfo"
|
||||
ref="prescriptionRef"
|
||||
:activeTab="activeTab"
|
||||
:outpatientEmrSaved="outpatientEmrSaved"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="中医" name="tcm">
|
||||
<tcmAdvice :patientInfo="patientInfo" ref="tcmRef" />
|
||||
@@ -226,14 +174,6 @@
|
||||
<el-drawer v-model="drawer" title="患者队列" direction="ltr" @open="handleOpen">
|
||||
<PatientList ref="patientDrawerRef" @toCurrent="handleReceive" />
|
||||
</el-drawer>
|
||||
<<<<<<< HEAD
|
||||
<RefundListDialog :open="openRefundListDialog" :encounterId="currentEncounterId"
|
||||
@close="openRefundListDialog = false" />
|
||||
<HospitalizationDialog :open="openDialog" :patientInfo="patientInfo" :encounterId="currentEncounterId"
|
||||
@close="openDialog = false" />
|
||||
<PrescriptionInfo :open="openPrescriptionDialog" :precriptionInfo="prescriptionInfo"
|
||||
@close="openPrescriptionDialog = false" />
|
||||
=======
|
||||
<RefundListDialog
|
||||
:open="openRefundListDialog"
|
||||
:encounterId="currentEncounterId"
|
||||
@@ -252,7 +192,6 @@
|
||||
:precriptionInfo="prescriptionInfo"
|
||||
@close="openPrescriptionDialog = false"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -263,13 +202,8 @@ import {
|
||||
leaveEncounter,
|
||||
completeEncounter,
|
||||
getEnPrescriptionInfo,
|
||||
<<<<<<< HEAD
|
||||
cancelEncounter,
|
||||
getEmrHistoryList
|
||||
=======
|
||||
isHospitalization,
|
||||
getEncounterDiagnosis,
|
||||
>>>>>>> v1.3
|
||||
} from './components/api.js';
|
||||
import prescriptionlist from './components/prescription/prescriptionlist.vue';
|
||||
import RefundListDialog from './components/prescription/refundListDialog.vue';
|
||||
@@ -482,67 +416,6 @@ function handleClick(tab) {
|
||||
|
||||
// 查看本次就诊处方单(从医嘱Tab页获取已开立的处方单信息)
|
||||
function getEnPrescription(encounterId) {
|
||||
<<<<<<< HEAD
|
||||
// 检查是否有选中的患者
|
||||
if (!patientInfo.value || !patientInfo.value.encounterId) {
|
||||
proxy.$modal.msgWarning('请先选择患者');
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否在医嘱Tab页,如果不在则切换到医嘱Tab页
|
||||
if (activeTab.value !== 'prescription') {
|
||||
activeTab.value = 'prescription';
|
||||
// 等待Tab切换完成后再获取数据
|
||||
nextTick(() => {
|
||||
// 确保数据已加载
|
||||
if (prescriptionRef.value) {
|
||||
// 先刷新数据,确保获取最新的处方单信息
|
||||
if (prescriptionRef.value.getListInfo) {
|
||||
prescriptionRef.value.getListInfo(false);
|
||||
}
|
||||
// 等待数据加载完成后再获取处方单信息
|
||||
setTimeout(() => {
|
||||
if (prescriptionRef.value && prescriptionRef.value.getSignedPrescriptionInfo) {
|
||||
const signedPrescriptions = prescriptionRef.value.getSignedPrescriptionInfo();
|
||||
if (signedPrescriptions && signedPrescriptions.length > 0) {
|
||||
prescriptionInfo.value = signedPrescriptions;
|
||||
openPrescriptionDialog.value = true;
|
||||
} else {
|
||||
proxy.$modal.msgWarning('当前患者没有已签发的处方单');
|
||||
}
|
||||
} else {
|
||||
proxy.$modal.msgWarning('无法获取处方单信息,请稍后重试');
|
||||
}
|
||||
}, 300);
|
||||
} else {
|
||||
proxy.$modal.msgWarning('无法获取处方单信息,请稍后重试');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 如果已经在医嘱Tab页,先刷新数据再获取
|
||||
if (prescriptionRef.value) {
|
||||
if (prescriptionRef.value.getListInfo) {
|
||||
prescriptionRef.value.getListInfo(false);
|
||||
}
|
||||
// 等待数据加载完成后再获取处方单信息
|
||||
setTimeout(() => {
|
||||
if (prescriptionRef.value && prescriptionRef.value.getSignedPrescriptionInfo) {
|
||||
const signedPrescriptions = prescriptionRef.value.getSignedPrescriptionInfo();
|
||||
if (signedPrescriptions && signedPrescriptions.length > 0) {
|
||||
prescriptionInfo.value = signedPrescriptions;
|
||||
openPrescriptionDialog.value = true;
|
||||
} else {
|
||||
proxy.$modal.msgWarning('当前患者没有已签发的处方单');
|
||||
}
|
||||
} else {
|
||||
proxy.$modal.msgWarning('无法获取处方单信息,请稍后重试');
|
||||
}
|
||||
}, 300);
|
||||
} else {
|
||||
proxy.$modal.msgWarning('无法获取处方单信息,请稍后重试');
|
||||
}
|
||||
}
|
||||
=======
|
||||
getEnPrescriptionInfo({ encounterId: encounterId }).then((res) => {
|
||||
console.log('处方单 res', res);
|
||||
let dataArr = res.data.records || [];
|
||||
@@ -556,7 +429,6 @@ function getEnPrescription(encounterId) {
|
||||
prescriptionInfo.value = res.data.records;
|
||||
openPrescriptionDialog.value = true;
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function handleRefund(encounterId) {
|
||||
@@ -575,35 +447,6 @@ function handleCardClick(item, index) {
|
||||
patient.active = patient.encounterId === item.encounterId;
|
||||
});
|
||||
patientInfo.value = item;
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 优先使用数据库中保存的初复诊值
|
||||
if (item.visitType) {
|
||||
visitType.value = item.visitType;
|
||||
// 已完诊的记录禁用修改
|
||||
visitTypeDisabled.value = item.statusEnum !== 2;
|
||||
// 如果有初诊日期也从数据库获取
|
||||
// if (item.firstVisitDate) {
|
||||
// firstVisitDate.value = item.firstVisitDate;
|
||||
// }
|
||||
} else {
|
||||
// 对于没有初复诊记录的患者,才使用原有的判断逻辑
|
||||
checkPatientHistory(item);
|
||||
}
|
||||
activeTab.value = 'emr';
|
||||
nextTick(() => {
|
||||
// 确保所有组件引用都已初始化
|
||||
if (prescriptionRef.value) prescriptionRef.value.getListInfo();
|
||||
if (tcmRef.value) tcmRef.value.getListInfo();
|
||||
if (diagnosisRef.value) diagnosisRef.value.getList();
|
||||
if (eprescriptionRef.value) eprescriptionRef.value.getList();
|
||||
if (emrRef.value) {
|
||||
emrRef.value.getDetail(item.encounterId);
|
||||
} else {
|
||||
console.error('emr组件未正确初始化');
|
||||
proxy.$modal.msgError('病历组件加载失败,请刷新页面重试');
|
||||
}
|
||||
=======
|
||||
// 将患者信息保存到store中,供hospitalizationEmr组件使用
|
||||
updatePatientInfo(item);
|
||||
activeTab.value = 'hospitalizationEmr';
|
||||
@@ -613,7 +456,6 @@ function handleCardClick(item, index) {
|
||||
diagnosisRef.value.getList();
|
||||
eprescriptionRef.value.getList();
|
||||
// emrRef.value.getDetail(item.encounterId);
|
||||
>>>>>>> v1.3
|
||||
setTimeout(() => {
|
||||
loading.value = false;
|
||||
}, 200);
|
||||
@@ -665,32 +507,6 @@ function handleEmrSaved(isSaved) {
|
||||
function openDrawer() {
|
||||
drawer.value = true;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
function handleCancelEncounter() {
|
||||
proxy.$modal.confirm('您确定要取消病人本次的就诊记录吗?', '提示信息', {
|
||||
confirmButtonText: '是(Y)',
|
||||
cancelButtonText: '否(N)',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
//调用取消接诊API,添加skipGlobalError配置跳过全局错误提示
|
||||
cancelEncounter(patientInfo.value.encounterId, { skipErrorMsg: true }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('取消接诊成功');
|
||||
patientInfo.value = {};
|
||||
getPatientList();
|
||||
}
|
||||
}).catch((error) => {
|
||||
proxy.$modal.confirm('该病人本次就诊已经有业务产生,不能取消接诊!', '提示信息', {
|
||||
confirmButtonText: '是(Y)',
|
||||
type: 'warning'
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
// 用户取消操作
|
||||
});
|
||||
}
|
||||
=======
|
||||
// 判断是否已经入院登记
|
||||
const onHospitalization = async () => {
|
||||
const diagnosisRes = await getEncounterDiagnosis(patientInfo.value.encounterId);
|
||||
@@ -720,7 +536,6 @@ const onHospitalization = async () => {
|
||||
});
|
||||
}
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -15,11 +15,7 @@
|
||||
"top": 16.5,
|
||||
"height": 22.5,
|
||||
"width": 120,
|
||||
<<<<<<< HEAD
|
||||
"title": "长春大学医院",
|
||||
=======
|
||||
"title": "长春市朝阳区中医院医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontFamily": "Microsoft YaHei",
|
||||
|
||||
@@ -1,25 +1,14 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 获取病区下拉选
|
||||
<<<<<<< HEAD
|
||||
export function getPractitionerWard (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getPractitionerWard(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/app-common/practitioner-ward',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 住院汇总发药单左侧
|
||||
export function getFromSummaryList (queryParams) {
|
||||
return request ({
|
||||
url: 'pharmacy-manage/summary-dispense-medicine/from_summary-list',
|
||||
=======
|
||||
// 住院汇总发药单左侧,汇总单列表
|
||||
export function getFromSummaryList(queryParams) {
|
||||
return request({
|
||||
@@ -42,20 +31,14 @@ export function getFromSummaryInit(queryParams) {
|
||||
export function getFromSummaryDetails(queryParams) {
|
||||
return request({
|
||||
url: 'nurse-station/medicine-summary/summary-form-detail',
|
||||
>>>>>>> v1.3
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
// 住院汇总发药单右侧
|
||||
<<<<<<< HEAD
|
||||
export function getFromDetailList (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getFromDetailList(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: 'pharmacy-manage/summary-dispense-medicine/from-list',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
@@ -63,26 +46,16 @@ export function getFromDetailList(queryParams) {
|
||||
}
|
||||
|
||||
// 明细左侧
|
||||
<<<<<<< HEAD
|
||||
export function getEncounterList (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getEncounterList(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/pharmacy-manage/summary-dispense-medicine/encounter-list',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
//明细 右侧
|
||||
<<<<<<< HEAD
|
||||
export function getMedicationSummaryDetail (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getMedicationSummaryDetail(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/pharmacy-manage/summary-dispense-medicine/medication_summary-list',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
@@ -93,13 +66,8 @@ export function getMedicationSummaryDetail(queryParams) {
|
||||
/**
|
||||
* 获取住院患者列表
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function getPatientList (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getPatientList(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/nurse-station/advice-process/inpatient',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
@@ -109,13 +77,8 @@ export function getPatientList(queryParams) {
|
||||
/**
|
||||
* 获取当前登录人管理病区
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function getWardList (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getWardList(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/app-common/practitioner-ward',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
@@ -125,13 +88,8 @@ export function getWardList(queryParams) {
|
||||
/**
|
||||
* 获取当前选中患者全部医嘱
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function getPrescriptionList (queryParams) {
|
||||
return request ({
|
||||
=======
|
||||
export function getPrescriptionList(queryParams) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/nurse-station/advice-process/inpatient-advice',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
@@ -141,13 +99,8 @@ export function getPrescriptionList(queryParams) {
|
||||
/**
|
||||
* 执行医嘱
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function adviceExecute (data) {
|
||||
return request ({
|
||||
=======
|
||||
export function adviceExecute(data) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/nurse-station/advice-process/advice-execute',
|
||||
method: 'post',
|
||||
data: data,
|
||||
@@ -157,13 +110,8 @@ export function adviceExecute(data) {
|
||||
/**
|
||||
* 取消执行医嘱
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function adviceCancel (data) {
|
||||
return request ({
|
||||
=======
|
||||
export function adviceCancel(data) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/nurse-station/advice-process/advice-cancel',
|
||||
method: 'post',
|
||||
data: data,
|
||||
@@ -172,17 +120,10 @@ export function adviceCancel(data) {
|
||||
|
||||
/**
|
||||
* 明细发药
|
||||
<<<<<<< HEAD
|
||||
*
|
||||
*/
|
||||
export function totalSendDrug (data) {
|
||||
return request ({
|
||||
=======
|
||||
*
|
||||
*/
|
||||
export function totalSendDrug(data) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/pharmacy-manage/summary-dispense-medicine/summary-dispense-medicine',
|
||||
method: 'put',
|
||||
data: data,
|
||||
@@ -191,20 +132,13 @@ export function totalSendDrug(data) {
|
||||
/**
|
||||
* 明细退药
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
export function totalReturnDrug (data) {
|
||||
return request ({
|
||||
=======
|
||||
export function totalReturnDrug(data) {
|
||||
return request({
|
||||
>>>>>>> v1.3
|
||||
url: '/pharmacy-manage/summary-dispense-medicine/medicine-return',
|
||||
method: 'put',
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
// -----------------------------------门诊发药接口------------------------------------------------------------
|
||||
export function listPatient(query) {
|
||||
@@ -363,4 +297,3 @@ export function init() {
|
||||
// method: 'get',
|
||||
// })
|
||||
// }
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -1,186 +1,4 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20" style="margin-bottom: 20px">
|
||||
<el-col :span="4" :xs="24">
|
||||
<el-button
|
||||
:type="selectType === 'total' ? 'primary' : 'default'"
|
||||
@click="handleSelectType('total')"
|
||||
>汇总</el-button
|
||||
>
|
||||
<el-button
|
||||
:type="selectType === 'drug' ? 'primary' : 'default'"
|
||||
@click="handleSelectType('drug')"
|
||||
>发药</el-button
|
||||
>
|
||||
</el-col>
|
||||
<!-- <el-col :span="18" :xs="24">
|
||||
<el-form ref="queryParams" label-width="100px" :model="queryParams" :inline="true">
|
||||
<el-form-item label="窗口" prop="windowDataText" label-width="120px">
|
||||
<el-select
|
||||
v-model="queryParams.windowDataText"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in windowData"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="摆药单" prop="medicationListText" label-width="120px">
|
||||
<el-select
|
||||
v-model="queryParams.medicationListText"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in medicationList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="范围" prop="time" label-width="100px">
|
||||
<el-radio-group v-model="queryParams.timeRange">
|
||||
<el-radio v-for="(item, index) in timeRangeList" :key="index" :value="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time" label-width="100px">
|
||||
<el-date-picker
|
||||
v-model="dateRange"
|
||||
type="datetimerange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始时间"
|
||||
end-placeholder="结束时间"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6" class="left-container">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form
|
||||
:model="queryParamsPatient"
|
||||
ref="queryRef"
|
||||
v-show="showSearch"
|
||||
label-width="120"
|
||||
inline="true"
|
||||
>
|
||||
<el-form-item label="患者信息" prop="searchKey" label-width="120">
|
||||
<el-input
|
||||
v-model="queryParamsPatient.searchKey"
|
||||
placeholder="请输入姓名/证件号"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="发药状态"
|
||||
prop="statusEnum"
|
||||
v-if="selectType !== 'drug'"
|
||||
label-width="120"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParamsPatient.statusEnum"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
@change="handleQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dispenseStatusOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="就诊日期" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="dateRange"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
@change="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20" style="border-radius: 4px">
|
||||
<el-col :span="24">
|
||||
<el-table
|
||||
:data="patientList"
|
||||
border
|
||||
highlight-current-row
|
||||
style="height: cal(100%-200px); width: 100%"
|
||||
@row-click="handleCurrentChange"
|
||||
>
|
||||
<!-- 汇总状态下显示的字段 -->
|
||||
<template v-if="selectType === 'total'">
|
||||
<el-table-column prop="applicantName" label="申请人" align="center" />
|
||||
<el-table-column prop="sourceLocationName" label="发药药房" align="center" />
|
||||
<el-table-column prop="statusEnum_enumText" label="状态" align="center" />
|
||||
<el-table-column prop="applyTime" label="申请日期" align="center">
|
||||
<template #default="scope">
|
||||
{{ scope.row.applyTime ? parseTime(scope.row.applyTime, '{y}-{m}-{d}') : '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<!-- 明细状态下显示的字段 -->
|
||||
<template v-else>
|
||||
<el-table-column prop="patientName" label="姓名" align="center" />
|
||||
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
|
||||
<el-table-column prop="age" label="年龄" align="center" />
|
||||
<el-table-column prop="startTime" label="就诊日期" align="center">
|
||||
<template #default="scope">
|
||||
{{ scope.row.startTime ? parseTime(scope.row.startTime, '{y}-{m}-{d}') : '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
</el-col>
|
||||
<el-col :span="24" style="padding: 10px 12px 12px 12px">
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="18" :xs="24">
|
||||
<!-- 根据当前选中的tab显示不同的表格组件 -->
|
||||
<MedicationTable v-if="selectType === 'total'" :tableData="tableData" :busNo="busNo" />
|
||||
<DetailMedicationTable
|
||||
v-else-if="selectType === 'drug'"
|
||||
:tableData="detailTableData"
|
||||
:encounterId="encounterId"
|
||||
@call-medication-summary-detail="callMedicationSummaryDetail"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
=======
|
||||
<div class="app-container" style="padding-top: 0px">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick" class="centered-tabs tabs-font">
|
||||
<el-tab-pane label="发药汇总单" name="summary">
|
||||
@@ -193,7 +11,6 @@
|
||||
<ReturnDrug />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -201,12 +18,9 @@
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import MedicationTable from './components/MedicationTable.vue';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
import MedicationSummary from './components/MedicationSummary.vue';
|
||||
import MedicationDetails from './components/MedicationDetails.vue';
|
||||
import ReturnDrug from './components/ReturnDrug.vue';
|
||||
>>>>>>> v1.3
|
||||
import DetailMedicationTable from './components/DetailMedicationTable.vue';
|
||||
import { getCurrentInstance } from 'vue';
|
||||
import {
|
||||
@@ -216,11 +30,7 @@ import {
|
||||
getFromDetailList,
|
||||
} from './components/api';
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 响应式数据
|
||||
=======
|
||||
const activeName = ref('summary');
|
||||
>>>>>>> v1.3
|
||||
const loading = ref(false);
|
||||
const patientList = ref([]);
|
||||
const total = ref(0);
|
||||
@@ -478,8 +288,6 @@ onMounted(() => {
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
padding: 20px;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
.centered-tabs :deep(.el-tabs__nav-wrap) {
|
||||
display: flex;
|
||||
@@ -495,5 +303,4 @@ onMounted(() => {
|
||||
font-size: 16px !important;
|
||||
padding: 0 60px !important;
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
</style>
|
||||
@@ -542,210 +542,6 @@ const sexOptions = gend;
|
||||
// 入院途径
|
||||
const admissionOptions = adm_way;
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
//组织机构代码
|
||||
medins_orgcode: '',
|
||||
|
||||
//医疗付费方式
|
||||
|
||||
|
||||
//健康卡号
|
||||
|
||||
|
||||
//姓名--患者姓名
|
||||
patient_name: '',
|
||||
|
||||
//性别--患者性别
|
||||
gend: '',
|
||||
|
||||
//出生日期
|
||||
brdy: '',
|
||||
|
||||
//年龄
|
||||
age: '',
|
||||
|
||||
//国籍
|
||||
ntly: '',
|
||||
|
||||
//籍贯
|
||||
napl: '',
|
||||
|
||||
//民族
|
||||
naty: '',
|
||||
|
||||
//身份证号
|
||||
certNo: '',
|
||||
|
||||
//户口地址
|
||||
resd_addr:'',
|
||||
|
||||
//工作单位及地址
|
||||
empr_addr: '',
|
||||
|
||||
//联系人姓名
|
||||
coner_name: '',
|
||||
|
||||
//关系
|
||||
patn_rlts: '',
|
||||
|
||||
//地址
|
||||
addr: '',
|
||||
|
||||
//电话
|
||||
tel: '',
|
||||
|
||||
//第几次住院
|
||||
patn_ipt_cnt: '',
|
||||
|
||||
//住院号 mdtrtsn
|
||||
ipt_no: '',
|
||||
|
||||
//病案号
|
||||
medcasno: '',
|
||||
|
||||
//入院途径
|
||||
adm_way: '',
|
||||
|
||||
//入院时间
|
||||
adm_time: '',
|
||||
|
||||
//入院科室 adm_dept_codg
|
||||
adm_dept_name: '',
|
||||
|
||||
//病房 入院病房
|
||||
adm_ward: '',
|
||||
|
||||
//实际住院天数
|
||||
act_ipt_days: '',
|
||||
|
||||
//主要诊断----不确定
|
||||
diag_code: '',
|
||||
|
||||
//其他诊断
|
||||
|
||||
|
||||
//是否输血
|
||||
|
||||
|
||||
//血型
|
||||
|
||||
|
||||
//Rh
|
||||
|
||||
|
||||
//药物过敏史
|
||||
|
||||
|
||||
//科主任 科主任姓名--deptort_name:
|
||||
deptort: '',
|
||||
|
||||
//主任(副主任)医师
|
||||
chfdr_name: '',
|
||||
|
||||
//主治医师 主诊医师姓名--chfpdr_name
|
||||
atddr_no: '',
|
||||
|
||||
//住院医师 住院医师姓名--ipdr_name
|
||||
ipdr_code: '',
|
||||
|
||||
//责任护士 责任护士姓名--resp_nurs_name
|
||||
resp_nurs_code: '',
|
||||
|
||||
//住院总医师
|
||||
|
||||
|
||||
//实习医师
|
||||
intn_dr_name: '',
|
||||
|
||||
//病案质量 病案质量名称--medcas_qlt_name
|
||||
medcas_qlt_code: '',
|
||||
|
||||
//编码员
|
||||
codr_name: '',
|
||||
|
||||
//质控日期
|
||||
qltctrl_date: '',
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
hospital: {
|
||||
orgCode: '41275054-7',
|
||||
paymentMethod: '城乡居民基本医疗保险'
|
||||
},
|
||||
patient: {
|
||||
healthCardNo: '',
|
||||
name: '',
|
||||
gender: '',
|
||||
birthDate: '',
|
||||
age: '',
|
||||
nationality: '中国',
|
||||
nativePlace: '',
|
||||
ethnicity: '汉族',
|
||||
idCardNo: '',
|
||||
householdAddress: '',
|
||||
workUnit: '',
|
||||
contactName: '',
|
||||
contactRelation: '',
|
||||
contactAddress: '',
|
||||
contactPhone: ''
|
||||
},
|
||||
admission: {
|
||||
times: 1,
|
||||
hospitalNo: '',
|
||||
recordNo: '',
|
||||
channel: '',
|
||||
admitTime: '',
|
||||
department: '',
|
||||
ward: '',
|
||||
confirmDate: '',
|
||||
dischargeTime: '',
|
||||
dischargeDepartment: '',
|
||||
dischargeWard: '',
|
||||
hospitalDays: ''
|
||||
},
|
||||
diagnosis: {
|
||||
mainDiagnosis: '',
|
||||
otherDiagnosis: ''
|
||||
},
|
||||
medicalInfo: {
|
||||
bloodTransfusion: '2',
|
||||
bloodType: '',
|
||||
rhType: '',
|
||||
drugAllergy: '1'
|
||||
},
|
||||
doctorInfo: {
|
||||
departmentDirector: '',
|
||||
chiefPhysician: '',
|
||||
attendingPhysician: '',
|
||||
residentPhysician: '',
|
||||
chargeNurse: '',
|
||||
chiefResident: '',
|
||||
intern: '',
|
||||
recordQuality: '1',
|
||||
coder: '',
|
||||
qualityControlDate: ''
|
||||
}
|
||||
=======
|
||||
// 是否输血
|
||||
const bloodOption = sys_yes_no;
|
||||
// 血型
|
||||
@@ -806,7 +602,6 @@ const rules = ref({
|
||||
name: [{ required: true, message: '请选择诊断', trigger: 'change' }],
|
||||
medTypeCode: [{ required: true, message: '请选择诊断类型', trigger: 'change' }],
|
||||
diagSrtNo: [{ required: true, message: '请输入诊断序号', trigger: 'change' }],
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,23 +1,11 @@
|
||||
<template>
|
||||
<div style="width: 100%" class="medicalSec">
|
||||
<<<<<<< HEAD
|
||||
<div style="margin-bottom: 5px;margin-top: 20px;">
|
||||
<el-button type="primary" @click="addItem" :disabled="false">
|
||||
新增
|
||||
</el-button>
|
||||
=======
|
||||
<div style="margin-bottom: 5px; margin-top: 20px">
|
||||
<el-button type="primary" @click="addItem" :disabled="false"> 新增 </el-button>
|
||||
>>>>>>> v1.3
|
||||
<el-button type="danger" plain @click="handleDelete" :disabled="false"> 删除 </el-button>
|
||||
</div>
|
||||
<div class="tableBox">
|
||||
<div class="tableBoxInner">
|
||||
<<<<<<< HEAD
|
||||
<div :class="{'borderBottom':!tableData_top.length}" class="tableBoxItemHeader">
|
||||
<div class="item itemIndex">
|
||||
<div :class="{'itemCheckBox':!isChooseAll,'itemCheckBoxAct':isChooseAll}" @click="chooseAll">
|
||||
=======
|
||||
<div
|
||||
:class="{ borderBottom: !formData.medicalSecond.surgery_tableData.length }"
|
||||
class="tableBoxItemHeader"
|
||||
@@ -27,7 +15,6 @@
|
||||
:class="{ itemCheckBox: !isChooseAll, itemCheckBoxAct: isChooseAll }"
|
||||
@click="chooseAll"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<span v-show="isChooseAll">✓</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,13 +22,6 @@
|
||||
<div class="item itemSurgeryLevel">手术级别</div>
|
||||
<div class="item itemSurgeryName">手术及操作名称</div>
|
||||
<div class="itemSpec">
|
||||
<<<<<<< HEAD
|
||||
<div class="spec" style="width: 100%;border-bottom: 1px solid #ebeef5;">手术及操作医师</div>
|
||||
<div class="spec">
|
||||
<div class="specItem">术者</div>
|
||||
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅰ助</div>
|
||||
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅱ助</div>
|
||||
=======
|
||||
<div class="spec" style="width: 100%; border-bottom: 1px solid #ebeef5">
|
||||
手术及操作医师
|
||||
</div>
|
||||
@@ -49,7 +29,6 @@
|
||||
<div class="specItem">术者</div>
|
||||
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅰ助</div>
|
||||
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅱ助</div>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<div class="item itemCutLevel">切口愈合等级</div>
|
||||
@@ -58,14 +37,6 @@
|
||||
<div class="item itemTime borderRight">手术时长(H)</div>
|
||||
</div>
|
||||
<div
|
||||
<<<<<<< HEAD
|
||||
class="tableBoxItem"
|
||||
:class="{'borderBottom':index+1===tableData_top.length}"
|
||||
v-for="(item,index) in tableData_top"
|
||||
:key="index">
|
||||
<div class="item itemIndex">
|
||||
<div :class="{'itemCheckBox':!item['isChoose'],'itemCheckBoxAct':item['isChoose']}" @click="checkItem(item)">
|
||||
=======
|
||||
class="tableBoxItem"
|
||||
:class="{ borderBottom: index + 1 === formData.medicalSecond.surgery_tableData.length }"
|
||||
v-for="(item, index) in formData.medicalSecond.surgery_tableData"
|
||||
@@ -76,28 +47,11 @@
|
||||
:class="{ itemCheckBox: !item['isChoose'], itemCheckBoxAct: item['isChoose'] }"
|
||||
@click="checkItem(item, false)"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<span v-show="item['isChoose']">✓</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item itemDate">
|
||||
<el-date-picker
|
||||
<<<<<<< HEAD
|
||||
v-model="item.ctrlDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="手术操作日期"
|
||||
:default-time="item.ctrlDate"
|
||||
/>
|
||||
</div>
|
||||
<div class="item itemSurgeryLevel">
|
||||
<el-select v-model="item.surgeryLevel" placeholder="请选择手术级别">
|
||||
<el-option
|
||||
v-for="item in item['surgeryLevelArr']"
|
||||
:key="item.value"
|
||||
:label="item.title"
|
||||
:value="item.value"
|
||||
=======
|
||||
v-model="item.oprn_oprt_date"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
@@ -111,25 +65,10 @@
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>>>>>>> v1.3
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="item itemSurgeryName">
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model="item.surgeryName"></el-input>
|
||||
</div>
|
||||
<div class="itemSpec">
|
||||
<div class="spec_">
|
||||
<div class="specItem" style="padding: 10px;">
|
||||
<el-input v-model="item.surgeryMasterName"></el-input>
|
||||
</div>
|
||||
<div class="specItem" style="padding: 10px;border-left: 1px solid #ebeef5;">
|
||||
<el-input v-model="item.surgeryMasterName_1"></el-input>
|
||||
</div>
|
||||
<div class="specItem" style="padding: 10px;border-left: 1px solid #ebeef5;">
|
||||
<el-input v-model="item.surgeryMasterName_2"></el-input>
|
||||
=======
|
||||
<el-input v-model="item.oprn_oprt_name"></el-input>
|
||||
</div>
|
||||
<div class="itemSpec">
|
||||
@@ -142,73 +81,41 @@
|
||||
</div>
|
||||
<div class="specItem" style="padding: 10px; border-left: 1px solid #ebeef5">
|
||||
<el-input v-model="item.asit_name2"></el-input>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item itemCutLevel">
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="item.cutLevel">
|
||||
<el-option
|
||||
v-for="item in item['cutLevelArr']"
|
||||
:key="item.value"
|
||||
:label="item.title"
|
||||
:value="item.value"
|
||||
=======
|
||||
<el-select v-model="item.sinc_heal_lv_code">
|
||||
<el-option
|
||||
v-for="item in cutLevelOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>>>>>>> v1.3
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="item itemCutLevel">
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="item.anesthesiaType" placeholder="请选择手术级别">
|
||||
<el-option
|
||||
v-for="item in operationLevelList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
=======
|
||||
<el-select v-model="item.anst_mtd_code" placeholder="请选择麻醉方式">
|
||||
<el-option
|
||||
v-for="item in anesthesiaTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>>>>>>> v1.3
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="item itemCutLevel">
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="item.anesthesiaLevel" placeholder="请选择手术级别">
|
||||
<el-option
|
||||
v-for="item in item.anesthesiaLevelArr"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
=======
|
||||
<el-select v-model="item.anst_lv_code" placeholder="请选择麻醉分级">
|
||||
<el-option
|
||||
v-for="item in anesthesiaLevelOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>>>>>>> v1.3
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="item itemTime borderRight">
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model="item.surgeryTime"></el-input>
|
||||
=======
|
||||
<el-input v-model="item.oprn_con_time"></el-input>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -216,16 +123,6 @@
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>手术方式:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['surgeryType']">
|
||||
<el-option v-for="(item,index) in formData['surgeryTypeArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>离院方式:</label>
|
||||
<el-select v-model="formData['leaveType']">
|
||||
<el-option v-for="(item,index) in formData['leaveTypeArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<el-select v-model="formData.medicalSecond.surgeryType">
|
||||
<el-option
|
||||
v-for="item in surgeryTypeOptions"
|
||||
@@ -244,17 +141,12 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>是否有出院31天内再住院计划:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['isPlan']">
|
||||
<el-option v-for="(item,index) in formData['isPlanArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<el-select v-model="formData.medicalSecond.dscg_31days_rinp_flag">
|
||||
<el-option
|
||||
v-for="item in isPlanOptions"
|
||||
@@ -262,46 +154,29 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>目的:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model="formData['purpose']"></el-input>
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.medicalSecond.dscg_31days_rinp_pup"
|
||||
placeholder="请填写目的"
|
||||
></el-input>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>颅脑损伤患者昏迷时间-入院前:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-input type="date" v-model="formData['comaDurationTime_before']" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>入院后:</label>
|
||||
<el-input type="date" v-model="formData['comaDurationTime_after']" />
|
||||
=======
|
||||
<el-input type="date" v-model="formData.medicalSecond.brn_damg_bfadm_coma_dura" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>入院后:</label>
|
||||
<el-input type="date" v-model="formData.medicalSecond.brn_damg_afadm_coma_dura" />
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>肿瘤分期:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['tumorStaging']">
|
||||
<el-option v-for="(item,index) in formData['tumorStagingArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<el-select v-model="formData.medicalSecond.tumorStaging">
|
||||
<el-option
|
||||
v-for="item in tumorStagingOptions"
|
||||
@@ -309,22 +184,10 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label>T:</label>
|
||||
<<<<<<< HEAD
|
||||
<label class="form-item-specLabel"><div class="specLabelInner" style="width: 80px;margin: 0 8px 0 0;"><el-input v-model="formData['tumor_T']"></el-input></div> </label>
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label>N:</label>
|
||||
<label class="form-item-specLabel"><div class="specLabelInner" style="width: 80px;margin: 0 8px 0 0;"><el-input v-model="formData['tumor_N']"></el-input></div> </label>
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label>M:</label>
|
||||
<label class="form-item-specLabel"><div class="specLabelInner" style="width: 80px;margin: 0 8px 0 0;"><el-input v-model="formData['tumor_M']"></el-input></div> </label>
|
||||
=======
|
||||
<label class="form-item-specLabel"
|
||||
><div class="specLabelInner" style="width: 80px; margin: 0 8px 0 0">
|
||||
<el-input v-model="formData.medicalSecond.tumor_T"></el-input>
|
||||
@@ -346,17 +209,12 @@
|
||||
<el-input v-model="formData.medicalSecond.tumor_M"></el-input>
|
||||
</div>
|
||||
</label>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>判断依据:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['judgmentBase']">
|
||||
<el-option v-for="(item,index) in formData['judgmentBaseArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<el-select v-model="formData.medicalSecond.judgmentBase">
|
||||
<el-option
|
||||
v-for="item in judgmentBaseOptions"
|
||||
@@ -364,14 +222,10 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>分化程度:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-input type="date" v-model="formData['degreeDifferentiation']" />
|
||||
=======
|
||||
<!-- <el-input type="date" v-model="formData.medicalSecond.bkup_deg" /> -->
|
||||
<el-select v-model="formData.medicalSecond.bkup_deg_code" placeholder="请选择分化程度">
|
||||
<el-option
|
||||
@@ -381,23 +235,12 @@
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>临床路径-进入路径:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['enterPath']">
|
||||
<el-option v-for="(item,index) in formData['enterPathArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>变异:</label>
|
||||
<el-select v-model="formData['mutation']">
|
||||
<el-option v-for="(item,index) in formData['mutationArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<!-- <el-select v-model="formData.medicalSecond.enterPath">
|
||||
<el-option
|
||||
v-for="item in enterPathOptions"
|
||||
@@ -417,21 +260,12 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>退出路径:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['outPath']">
|
||||
<el-option v-for="(item,index) in formData['outPathArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
</div>
|
||||
=======
|
||||
<!-- <el-select v-model="formData.medicalSecond.outPath">
|
||||
<el-option
|
||||
v-for="item in outPathOptions"
|
||||
@@ -443,7 +277,6 @@
|
||||
<el-input v-model="formData.medicalSecond.outPath" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
<div class="form-item"></div>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<div class="form-row" styLe="margin: 0;">
|
||||
<div class="form-item" styLe="margin: 0;">
|
||||
@@ -452,19 +285,6 @@
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item" style="flex: 0">
|
||||
<<<<<<< HEAD
|
||||
<label class="form-item-specLabel">特级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_spec']"></el-input></div> 小时</label>
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label class="form-item-specLabel">1级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_1']"></el-input></div> 小时</label>
|
||||
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label class="form-item-specLabel">2级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_2']"></el-input></div> 小时</label>
|
||||
</div>
|
||||
<div class="form-item" style="flex: 0">
|
||||
<label class="form-item-specLabel">3级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_3']"></el-input></div> 小时</label>
|
||||
=======
|
||||
<label class="form-item-specLabel"
|
||||
>特级护理
|
||||
<div class="specLabelInner">
|
||||
@@ -499,16 +319,11 @@
|
||||
</div>
|
||||
小时</label
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<label>呼吸机使用:</label>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="formData['ventilatorUse']">
|
||||
<el-option v-for="(item,index) in formData['ventilatorUseArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
|
||||
=======
|
||||
<el-select v-model="formData.medicalSecond.use_vent_flag">
|
||||
<el-option
|
||||
v-for="item in ventilatorUseOptions"
|
||||
@@ -516,210 +331,20 @@
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
>>>>>>> v1.3
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>有创呼吸机使用时间(小时):</label>
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model="formData['ventilatorUseTime']"></el-input>
|
||||
=======
|
||||
<el-input
|
||||
v-model="formData.medicalSecond.vent_used_dura"
|
||||
placeholder="请填写有创呼吸机使用时间(小时)"
|
||||
></el-input>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import {nextTick, reactive, ref, watch} from 'vue';
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
let chooseData = reactive([])//表格中选中的数据 TODO
|
||||
const tableData_top = reactive([])
|
||||
const tableData_sub = ref([
|
||||
{
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
}
|
||||
])
|
||||
let isChooseAll = ref(false);
|
||||
const formData = ref({
|
||||
surgeryDate: '2025-10-10',
|
||||
surgeryType: '',
|
||||
surgeryTypeArr: [
|
||||
{
|
||||
title: '择期手术',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '限期手术',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
title: '急诊手术',
|
||||
value: 3,
|
||||
}
|
||||
],
|
||||
leaveType: '',
|
||||
leaveTypeArr: [
|
||||
{
|
||||
title: '医嘱离院',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '医嘱转院',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
title: '医嘱转社区卫生服务机构',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
title: '非医嘱离院',
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
title: '死亡',
|
||||
value: 5,
|
||||
},
|
||||
{
|
||||
title: '其他',
|
||||
value: 6,
|
||||
}
|
||||
],
|
||||
isPlan: '',
|
||||
isPlanArr: [
|
||||
{
|
||||
title: '是',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '否',
|
||||
value: 1,
|
||||
}
|
||||
],
|
||||
purpose: '',
|
||||
comaDurationTime_before: '',//昏迷时间---入院前
|
||||
comaDurationTime_after: '',//昏迷时间---入院后
|
||||
|
||||
tumorStaging: '',
|
||||
tumorStagingArr: [
|
||||
{
|
||||
title: 'C',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: 'P',
|
||||
value: 2,
|
||||
}
|
||||
],
|
||||
judgmentBase: '',
|
||||
judgmentBaseArr: [
|
||||
{
|
||||
title: '0期',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
title: '1期',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '2期',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
title: '3期',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
title: '4期',
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
title: '不详',
|
||||
value: 5,
|
||||
}
|
||||
],
|
||||
tumor_T: '',
|
||||
tumor_N: '',
|
||||
tumor_M: '',
|
||||
degreeDifferentiation: '',
|
||||
|
||||
enterPath: '',
|
||||
enterPathArr: [
|
||||
{
|
||||
title: '是',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '否',
|
||||
value: 1,
|
||||
}
|
||||
],
|
||||
outPath: '',
|
||||
outPathArr: [
|
||||
{
|
||||
title: '是',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '否',
|
||||
value: 1,
|
||||
}
|
||||
],
|
||||
mutation: '',
|
||||
mutationArr: [
|
||||
{
|
||||
title: '有',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '无',
|
||||
value: 1,
|
||||
}
|
||||
],
|
||||
|
||||
nursingLevel_spec: '',
|
||||
nursingLevel_1: '',
|
||||
nursingLevel_2: '',
|
||||
nursingLevel_3: '',
|
||||
|
||||
ventilatorUse: '',
|
||||
ventilatorUseArr: [
|
||||
{
|
||||
title: '未使用',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '无创',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
title: '有创',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
title: '无创+有创',
|
||||
value: 4,
|
||||
}
|
||||
],
|
||||
|
||||
ventilatorUseTime: '',
|
||||
});
|
||||
|
||||
const operationLevelList = [
|
||||
{ name: '一级', id: 1 },
|
||||
{ name: '二级', id: 2 },
|
||||
{ name: '三级', id: 3 },
|
||||
];
|
||||
=======
|
||||
import { reactive, ref, watch } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { cloneDeep, forEach } from 'lodash';
|
||||
@@ -761,7 +386,6 @@ const {
|
||||
'oprn_patn_type_code',
|
||||
'bkup_deg_code'
|
||||
);
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 手术类型
|
||||
const surgeryTypeOptions = oprn_patn_type_code;
|
||||
@@ -801,198 +425,6 @@ watch(
|
||||
const addItem = () => {
|
||||
let data = {
|
||||
//手术操作日期 oprn_oprt_date
|
||||
<<<<<<< HEAD
|
||||
oprn_date: '',
|
||||
|
||||
//手术级别 手术级别名称--oprn_lv_code
|
||||
oprn_lv_code: '',
|
||||
|
||||
//手术及操作名称 oprn_oprt_code
|
||||
oprn_oprt_name: '',
|
||||
|
||||
//手术及操作医师
|
||||
//术者
|
||||
oper_name: '',
|
||||
//Ⅰ助
|
||||
asit_1_name: '',
|
||||
//Ⅱ助
|
||||
asit_name2: '',
|
||||
|
||||
//切口愈合等级 sinc_heal_lv_code
|
||||
sinc_heal_lv: '',
|
||||
|
||||
//麻醉方式
|
||||
anst_way: '',
|
||||
|
||||
//麻醉分级 anst_lv_code
|
||||
anst_lv_name: '',
|
||||
|
||||
//手术时长
|
||||
|
||||
|
||||
//手术方式
|
||||
|
||||
|
||||
//离院方式
|
||||
dscg_way: '',
|
||||
|
||||
//是否有出院31天内再住院计划-----不确定
|
||||
days_rinp_flag_31: '',
|
||||
|
||||
//目的
|
||||
days_rinp_pup_31: '',
|
||||
|
||||
//颅脑损伤患者昏迷时间 入院前
|
||||
brn_damg_bfadm_coma_dura: '',
|
||||
//颅脑损伤患者昏迷时间 入院后
|
||||
brn_damg_afadm_coma_dura: '',
|
||||
|
||||
//肿瘤分期
|
||||
//T
|
||||
//N
|
||||
//M
|
||||
//判断依据
|
||||
//分化程度 bkup_deg_code
|
||||
bkup_deg: '',
|
||||
|
||||
//临床路径-进入路径
|
||||
//变异
|
||||
//退出路径
|
||||
|
||||
//护理级别
|
||||
//特级护理
|
||||
spga_nurscare_days: '',
|
||||
//1级护理
|
||||
lv1_nurscare_days: '',
|
||||
//2级护理
|
||||
scd_nurscare_days: '',
|
||||
//3级护理
|
||||
lv3_nurscare_days: '',
|
||||
|
||||
//呼吸机使用 vent_used_days vent_used_h_cnt vent_used_m_cnt
|
||||
vent_used_dura: '',
|
||||
//有创呼吸机使用时间
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
isChoose: false,
|
||||
ctrlDate: '2025-10-10',
|
||||
surgeryLevel: '',
|
||||
surgeryLevelArr: [
|
||||
{
|
||||
title: '1级',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '2级',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
title: '3级',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
title: '4级',
|
||||
value: 4,
|
||||
}
|
||||
],
|
||||
surgeryName: '',
|
||||
surgeryMasterName: '',
|
||||
surgeryMasterName_1: '',
|
||||
surgeryMasterName_2: '',
|
||||
cutLevel: '',
|
||||
cutLevelArr: [
|
||||
{
|
||||
title: '1/甲',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '2/乙',
|
||||
value: 2,
|
||||
}
|
||||
],
|
||||
anesthesiaType: '',
|
||||
anesthesiaTypeArr: [],
|
||||
anesthesiaEr: '',
|
||||
anesthesiaLevel: '',
|
||||
anesthesiaLevelArr: [
|
||||
{
|
||||
title: '1',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
title: '2',
|
||||
value: 2,
|
||||
},
|
||||
],
|
||||
surgeryTime: ''
|
||||
}
|
||||
//push
|
||||
tableData_top.unshift(
|
||||
data
|
||||
)
|
||||
tableData_top.map((d,i) => {
|
||||
d.currentIndex = i
|
||||
})
|
||||
|
||||
}
|
||||
const checkItem = (e) => {
|
||||
chooseData = []
|
||||
e['isChoose'] = !e['isChoose']
|
||||
tableData_top.map((d) => {
|
||||
if (d['isChoose']) {
|
||||
chooseData.push(d)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const chooseAll = () => {
|
||||
isChooseAll.value = !isChooseAll.value
|
||||
|
||||
if (tableData_top.length) {
|
||||
tableData_top.map((d) => {
|
||||
d['isChoose'] = !isChooseAll.value
|
||||
|
||||
checkItem(d)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
//删除方法
|
||||
const handleDelete = () => {
|
||||
if (!tableData_top.length) { return }
|
||||
let deleteId = []
|
||||
chooseData.map((d) => {
|
||||
deleteId.push(d['currentIndex'])
|
||||
})
|
||||
|
||||
for (let i = tableData_top.length - 1; i >= 0; i--) {
|
||||
if (deleteId.includes(tableData_top[i].currentIndex)) {
|
||||
tableData_top.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
isChooseAll.value = false
|
||||
msgSuccess('删除成功')
|
||||
}
|
||||
|
||||
const msgSuccess = (msg) => {
|
||||
ElMessage({
|
||||
message: msg,
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
=======
|
||||
oprn_oprt_date: '',
|
||||
// 手术级别
|
||||
oprn_lv_code: '',
|
||||
@@ -1064,7 +496,6 @@ const handleDelete = () => {
|
||||
isChooseAll.value = false;
|
||||
msgSuccess('删除成功');
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
|
||||
const msgSuccess = (msg) => {
|
||||
ElMessage({
|
||||
@@ -1076,22 +507,14 @@ const msgSuccess = (msg) => {
|
||||
|
||||
<style lang="scss">
|
||||
.medicalSec {
|
||||
<<<<<<< HEAD
|
||||
.el-date-editor.el-input, .el-date-editor.el-input__wrapper {
|
||||
=======
|
||||
.el-date-editor.el-input,
|
||||
.el-date-editor.el-input__wrapper {
|
||||
>>>>>>> v1.3
|
||||
width: 100%;
|
||||
}
|
||||
.el-table td.el-table__cell div {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
:deep(.el-table__expand-icon) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,14 +26,6 @@
|
||||
>
|
||||
<el-table-column type="index" width="80" align="center" label="序号" />
|
||||
<el-table-column prop="patientName" align="center" label="申请患者" />
|
||||
<<<<<<< HEAD
|
||||
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
|
||||
<el-table-column label="年龄" align="center">
|
||||
<template #default="scope">
|
||||
{{ scope.row.age ? `${scope.row.age}岁` : '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
=======
|
||||
<el-table-column prop="genderEnum_enumText" width="80" label="性别" align="center" />
|
||||
<el-table-column prop="age" width="80" label="年龄" align="center" />
|
||||
<el-table-column prop="busNo" align="center" label="患者住院号">
|
||||
@@ -51,7 +43,6 @@
|
||||
{{ scope.row.admitSourceCode || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
>>>>>>> v1.3
|
||||
<el-table-column prop="sourceName" align="center" label="申请来源">
|
||||
<template #default="scope">
|
||||
{{ scope.row.sourceName || '-' }}
|
||||
|
||||
@@ -1,192 +1,4 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<div class="dashboard-container">
|
||||
<!-- 顶部导航栏 -->
|
||||
<header class="header">
|
||||
<div class="logo">
|
||||
<span class="logo-text">医院信息管理系统</span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="notification-badge">
|
||||
<i class="header-icon">🔔</i>
|
||||
<span class="badge">2</span>
|
||||
</div>
|
||||
<i class="header-icon">⚙️</i>
|
||||
<div class="user-info">
|
||||
<span class="user-avatar">👤</span>
|
||||
<span>用户</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 主体内容 -->
|
||||
<div class="main-content">
|
||||
<!-- 左侧导航栏 -->
|
||||
<nav class="sidebar">
|
||||
<div class="menu-item active">
|
||||
<span class="menu-icon">📊</span>
|
||||
<span>仪表盘</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">👥</span>
|
||||
<span>患者管理</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">💉</span>
|
||||
<span>预约管理</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">🏥</span>
|
||||
<span>门诊管理</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">⚕️</span>
|
||||
<span>住院管理</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">💊</span>
|
||||
<span>药房管理</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">📋</span>
|
||||
<span>报表统计</span>
|
||||
</div>
|
||||
<div class="menu-item">
|
||||
<span class="menu-icon">⚙️</span>
|
||||
<span>系统设置</span>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- 主内容区 -->
|
||||
<div class="content-wrapper">
|
||||
<div class="awaitingBtn">
|
||||
<el-button @click="awaitingMedicineBtn">效期预警 <span>{{ total }}</span></el-button>
|
||||
</div>
|
||||
|
||||
<h1 class="section-title">仪表盘</h1>
|
||||
|
||||
<!-- 关键指标卡片 -->
|
||||
<div class="dashboard-grid">
|
||||
<div class="card">
|
||||
<div class="card-title">今日预约量</div>
|
||||
<div class="card-value">126</div>
|
||||
<div class="card-stats">
|
||||
<span class="stats-icon">↑</span>
|
||||
<span>12% 较昨日</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-title">门诊量统计</div>
|
||||
<div class="card-value">342</div>
|
||||
<div class="card-stats">
|
||||
<span class="stats-icon">↑</span>
|
||||
<span>8% 较上周</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-title">住院患者数</div>
|
||||
<div class="card-value">78</div>
|
||||
<div class="card-stats down">
|
||||
<span class="stats-icon">↓</span>
|
||||
<span>5% 较上周</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-title">药品库存预警</div>
|
||||
<div class="card-value">8</div>
|
||||
<div class="card-stats">
|
||||
<span class="stats-icon">!</span>
|
||||
<span>需要立即处理</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 图表展示区 -->
|
||||
<div class="chart-container">
|
||||
<canvas id="statsChart"></canvas>
|
||||
</div>
|
||||
|
||||
<!-- 重要通知和待办事项 -->
|
||||
<div class="bottom-content">
|
||||
<div class="notification-container">
|
||||
<div class="notification-title">重要通知</div>
|
||||
<ul class="notification-list">
|
||||
<li class="notification-item">系统将于周六凌晨2:00进行维护升级</li>
|
||||
<li class="notification-item">新的门诊排班系统已上线,请尽快熟悉</li>
|
||||
<li class="notification-item">三季度医疗质量分析报告已发布</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="todo-container">
|
||||
<div class="todo-title">待办事项</div>
|
||||
<ul class="todo-list">
|
||||
<li class="todo-item">
|
||||
<span>未完成预约</span>
|
||||
<span class="todo-count">12个</span>
|
||||
</li>
|
||||
<li class="todo-item">
|
||||
<span>待处理检查结果</span>
|
||||
<span class="todo-count">7份</span>
|
||||
</li>
|
||||
<li class="todo-item">
|
||||
<span>待开处方</span>
|
||||
<span class="todo-count">3张</span>
|
||||
</li>
|
||||
</ul>
|
||||
<button class="btn btn-primary">查看详情</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 患者列表 -->
|
||||
<h2 class="section-title">最近患者</h2>
|
||||
<div class="table-container">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>患者姓名</th>
|
||||
<th>病历号</th>
|
||||
<th>年龄</th>
|
||||
<th>最后就诊时间</th>
|
||||
<th>状态</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>张明</td>
|
||||
<td>HN2023001</td>
|
||||
<td>45</td>
|
||||
<td>2023-10-20 09:30</td>
|
||||
<td><span style="color: #67c23a;">已完成</span></td>
|
||||
<td>
|
||||
<button class="btn btn-outline">详情</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>李红</td>
|
||||
<td>HN2023002</td>
|
||||
<td>32</td>
|
||||
<td>2023-10-20 10:15</td>
|
||||
<td><span style="color: #ff9800;">待检查</span></td>
|
||||
<td>
|
||||
<button class="btn btn-outline">详情</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>王建军</td>
|
||||
<td>HN2023003</td>
|
||||
<td>68</td>
|
||||
<td>2023-10-19 14:20</td>
|
||||
<td><span style="color: #d45d79;">住院中</span></td>
|
||||
<td>
|
||||
<button class="btn btn-outline">详情</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
=======
|
||||
<div class="container">
|
||||
<div class="awaitingBtn">
|
||||
<el-button @click="awaitingMedicineBtn">
|
||||
@@ -202,143 +14,10 @@
|
||||
<!-- <div class="logo">
|
||||
<img src="/src/assets/images/jlau.jpg" />
|
||||
</div> -->
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Index">
|
||||
<<<<<<< HEAD
|
||||
import { ref, onMounted, onActivated } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import Chart from 'chart.js/auto';
|
||||
import {
|
||||
getExpirationWarning,
|
||||
} from "./medicationmanagement/statisticalManagement/statisticalManagent";
|
||||
|
||||
const router = useRouter();
|
||||
const total = ref(0);
|
||||
|
||||
function awaitingMedicineBtn() {
|
||||
router.push({ path: '/medicationmanagement/statisticalManagement/earlyWarning' });
|
||||
}
|
||||
|
||||
|
||||
function getExpirationWarningCount() {
|
||||
getExpirationWarning({ pageNo: 1, pageSize: 10 }).then((res) => {
|
||||
total.value = res.data.total || 0;
|
||||
}).catch((err) => {
|
||||
console.error('获取效期预警数量失败:', err);
|
||||
total.value = 0;
|
||||
});
|
||||
}
|
||||
|
||||
let chartInstance = null;
|
||||
|
||||
onActivated(() => {
|
||||
// getExpirationWarningCount();
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// getExpirationWarningCount();
|
||||
|
||||
const ctx = document.getElementById('statsChart');
|
||||
if (!ctx) return;
|
||||
|
||||
// 销毁已有实例
|
||||
if (chartInstance) {
|
||||
chartInstance.destroy();
|
||||
}
|
||||
|
||||
// 模拟数据:近7天门诊量与预约量
|
||||
const labels = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
|
||||
const outpatientData = [310, 335, 305, 345, 370, 270, 210]; // 门诊量(柱状图)
|
||||
const appointmentData = [100, 120, 110, 130, 140, 90, 70]; // 预约量(折线图)
|
||||
|
||||
chartInstance = new Chart(ctx.getContext('2d'), {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [
|
||||
{
|
||||
label: '门诊量',
|
||||
data: outpatientData,
|
||||
backgroundColor: '#91c8e5',
|
||||
borderColor: '#66a8cc',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
borderSkipped: false,
|
||||
},
|
||||
{
|
||||
label: '预约量',
|
||||
data: appointmentData,
|
||||
type: 'line',
|
||||
borderColor: '#f56c6c',
|
||||
backgroundColor: 'rgba(245, 108, 108, 0.1)',
|
||||
borderWidth: 2,
|
||||
pointBackgroundColor: '#f56c6c',
|
||||
pointBorderColor: '#fff',
|
||||
pointBorderWidth: 2,
|
||||
pointRadius: 4,
|
||||
fill: true,
|
||||
tension: 0.3,
|
||||
lineTension: 0.3,
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'top',
|
||||
labels: {
|
||||
font: {
|
||||
size: 12,
|
||||
weight: 'bold'
|
||||
}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
mode: 'index',
|
||||
intersect: false,
|
||||
backgroundColor: 'rgba(0, 0, 0, 0.7)',
|
||||
titleFont: {
|
||||
size: 13
|
||||
},
|
||||
bodyFont: {
|
||||
size: 12
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
grid: {
|
||||
display: false
|
||||
},
|
||||
ticks: {
|
||||
font: {
|
||||
size: 11
|
||||
}
|
||||
}
|
||||
},
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
max: 400,
|
||||
stepSize: 50,
|
||||
grid: {
|
||||
color: 'rgba(0, 0, 0, 0.05)'
|
||||
},
|
||||
ticks: {
|
||||
font: {
|
||||
size: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
=======
|
||||
import { getproductReturnPage } from './medicationmanagement/statisticalManagement/statisticalManagent';
|
||||
import { useStore } from '@/store/store';
|
||||
const store = useStore();
|
||||
@@ -374,7 +53,6 @@ function getExpirationWarningCount() {
|
||||
}
|
||||
|
||||
getExpirationWarningCount();
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -386,151 +64,15 @@ getExpirationWarningCount();
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||
padding: 0;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.header {
|
||||
height: 60px;
|
||||
background-color: white;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 24px;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo-text {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #166773;
|
||||
}
|
||||
|
||||
.header-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.notification-badge {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.header-icon {
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
.header-icon:hover {
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
|
||||
.badge {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: #ff4d4f;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
padding: 2px 6px;
|
||||
border-radius: 10px;
|
||||
min-width: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.user-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 6px 12px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
.user-info:hover {
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
|
||||
.user-avatar {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 200px;
|
||||
background-color: white;
|
||||
box-shadow: 2px 0 4px rgba(0, 0, 0, 0.1);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 16px 24px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s;
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.menu-item:hover {
|
||||
background-color: #f0f9ff;
|
||||
}
|
||||
|
||||
.menu-item.active {
|
||||
background-color: #e6f7ff;
|
||||
border-left-color: #1890ff;
|
||||
color: #1890ff;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.menu-icon {
|
||||
margin-right: 12px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
overflow-y: auto;
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
|
||||
.awaitingBtn {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.el-button{
|
||||
=======
|
||||
.awaitingBtn {
|
||||
.el-button {
|
||||
>>>>>>> v1.3
|
||||
border: 1px #166773 solid;
|
||||
span {
|
||||
color: red;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.el-button:hover{
|
||||
=======
|
||||
.el-button:hover {
|
||||
>>>>>>> v1.3
|
||||
border: 1px #166773 solid;
|
||||
color: #166773;
|
||||
span {
|
||||
@@ -538,12 +80,9 @@ getExpirationWarningCount();
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
.section-title {
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
|
||||
import request from '@/utils/request'
|
||||
=======
|
||||
import request from '@/utils/request';
|
||||
>>>>>>> v1.3
|
||||
// 申请单相关接口
|
||||
|
||||
/**
|
||||
@@ -58,19 +53,6 @@ export function getNursingOrdersInfos() {
|
||||
}
|
||||
|
||||
/**
|
||||
<<<<<<< HEAD
|
||||
* 查询护理医嘱信息
|
||||
*/
|
||||
export function getNursingOrdersInfos() {
|
||||
return request({
|
||||
url: '/reg-doctorstation/special-advice/nursing-orders',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
* 保存护理医嘱信息
|
||||
* @param {Object} data - 护理医嘱数据
|
||||
* @param {number} data.encounterId - 就诊id
|
||||
@@ -87,13 +69,8 @@ export function saveNursingOrders(data) {
|
||||
return request({
|
||||
url: '/reg-doctorstation/special-advice/nursing-orders',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data: data
|
||||
})
|
||||
=======
|
||||
data: data,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,13 +80,8 @@ export function getEncounterNursingOrders(params) {
|
||||
return request({
|
||||
url: '/reg-doctorstation/special-advice/encounter-nursing-orders',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params: params
|
||||
})
|
||||
=======
|
||||
params: params,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,16 +24,12 @@
|
||||
<el-table-column prop="item" label="项目" width="180" align="center" />
|
||||
<el-table-column prop="currentStatus" label="当前状态" width="260" align="center">
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<el-tag :type="getStatusType(scope.row.currentStatus)" size="small" class="status-tag">
|
||||
=======
|
||||
<el-tag
|
||||
v-if="scope.row.currentStatus"
|
||||
:type="getStatusType(scope.row.currentStatus)"
|
||||
size="small"
|
||||
class="status-tag"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
{{ scope.row.currentStatus }}
|
||||
</el-tag>
|
||||
</template>
|
||||
@@ -148,13 +144,8 @@
|
||||
</el-table>
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="nursing-status-actions">
|
||||
<<<<<<< HEAD
|
||||
<el-button @click="handleCancel" size="small">取消</el-button>
|
||||
<el-button type="primary" @click="handleConfirm" size="small">确定</el-button>
|
||||
=======
|
||||
<el-button @click="handleCancel" size="medium">取消</el-button>
|
||||
<el-button type="primary" @click="handleConfirm" size="medium">确定</el-button>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
@@ -390,10 +381,6 @@ const fetchNursingStatusData = () => {
|
||||
loading.value = false;
|
||||
|
||||
if (res.code === 200 && res.data) {
|
||||
<<<<<<< HEAD
|
||||
// 填充各列表数据
|
||||
nursingLevelList.value = res.data.nursingList || [];
|
||||
=======
|
||||
let nursingList = [];
|
||||
let nursingOrderNameList = ['I级护理', 'II级护理', 'III级护理', '特级护理'];
|
||||
nursingOrderNameList.forEach((str) => {
|
||||
@@ -405,7 +392,6 @@ const fetchNursingStatusData = () => {
|
||||
});
|
||||
// 填充各列表数据
|
||||
nursingLevelList.value = nursingList || [];
|
||||
>>>>>>> v1.3
|
||||
conditionList.value = res.data.conditionList || [];
|
||||
dietList.value = res.data.dietList || [];
|
||||
positionList.value = res.data.positionList || [];
|
||||
|
||||
@@ -28,16 +28,12 @@
|
||||
<span>{{ node.label }}</span>
|
||||
<span class="tree-node-actions">
|
||||
<template v-if="node.level === 1 && data.name != '常用' && data.name != '历史'">
|
||||
<<<<<<< HEAD
|
||||
<el-button style="color: #000000" type="text" size="small" @click.stop="addChild(data)">
|
||||
=======
|
||||
<el-button
|
||||
style="color: #000000"
|
||||
type="text"
|
||||
size="small"
|
||||
@click.stop="addChild(data)"
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
@@ -46,13 +42,6 @@
|
||||
<el-popconfirm width="200" :hide-after="10" title="确认删除此常用诊断吗" placement="top-start"
|
||||
@confirm="deleteChild(data)">
|
||||
<template #reference>
|
||||
<<<<<<< HEAD
|
||||
<el-button style="color: #000000" v-if="
|
||||
node.level === 2 &&
|
||||
node.parent.data.name != '常用' &&
|
||||
node.parent.data.name != '历史'
|
||||
" type="text" size="small" @click.stop="">
|
||||
=======
|
||||
<el-button
|
||||
style="color: #000000"
|
||||
v-if="
|
||||
@@ -64,7 +53,6 @@
|
||||
size="small"
|
||||
@click.stop=""
|
||||
>
|
||||
>>>>>>> v1.3
|
||||
<el-icon>
|
||||
<Minus />
|
||||
</el-icon>
|
||||
@@ -197,11 +185,8 @@ import { deleteTcmDiagnosis } from '../../../../doctorstation/components/api.js'
|
||||
import diagnosisdialog from '../diagnosis/diagnosisdialog.vue';
|
||||
import AddDiagnosisDialog from './addDiagnosisDialog.vue';
|
||||
import diagnosislist from '../diagnosis/diagnosislist.vue';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
import { patientInfo } from '../../store/patient.js';
|
||||
import { ElMessage } from 'element-plus';
|
||||
>>>>>>> v1.3
|
||||
// const diagnosisList = ref([]);
|
||||
const allowAdd = ref(false);
|
||||
const tree = ref([]);
|
||||
@@ -230,12 +215,8 @@ const rules = ref({
|
||||
medTypeCode: [{ required: true, message: '请选择诊断类型', trigger: 'change' }],
|
||||
diagSrtNo: [{ required: true, message: '请输入诊断序号', trigger: 'change' }],
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
const isSaving = ref(false);
|
||||
=======
|
||||
const diagnosisNetDatas = ref([]);
|
||||
|
||||
>>>>>>> v1.3
|
||||
watch(
|
||||
() => form.value.diagnosisList,
|
||||
() => {
|
||||
@@ -266,31 +247,6 @@ function getList() {
|
||||
|
||||
getEncounterDiagnosis(props.patientInfo.encounterId).then((res) => {
|
||||
if (res.code == 200) {
|
||||
<<<<<<< HEAD
|
||||
// 为每个诊断项添加默认的诊断医生和时间(如果不存在)
|
||||
const diagnosisList = res.data.map(item => ({
|
||||
...item,
|
||||
diagnosisDoctor: item.diagnosisDoctor || props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,
|
||||
diagnosisTime: item.diagnosisTime || new Date().toLocaleString('zh-CN')
|
||||
}));
|
||||
|
||||
// 对获取的数据进行排序
|
||||
diagnosisList.sort((a, b) => {
|
||||
const aNo = typeof a.diagSrtNo === 'number' ? a.diagSrtNo : 9999;
|
||||
const bNo = typeof b.diagSrtNo === 'number' ? b.diagSrtNo : 9999;
|
||||
return aNo - bNo;
|
||||
});
|
||||
|
||||
form.value.diagnosisList = diagnosisList;
|
||||
emits('diagnosisSave', false);
|
||||
}
|
||||
});
|
||||
|
||||
getTcmDiagnosis({ encounterId: props.patientInfo.encounterId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if (res.data.illness && res.data.illness.length > 0 && res.data.symptom) {
|
||||
const newList = [];
|
||||
=======
|
||||
const datas = (res.data || []).map((item) => {
|
||||
let obj = {
|
||||
...item,
|
||||
@@ -311,7 +267,6 @@ function getList() {
|
||||
if (res.code == 200) {
|
||||
if (res.data.illness.length > 0) {
|
||||
diagnosisNetDatas.value = res.data.illness;
|
||||
>>>>>>> v1.3
|
||||
res.data.illness.forEach((item, index) => {
|
||||
newList.push({
|
||||
name: item.name + '-' + (res.data.symptom[index]?.name || ''),
|
||||
@@ -488,27 +443,6 @@ function handleDeleteDiagnosis(row, index) {
|
||||
//中医诊断用-拼接 例如:疳气-表里俱实证
|
||||
const nameArr = row.name?.split('-') || [];
|
||||
if (row.conditionId) {
|
||||
<<<<<<< HEAD
|
||||
delEncounterDiagnosis(row.conditionId).then(() => {
|
||||
// 不要立即调用getList(),而是从当前列表中移除
|
||||
form.value.diagnosisList.splice(index, 1);
|
||||
// 重新排序剩余的项目
|
||||
const sortedList = [...form.value.diagnosisList].sort((a, b) => {
|
||||
const aNo = typeof a.diagSrtNo === 'number' ? a.diagSrtNo : 9999;
|
||||
const bNo = typeof b.diagSrtNo === 'number' ? b.diagSrtNo : 9999;
|
||||
return aNo - bNo;
|
||||
});
|
||||
|
||||
// 重新分配连续的序号
|
||||
sortedList.forEach((item, idx) => {
|
||||
item.diagSrtNo = idx + 1;
|
||||
});
|
||||
|
||||
// 更新列表
|
||||
form.value.diagnosisList = sortedList.map(item => ({ ...item }));
|
||||
getTree();
|
||||
});
|
||||
=======
|
||||
if (nameArr.length > 1) {
|
||||
deleteTcmDiagnosis(row.syndromeGroupNo).then(() => {
|
||||
getList();
|
||||
@@ -520,7 +454,6 @@ function handleDeleteDiagnosis(row, index) {
|
||||
getTree();
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
} else {
|
||||
console.log('row============>', JSON.stringify(row));
|
||||
console.log('item============>', index);
|
||||
@@ -729,7 +662,3 @@ defineExpose({ getList, getDetail, handleSaveDiagnosis });
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -100,17 +100,6 @@ export function transferOrganization(data) {
|
||||
return request({
|
||||
url: '/reg-doctorstation/special-advice/transfer-organization-orders',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=======
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -56,10 +56,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { getCurrentInstance, onBeforeMount, onMounted, reactive, ref, computed } from 'vue';
|
||||
import BloodTransfusion from './bloodTransfusion';
|
||||
=======
|
||||
import {
|
||||
getCurrentInstance,
|
||||
onBeforeMount,
|
||||
@@ -70,7 +66,6 @@ import {
|
||||
nextTick,
|
||||
} from 'vue';
|
||||
import BloodTransfusion from './bloodTransfusion.vue';
|
||||
>>>>>>> v1.3
|
||||
import { patientInfo } from '../../../store/patient.js';
|
||||
import Surgery from './surgery.vue';
|
||||
import LaboratoryTests from './laboratoryTests.vue';
|
||||
|
||||
@@ -9,11 +9,7 @@
|
||||
>
|
||||
<div style="padding: 0 80px">
|
||||
<el-form :model="form" :rules="rules" ref="formRef">
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="出院方式">
|
||||
=======
|
||||
<el-form-item label="出院方式" prop="outpatientType">
|
||||
>>>>>>> v1.3
|
||||
<el-select v-model="form.outpatientType">
|
||||
<el-option
|
||||
v-for="(item, index) in dscg_way"
|
||||
@@ -23,21 +19,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="出院时间">
|
||||
=======
|
||||
<el-form-item label="出院时间" prop="outpatientTime">
|
||||
>>>>>>> v1.3
|
||||
<el-radio-group v-model="form.outpatientTime">
|
||||
<el-radio value="1">今日</el-radio>
|
||||
<el-radio value="2">明日</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="出院描述"
|
||||
=======
|
||||
<el-form-item label="出院描述" prop="outpatientDescription"
|
||||
>>>>>>> v1.3
|
||||
><el-input v-model="form.outpatientDescription" type="textarea" rows="5" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -52,11 +40,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { dscg_way } = proxy.useDict('dscg_way');
|
||||
const dialogVisible = ref(false);
|
||||
=======
|
||||
import { toRaw } from 'vue';
|
||||
import { leaveHospital } from '../../api';
|
||||
import { dayjs } from 'element-plus';
|
||||
@@ -85,14 +68,11 @@ const { dscg_way } = proxy.useDict('dscg_way');
|
||||
const dialogVisible = ref(false);
|
||||
const formRef = ref(null);
|
||||
const emit = defineEmits(['success']);
|
||||
>>>>>>> v1.3
|
||||
const form = reactive({
|
||||
outpatientType: [],
|
||||
outpatientTime: '',
|
||||
outpatientDescription: '',
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const rules = {
|
||||
outpatientType: [{ required: true, message: '请选择出院方式', trigger: 'change' }],
|
||||
outpatientTime: [{ required: true, message: '请选择出院时间', trigger: 'change' }],
|
||||
@@ -106,18 +86,11 @@ function getEndTime() {
|
||||
}
|
||||
return date.format('YYYY-MM-DD HH:mm:ss');
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
function openDialog() {
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
defineExpose({
|
||||
openDialog,
|
||||
});
|
||||
</script>
|
||||
=======
|
||||
const submitApplicationForm = async () => {
|
||||
if (!formRef.value) return;
|
||||
try {
|
||||
@@ -153,4 +126,3 @@ defineExpose({
|
||||
openDialog,
|
||||
});
|
||||
</script>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -65,11 +65,7 @@
|
||||
<el-radio-button label="1">长期</el-radio-button>
|
||||
<el-radio-button label="2">临时</el-radio-button>
|
||||
</el-radio-group>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="orderClassCode" placeholder="医嘱类型" style="width: 240px">
|
||||
=======
|
||||
<el-select v-model="orderClassCode" placeholder="医嘱类型" style="width: 240px" clearable>
|
||||
>>>>>>> v1.3
|
||||
<el-option
|
||||
v-for="item in adviceTypeList"
|
||||
:key="item.value"
|
||||
@@ -77,11 +73,6 @@
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<<<<<<< HEAD
|
||||
<el-select v-model="orderStatus" placeholder="医嘱状态" style="width: 240px"> </el-select>
|
||||
<el-button link type="primary" @click="handleTransferOrg">转科</el-button>
|
||||
<el-button link type="primary" @click="handleLeaveHospital">出院</el-button>
|
||||
=======
|
||||
<el-select v-model="orderStatus" placeholder="医嘱状态" style="width: 240px" clearable>
|
||||
<el-option
|
||||
v-for="item in statusOption"
|
||||
@@ -96,518 +87,20 @@
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="onNursingStatus">护理状态</el-button>
|
||||
<el-button link type="primary" @click="refresh()">刷新数据</el-button>
|
||||
>>>>>>> v1.3
|
||||
</el-space>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inpatientDoctor-order-table">
|
||||
<el-table
|
||||
<<<<<<< HEAD
|
||||
max-height="650"
|
||||
ref="prescriptionRef"
|
||||
:data="prescriptionList"
|
||||
=======
|
||||
height="100%"
|
||||
ref="prescriptionRef"
|
||||
:data="filterPrescriptionList"
|
||||
>>>>>>> v1.3
|
||||
row-key="uniqueKey"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
@row-dblclick="clickRowDb"
|
||||
v-loading="loading"
|
||||
:expand-row-keys="expandOrder"
|
||||
<<<<<<< HEAD
|
||||
>
|
||||
<el-table-column type="expand" width="1" style="width: 0">
|
||||
<template #default="scope">
|
||||
<el-form :model="scope.row" :rules="rowRules" :ref="'formRef' + scope.$index">
|
||||
<div
|
||||
class="expend_div"
|
||||
style="padding: 16px; background: #f8f9fa; border-radius: 8px"
|
||||
>
|
||||
<template v-if="scope.row.adviceType == 1">
|
||||
<div style="display: flex; align-items: center; margin-bottom: 16px; gap: 16px">
|
||||
<span class="medicine-title">
|
||||
{{
|
||||
scope.row.adviceName +
|
||||
' ' +
|
||||
scope.row.volume +
|
||||
' [' +
|
||||
Number(scope.row.unitPrice).toFixed(2) +
|
||||
' 元' +
|
||||
'/' +
|
||||
scope.row.unitCode_dictText +
|
||||
']'
|
||||
}}
|
||||
</span>
|
||||
|
||||
<!-- <el-form-item prop="conditionDefinitionId">
|
||||
<el-select
|
||||
v-model="scope.row.conditionDefinitionId"
|
||||
style="width: 180px; margin: 0 20px"
|
||||
placeholder="诊断"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in diagnosisList"
|
||||
:key="item.conditionId"
|
||||
:label="item.name"
|
||||
:value="item.definitionId"
|
||||
@click="handleDiagnosisChange(item, scope.row)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item prop="lotNumber" label="药房:">
|
||||
<el-select
|
||||
v-model="scope.row.inventoryId"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
placeholder="药房"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in scope.row.stockList"
|
||||
:key="item.inventoryId"
|
||||
:value="item.inventoryId"
|
||||
:label="
|
||||
item.locationName +
|
||||
' ' +
|
||||
'批次号: ' +
|
||||
item.lotNumber +
|
||||
' ' +
|
||||
' 库存:' +
|
||||
stockFormat(
|
||||
scope.row.partPercent,
|
||||
scope.row.unitCode_dictText,
|
||||
scope.row.minUnitCode_dictText,
|
||||
item.quantity
|
||||
) +
|
||||
' 单价:' +
|
||||
item.price.toFixed(2) +
|
||||
'/' +
|
||||
item.unitCode_dictText
|
||||
"
|
||||
@click="handleNumberClick(item, scope.$index)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="执行次数:"
|
||||
prop="executeNum"
|
||||
class="required-field"
|
||||
data-prop="executeNum"
|
||||
v-if="scope.row.injectFlag == 1"
|
||||
>
|
||||
<el-input-number
|
||||
:min="1"
|
||||
v-model="scope.row.executeNum"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
:ref="(el) => (inputRefs.executeNum = el)"
|
||||
@keyup.enter.prevent="handleEnter('executeNum', scope.row, scope.$index)"
|
||||
style="width: 70px; margin-right: 20px"
|
||||
/> </el-form-item
|
||||
>x <span class="medicine-info"> 诊断:{{ diagnosisName }} </span>x
|
||||
<span class="medicine-info"> 皮试:{{ scope.row.skinTestFlag_enumText }} </span>
|
||||
<span class="medicine-info">
|
||||
注射药品:{{ scope.row.injectFlag_enumText }}
|
||||
</span>
|
||||
<span class="total-amount">
|
||||
总金额:{{ scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '0.00 元' }}
|
||||
</span>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center; gap: 12px; flex-wrap: wrap">
|
||||
<div class="form-group">
|
||||
<!-- 单次剂量 -->
|
||||
<el-form-item
|
||||
label="单次用量:"
|
||||
prop="doseQuantity"
|
||||
class="required-field"
|
||||
data-prop="doseQuantity"
|
||||
>
|
||||
<el-input-number
|
||||
:min="0"
|
||||
v-model="scope.row.doseQuantity"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
style="width: 70px; margin-right: 20px"
|
||||
:ref="(el) => (inputRefs.doseQuantity = el)"
|
||||
@input="convertValues(scope.row, scope.$index)"
|
||||
@keyup.enter.prevent="
|
||||
handleEnter('doseQuantity', scope.row, scope.$index)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 剂量单位 -->
|
||||
<el-select
|
||||
v-model="scope.row.minUnitCode"
|
||||
style="width: 70px; margin-right: 20px"
|
||||
placeholder=" "
|
||||
>
|
||||
<template v-for="item in scope.row.unitCodeList" :key="item.value">
|
||||
<el-option
|
||||
v-if="
|
||||
scope.row.unitCodeList.length == 3
|
||||
? item.type == unitMap['minUnit']
|
||||
: item.type == unitMap['unit']
|
||||
"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
<span>=</span>
|
||||
<!-- 单次剂量 -->
|
||||
<el-form-item prop="dose" class="required-field" data-prop="dose">
|
||||
<el-input-number
|
||||
v-model="scope.row.dose"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
style="width: 70px; margin: 0 20px"
|
||||
:ref="(el) => (inputRefs.dose = el)"
|
||||
@input="convertDoseValues(scope.row, scope.$index)"
|
||||
@keyup.enter.prevent="handleEnter('dose', scope.row, scope.$index)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 全部单位 -->
|
||||
<el-select
|
||||
v-model="scope.row.doseUnitCode"
|
||||
style="width: 70px"
|
||||
placeholder=" "
|
||||
@change="convertValues(scope.row, scope.$index)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in scope.row.unitCodeList"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
:key="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<el-form-item
|
||||
label="给药途径:"
|
||||
prop="methodCode"
|
||||
class="required-field"
|
||||
data-prop="methodCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="scope.row.methodCode"
|
||||
placeholder="给药途径"
|
||||
clearable
|
||||
filterable
|
||||
:ref="(el) => (inputRefs.methodCode = el)"
|
||||
@keyup.enter.prevent="
|
||||
() => {
|
||||
inputRefs.methodCode.blur();
|
||||
}
|
||||
"
|
||||
@visible-change="
|
||||
(value) => {
|
||||
if (!value) {
|
||||
handleEnter('methodCode', scope.row, scope.$index);
|
||||
}
|
||||
}
|
||||
"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in method_code"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="用药频次:"
|
||||
prop="rateCode"
|
||||
class="required-field"
|
||||
data-prop="rateCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="scope.row.rateCode"
|
||||
placeholder="频次"
|
||||
style="width: 120px"
|
||||
filterable
|
||||
@keyup.enter.prevent="
|
||||
() => {
|
||||
inputRefs.rateCode.blur();
|
||||
}
|
||||
"
|
||||
@change="calculateTotalAmount(scope.row, scope.$index)"
|
||||
@visible-change="
|
||||
(value) => {
|
||||
if (!value) {
|
||||
handleEnter('rateCode', scope.row, scope.$index);
|
||||
}
|
||||
}
|
||||
"
|
||||
:ref="(el) => (inputRefs.rateCode = el)"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in rate_code"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 10px;
|
||||
"
|
||||
>
|
||||
<div class="form-group">
|
||||
<el-form-item
|
||||
label="用药天数:"
|
||||
prop="dispensePerDuration"
|
||||
class="required-field"
|
||||
data-prop="dispensePerDuration"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="scope.row.dispensePerDuration"
|
||||
style="width: 80px"
|
||||
:min="1"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
:ref="(el) => (inputRefs.dispensePerDuration = el)"
|
||||
@keyup.enter.prevent="
|
||||
handleEnter('dispensePerDuration', scope.row, scope.$index)
|
||||
"
|
||||
>
|
||||
<template #suffix>天</template>
|
||||
</el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="总量:"
|
||||
prop="quantity"
|
||||
class="required-field"
|
||||
data-prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="scope.row.quantity"
|
||||
style="width: 70px"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
:ref="(el) => (inputRefs.quantity = el)"
|
||||
@keyup.enter.prevent="handleEnter('quantity', scope.row, scope.$index)"
|
||||
@input="calculateTotalPrice(scope.row, scope.$index)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-select
|
||||
v-model="scope.row.unitCode"
|
||||
style="width: 70px; margin-right: 20px"
|
||||
placeholder=" "
|
||||
@change="calculateTotalAmount(scope.row, scope.$index)"
|
||||
>
|
||||
<template v-for="item in scope.row.unitCodeList" :key="item.value">
|
||||
<el-option
|
||||
v-if="item.type != unitMap['dose']"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button type="primary" @click="handleSaveSign(scope.row, scope.$index)">
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="scope.row.adviceType == 2">
|
||||
<div style="display: flex; align-items: center; margin-bottom: 16px; gap: 16px">
|
||||
<span style="font-size: 16px; font-weight: 600">
|
||||
{{
|
||||
scope.row.adviceName +
|
||||
' ' +
|
||||
scope.row.volume +
|
||||
' ' +
|
||||
scope.row.unitPrice +
|
||||
' 元/' +
|
||||
scope.row.unitCode_dictText
|
||||
}}
|
||||
</span>
|
||||
<div class="form-group">
|
||||
<el-select
|
||||
v-model="scope.row.lotNumber"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
placeholder="药房"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in scope.row.stockList"
|
||||
:key="item.lotNumber"
|
||||
:value="item.lotNumber"
|
||||
:label="
|
||||
item.locationName +
|
||||
' ' +
|
||||
'批次号: ' +
|
||||
item.lotNumber +
|
||||
' ' +
|
||||
' 库存:' +
|
||||
stockFormat(
|
||||
scope.row.partPercent,
|
||||
scope.row.unitCode_dictText,
|
||||
scope.row.minUnitCode_dictText,
|
||||
item.quantity
|
||||
) +
|
||||
' 单价:' +
|
||||
item.price.toFixed(2) +
|
||||
'/' +
|
||||
item.unitCode_dictText
|
||||
"
|
||||
@click="handleNumberClick(item, scope.$index)"
|
||||
/>
|
||||
</el-select>
|
||||
<el-form-item
|
||||
label="数量:"
|
||||
prop="quantity"
|
||||
class="required-field"
|
||||
data-prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
placeholder="数量"
|
||||
v-model="scope.row.quantity"
|
||||
style="width: 70px"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
@keyup.enter.prevent="handleEnter('quantity', scope.row, scope.$index)"
|
||||
@input="calculateTotalAmount(scope.row, scope.$index)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-select
|
||||
v-model="scope.row.unitCode"
|
||||
style="width: 70px; margin-right: 20px"
|
||||
placeholder=" "
|
||||
@change="calculateTotalAmount(scope.row, scope.$index)"
|
||||
>
|
||||
<template v-for="item in scope.row.unitCodeList" :key="item.value">
|
||||
<el-option
|
||||
v-if="item.type != unitMap['dose']"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
@click="
|
||||
() => {
|
||||
scope.row.unitCode_dictText = item.label;
|
||||
}
|
||||
"
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
<span class="total-amount">
|
||||
总金额:{{
|
||||
scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '0.00 元'
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
<el-button type="primary" @click="handleSaveSign(scope.row, scope.$index)">
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div style="display: flex; align-items: center; margin-bottom: 16px; gap: 16px">
|
||||
<span style="font-size: 16px; font-weight: 600">
|
||||
{{ scope.row.adviceName }}
|
||||
{{
|
||||
scope.row.unitPrice
|
||||
? Number(scope.row.unitPrice).toFixed(2) + '/次'
|
||||
: '-' + '元'
|
||||
}}
|
||||
</span>
|
||||
<div class="form-group">
|
||||
<el-form-item
|
||||
label="执行次数:"
|
||||
prop="quantity"
|
||||
class="required-field"
|
||||
data-prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
placeholder="执行次数"
|
||||
style="width: 100px; margin: 0 20px"
|
||||
v-model="scope.row.quantity"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
@keyup.enter.prevent="handleEnter('quantity', scope.row, scope.$index)"
|
||||
@input="calculateTotalPrice(scope.row, scope.$index)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="执行科室:"
|
||||
prop="orgId"
|
||||
class="required-field"
|
||||
data-prop="orgId"
|
||||
>
|
||||
<el-tree-select
|
||||
clearable
|
||||
v-model="scope.row.orgId"
|
||||
style="width: 200px"
|
||||
:data="organization"
|
||||
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||
value-key="id"
|
||||
check-strictly
|
||||
default-expand-all
|
||||
@change="(value) => handleOrgChange(value, scope.$index)"
|
||||
placeholder="请选择执行科室"
|
||||
/>
|
||||
</el-form-item>
|
||||
<span class="total-amount">
|
||||
总金额:{{
|
||||
scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '0.00 元'
|
||||
}}
|
||||
</span>
|
||||
<span style="font-size: 16px; font-weight: 600">
|
||||
<!-- 金额: {{ scope.row.priceList[0].price }} -->
|
||||
</span>
|
||||
</div>
|
||||
<el-button type="primary" @click="handleSaveSign(scope.row, scope.$index)">
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="" align="center" prop="groupId" width="60">
|
||||
<template #header>
|
||||
<el-checkbox
|
||||
v-model="checkAll"
|
||||
@change="
|
||||
(value) => {
|
||||
prescriptionList.forEach((item, index) => {
|
||||
groupIndexList.push(index);
|
||||
item.check = value;
|
||||
});
|
||||
}
|
||||
"
|
||||
/>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<el-checkbox
|
||||
v-model="scope.row.check"
|
||||
@dblclick.stop=""
|
||||
placeholder=""
|
||||
@change="(value) => handleCheckBoxChange(value, scope.$index, scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="组" align="center" width="60">
|
||||
<template #default="scope">
|
||||
<div v-if="groupMarkers[scope.$index] === '┏'">┏</div>
|
||||
<div v-if="groupMarkers[scope.$index] === '┗'">┗</div>
|
||||
<div v-if="groupMarkers[scope.$index] === '┃'">┃</div>
|
||||
<!-- <div v-if="groupMarkers[scope.$index] === 'all'">┏</div> -->
|
||||
<!-- <div v-if="groupMarkers[scope.$index] === 'all'">┗</div> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="类型" align="center" prop="" width="120">
|
||||
<template #default="scope">
|
||||
=======
|
||||
@select="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="expand" width="1" style="width: 0">
|
||||
@@ -630,31 +123,20 @@
|
||||
<el-table-column label="类型" align="center" prop="" width="120">
|
||||
<template #default="scope">
|
||||
{{ console.log(scope.row, 1111) }}
|
||||
>>>>>>> v1.3
|
||||
<el-radio-group
|
||||
v-model="scope.row.therapyEnum"
|
||||
size="small"
|
||||
v-if="getRowDisabled(scope.row)"
|
||||
<<<<<<< HEAD
|
||||
>
|
||||
<el-radio-button label="长期" value="1" />
|
||||
<el-radio-button label="临时" value="2" />
|
||||
=======
|
||||
@change="(val) => handleTherapyChange(val, scope.row)"
|
||||
>
|
||||
<el-radio-button label="1">长期</el-radio-button>
|
||||
<el-radio-button label="2">临时</el-radio-button>
|
||||
>>>>>>> v1.3
|
||||
</el-radio-group>
|
||||
<span
|
||||
v-else
|
||||
:style="scope.row.therapyEnum == '1' ? 'color: #a6745c' : 'color: #3787a5'"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
{{ scope.row.therapyEnum_enumText }}
|
||||
=======
|
||||
{{ scope.row.therapyEnum === '1' ? '长期' : '临时' }}
|
||||
>>>>>>> v1.3
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -662,11 +144,7 @@
|
||||
<template #default="scope">
|
||||
<template v-if="getRowDisabled(scope.row)">
|
||||
<el-select
|
||||
<<<<<<< HEAD
|
||||
style="width: 35%; margin-right: 20px"
|
||||
=======
|
||||
style="width: 35%; margin-right: 8px"
|
||||
>>>>>>> v1.3
|
||||
v-model="scope.row.adviceType"
|
||||
:ref="'adviceTypeRef' + scope.$index"
|
||||
@change="
|
||||
@@ -676,10 +154,7 @@
|
||||
adviceQueryParams.adviceType = value;
|
||||
}
|
||||
"
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
clearable
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<el-option
|
||||
v-for="item in adviceTypeList"
|
||||
@@ -710,11 +185,7 @@
|
||||
<template #reference>
|
||||
<el-input
|
||||
:ref="'adviceRef' + scope.$index"
|
||||
<<<<<<< HEAD
|
||||
style="width: 50%"
|
||||
=======
|
||||
style="width: 62%"
|
||||
>>>>>>> v1.3
|
||||
v-model="scope.row.adviceName"
|
||||
placeholder="请选择项目"
|
||||
@input="handleChange"
|
||||
@@ -791,16 +262,6 @@
|
||||
{{ console.log(scope.row) }}
|
||||
<span v-if="!scope.row.isEdit && scope.row.adviceType == 1" style="text-align: right">
|
||||
{{
|
||||
<<<<<<< HEAD
|
||||
scope.row.rateCode_dictText
|
||||
? scope.row.rateCode_dictText +
|
||||
' ' +
|
||||
scope.row.dispensePerDuration +
|
||||
'天' +
|
||||
' ' +
|
||||
scope.row.methodCode_dictText
|
||||
: ''
|
||||
=======
|
||||
[
|
||||
scope.row.rateCode_dictText,
|
||||
scope.row.dispensePerDuration ? scope.row.dispensePerDuration + '天' : '',
|
||||
@@ -808,7 +269,6 @@
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(' ')
|
||||
>>>>>>> v1.3
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
@@ -848,10 +308,6 @@
|
||||
:diagnosis="diagnosisInfo"
|
||||
:patientInfo="patientInfo"
|
||||
@userPrescriptionHistory="handleSaveHistory"
|
||||
<<<<<<< HEAD
|
||||
/> -->
|
||||
<LeaveHospitalDialog ref="leaveHospitalDialogRef" />
|
||||
=======
|
||||
/>
|
||||
<LeaveHospitalDialog
|
||||
ref="leaveHospitalDialogRef"
|
||||
@@ -861,7 +317,6 @@
|
||||
:encounter-diagnosis-id="encounterDiagnosisId"
|
||||
@success="handleLeaveHospitalSuccess"
|
||||
/>
|
||||
>>>>>>> v1.3
|
||||
<TransferOrganizationDialog ref="transferOrganizationRef" />
|
||||
</div>
|
||||
<!-- <el-drawer v-model="openDrawer" size="100%">
|
||||
@@ -902,12 +357,9 @@ import useUserStore from '@/store/modules/user';
|
||||
import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue';
|
||||
import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue';
|
||||
import TransferOrganizationDialog from './applicationForm/transferOrganizationDialog.vue';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
import NursingStatus from '@/views/inpatientDoctor/home/components/applicationShow/nursingStatus.vue';
|
||||
import OrderForm from './OrderForm.vue';
|
||||
import { computed, watch } from 'vue';
|
||||
>>>>>>> v1.3
|
||||
const emit = defineEmits(['selectDiagnosis']);
|
||||
const total = ref(0);
|
||||
const queryParams = ref({});
|
||||
@@ -1937,18 +1389,6 @@ function handleSingOut() {
|
||||
|
||||
// 停嘱
|
||||
function handleStopAdvice() {
|
||||
<<<<<<< HEAD
|
||||
let requestIdList = prescriptionList.value
|
||||
.filter((item) => {
|
||||
return item.check;
|
||||
})
|
||||
.map((item) => {
|
||||
return {
|
||||
requestId: item.requestId,
|
||||
adviceType: item.adviceType,
|
||||
};
|
||||
});
|
||||
=======
|
||||
let selectRows = prescriptionRef.value.getSelectionRows();
|
||||
console.log('selectRows======>', JSON.stringify(selectRows));
|
||||
if ((selectRows || []).length <= 0) {
|
||||
@@ -2018,7 +1458,6 @@ function handleStopAdvice() {
|
||||
adviceType: item.adviceType,
|
||||
};
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
// if (requestIdList.length == 0) {
|
||||
// proxy.$modal.msgWarning('仅长期医嘱可停止');
|
||||
// return;
|
||||
@@ -2452,25 +1891,9 @@ function sortPrescriptionList() {
|
||||
}
|
||||
|
||||
function handleLeaveHospital() {
|
||||
<<<<<<< HEAD
|
||||
proxy.$refs['leaveHospitalDialogRef'].openDialog();
|
||||
}
|
||||
function handleTransferOrg() {
|
||||
proxy.$refs['transferOrganizationRef'].openDialog();
|
||||
}
|
||||
|
||||
// 处理行chexkbox选中
|
||||
function handleCheckBoxChange(value, index, row) {
|
||||
// 选中将当前行索引记录下来,取消将当前行索引删除
|
||||
if (value) {
|
||||
groupIndexList.value.push(index);
|
||||
} else {
|
||||
groupIndexList.value.splice(groupIndexList.value.indexOf(index), 1);
|
||||
=======
|
||||
if (!patientInfo.value) {
|
||||
proxy.$modal.msgWarning('请先选择患者');
|
||||
return;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
proxy.$refs['leaveHospitalDialogRef'].openDialog();
|
||||
}
|
||||
|
||||
@@ -5,10 +5,6 @@
|
||||
-->
|
||||
<template>
|
||||
<div class="emr-use-container">
|
||||
<<<<<<< HEAD
|
||||
<div class="disBtn" :class="{'disLeftBtnNor':leftShow,'disLeftBtnAct':!leftShow}" @click="disNode"><img src="../../../../assets/icons/svg/foldup.svg"></div>
|
||||
<div class="disBtn" :class="{'disRightBtnNor':rightShow,'disRightBtnAct':!rightShow}" @click="disNode_R"><img src="../../../../assets/icons/svg/foldup.svg"></div>
|
||||
=======
|
||||
<div
|
||||
class="disBtn"
|
||||
:class="{ disLeftBtnNor: leftShow, disLeftBtnAct: !leftShow }"
|
||||
@@ -23,7 +19,6 @@
|
||||
>
|
||||
<img src="../../../../assets/icons/svg/foldup.svg" />
|
||||
</div>
|
||||
>>>>>>> v1.3
|
||||
<transition name="el-zoom-in-left">
|
||||
<div class="template-tree-container" v-if="leftShow">
|
||||
<div class="search-box">
|
||||
@@ -35,15 +30,6 @@
|
||||
</div>
|
||||
<el-scrollbar class="template-tree-scrollbar">
|
||||
<el-tree
|
||||
<<<<<<< HEAD
|
||||
ref="templateTree"
|
||||
:data="templateData"
|
||||
:props="defaultProps"
|
||||
auto-expand-parent
|
||||
node-key="id"
|
||||
@node-click="handleNodeClick"
|
||||
class="template-tree"
|
||||
=======
|
||||
ref="templateTree"
|
||||
:data="templateData"
|
||||
:props="defaultProps"
|
||||
@@ -51,7 +37,6 @@
|
||||
node-key="id"
|
||||
@node-click="handleNodeClick"
|
||||
class="template-tree"
|
||||
>>>>>>> v1.3
|
||||
></el-tree>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
@@ -91,31 +76,18 @@
|
||||
<el-tabs v-model="quicklyactiveName" type="card">
|
||||
<el-tab-pane label="历史" name="history">
|
||||
<History
|
||||
<<<<<<< HEAD
|
||||
@historyClick="handleHistoryClick"
|
||||
ref="historyRef"
|
||||
v-model:definitionId="currentSelectTemplate.id"
|
||||
=======
|
||||
@historyClick="handleHistoryClick"
|
||||
ref="historyRef"
|
||||
v-model:definitionId="currentSelectTemplate.id"
|
||||
:selectedRecordId="selectedHistoryRecordId"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="模版" name="model">
|
||||
<Template
|
||||
<<<<<<< HEAD
|
||||
@templateClick="handleTemplateClick"
|
||||
ref="templateRef"
|
||||
v-model:definitionId="currentSelectTemplate.id"
|
||||
@edit="templateEdit"
|
||||
=======
|
||||
@templateClick="handleTemplateClick"
|
||||
ref="templateRef"
|
||||
v-model:definitionId="currentSelectTemplate.id"
|
||||
@edit="templateEdit"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
@@ -176,9 +148,6 @@ const emrComponentRef = ref(null);
|
||||
const quicklyactiveName = ref('history');
|
||||
const leftShow = ref(true);
|
||||
const rightShow = ref(true);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
watch(patientInfo, () => {
|
||||
historyRef.value?.queryList();
|
||||
templateRef.value?.queryList();
|
||||
@@ -187,7 +156,6 @@ const templateTree = ref(null);
|
||||
|
||||
// 当前选中的历史病历ID,用于在History组件中高亮显示
|
||||
const selectedHistoryRecordId = ref('');
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 树配置(模板树)
|
||||
const defaultProps = {
|
||||
@@ -790,17 +758,10 @@ defineExpose({ state });
|
||||
|
||||
const disNode = () => {
|
||||
leftShow.value = !leftShow.value;
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
const disNode_R = () => {
|
||||
rightShow.value = !rightShow.value;
|
||||
}
|
||||
=======
|
||||
};
|
||||
const disNode_R = () => {
|
||||
rightShow.value = !rightShow.value;
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.emr-use-container {
|
||||
@@ -827,11 +788,7 @@ const disNode_R = () => {
|
||||
height: 60px;
|
||||
z-index: 1111;
|
||||
img {
|
||||
<<<<<<< HEAD
|
||||
transform: rotate(-90deg) ;
|
||||
=======
|
||||
transform: rotate(-90deg);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}
|
||||
.disLeftBtnAct {
|
||||
|
||||
@@ -3,18 +3,6 @@
|
||||
* @Date: 2025-04-07 12:58:22
|
||||
* @Description:
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
import PatientList from './components/patientList.vue'
|
||||
import PatientCard from './components/patientCard/index.vue'
|
||||
import Advice from './components/order/index.vue'
|
||||
import Diagnose from './components/diagnosis/diagnosis.vue'
|
||||
import BloodTtransfusionAapplication from './components/applicationShow/bloodTtransfusionAapplication.vue'
|
||||
import ExamineApplication from './components/applicationShow/examineApplication.vue'
|
||||
import SurgeryApplication from './components/applicationShow/surgeryApplication.vue'
|
||||
import TestApplication from './components/applicationShow/testApplication.vue'
|
||||
import NursingStatus from './components/applicationShow/nursingStatus.vue'
|
||||
export { PatientList, PatientCard, Advice,Diagnose, BloodTtransfusionAapplication, ExamineApplication, SurgeryApplication, TestApplication, NursingStatus }
|
||||
=======
|
||||
import Advice from './components/order/index.vue';
|
||||
import Diagnose from './components/diagnosis/diagnosis.vue';
|
||||
import BloodTtransfusionAapplication from './components/applicationShow/bloodTtransfusionAapplication.vue';
|
||||
@@ -33,4 +21,3 @@ export {
|
||||
NursingStatus,
|
||||
ReportQuery,
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -15,17 +15,7 @@
|
||||
<el-tab-pane label="临床医嘱" name="prescription">
|
||||
<Advice ref="adviceRef" />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="诊断录入" name="diagnosis">
|
||||
<Diagnose ref="diagnosisRef" :patientInfo="patientInfo" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="住院病历" name="inhospitalEmr">
|
||||
<Emr ref="inhospitalEmrRef"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="医技报告" name="fourth">Task</el-tab-pane>
|
||||
=======
|
||||
<!-- <el-tab-pane label="医技报告" name="fourth">Task</el-tab-pane> -->
|
||||
>>>>>>> v1.3
|
||||
<el-tab-pane label="检验申请" name="test">
|
||||
<TestApplication ref="testApplicationRef" />
|
||||
</el-tab-pane>
|
||||
@@ -38,18 +28,12 @@
|
||||
<el-tab-pane label="输血申请" name="blood">
|
||||
<BloodTtransfusionAapplication ref="bloodTtransfusionAapplicationRef" />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="护理状态" name="nursing">
|
||||
<NursingStatus />
|
||||
</el-tab-pane>
|
||||
=======
|
||||
<el-tab-pane label="报告查询" name="report">
|
||||
<ReportQuery />
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="护理状态" name="nursing">
|
||||
<NursingStatus />
|
||||
</el-tab-pane> -->
|
||||
>>>>>>> v1.3
|
||||
</el-tabs>
|
||||
</el-main>
|
||||
</el-container>
|
||||
@@ -57,15 +41,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { getCurrentInstance, onBeforeMount, onMounted, reactive, ref } from 'vue';
|
||||
// const { proxy } = getCurrentInstance()
|
||||
// const emits = defineEmits([])
|
||||
// const props = defineProps({})
|
||||
import Emr from './emr/index.vue';
|
||||
import inPatientBarDoctorFold from '@/components/patientBar/inPatientBarDoctorFold.vue';
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
import {
|
||||
getCurrentInstance,
|
||||
onBeforeMount,
|
||||
@@ -90,10 +65,7 @@ import {
|
||||
SurgeryApplication,
|
||||
TestApplication,
|
||||
NursingStatus,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
ReportQuery,
|
||||
>>>>>>> v1.3
|
||||
} from './index.js';
|
||||
const state = reactive({});
|
||||
onBeforeMount(() => {});
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<el-dialog v-model="dialogVisible" title="补费" width="90%" :close-on-click-modal="false">
|
||||
<!-- 弹窗内容 - 左右布局 -->
|
||||
<div style="display: flex; gap: 20px; height: 70vh">
|
||||
<!-- 左侧:收费组套列表 - 卡片式布局 -->
|
||||
=======
|
||||
<el-dialog v-model="dialogVisible" title="补费" width="80%" :close-on-click-modal="false">
|
||||
<div style="font-size: 16px; font-weight: bold; margin-bottom: 10px">
|
||||
患者信息:{{
|
||||
@@ -50,7 +44,6 @@
|
||||
</div>
|
||||
<!-- 弹窗内容 - 左右布局 -->
|
||||
<div style="display: flex; gap: 20px; height: 70vh">
|
||||
>>>>>>> v1.3
|
||||
<div
|
||||
style="
|
||||
width: 250px;
|
||||
@@ -60,27 +53,6 @@
|
||||
flex-direction: column;
|
||||
"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!-- 搜索框 -->
|
||||
<div style="padding: 10px; border-bottom: 1px solid #e4e7ed">
|
||||
<el-input v-model="groupSearchText" placeholder="输入组套名称" clearable />
|
||||
</div>
|
||||
<!-- 收费组套列表 - 卡片式布局 -->
|
||||
<div style="flex: 1; overflow-y: auto; padding: 10px">
|
||||
<div
|
||||
v-for="group in chargeGroups"
|
||||
:key="group.id"
|
||||
class="group-card"
|
||||
@click="selectChargeGroup(group)"
|
||||
>
|
||||
<div class="group-status">
|
||||
<span class="status-dot"></span>
|
||||
{{ getGroupType(group.name) }}
|
||||
</div>
|
||||
<div class="group-name">{{ group.name }}</div>
|
||||
<div class="group-info">
|
||||
{{ getGroupInfo(group.id) }}
|
||||
=======
|
||||
<!-- 诊疗耗材 -->
|
||||
<div
|
||||
style="flex: 1; overflow-y: auto; padding: 10px; min-height: 200px"
|
||||
@@ -112,16 +84,11 @@
|
||||
<div class="item-name" v-if="item.adviceType === 2">
|
||||
库存数量:
|
||||
{{ handleQuantity(item) }}
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
<!-- 只显示暂无数据文本 -->
|
||||
<div
|
||||
<<<<<<< HEAD
|
||||
v-if="chargeGroups.length === 0"
|
||||
=======
|
||||
v-if="AdviceBaseInfoList.length === 0"
|
||||
>>>>>>> v1.3
|
||||
style="text-align: center; color: #909399; padding: 20px"
|
||||
>
|
||||
暂无数据
|
||||
@@ -134,17 +101,6 @@
|
||||
<!-- 费用项目表格 -->
|
||||
<el-table :data="feeItemsList" border style="width: 100%; flex: 1">
|
||||
<el-table-column label="收费项目" prop="itemName" min-width="200">
|
||||
<<<<<<< HEAD
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.itemName"
|
||||
placeholder="请输入收费项目"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单价" prop="unitPrice" width="100" align="center">
|
||||
=======
|
||||
<!-- <template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.adviceName"
|
||||
@@ -161,53 +117,23 @@
|
||||
</el-table-column>
|
||||
<!-- 单价 - 简化版 -->
|
||||
<el-table-column label="单价" width="200" align="center">
|
||||
>>>>>>> v1.3
|
||||
<template #default="scope">
|
||||
<el-input-number
|
||||
v-model="scope.row.unitPrice"
|
||||
:min="0"
|
||||
:step="0.01"
|
||||
<<<<<<< HEAD
|
||||
precision="2"
|
||||
style="width: 100px"
|
||||
@change="calculateTotalAmount"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="计费数量" prop="quantity" width="100" align="center">
|
||||
=======
|
||||
precision="6"
|
||||
style="width: 150px"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="计费数量" prop="quantity" width="150" align="center">
|
||||
>>>>>>> v1.3
|
||||
<template #default="scope">
|
||||
<el-input-number
|
||||
v-model="scope.row.quantity"
|
||||
:min="1"
|
||||
:step="1"
|
||||
style="width: 100px"
|
||||
<<<<<<< HEAD
|
||||
@change="calculateTotalAmount"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" prop="amount" width="100" align="center" />
|
||||
<el-table-column label="医保类型" prop="insuranceType" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.insuranceType"
|
||||
placeholder="医保类型"
|
||||
style="width: 100px"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="特限符合" prop="special" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.special" />
|
||||
=======
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -283,31 +209,10 @@
|
||||
<el-button type="text" size="small" @click="feeItemsList.splice(scope.$index, 1)">
|
||||
删除
|
||||
</el-button>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!-- 添加项目按钮 - 移到右侧费用项目表格下方 -->
|
||||
<div
|
||||
style="
|
||||
margin-top: 10px;
|
||||
padding: 15px;
|
||||
border: 1px dashed #dcdfe6;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
color: #409eff;
|
||||
transition: all 0.3s;
|
||||
"
|
||||
@click="addEmptyItem"
|
||||
>
|
||||
+ 添加项目
|
||||
</div>
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
<!-- 底部信息区域 -->
|
||||
<div style="margin-top: 20px; display: flex; flex-wrap: wrap; gap: 15px">
|
||||
<div style="display: flex; align-items: center">
|
||||
@@ -321,42 +226,7 @@
|
||||
style="width: 200px"
|
||||
/>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
|
||||
<div style="display: flex; align-items: center">
|
||||
<span style="margin-right: 8px">执行科室:</span>
|
||||
<el-select v-model="selectedDept" placeholder="选择科室" style="width: 150px">
|
||||
<el-option
|
||||
v-for="dept in departmentOptions"
|
||||
:key="dept.value"
|
||||
:label="dept.label"
|
||||
:value="dept.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div style="display: flex; align-items: center">
|
||||
<span style="margin-right: 8px">开方医生:</span>
|
||||
<el-select v-model="selectedDoctor" placeholder="选择医生" style="width: 150px">
|
||||
<el-option label="内科医生" value="doctor1" />
|
||||
<el-option label="外科医生" value="doctor2" />
|
||||
<el-option label="儿科医生" value="doctor3" />
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div style="display: flex; align-items: center">
|
||||
<span style="margin-right: 8px">执行人:</span>
|
||||
<el-select v-model="executor" placeholder="选择执行人" style="width: 150px">
|
||||
<el-option label="系统管理员" value="admin" />
|
||||
<el-option label="护士甲" value="nurse1" />
|
||||
<el-option label="护士乙" value="nurse2" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
=======
|
||||
</div>
|
||||
>>>>>>> v1.3
|
||||
<!-- 总金额和操作按钮 -->
|
||||
<div
|
||||
style="
|
||||
@@ -367,11 +237,7 @@
|
||||
"
|
||||
>
|
||||
<div style="font-size: 14px; font-weight: bold; text-align: right">
|
||||
<<<<<<< HEAD
|
||||
本次补费总金额:<span style="color: #ff4d4f">{{ totalAmount.toFixed(2) }}</span>
|
||||
=======
|
||||
本次补费总金额:<span style="color: #ff4d4f">{{ totalAmount.toFixed(6) }}</span>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
<div>
|
||||
<el-button @click="handleCancel">取消</el-button>
|
||||
@@ -384,11 +250,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { ref, computed, onMounted, watch } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
=======
|
||||
import { ref, computed, onMounted, watch, reactive } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
@@ -396,7 +257,6 @@ import { getAdviceBaseInfo, getOrgList, getDiseaseTreatmentInitLoc } from './api
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import { get } from 'lodash';
|
||||
import { lo } from 'element-plus/es/locales.mjs';
|
||||
>>>>>>> v1.3
|
||||
|
||||
// Props定义
|
||||
const props = defineProps({
|
||||
@@ -409,13 +269,8 @@ const props = defineProps({
|
||||
default: () => [],
|
||||
},
|
||||
patientInfo: {
|
||||
<<<<<<< HEAD
|
||||
type: String,
|
||||
default: '',
|
||||
=======
|
||||
type: Object, // 通常这类信息是对象,这里假设你已经修正了类型
|
||||
default: () => ({}),
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
});
|
||||
|
||||
@@ -427,25 +282,6 @@ const dialogVisible = computed({
|
||||
get: () => props.visible,
|
||||
set: (value) => emit('update:visible', value),
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
const searchItemText = ref('');
|
||||
const selectedItemName = ref('');
|
||||
const feeTabs = ref('chargeItems');
|
||||
const feeItemsList = ref([]);
|
||||
const executeTime = ref('');
|
||||
const selectedDept = ref('');
|
||||
const selectedDoctor = ref('');
|
||||
const executor = ref('');
|
||||
const departmentOptions = ref([]);
|
||||
// 收费组套相关数据
|
||||
const chargeGroups = ref([]);
|
||||
const groupSearchText = ref('');
|
||||
|
||||
// 计算总金额
|
||||
const totalAmount = computed(() => {
|
||||
return feeItemsList.value.reduce((sum, item) => {
|
||||
return sum + (item.unitPrice || 0) * (item.quantity || 0);
|
||||
=======
|
||||
const adviceTypeList = ref([
|
||||
{ label: '耗材', value: 2 },
|
||||
{ label: '诊疗', value: 3 },
|
||||
@@ -543,31 +379,11 @@ const totalAmount = computed(() => {
|
||||
const price = Number(item.unitPrice) || 0;
|
||||
const quantity = Number(item.quantity) || 0;
|
||||
return sum + price * quantity;
|
||||
>>>>>>> v1.3
|
||||
}, 0);
|
||||
});
|
||||
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
<<<<<<< HEAD
|
||||
// 加载科室选项
|
||||
loadDepartmentOptions();
|
||||
// 加载收费组套数据
|
||||
loadChargeGroups();
|
||||
});
|
||||
|
||||
// 监听初始数据变化
|
||||
watch(
|
||||
() => props.initialData,
|
||||
(newData) => {
|
||||
if (newData && newData.length > 0) {
|
||||
initFeeDialogData(newData);
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
=======
|
||||
const userStore = useUserStore();
|
||||
userId.value = userStore.id;
|
||||
orgId.value = userStore.orgId;
|
||||
@@ -578,21 +394,13 @@ watch(
|
||||
getDiseaseInitLoc();
|
||||
});
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 监听弹窗显示状态
|
||||
watch(
|
||||
() => props.visible,
|
||||
(visible) => {
|
||||
if (visible) {
|
||||
<<<<<<< HEAD
|
||||
// 设置默认执行时间为当前时间
|
||||
executeTime.value = formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss');
|
||||
} else {
|
||||
// 弹窗关闭时重置数据
|
||||
=======
|
||||
executeTime.value = formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss');
|
||||
} else {
|
||||
>>>>>>> v1.3
|
||||
resetData();
|
||||
}
|
||||
}
|
||||
@@ -600,153 +408,6 @@ watch(
|
||||
|
||||
// 加载科室选项
|
||||
function loadDepartmentOptions() {
|
||||
<<<<<<< HEAD
|
||||
// 模拟科室数据
|
||||
departmentOptions.value = [
|
||||
{ label: '内科', value: 'internal' },
|
||||
{ label: '外科', value: 'surgery' },
|
||||
{ label: '儿科', value: 'pediatrics' },
|
||||
{ label: '妇产科', value: 'obstetrics' },
|
||||
{ label: '其他科室', value: 'others' },
|
||||
];
|
||||
}
|
||||
|
||||
// 加载收费组套数据
|
||||
function loadChargeGroups() {
|
||||
// 模拟收费组套数据
|
||||
chargeGroups.value = [
|
||||
{ id: '1', name: '血常规检查组套' },
|
||||
{ id: '2', name: '生化检查组套' },
|
||||
{ id: '3', name: '心电图检查组套' },
|
||||
{ id: '4', name: 'CT检查组套' },
|
||||
{ id: '5', name: '输液治疗组套' },
|
||||
];
|
||||
}
|
||||
|
||||
// 获取组套类型
|
||||
function getGroupType(name) {
|
||||
if (name.includes('检查')) return '检查';
|
||||
if (name.includes('治疗')) return '治疗';
|
||||
return '常规';
|
||||
}
|
||||
|
||||
// 获取组套信息
|
||||
function getGroupInfo(id) {
|
||||
const infoMap = {
|
||||
1: '检验科/基础检查',
|
||||
2: '检验科/生化项目',
|
||||
3: '心电图室/常规检查',
|
||||
4: '影像科/影像学检查',
|
||||
5: '内科/治疗项目',
|
||||
};
|
||||
return infoMap[id] || '标准收费项目';
|
||||
}
|
||||
|
||||
// 初始化费用数据
|
||||
function initFeeDialogData(selectedRows) {
|
||||
// 将选中的项目转换为弹窗中的费用项目格式
|
||||
feeItemsList.value = selectedRows.map((row) => ({
|
||||
itemName: row.chargeItem,
|
||||
unitPrice: row.unitPrice,
|
||||
quantity: row.quantity,
|
||||
amount: row.unitPrice * row.quantity,
|
||||
dept: '内科',
|
||||
special: false,
|
||||
insuranceType: '',
|
||||
}));
|
||||
}
|
||||
|
||||
// 选择收费组套
|
||||
function selectChargeGroup(group) {
|
||||
// 模拟根据选中的组套添加对应的费用项目
|
||||
const groupItems = {
|
||||
1: [
|
||||
{
|
||||
itemName: '红细胞计数',
|
||||
unitPrice: 15.0,
|
||||
quantity: 1,
|
||||
dept: '检验科',
|
||||
special: false,
|
||||
insuranceType: '甲类',
|
||||
},
|
||||
],
|
||||
2: [
|
||||
{
|
||||
itemName: '肝功能检查',
|
||||
unitPrice: 80.0,
|
||||
quantity: 1,
|
||||
dept: '检验科',
|
||||
special: false,
|
||||
insuranceType: '甲类',
|
||||
},
|
||||
],
|
||||
3: [
|
||||
{
|
||||
itemName: '心电图检查',
|
||||
unitPrice: 45.0,
|
||||
quantity: 1,
|
||||
dept: '心电图室',
|
||||
special: false,
|
||||
insuranceType: '甲类',
|
||||
},
|
||||
],
|
||||
4: [
|
||||
{
|
||||
itemName: 'CT扫描',
|
||||
unitPrice: 300.0,
|
||||
quantity: 1,
|
||||
dept: '影像科',
|
||||
special: false,
|
||||
insuranceType: '乙类',
|
||||
},
|
||||
],
|
||||
5: [
|
||||
{
|
||||
itemName: '静脉输液',
|
||||
unitPrice: 20.0,
|
||||
quantity: 1,
|
||||
dept: '内科',
|
||||
special: false,
|
||||
insuranceType: '甲类',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const items = groupItems[group.id] || [];
|
||||
// 计算金额
|
||||
items.forEach((item) => {
|
||||
item.amount = item.unitPrice * item.quantity;
|
||||
});
|
||||
|
||||
// 添加到费用项目列表
|
||||
feeItemsList.value = [...feeItemsList.value, ...items];
|
||||
}
|
||||
|
||||
// 添加空白项目
|
||||
function addEmptyItem() {
|
||||
const newItem = {
|
||||
itemName: '', // 空白项目名称
|
||||
unitPrice: 0, // 默认单价为0
|
||||
quantity: 1, // 默认数量为1
|
||||
amount: 0, // 默认金额为0
|
||||
dept: '内科', // 默认科室
|
||||
special: false, // 默认特限不符合
|
||||
insuranceType: '', // 空白医保类型
|
||||
};
|
||||
|
||||
// 添加到费用项目列表
|
||||
feeItemsList.value.push(newItem);
|
||||
|
||||
// 显示提示信息
|
||||
ElMessage.success('已添加空白项目,请填写相关信息');
|
||||
}
|
||||
|
||||
// 计算总金额(当数量变化时调用)
|
||||
function calculateTotalAmount() {
|
||||
// 更新每个项目的金额
|
||||
feeItemsList.value.forEach((item) => {
|
||||
item.amount = (item.unitPrice || 0) * (item.quantity || 0);
|
||||
=======
|
||||
getOrgList().then((res) => {
|
||||
if (res.data && res.data.records && res.data.records.length > 0) {
|
||||
departmentOptions.value = res.data.records[0].children || [];
|
||||
@@ -858,7 +519,6 @@ function selectChange(row) {
|
||||
quantity: 1,
|
||||
// positionId: row.positionId === null || row.positionId === undefined ? orgId : row.positionId, // 默认执行科室
|
||||
selectUnitCode: row.minUnitCode, // 默认选择小单位
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
|
||||
@@ -870,30 +530,6 @@ function handleCancel() {
|
||||
|
||||
// 确认操作
|
||||
function handleConfirm() {
|
||||
<<<<<<< HEAD
|
||||
// 构建提交数据
|
||||
const submitData = {
|
||||
feeItems: feeItemsList.value,
|
||||
executeTime: executeTime.value,
|
||||
department: selectedDept.value,
|
||||
doctor: selectedDoctor.value,
|
||||
executor: executor.value,
|
||||
totalAmount: totalAmount.value,
|
||||
};
|
||||
|
||||
// 发送确认事件
|
||||
emit('confirm', submitData);
|
||||
dialogVisible.value = false;
|
||||
}
|
||||
|
||||
// 重置数据
|
||||
function resetData() {
|
||||
feeItemsList.value = [];
|
||||
executeTime.value = '';
|
||||
selectedDept.value = '';
|
||||
selectedDoctor.value = '';
|
||||
executor.value = '';
|
||||
=======
|
||||
if (feeItemsList.value.length === 0) {
|
||||
ElMessage.warning('请至少添加一项费用项目');
|
||||
return;
|
||||
@@ -995,7 +631,6 @@ function resetData() {
|
||||
adviceType.value = '';
|
||||
searchText.value = '';
|
||||
executeTime.value = '';
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1003,20 +638,7 @@ function resetData() {
|
||||
:deep(.el-dialog__body) {
|
||||
padding: 20px;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
/* 添加项目按钮样式 */
|
||||
:deep(
|
||||
.el-dialog div[style*='flex: 1; display: flex; flex-direction: column'] > div:nth-child(2):hover
|
||||
) {
|
||||
background-color: #ecf5ff;
|
||||
}
|
||||
|
||||
/* 收费组套卡片样式 */
|
||||
.group-card {
|
||||
=======
|
||||
.item-card {
|
||||
>>>>>>> v1.3
|
||||
background: #ffffff;
|
||||
border: 1px solid #e4e7ed;
|
||||
border-radius: 6px;
|
||||
@@ -1026,22 +648,12 @@ function resetData() {
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.group-card:hover {
|
||||
=======
|
||||
.item-card:hover {
|
||||
>>>>>>> v1.3
|
||||
border-color: #409eff;
|
||||
background-color: #ecf5ff;
|
||||
box-shadow: 0 4px 12px rgba(64, 158, 255, 0.15);
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.group-status {
|
||||
=======
|
||||
.item-status {
|
||||
>>>>>>> v1.3
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
@@ -1049,10 +661,6 @@ function resetData() {
|
||||
font-weight: 500;
|
||||
color: #606266;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
.status-dot {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
@@ -1060,28 +668,11 @@ function resetData() {
|
||||
border-radius: 50%;
|
||||
margin-right: 6px;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.group-name {
|
||||
=======
|
||||
.item-name {
|
||||
>>>>>>> v1.3
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
margin-bottom: 8px;
|
||||
word-break: break-word;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.group-info {
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
border-top: 1px dashed #ebeef5;
|
||||
padding-top: 8px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -213,11 +213,7 @@
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
<<<<<<< HEAD
|
||||
import { patientInfoList } from '../../medicalOrderExecution/store/patient.js';
|
||||
=======
|
||||
import { patientInfoList } from '../../components/store/patient.js';
|
||||
>>>>>>> v1.3
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
|
||||
// 响应式数据
|
||||
@@ -453,11 +449,7 @@ function filterFeeList() {
|
||||
// 查询按钮点击
|
||||
function handleQuery() {
|
||||
if (patientInfoList.value.length === 0) {
|
||||
<<<<<<< HEAD
|
||||
ElMessage.warning('请先选择患者');
|
||||
=======
|
||||
// ElMessage.warning('请先选择患者');
|
||||
>>>>>>> v1.3
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
import request from '@/utils/request'
|
||||
=======
|
||||
import request from '@/utils/request';
|
||||
>>>>>>> v1.3
|
||||
|
||||
/**
|
||||
* 获取住院患者列表
|
||||
@@ -11,13 +7,8 @@ export function getPatientList(queryParams) {
|
||||
return request({
|
||||
url: '/nurse-station/advice-process/inpatient',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params: queryParams
|
||||
})
|
||||
=======
|
||||
params: queryParams,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -27,12 +18,6 @@ export function getWardList(queryParams) {
|
||||
return request({
|
||||
url: '/app-common/practitioner-ward',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params: queryParams
|
||||
})
|
||||
}
|
||||
|
||||
=======
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
@@ -45,7 +30,6 @@ export function getOrgList() {
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
/**
|
||||
* 获取当前选中患者全部医嘱
|
||||
*/
|
||||
@@ -53,13 +37,8 @@ export function getPrescriptionList(queryParams) {
|
||||
return request({
|
||||
url: '/nurse-station/advice-process/inpatient-advice',
|
||||
method: 'get',
|
||||
<<<<<<< HEAD
|
||||
params: queryParams
|
||||
})
|
||||
=======
|
||||
params: queryParams,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,13 +48,8 @@ export function adviceExecute(data) {
|
||||
return request({
|
||||
url: '/nurse-station/advice-process/advice-execute',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data: data
|
||||
})
|
||||
=======
|
||||
data: data,
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,11 +59,6 @@ export function adviceCancel(data) {
|
||||
return request({
|
||||
url: '/nurse-station/advice-process/advice-cancel',
|
||||
method: 'post',
|
||||
<<<<<<< HEAD
|
||||
data: data
|
||||
})
|
||||
}
|
||||
=======
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
@@ -149,4 +118,3 @@ export function getCostDetail(queryParams) {
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
<template>
|
||||
<<<<<<< HEAD
|
||||
<div style="height: calc(100vh - 126px)">
|
||||
=======
|
||||
<div style="height: calc(100vh - 126px); display: flex; flex-direction: column">
|
||||
>>>>>>> v1.3
|
||||
<!-- 操作工具栏 -->
|
||||
<div
|
||||
style="
|
||||
@@ -13,10 +9,7 @@
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 15px;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
flex-shrink: 0;
|
||||
>>>>>>> v1.3
|
||||
"
|
||||
>
|
||||
<div style="display: flex; align-items: center">
|
||||
@@ -30,11 +23,7 @@
|
||||
>
|
||||
<el-tab-pane label="今日" name="today"></el-tab-pane>
|
||||
<el-tab-pane label="昨日" name="yesterday"></el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="其他" name="other"></el-tab-pane>
|
||||
=======
|
||||
<el-tab-pane label="自定义" name="custom"></el-tab-pane>
|
||||
>>>>>>> v1.3
|
||||
</el-tabs>
|
||||
|
||||
<!-- 日期选择器 -->
|
||||
@@ -47,99 +36,15 @@
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
@change="handleDatePickerChange"
|
||||
<<<<<<< HEAD
|
||||
style="width: 240px; margin-right: 20px"
|
||||
/>
|
||||
|
||||
<!-- 执行科室选择 -->
|
||||
<el-select
|
||||
v-model="execDepartment"
|
||||
placeholder="请选择执行科室"
|
||||
clearable
|
||||
style="width: 150px; margin-right: 20px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dept in departmentOptions"
|
||||
:key="dept.value"
|
||||
:label="dept.label"
|
||||
:value="dept.value"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
=======
|
||||
:disabled="dateRange !== 'custom'"
|
||||
style="width: 240px; margin-right: 20px"
|
||||
/>
|
||||
|
||||
>>>>>>> v1.3
|
||||
<!-- 查询按钮 -->
|
||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||
</div>
|
||||
|
||||
<div style="display: flex; align-items: center">
|
||||
<<<<<<< HEAD
|
||||
<!-- 全选开关 -->
|
||||
<div style="display: flex; align-items: center; margin-right: 20px">
|
||||
<span style="margin-right: 8px">全选:</span>
|
||||
<el-switch v-model="selectAll" @change="handleSelectAll" />
|
||||
</div>
|
||||
|
||||
<!-- 计费按钮 -->
|
||||
<el-button type="primary" @click="handleCalculate">计费</el-button>
|
||||
|
||||
<!-- 批量划价按钮 -->
|
||||
<el-button type="primary" plain @click="handleBatchPrice" style="margin-left: 20px"
|
||||
>批量划价</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 费用列表区域 -->
|
||||
<div
|
||||
style="padding: 10px; background-color: #eef9fd; height: 100%; overflow-y: auto"
|
||||
v-loading="loading"
|
||||
>
|
||||
<el-table
|
||||
ref="tableRef"
|
||||
:data="billingList"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{ background: '#eef9fd !important' }"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="50" />
|
||||
<el-table-column label="医嘱内容" prop="orderContent" min-width="200" />
|
||||
<el-table-column label="应执行日期" prop="executeDate" width="120" align="center" />
|
||||
<el-table-column label="执行收费项目" prop="chargeItem" min-width="180" />
|
||||
<el-table-column label="单价" prop="unitPrice" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<el-input-number
|
||||
v-model="scope.row.unitPrice"
|
||||
:min="0"
|
||||
:step="0.01"
|
||||
style="width: 100px"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="使用数量" prop="quantity" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.quantity" :min="1" :step="1" style="width: 100px" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<!-- <el-button type="primary" size="small" @click="handlePrice(scope.row)">划价</el-button> -->
|
||||
|
||||
<el-button type="primary" size="small" @click="handleDelete(scope.row)">撤销</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 无数据提示 -->
|
||||
<el-empty v-if="!loading && billingList.length === 0" description="暂无数据" />
|
||||
</div>
|
||||
|
||||
<!-- 使用计费弹窗组件 -->
|
||||
=======
|
||||
<!-- 新增划价 -->
|
||||
<el-button type="primary" @click="handAddBilling">新增划价</el-button>
|
||||
</div>
|
||||
@@ -346,7 +251,6 @@
|
||||
</div>
|
||||
|
||||
<!-- 计费弹窗 -->
|
||||
>>>>>>> v1.3
|
||||
<FeeDialog
|
||||
v-model:visible="dialogVisible"
|
||||
:initial-data="selectedFeeItems"
|
||||
@@ -358,243 +262,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { patientInfoList } from '../../medicalOrderExecution/store/patient.js';
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
import FeeDialog from './FeeDialog.vue';
|
||||
|
||||
// 响应式数据
|
||||
const loading = ref(false);
|
||||
const billingList = ref([]);
|
||||
const dateRange = ref('today'); // today, yesterday, other
|
||||
const dateRangeValue = ref([]);
|
||||
const execDepartment = ref('');
|
||||
const selectAll = ref(false);
|
||||
const departmentOptions = ref([]);
|
||||
const tableRef = ref(null);
|
||||
|
||||
// 计费弹窗相关数据
|
||||
const dialogVisible = ref(false);
|
||||
const selectedFeeItems = ref([]);
|
||||
const currentPatientInfo = ref('');
|
||||
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
// 设置默认日期
|
||||
const today = new Date();
|
||||
dateRangeValue.value = [formatDateStr(today, 'YYYY-MM-DD'), formatDateStr(today, 'YYYY-MM-DD')];
|
||||
|
||||
// 加载科室选项
|
||||
loadDepartmentOptions();
|
||||
});
|
||||
|
||||
// 加载科室选项
|
||||
function loadDepartmentOptions() {
|
||||
// 模拟科室数据
|
||||
departmentOptions.value = [
|
||||
{ label: '内科', value: 'internal' },
|
||||
{ label: '外科', value: 'surgery' },
|
||||
{ label: '儿科', value: 'pediatrics' },
|
||||
{ label: '妇产科', value: 'obstetrics' },
|
||||
{ label: '其他科室', value: 'others' },
|
||||
];
|
||||
}
|
||||
|
||||
// 处理日期tabs点击
|
||||
function handleDateTabClick(tab) {
|
||||
const rangeType = tab.paneName;
|
||||
const today = new Date();
|
||||
const yesterday = new Date();
|
||||
yesterday.setDate(today.getDate() - 1);
|
||||
|
||||
switch (rangeType) {
|
||||
case 'today':
|
||||
dateRangeValue.value = [
|
||||
formatDateStr(today, 'YYYY-MM-DD'),
|
||||
formatDateStr(today, 'YYYY-MM-DD'),
|
||||
];
|
||||
break;
|
||||
case 'yesterday':
|
||||
dateRangeValue.value = [
|
||||
formatDateStr(yesterday, 'YYYY-MM-DD'),
|
||||
formatDateStr(yesterday, 'YYYY-MM-DD'),
|
||||
];
|
||||
break;
|
||||
// other 情况保持用户选择的值
|
||||
}
|
||||
}
|
||||
|
||||
// 处理日期选择器变化
|
||||
function handleDatePickerChange() {
|
||||
if (dateRangeValue.value.length > 0) {
|
||||
dateRange.value = 'other';
|
||||
}
|
||||
}
|
||||
|
||||
// 生成模拟数据
|
||||
function generateMockData() {
|
||||
const mockData = [
|
||||
{
|
||||
orderContent: '血常规检查',
|
||||
executeDate: dateRangeValue.value[0],
|
||||
chargeItem: '血液分析',
|
||||
unitPrice: 35.0,
|
||||
quantity: 1,
|
||||
id: '1',
|
||||
},
|
||||
{
|
||||
orderContent: '静脉注射',
|
||||
executeDate: dateRangeValue.value[0],
|
||||
chargeItem: '静脉输液',
|
||||
unitPrice: 20.0,
|
||||
quantity: 2,
|
||||
id: '2',
|
||||
},
|
||||
{
|
||||
orderContent: 'CT检查',
|
||||
executeDate: dateRangeValue.value[0],
|
||||
chargeItem: '胸部CT平扫',
|
||||
unitPrice: 320.0,
|
||||
quantity: 1,
|
||||
id: '3',
|
||||
},
|
||||
{
|
||||
orderContent: '药物治疗',
|
||||
executeDate: dateRangeValue.value[0],
|
||||
chargeItem: '抗生素注射',
|
||||
unitPrice: 58.5,
|
||||
quantity: 1,
|
||||
id: '4',
|
||||
},
|
||||
];
|
||||
|
||||
// 根据科室筛选模拟数据
|
||||
if (execDepartment.value) {
|
||||
// 模拟根据科室筛选
|
||||
return mockData.filter((_, index) => index % 2 === 0);
|
||||
}
|
||||
|
||||
return mockData;
|
||||
}
|
||||
|
||||
// 查询按钮点击
|
||||
function handleQuery() {
|
||||
if (patientInfoList.value.length === 0) {
|
||||
ElMessage.warning('请先选择患者');
|
||||
return;
|
||||
}
|
||||
|
||||
loading.value = true;
|
||||
|
||||
// 模拟API调用延迟
|
||||
setTimeout(() => {
|
||||
// 使用模拟数据
|
||||
billingList.value = generateMockData();
|
||||
loading.value = false;
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// 全选/取消全选
|
||||
function handleSelectAll(value) {
|
||||
selectAll.value = value;
|
||||
if (tableRef.value) {
|
||||
if (value) {
|
||||
tableRef.value.toggleAllSelection();
|
||||
} else {
|
||||
// 取消全选
|
||||
tableRef.value.clearSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打开计费弹窗
|
||||
function handleCalculate() {
|
||||
// 获取选中的数据
|
||||
const selectedRows = getSelectedRows();
|
||||
// if (selectedRows.length === 0) {
|
||||
// ElMessage.warning('请先选择要计费的项目');
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 设置弹窗初始数据
|
||||
selectedFeeItems.value = [...selectedRows];
|
||||
|
||||
// 设置患者信息
|
||||
if (patientInfoList.value.length > 0) {
|
||||
const patient = patientInfoList.value[0];
|
||||
currentPatientInfo.value = `${patient.patientName || '未知患者'}`;
|
||||
}
|
||||
|
||||
// 显示弹窗
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
|
||||
// 处理计费弹窗确认
|
||||
function handleFeeDialogConfirm(data) {
|
||||
// 模拟计费操作
|
||||
setTimeout(() => {
|
||||
ElMessage.success('计费成功');
|
||||
// 刷新数据
|
||||
handleQuery();
|
||||
}, 300);
|
||||
}
|
||||
|
||||
// 处理计费弹窗取消
|
||||
function handleFeeDialogCancel() {
|
||||
// 可以在这里添加取消后的处理逻辑
|
||||
}
|
||||
|
||||
// 批量划价
|
||||
function handleBatchPrice() {
|
||||
// 获取选中的数据
|
||||
const selectedRows = getSelectedRows();
|
||||
if (selectedRows.length === 0) {
|
||||
ElMessage.warning('请先选择要划价的项目');
|
||||
return;
|
||||
}
|
||||
|
||||
// 模拟批量划价操作
|
||||
setTimeout(() => {
|
||||
ElMessage.success(`批量划价成功,共${selectedRows.length}项`);
|
||||
// 更新状态,模拟已划价
|
||||
selectedRows.forEach((row) => {
|
||||
row.status = 'priced';
|
||||
});
|
||||
}, 300);
|
||||
}
|
||||
|
||||
// 单项划价
|
||||
function handlePrice(row) {
|
||||
// 模拟单项划价操作
|
||||
setTimeout(() => {
|
||||
ElMessage.success('划价成功');
|
||||
// 更新状态,模拟已划价
|
||||
row.status = 'priced';
|
||||
}, 300);
|
||||
}
|
||||
function handleDelete(row) {
|
||||
// 从数据列表中删除当前行
|
||||
const index = billingList.value.findIndex((item) => item.id === row.id);
|
||||
if (index !== -1) {
|
||||
billingList.value.splice(index, 1);
|
||||
ElMessage.success('撤销成功');
|
||||
}
|
||||
}
|
||||
|
||||
// 获取选中的行
|
||||
function getSelectedRows() {
|
||||
if (tableRef.value) {
|
||||
return tableRef.value.selection || [];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
// 暴露方法供父组件调用
|
||||
defineExpose({
|
||||
handleQuery,
|
||||
=======
|
||||
import { ref, onMounted, computed, nextTick, watch } from 'vue';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
// Element Plus 图标导入
|
||||
@@ -1065,30 +732,10 @@ onMounted(() => {
|
||||
|
||||
// 初始化统计信息
|
||||
calculateTotalStats.value;
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<<<<<<< HEAD
|
||||
/* 日期tabs样式 */
|
||||
.date-tabs .el-tabs__header {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.date-tabs .el-tabs__content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
:deep(.el-table__header th) {
|
||||
background-color: #eef9fd !important;
|
||||
}
|
||||
|
||||
:deep(.el-table__row:hover > td) {
|
||||
background-color: #eef9fd !important;
|
||||
}
|
||||
</style>
|
||||
=======
|
||||
/* 基础样式 */
|
||||
.font-bold {
|
||||
font-weight: 600;
|
||||
@@ -1270,4 +917,3 @@ onMounted(() => {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -170,11 +170,7 @@
|
||||
<script setup>
|
||||
import { ref, computed, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
<<<<<<< HEAD
|
||||
import { patientInfoList } from '../../medicalOrderExecution/store/patient.js';
|
||||
=======
|
||||
import { patientInfoList } from '../../components/store/patient.js';
|
||||
>>>>>>> v1.3
|
||||
import { getSinglePatient } from '../store/patient.js'; // 导入获取单选患者信息的方法
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
|
||||
|
||||
@@ -22,11 +22,7 @@
|
||||
>
|
||||
<el-tab-pane label="今日" name="today"></el-tab-pane>
|
||||
<el-tab-pane label="昨日" name="yesterday"></el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="其他" name="other"></el-tab-pane>
|
||||
=======
|
||||
<!-- <el-tab-pane label="其他" name="other"></el-tab-pane> -->
|
||||
>>>>>>> v1.3
|
||||
</el-tabs>
|
||||
|
||||
<!-- 日期选择器 -->
|
||||
@@ -44,21 +40,13 @@
|
||||
|
||||
<!-- 费用类型选择 -->
|
||||
<el-select
|
||||
<<<<<<< HEAD
|
||||
v-model="feeType"
|
||||
=======
|
||||
v-model="formParams.chargeItemEnum"
|
||||
>>>>>>> v1.3
|
||||
placeholder="请选择费用类型"
|
||||
clearable
|
||||
style="width: 150px; margin-right: 20px"
|
||||
>
|
||||
<el-option
|
||||
<<<<<<< HEAD
|
||||
v-for="type in feeTypeOptions"
|
||||
=======
|
||||
v-for="type in med_chrgitm_type"
|
||||
>>>>>>> v1.3
|
||||
:key="type.value"
|
||||
:label="type.label"
|
||||
:value="type.value"
|
||||
@@ -67,35 +55,21 @@
|
||||
|
||||
<!-- 执行科室选择 -->
|
||||
<el-select
|
||||
<<<<<<< HEAD
|
||||
v-model="execDepartment"
|
||||
=======
|
||||
v-model="formParams.orgId"
|
||||
>>>>>>> v1.3
|
||||
placeholder="请选择执行科室"
|
||||
clearable
|
||||
style="width: 150px; margin-right: 20px"
|
||||
>
|
||||
<el-option
|
||||
<<<<<<< HEAD
|
||||
v-for="dept in departmentOptions"
|
||||
:key="dept.value"
|
||||
:label="dept.label"
|
||||
:value="dept.value"
|
||||
=======
|
||||
v-for="dept in orgOptions"
|
||||
:key="dept.id"
|
||||
:label="dept.name"
|
||||
:value="dept.id"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<!-- 查询按钮 -->
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-button type="primary" @click="onReset">重置</el-button>
|
||||
>>>>>>> v1.3
|
||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||
</div>
|
||||
|
||||
@@ -104,11 +78,7 @@
|
||||
<el-button @click="handleExport">导出</el-button>
|
||||
|
||||
<!-- 打印按钮 -->
|
||||
<<<<<<< HEAD
|
||||
<el-button @click="handlePrint" style="margin-left: 15px">打印</el-button>
|
||||
=======
|
||||
<!-- <el-button @click="handlePrint" style="margin-left: 15px">打印</el-button> -->
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -118,19 +88,6 @@
|
||||
v-loading="loading"
|
||||
>
|
||||
<!-- 费用汇总信息 -->
|
||||
<<<<<<< HEAD
|
||||
<div style="background-color: white; padding: 15px; margin-bottom: 10px; border-radius: 4px;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center">
|
||||
<div>
|
||||
<h3 style="margin: 0; font-weight: normal; color: #303133;">费用汇总</h3>
|
||||
<p style="margin: 5px 0; color: #606266; font-size: 14px;">费用周期:{{ formatDateRange() }}</p>
|
||||
</div>
|
||||
<div style="text-align: right;">
|
||||
<p style="margin: 0; font-size: 18px; font-weight: bold; color: #ff4d4f;">
|
||||
合计金额:¥{{ totalAmount.toFixed(2) }}
|
||||
</p>
|
||||
<p style="margin: 5px 0; color: #606266; font-size: 14px;">明细项数:{{ feeDetailList.length }}项</p>
|
||||
=======
|
||||
<div style="background-color: white; padding: 15px; margin-bottom: 10px; border-radius: 4px">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center">
|
||||
<div>
|
||||
@@ -146,7 +103,6 @@
|
||||
<p style="margin: 5px 0; color: #606266; font-size: 14px">
|
||||
明细项数:{{ feeDetailList.length }}项
|
||||
</p>
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -156,28 +112,6 @@
|
||||
:data="feeDetailList"
|
||||
border
|
||||
style="width: 100%"
|
||||
<<<<<<< HEAD
|
||||
:header-cell-style="{ background: '#eef9fd !important' }"
|
||||
@sort-change="handleSortChange"
|
||||
>
|
||||
<el-table-column label="项目名称" prop="itemName" min-width="200" />
|
||||
<el-table-column label="费用类型" prop="feeTypeName" width="120" align="center" />
|
||||
<el-table-column label="单价" prop="unitPrice" width="100" align="center" sortable />
|
||||
<el-table-column label="数量" prop="quantity" width="100" align="center" sortable />
|
||||
<el-table-column label="金额" prop="amount" width="100" align="center" sortable>
|
||||
<template #default="scope">
|
||||
<span style="color: #ff4d4f">{{ scope.row.amount.toFixed(2) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="执行科室" prop="execDept" width="120" align="center" />
|
||||
<el-table-column label="执行人" prop="executor" width="100" align="center" />
|
||||
<el-table-column label="执行日期" prop="executeDate" width="120" align="center" />
|
||||
<el-table-column label="医保类型" prop="insuranceType" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.insuranceType" size="small">{{ scope.row.insuranceType }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
=======
|
||||
max-height="400px"
|
||||
:header-cell-style="{ background: '#eef9fd !important' }"
|
||||
@sort-change="handleSortChange"
|
||||
@@ -211,22 +145,14 @@
|
||||
|
||||
<el-table-column label="医保类型" prop="chrgitmLv_enumText" width="100" align="center">
|
||||
</el-table-column>
|
||||
>>>>>>> v1.3
|
||||
<el-table-column label="备注" prop="remark" min-width="150" />
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<<<<<<< HEAD
|
||||
<div style="margin-top: 15px; display: flex; justify-content: flex-end;">
|
||||
<el-pagination
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
=======
|
||||
<div style="margin-top: 15px; display: flex; justify-content: flex-end">
|
||||
<el-pagination
|
||||
v-model:current-page="formParams.pageNo"
|
||||
v-model:page-size="formParams.pageSize"
|
||||
>>>>>>> v1.3
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
@@ -240,26 +166,6 @@
|
||||
</div>
|
||||
|
||||
<!-- 打印预览弹窗 -->
|
||||
<<<<<<< HEAD
|
||||
<el-dialog v-model="printDialogVisible" title="打印预览" width="80%" :close-on-click-modal="false">
|
||||
<div id="print-content">
|
||||
<div style="text-align: center; margin-bottom: 20px;">
|
||||
<h2 style="margin: 0;">费用明细清单</h2>
|
||||
<p style="margin: 5px 0;">患者姓名:{{ patientInfo || '未选择患者' }}</p>
|
||||
<p style="margin: 5px 0;">费用周期:{{ formatDateRange() }}</p>
|
||||
</div>
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse;">
|
||||
<thead>
|
||||
<tr style="background-color: #eef9fd;">
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">项目名称</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">费用类型</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">单价</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">数量</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">金额</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">执行科室</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px;">执行日期</th>
|
||||
=======
|
||||
<el-dialog
|
||||
v-model="printDialogVisible"
|
||||
title="打印预览"
|
||||
@@ -283,26 +189,10 @@
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px">金额</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px">执行科室</th>
|
||||
<th style="border: 1px solid #e4e7ed; padding: 8px">执行日期</th>
|
||||
>>>>>>> v1.3
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in feeDetailList" :key="item.id">
|
||||
<<<<<<< HEAD
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.itemName }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.feeTypeName }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.unitPrice.toFixed(2) }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.quantity }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.amount.toFixed(2) }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.execDept }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px;">{{ item.executeDate }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr style="background-color: #f5f7fa;">
|
||||
<td colspan="4" style="border: 1px solid #e4e7ed; padding: 8px; text-align: right; font-weight: bold;">合计:</td>
|
||||
<td colspan="3" style="border: 1px solid #e4e7ed; padding: 8px; color: #ff4d4f; font-weight: bold;">¥{{ totalAmount.toFixed(2) }}</td>
|
||||
=======
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px">{{ item.itemName }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px">{{ item.feeTypeName }}</td>
|
||||
<td style="border: 1px solid #e4e7ed; padding: 8px">
|
||||
@@ -333,16 +223,10 @@
|
||||
>
|
||||
¥{{ totalAmount.toFixed(2) }}
|
||||
</td>
|
||||
>>>>>>> v1.3
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
<template #footer>
|
||||
<el-button @click="printDialogVisible = false">关闭</el-button>
|
||||
<el-button type="primary" @click="doPrint">打印</el-button>
|
||||
@@ -352,12 +236,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { ref, computed, onMounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { patientInfoList } from '../../medicalOrderExecution/store/patient.js';
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
=======
|
||||
import { ref, computed, onMounted, watch, reactive } from 'vue';
|
||||
import moment from 'moment';
|
||||
import { ElMessage } from 'element-plus';
|
||||
@@ -367,28 +245,17 @@ import { getCostDetail } from './api.js';
|
||||
import { getOrgList } from '../../../basicmanage/ward/components/api.js';
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { med_chrgitm_type } = proxy.useDict('med_chrgitm_type');
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 响应式数据
|
||||
const loading = ref(false);
|
||||
const feeDetailList = ref([]);
|
||||
const dateRange = ref('today'); // today, yesterday, other
|
||||
const dateRangeValue = ref([]);
|
||||
<<<<<<< HEAD
|
||||
const feeType = ref('');
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const execDepartment = ref('');
|
||||
const departmentOptions = ref([]);
|
||||
const feeTypeOptions = ref([]);
|
||||
const tableRef = ref(null);
|
||||
const patientInfo = ref('');
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 分页相关
|
||||
const currentPage = ref(1);
|
||||
const pageSize = ref(20);
|
||||
=======
|
||||
const orgOptions = ref([]);
|
||||
const formParams = reactive({
|
||||
chargeItemEnum: undefined,
|
||||
@@ -406,7 +273,6 @@ const props = defineProps({
|
||||
});
|
||||
|
||||
// 分页相关
|
||||
>>>>>>> v1.3
|
||||
const total = ref(0);
|
||||
|
||||
// 打印相关
|
||||
@@ -415,11 +281,7 @@ const printDialogVisible = ref(false);
|
||||
// 计算总金额
|
||||
const totalAmount = computed(() => {
|
||||
return feeDetailList.value.reduce((sum, item) => {
|
||||
<<<<<<< HEAD
|
||||
return sum + (item.amount || 0);
|
||||
=======
|
||||
return sum + (item.totalPrice || 0);
|
||||
>>>>>>> v1.3
|
||||
}, 0);
|
||||
});
|
||||
|
||||
@@ -428,19 +290,6 @@ onMounted(() => {
|
||||
// 设置默认日期
|
||||
const today = new Date();
|
||||
dateRangeValue.value = [formatDateStr(today, 'YYYY-MM-DD'), formatDateStr(today, 'YYYY-MM-DD')];
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 加载科室选项
|
||||
loadDepartmentOptions();
|
||||
|
||||
// 加载费用类型选项
|
||||
loadFeeTypeOptions();
|
||||
|
||||
// 监听患者选择变化
|
||||
watchPatientSelection();
|
||||
});
|
||||
|
||||
=======
|
||||
});
|
||||
|
||||
watch(
|
||||
@@ -481,17 +330,12 @@ const getTableList = async () => {
|
||||
} catch (error) {}
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 监听患者选择变化
|
||||
function watchPatientSelection() {
|
||||
// 定期检查患者选择状态变化
|
||||
setInterval(() => {
|
||||
if (patientInfoList.value && patientInfoList.value.length > 0) {
|
||||
<<<<<<< HEAD
|
||||
const selectedPatient = patientInfoList.value.find(patient => patient.selected === true);
|
||||
=======
|
||||
const selectedPatient = patientInfoList.value.find((patient) => patient.selected === true);
|
||||
>>>>>>> v1.3
|
||||
if (selectedPatient) {
|
||||
patientInfo.value = selectedPatient.patientName || '';
|
||||
} else {
|
||||
@@ -503,21 +347,6 @@ function watchPatientSelection() {
|
||||
}, 300);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 加载科室选项
|
||||
function loadDepartmentOptions() {
|
||||
// 模拟科室数据
|
||||
departmentOptions.value = [
|
||||
{ label: '内科', value: 'internal' },
|
||||
{ label: '外科', value: 'surgery' },
|
||||
{ label: '儿科', value: 'pediatrics' },
|
||||
{ label: '妇产科', value: 'obstetrics' },
|
||||
{ label: '检验科', value: 'laboratory' },
|
||||
{ label: '影像科', value: 'imaging' },
|
||||
{ label: '其他科室', value: 'others' },
|
||||
];
|
||||
}
|
||||
=======
|
||||
/** 查询科室 */
|
||||
const getLocationInfo = () => {
|
||||
getOrgList().then((res) => {
|
||||
@@ -545,7 +374,6 @@ const onReset = () => {
|
||||
formParams.recordedTimeETime = dateRangeValue.value[1] + ' ' + '23:59:59';
|
||||
getTableList();
|
||||
};
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 加载费用类型选项
|
||||
function loadFeeTypeOptions() {
|
||||
@@ -582,26 +410,19 @@ function handleDateTabClick(tab) {
|
||||
break;
|
||||
// other 情况保持用户选择的值
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
if (!(dateRangeValue.value == null || dateRangeValue.value == undefined)) {
|
||||
formParams.recordedTimeSTime = dateRangeValue.value[0] + ' ' + '00:00:00';
|
||||
formParams.recordedTimeETime = dateRangeValue.value[1] + ' ' + '23:59:59';
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
// 处理日期选择器变化
|
||||
function handleDatePickerChange() {
|
||||
if (dateRangeValue.value.length > 0) {
|
||||
<<<<<<< HEAD
|
||||
dateRange.value = 'other';
|
||||
=======
|
||||
// dateRange.value = 'other';
|
||||
} else {
|
||||
formParams.recordedTimeSTime = undefined;
|
||||
formParams.recordedTimeETime = undefined;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
}
|
||||
|
||||
@@ -613,195 +434,15 @@ function formatDateRange() {
|
||||
return '';
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 生成模拟数据
|
||||
function generateMockData() {
|
||||
// 费用类型映射
|
||||
const feeTypeMap = {
|
||||
'examine': '检查费',
|
||||
'treatment': '治疗费',
|
||||
'medicine': '药品费',
|
||||
'material': '材料费',
|
||||
'bed': '床位费',
|
||||
'others': '其他费用'
|
||||
};
|
||||
|
||||
// 科室映射
|
||||
const deptMap = {
|
||||
'internal': '内科',
|
||||
'surgery': '外科',
|
||||
'pediatrics': '儿科',
|
||||
'obstetrics': '妇产科',
|
||||
'laboratory': '检验科',
|
||||
'imaging': '影像科',
|
||||
'others': '其他科室'
|
||||
};
|
||||
|
||||
// 项目数据池
|
||||
const itemPools = {
|
||||
'examine': ['血常规检查', '尿常规检查', '肝功能检查', '肾功能检查', '胸部CT', '心电图', 'B超'],
|
||||
'treatment': ['静脉输液', '肌肉注射', '氧气吸入', '导尿', '换药', '雾化吸入'],
|
||||
'medicine': ['抗生素注射液', '维生素C片', '感冒药', '止痛药', '降压药', '消炎药'],
|
||||
'material': ['一次性输液器', '注射器', '医用棉花', '纱布', '胶带', '一次性手套'],
|
||||
'bed': ['普通病房床位', 'ICU床位', '单人病房床位', '双人病房床位'],
|
||||
'others': ['护理费', '诊疗费', '挂号费', '病历费']
|
||||
};
|
||||
|
||||
// 合并所有项目到allItems数组中(修复:添加这部分代码)
|
||||
let allItems = [];
|
||||
Object.keys(itemPools).forEach(type => {
|
||||
itemPools[type].forEach(item => {
|
||||
allItems.push({
|
||||
type: type,
|
||||
name: item
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// 筛选条件
|
||||
if (feeType.value) {
|
||||
allItems = allItems.filter(item => item.type === feeType.value);
|
||||
}
|
||||
|
||||
// 生成模拟数据
|
||||
const mockData = [];
|
||||
const baseDate = new Date(dateRangeValue.value[0]);
|
||||
const endDate = new Date(dateRangeValue.value[1]);
|
||||
const daysDiff = Math.ceil((endDate - baseDate) / (1000 * 60 * 60 * 24)) + 1;
|
||||
|
||||
// 执行人池
|
||||
const executors = ['护士A', '护士B', '医生A', '医生B', '技师A'];
|
||||
|
||||
// 生成数据
|
||||
let id = 1;
|
||||
for (let day = 0; day < daysDiff; day++) {
|
||||
const currentDate = new Date(baseDate);
|
||||
currentDate.setDate(baseDate.getDate() + day);
|
||||
const dateStr = formatDateStr(currentDate, 'YYYY-MM-DD');
|
||||
|
||||
// 每天生成3-8条记录
|
||||
const recordsCount = Math.floor(Math.random() * 6) + 3;
|
||||
for (let i = 0; i < recordsCount; i++) {
|
||||
// 随机选择一个项目
|
||||
const randomItemIndex = Math.floor(Math.random() * allItems.length);
|
||||
const selectedItem = allItems[randomItemIndex];
|
||||
|
||||
// 随机选择一个科室
|
||||
const deptKeys = Object.keys(deptMap);
|
||||
const randomDeptKey = deptKeys[Math.floor(Math.random() * deptKeys.length)];
|
||||
|
||||
// 如果有科室筛选且不符合,则跳过
|
||||
if (execDepartment.value && randomDeptKey !== execDepartment.value) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 生成随机单价和数量
|
||||
const unitPrice = Math.floor(Math.random() * 190) + 10; // 10-200元
|
||||
const quantity = Math.floor(Math.random() * 3) + 1; // 1-4
|
||||
|
||||
// 医保类型
|
||||
const insuranceTypes = ['', '甲类', '乙类', '丙类'];
|
||||
const insuranceType = insuranceTypes[Math.floor(Math.random() * insuranceTypes.length)];
|
||||
|
||||
mockData.push({
|
||||
id: `item-${id++}`,
|
||||
itemName: selectedItem.name,
|
||||
feeType: selectedItem.type,
|
||||
feeTypeName: feeTypeMap[selectedItem.type],
|
||||
unitPrice: unitPrice,
|
||||
quantity: quantity,
|
||||
amount: unitPrice * quantity,
|
||||
execDept: deptMap[randomDeptKey],
|
||||
executor: executors[Math.floor(Math.random() * executors.length)],
|
||||
executeDate: dateStr,
|
||||
insuranceType: insuranceType,
|
||||
remark: ''
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return mockData;
|
||||
}
|
||||
|
||||
// 查询按钮点击
|
||||
function handleQuery() {
|
||||
// 添加调试日志,查看患者列表数据结构
|
||||
console.log('患者列表数据:', patientInfoList.value);
|
||||
|
||||
// 更灵活的患者选择检测逻辑
|
||||
let selectedPatient = null;
|
||||
|
||||
if (patientInfoList.value && patientInfoList.value.length > 0) {
|
||||
// 尝试查找选中状态的患者
|
||||
selectedPatient = patientInfoList.value.find(patient =>
|
||||
patient.selected === true ||
|
||||
patient.checked === true ||
|
||||
patient.isChecked === true ||
|
||||
(typeof patient.selected === 'string' && patient.selected === '1')
|
||||
);
|
||||
|
||||
// 如果没有明确选中的患者,就使用列表中的第一个患者
|
||||
if (!selectedPatient) {
|
||||
selectedPatient = patientInfoList.value[0];
|
||||
}
|
||||
}
|
||||
|
||||
// 即使没有明确选中的患者标志,也应该允许查询
|
||||
if (!selectedPatient) {
|
||||
ElMessage.warning('请先选择患者');
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新患者信息显示 - 修复:确保正确获取患者姓名
|
||||
const patientName = selectedPatient.patientName ||
|
||||
selectedPatient.name ||
|
||||
selectedPatient.patientInfo ||
|
||||
selectedPatient.patient ||
|
||||
'未命名患者';
|
||||
patientInfo.value = patientName;
|
||||
|
||||
loading.value = true;
|
||||
|
||||
// 模拟API调用延迟
|
||||
setTimeout(() => {
|
||||
try {
|
||||
// 使用模拟数据
|
||||
const allData = generateMockData();
|
||||
total.value = allData.length;
|
||||
|
||||
// 分页处理
|
||||
const start = (currentPage.value - 1) * pageSize.value;
|
||||
const end = start + pageSize.value;
|
||||
feeDetailList.value = allData.slice(start, end);
|
||||
} catch (error) {
|
||||
console.error('查询错误:', error);
|
||||
ElMessage.error('查询失败,请重试');
|
||||
feeDetailList.value = [];
|
||||
total.value = 0;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}, 500);
|
||||
=======
|
||||
// 查询按钮点击
|
||||
function handleQuery() {
|
||||
console.log('params=======>', formParams);
|
||||
getTableList();
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
// 处理排序变化
|
||||
function handleSortChange({ prop, order }) {
|
||||
const sortedData = [...feeDetailList.value];
|
||||
<<<<<<< HEAD
|
||||
|
||||
if (order === 'ascending') {
|
||||
sortedData.sort((a, b) => (a[prop] > b[prop]) ? 1 : -1);
|
||||
} else if (order === 'descending') {
|
||||
sortedData.sort((a, b) => (a[prop] < b[prop]) ? 1 : -1);
|
||||
}
|
||||
|
||||
=======
|
||||
|
||||
if (order === 'ascending') {
|
||||
sortedData.sort((a, b) => (a[prop] > b[prop] ? 1 : -1));
|
||||
@@ -809,50 +450,28 @@ function handleSortChange({ prop, order }) {
|
||||
sortedData.sort((a, b) => (a[prop] < b[prop] ? 1 : -1));
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
feeDetailList.value = sortedData;
|
||||
}
|
||||
|
||||
// 处理分页大小变化
|
||||
function handleSizeChange(newSize) {
|
||||
<<<<<<< HEAD
|
||||
pageSize.value = newSize;
|
||||
currentPage.value = 1;
|
||||
handleQuery();
|
||||
=======
|
||||
formParams.pageSize = newSize;
|
||||
formParams.pageNo = 1;
|
||||
getTableList();
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
// 处理当前页变化
|
||||
function handleCurrentChange(newCurrent) {
|
||||
<<<<<<< HEAD
|
||||
currentPage.value = newCurrent;
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
// 导出
|
||||
function handleExport() {
|
||||
=======
|
||||
formParams.pageNo = newCurrent;
|
||||
getTableList();
|
||||
}
|
||||
|
||||
// 导出
|
||||
async function handleExport() {
|
||||
>>>>>>> v1.3
|
||||
if (feeDetailList.value.length === 0) {
|
||||
ElMessage.warning('暂无数据可导出');
|
||||
return;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 模拟导出操作
|
||||
ElMessage.success('导出成功');
|
||||
// 实际项目中这里应该调用导出API或使用Excel库生成文件
|
||||
=======
|
||||
|
||||
try {
|
||||
// 实际项目中这里应该调用导出API或使用Excel库生成文件
|
||||
@@ -864,7 +483,6 @@ async function handleExport() {
|
||||
`dict_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
} catch (error) {}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
// 打印预览
|
||||
@@ -873,11 +491,6 @@ function handlePrint() {
|
||||
ElMessage.warning('暂无数据可打印');
|
||||
return;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
printDialogVisible.value = true;
|
||||
}
|
||||
|
||||
@@ -886,17 +499,10 @@ function doPrint() {
|
||||
try {
|
||||
// 获取要打印的内容
|
||||
const printContent = document.getElementById('print-content').innerHTML;
|
||||
<<<<<<< HEAD
|
||||
|
||||
// 创建临时窗口
|
||||
const printWindow = window.open('', '_blank');
|
||||
|
||||
=======
|
||||
|
||||
// 创建临时窗口
|
||||
const printWindow = window.open('', '_blank');
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 写入内容
|
||||
printWindow.document.write(`
|
||||
<html>
|
||||
@@ -916,11 +522,6 @@ function doPrint() {
|
||||
</body>
|
||||
</html>
|
||||
`);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 打印
|
||||
printWindow.document.close();
|
||||
printWindow.focus();
|
||||
@@ -954,8 +555,4 @@ defineExpose({
|
||||
:deep(.el-table__row:hover > td) {
|
||||
background-color: #eef9fd !important;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -23,17 +23,11 @@
|
||||
<el-tab-pane label="在科" name="first" style="padding: 15px 10px">
|
||||
<PatientList />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="转科" name="second" style="padding: 0 10px">
|
||||
<PatientList />
|
||||
</el-tab-pane>
|
||||
=======
|
||||
<!-- 隐藏tab
|
||||
<el-tab-pane label="转科" name="second" style="padding: 0 10px">
|
||||
<PatientList />
|
||||
</el-tab-pane>
|
||||
-->
|
||||
>>>>>>> v1.3
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
@@ -44,15 +38,11 @@
|
||||
<el-tab-pane label="划价确费" name="billing">
|
||||
<BillingList ref="billingRef" />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="医嘱计费" name="orderBilling">
|
||||
=======
|
||||
<el-tab-pane label="费用明细查询" name="expenseDetail">
|
||||
<!-- <FeeDetailQuery :activeTab="activeTab" ref="feeDetailQueryRef" /> -->
|
||||
<NewfeeDetailQuery :activeTab="activeTab" ref="feeDetailQueryRef" />
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="医嘱计费" name="orderBilling">
|
||||
>>>>>>> v1.3
|
||||
<OrderBilling ref="orderBillingRef" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="费用明细查询" name="expenseDetail">
|
||||
@@ -61,11 +51,7 @@
|
||||
<el-tab-pane label="预交金查询" name="depositQuery">
|
||||
<deposit-query ref="depositQueryRef" />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<!-- <el-tab-pane label="患者流转日志" name="patientFlow">
|
||||
=======
|
||||
<el-tab-pane label="患者流转日志" name="patientFlow">
|
||||
>>>>>>> v1.3
|
||||
<div style="padding: 20px; text-align: center; color: #909399">患者流转日志功能区域</div>
|
||||
</el-tab-pane> -->
|
||||
</el-tabs>
|
||||
@@ -76,16 +62,10 @@
|
||||
<script setup>
|
||||
import { ref, onMounted, nextTick } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
<<<<<<< HEAD
|
||||
import PatientList from '../medicalOrderExecution/components/patientList.vue';
|
||||
import BillingList from './components/billingList.vue';
|
||||
import FeeDetailQuery from './components/feeDetailQuery.vue';
|
||||
=======
|
||||
import PatientList from '../components/patientList.vue';
|
||||
import BillingList from './components/billingList.vue';
|
||||
import FeeDetailQuery from './components/feeDetailQuery.vue';
|
||||
import NewfeeDetailQuery from './components/newfeeDetailQuery.vue';
|
||||
>>>>>>> v1.3
|
||||
import DepositQuery from './components/depositQuery.vue';
|
||||
import OrderBilling from './components/OrderBilling.vue';
|
||||
|
||||
@@ -115,11 +95,7 @@ function handleTabChange() {
|
||||
// 切换到划价确费标签时,刷新数据
|
||||
if (activeTab.value === 'billing' && billingRef.value) {
|
||||
nextTick(() => {
|
||||
<<<<<<< HEAD
|
||||
billingRef.value.handleQuery();
|
||||
=======
|
||||
// billingRef.value.handleQuery();
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
// 切换到医嘱计费标签时,刷新数据
|
||||
|
||||
@@ -164,11 +164,7 @@
|
||||
|
||||
<script setup>
|
||||
import { getPrescriptionList, adviceExecute, adviceCancel, medicineSummary } from './api';
|
||||
<<<<<<< HEAD
|
||||
import { patientInfoList } from '../store/patient.js';
|
||||
=======
|
||||
import { patientInfoList } from '../../components/store/patient.js';
|
||||
>>>>>>> v1.3
|
||||
import { formatDate, formatDateStr } from '@/utils/index';
|
||||
import { ref, getCurrentInstance } from 'vue';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
@@ -207,58 +203,6 @@ function handleGetPrescription() {
|
||||
therapyEnum: therapyEnum.value,
|
||||
exeStatus: props.exeStatus,
|
||||
requestStatus: props.requestStatus,
|
||||
<<<<<<< HEAD
|
||||
}).then((res) => {
|
||||
// try {
|
||||
// 根据encounterId分组
|
||||
const groupedPrescriptions = res.data.records.reduce((groups, prescription) => {
|
||||
let times = new Set();
|
||||
let rate = {};
|
||||
let checkedRates = {};
|
||||
// 汇总时间点 默认全部汇总
|
||||
prescription.dispenseIds = [];
|
||||
prescription.medicineSummaryParamList.forEach((item) => {
|
||||
// 已汇总的时间点不需要显示
|
||||
if (item.dispenseStatus != 8) {
|
||||
prescription.dispenseIds.push({
|
||||
dispenseId: item.dispenseId,
|
||||
receiverId: userStore.id,
|
||||
});
|
||||
|
||||
// 将全部的时间点拆分 把日期去重,页面显示示例 05-15 [01:30 02:30 03:30]
|
||||
let time = item.dispenseTime.substring(5, 10);
|
||||
let rateTime = item.dispenseTime.substring(11, 16);
|
||||
times.add(time);
|
||||
rate[time] = rate[time] || [];
|
||||
rate[time].push({ rate: rateTime, dispenseId: item.dispenseId });
|
||||
checkedRates[time] = checkedRates[time] || [];
|
||||
checkedRates[time].push(rateTime);
|
||||
}
|
||||
});
|
||||
|
||||
prescription.times = Array.from(times);
|
||||
prescription.rate = rate;
|
||||
prescription.checkedRates = checkedRates;
|
||||
// 把相同encounterId的医嘱放在同一个数组中
|
||||
const encounterId = prescription.encounterId;
|
||||
if (!groups[encounterId]) {
|
||||
groups[encounterId] = [];
|
||||
}
|
||||
if (!activeNames.value.includes(encounterId)) {
|
||||
activeNames.value.push(encounterId);
|
||||
}
|
||||
groups[encounterId].push(prescription);
|
||||
return groups;
|
||||
}, {});
|
||||
|
||||
// 将分组结果转换为数组形式
|
||||
prescriptionList.value = Object.values(groupedPrescriptions);
|
||||
loading.value = false;
|
||||
// } catch {
|
||||
// loading.value = false;
|
||||
// }
|
||||
});
|
||||
=======
|
||||
})
|
||||
.then((res) => {
|
||||
// try {
|
||||
@@ -319,7 +263,6 @@ function handleGetPrescription() {
|
||||
next({ path: '/' });
|
||||
});
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
chooseAll.value = false;
|
||||
} else {
|
||||
prescriptionList.value = [];
|
||||
@@ -391,8 +334,4 @@ defineExpose({
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
</style>
|
||||
=======
|
||||
</style>
|
||||
>>>>>>> v1.3
|
||||
|
||||
@@ -49,11 +49,7 @@
|
||||
|
||||
<script setup>
|
||||
import { getMedicineSummary, getMedicineSummaryDetail } from './api';
|
||||
<<<<<<< HEAD
|
||||
import { patientInfoList } from '../store/patient.js';
|
||||
=======
|
||||
import { patientInfoList } from '../../components/store/patient.js';
|
||||
>>>>>>> v1.3
|
||||
import { ref, getCurrentInstance } from 'vue';
|
||||
|
||||
const medicineSummaryFormList = ref([]);
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
<<<<<<< HEAD
|
||||
justify-content: flex-end;
|
||||
border-bottom: solid 2px #e4e7ed;
|
||||
"
|
||||
>
|
||||
<el-icon
|
||||
@click="refresh"
|
||||
class="refresh-icon"
|
||||
style="cursor: pointer; font-size: 20px; margin-right: 10px"
|
||||
>
|
||||
=======
|
||||
justify-content: space-between;
|
||||
border-bottom: solid 2px #e4e7ed;
|
||||
padding: 0 10px;
|
||||
@@ -26,7 +15,6 @@
|
||||
<ArrowLeft />
|
||||
</el-icon> -->
|
||||
<el-icon @click="refresh" class="refresh-icon" style="cursor: pointer; font-size: 20px">
|
||||
>>>>>>> v1.3
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -34,39 +22,6 @@
|
||||
<el-tab-pane label="在科" name="first" style="padding: 15px 10px">
|
||||
<PatientList />
|
||||
</el-tab-pane>
|
||||
<<<<<<< HEAD
|
||||
<el-tab-pane label="转科" name="second" style="padding: 0 10px">
|
||||
<PatientList />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div style="width: 100%">
|
||||
<div
|
||||
style="
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: solid 2px #e4e7ed;
|
||||
padding: 0 15px;
|
||||
background: linear-gradient(90deg, #f0f8ff, #e6f7ff);
|
||||
"
|
||||
>
|
||||
<div class="nav-button-group">
|
||||
<el-button
|
||||
v-for="nav in navigationButtons"
|
||||
:key="nav.path"
|
||||
:type="currentRoute.path === nav.path ? 'primary' : 'default'"
|
||||
size="small"
|
||||
@click="navigateTo(nav.path)"
|
||||
class="nav-button"
|
||||
:class="{ 'active-nav': currentRoute.path === nav.path }"
|
||||
>
|
||||
<el-icon v-if="nav.icon"><component :is="nav.icon" /></el-icon>
|
||||
<span>{{ nav.label }}</span>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
=======
|
||||
<!-- 隐藏转科列表
|
||||
<el-tab-pane label="转科" name="second" style="padding: 0 10px">
|
||||
<PatientList />
|
||||
@@ -76,7 +31,6 @@
|
||||
</div>
|
||||
<div style="width: 100%">
|
||||
<!-- <NurseNavBar :navs="navigationButtons" /> -->
|
||||
>>>>>>> v1.3
|
||||
<div
|
||||
style="
|
||||
height: 50px;
|
||||
@@ -148,16 +102,6 @@
|
||||
|
||||
<script setup>
|
||||
import { getCurrentInstance, ref } from 'vue';
|
||||
<<<<<<< HEAD
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import PatientList from './components/patientList.vue';
|
||||
import PrescriptionList from './components/prescriptionList.vue';
|
||||
import SummaryMedicineList from './components/summaryMedicineList.vue';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const router = useRouter();
|
||||
const currentRoute = useRoute();
|
||||
=======
|
||||
import { useRouter } from 'vue-router';
|
||||
import PatientList from '../components/patientList.vue';
|
||||
import NurseNavBar from '../components/NurseNavBar.vue';
|
||||
@@ -167,7 +111,6 @@ import { inpatientNurseNavs } from '../constants/navigation';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const router = useRouter();
|
||||
>>>>>>> v1.3
|
||||
|
||||
const activeName = ref('preparation');
|
||||
const active = ref('first');
|
||||
@@ -181,53 +124,7 @@ const isDetails = ref('1');
|
||||
// 存储子组件引用的对象
|
||||
const prescriptionRefs = ref();
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 导航按钮配置
|
||||
const navigationButtons = ref([
|
||||
{
|
||||
label: '入出转',
|
||||
path: '/inHospital/statistics/inOut',
|
||||
icon: 'Document',
|
||||
},
|
||||
{
|
||||
label: '护理记录',
|
||||
path: '/inHospital/statistics/nursingRecord',
|
||||
icon: 'MedicineBox',
|
||||
},
|
||||
{
|
||||
label: '三测单',
|
||||
path: '/inHospital/statistics/tprChart',
|
||||
icon: 'List',
|
||||
},
|
||||
{
|
||||
label: '医嘱执行',
|
||||
path: '/inHospital/statistics/medicalOrderExecution',
|
||||
icon: 'Back',
|
||||
},
|
||||
{
|
||||
label: '医嘱校对',
|
||||
path: '/inHospital/statistics/medicalOrderProofread',
|
||||
icon: 'Back',
|
||||
},
|
||||
{
|
||||
label: '汇总发药申请',
|
||||
path: '/inHospital/statistics/drugDistribution',
|
||||
icon: 'Back',
|
||||
},
|
||||
{
|
||||
label: '住院记账',
|
||||
path: '/inHospital/statistics/InpatientBilling',
|
||||
icon: 'Back',
|
||||
},
|
||||
]);
|
||||
|
||||
// 页面导航方法
|
||||
const navigateTo = (path) => {
|
||||
router.push(path);
|
||||
};
|
||||
=======
|
||||
const navigationButtons = inpatientNurseNavs;
|
||||
>>>>>>> v1.3
|
||||
|
||||
// 定义处方列表tabs配置
|
||||
const prescriptionTabs = [
|
||||
@@ -282,13 +179,10 @@ function handleExecute() {
|
||||
proxy.$refs['prescriptionRefs'].handleMedicineSummary();
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
function handleBack() {
|
||||
router.back();
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
provide('handleGetPrescription', (value) => {
|
||||
prescriptionRefs.value.handleGetPrescription();
|
||||
});
|
||||
@@ -316,31 +210,4 @@ provide('handleGetPrescription', (value) => {
|
||||
:deep(.el-tabs__header) {
|
||||
margin: 0;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
.nav-button-group {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.nav-button {
|
||||
transition: all 0.3s ease;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.nav-button:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.nav-button.active-nav {
|
||||
box-shadow: 0 4px 8px rgba(64, 158, 255, 0.3);
|
||||
}
|
||||
|
||||
.nav-button :deep(.el-icon) {
|
||||
margin-right: 5px;
|
||||
}
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
</style>
|
||||
@@ -226,12 +226,8 @@
|
||||
|
||||
<script setup>
|
||||
import { getPrescriptionList, adviceExecute, adviceCancel, adviceNoExecute } from './api';
|
||||
<<<<<<< HEAD
|
||||
import { patientInfoList } from '../store/patient.js';
|
||||
=======
|
||||
import { patientInfoList } from '../../components/store/patient.js';
|
||||
import { lotNumberMatch } from '@/api/public';
|
||||
>>>>>>> v1.3
|
||||
import { formatDate, formatDateStr } from '@/utils/index';
|
||||
import { ref, getCurrentInstance, nextTick } from 'vue';
|
||||
|
||||
@@ -465,27 +461,6 @@ function handleNoExecute() {
|
||||
});
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 不执行
|
||||
function handleNoExecute() {
|
||||
let list = getSelectRows();
|
||||
list = list.map((item) => {
|
||||
return {
|
||||
requestId: item.requestId,
|
||||
encounterId: item.encounterId,
|
||||
patientId: item.patientId,
|
||||
adviceTable: item.adviceTable,
|
||||
executeTimes: item.executeTimes,
|
||||
};
|
||||
});
|
||||
console.log(list, 'list');
|
||||
adviceNoExecute({ adviceExecuteDetailList: list }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
handleGetPrescription();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 取消执行
|
||||
function handleCancel() {
|
||||
let list = getSelectRows();
|
||||
@@ -500,22 +475,6 @@ function handleCancel() {
|
||||
})
|
||||
);
|
||||
});
|
||||
=======
|
||||
// 取消执行
|
||||
function handleCancel() {
|
||||
let list = getSelectRows();
|
||||
let producerIds = [];
|
||||
list.forEach((item) => {
|
||||
producerIds.push(
|
||||
...item.procedureIds.map((value) => {
|
||||
return {
|
||||
procedureId: value,
|
||||
therapyEnum: item.therapyEnum,
|
||||
};
|
||||
})
|
||||
);
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
adviceCancel({ adviceExecuteDetailList: producerIds }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
handleGetPrescription();
|
||||
@@ -564,18 +523,6 @@ function getDateRange(startDate, endDate) {
|
||||
|
||||
function handleRateChange(value, date, time, row, rateItem) {
|
||||
// 拼接当前选中时间
|
||||
<<<<<<< HEAD
|
||||
let tiemStr = row.year + '-' + date + ' ' + time + ':00';
|
||||
let index = row.executeTimes.indexOf(tiemStr);
|
||||
debugger;
|
||||
if (value) {
|
||||
row.executeTimes.push(tiemStr);
|
||||
row.procedureIds.push(rateItem.producerId);
|
||||
} else {
|
||||
row.executeTimes.splice(row.executeTimes.indexOf(tiemStr), 1);
|
||||
row.procedureIds.splice(row.executeTimes.indexOf(rateItem.producerId), 1);
|
||||
}
|
||||
=======
|
||||
let timeStr = row.year + '-' + date + ' ' + time + ':00';
|
||||
let timeIndex = row.executeTimes.indexOf(timeStr);
|
||||
|
||||
@@ -606,7 +553,6 @@ function handleRateChange(value, date, time, row, rateItem) {
|
||||
nextTick(() => {
|
||||
checkAndToggleRowSelection(row);
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function handelSwicthChange(value) {
|
||||
|
||||
@@ -65,22 +65,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item prop="tenantId">
|
||||
<span class="descriptions-item-label" style="margin: 0 10px 0 0">连接医保</span>
|
||||
<<<<<<< HEAD
|
||||
<el-switch v-model="loginForm.invokeYb" @change="topNavChange" size="large"/>
|
||||
</el-form-item>
|
||||
<el-form-item class="login-options">
|
||||
<el-checkbox v-model="loginForm.rememberMe" class="remember-me">记住我</el-checkbox>
|
||||
<el-link type="primary" class="forgot-password" @click="handleForgotPassword">忘记密码?</el-link>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item prop="tenantId"> -->
|
||||
<!-- <span class="descriptions-item-label" style="margin: 0 10px 0 0">连接医保</span> -->
|
||||
<!-- <el-switch v-model="loginForm.invokeYb" @change="topNavChange" size="large"/> -->
|
||||
<!-- </el-form-item> -->
|
||||
=======
|
||||
<el-switch v-model="loginForm.invokeYb" @change="topNavChange" size="large" />
|
||||
</el-form-item>
|
||||
>>>>>>> v1.3
|
||||
<!--<el-form-item prop="code" v-if="captchaEnabled">
|
||||
<el-input
|
||||
v-model="loginForm.code"
|
||||
@@ -137,9 +123,6 @@
|
||||
<span><el-link :underline="false">Cookies</el-link></span>
|
||||
</div>
|
||||
<span>
|
||||
<<<<<<< HEAD
|
||||
<el-link :underline="false">Copyright © 2025 上海经创贺联信息技术有限公司 All Rights Reserved. </el-link>
|
||||
=======
|
||||
<el-link
|
||||
:underline="false"
|
||||
href="https://open.tntlinking.com/communityTreaty"
|
||||
@@ -148,7 +131,6 @@
|
||||
>Copyright © 2025 湖北天天数链技术有限公司 本系统软件源代码许可来源于
|
||||
天天开源软件(社区版)许可协议 https://open.tntlinking.com/communityTreaty
|
||||
</el-link>
|
||||
>>>>>>> v1.3
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -166,20 +166,12 @@ import {
|
||||
reject,
|
||||
init,
|
||||
getpurchaseInventoryDetail,
|
||||
<<<<<<< HEAD
|
||||
getpurchaseInventoryDetailReturn
|
||||
} from "./components/api";
|
||||
import { purchaseInventoryApproved as purchaseReturnApproved } from '../returnedPurchase/components/api';
|
||||
import { useStore } from '@/store/store';
|
||||
import { formatDate } from '@/utils/index';
|
||||
=======
|
||||
getpurchaseInventoryDetailReturn,
|
||||
} from './components/api';
|
||||
import { useStore } from '@/store/store';
|
||||
import { formatDate } from '@/utils/index';
|
||||
import ChkstockDetailsDialog from '@/views/medicationmanagement/chkstock/components/chkstockDetailsDialog.vue';
|
||||
import TransferDetailsDialog from '@/views/medicationmanagement/transferManagent/components/transferDetailsDialog.vue';
|
||||
>>>>>>> v1.3
|
||||
import useTagsViewStore from '@/store/modules/tagsView';
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
@@ -257,28 +249,8 @@ function handelApply(row) {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
getList();
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
})
|
||||
}else if(row.typeEnum == 5){ // 采购退货审批通过
|
||||
console.log("采购退货审批通过,typeEnum:", row.typeEnum);
|
||||
console.log("供应单据号:", row.supplyBusNo);
|
||||
purchaseReturnApproved(row.supplyBusNo).then((res) => {
|
||||
console.log("采购退货审批结果:", res);
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess("操作成功");
|
||||
getList();
|
||||
} else {
|
||||
proxy.$modal.msgError("操作失败: " + (res.msg || "未知错误"));
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error("采购退货审批错误:", error);
|
||||
proxy.$modal.msgError("操作异常: " + error.message);
|
||||
});
|
||||
}else{
|
||||
=======
|
||||
});
|
||||
} else {
|
||||
>>>>>>> v1.3
|
||||
purchaseInventoryApproved(row.supplyBusNo).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
@@ -290,30 +262,17 @@ function handelApply(row) {
|
||||
|
||||
// 审批,查看
|
||||
function handelApplys(row, view) {
|
||||
<<<<<<< HEAD
|
||||
if (row.typeEnum == 2) {
|
||||
=======
|
||||
if (row.typeEnum == 100086) {
|
||||
>>>>>>> v1.3
|
||||
//商品调拨
|
||||
// 跳转到审核页面
|
||||
router.replace({
|
||||
path: '/medicationmanagement/transferManagement/transferManagent',
|
||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
} else if (row.typeEnum == 8) {
|
||||
//8 批量
|
||||
router.replace({
|
||||
path: '/medicationmanagement/transferManagement/batchTransfer',
|
||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||
});
|
||||
=======
|
||||
} else if (row.typeEnum == 8 || row.typeEnum == 2) {
|
||||
//8 批量
|
||||
isApply.value = true;
|
||||
proxy.$refs['tranDetailsDialogRef'].open(row.supplyBusNo);
|
||||
>>>>>>> v1.3
|
||||
} else if (row.typeEnum == 7) {
|
||||
//领用出库审批通过
|
||||
router.replace({
|
||||
@@ -327,17 +286,9 @@ function handelApplys(row, view) {
|
||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||
});
|
||||
} else if (row.typeEnum == 4) {
|
||||
<<<<<<< HEAD
|
||||
//盘点审批
|
||||
router.replace({
|
||||
path: '/medicationmanagement/chkstock/chkstockPart',
|
||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||
});
|
||||
=======
|
||||
isApply.value = true;
|
||||
//盘点审批
|
||||
proxy.$refs['detailsDialogRef'].open(row.supplyBusNo);
|
||||
>>>>>>> v1.3
|
||||
} else if (row.typeEnum == 10) {
|
||||
// 批量盘点
|
||||
router.replace({
|
||||
|
||||
@@ -37,11 +37,8 @@
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
<el-button type="primary" plain @click="handleExport" v-if="viewStatus == 'view'">导出</el-button>
|
||||
>>>>>>> v1.3
|
||||
<el-form
|
||||
:model="receiptHeaderForm"
|
||||
ref="receiptHeaderRef"
|
||||
@@ -586,11 +583,7 @@
|
||||
:prop="`purchaseinventoryList.${scope.$index}.manufacturerText`"
|
||||
:rules="tableRules.manufacturerText"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<el-input v-model="scope.row.manufacturer" placeholder="" disabled />
|
||||
=======
|
||||
<el-input v-model="scope.row.manufacturerText" placeholder="" disabled />
|
||||
>>>>>>> v1.3
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -710,22 +703,12 @@ import {
|
||||
addBatch, //保存批量盘点
|
||||
productStocktakingApproved,
|
||||
reject,
|
||||
<<<<<<< HEAD
|
||||
getpharmacyCabinetList
|
||||
} from "../components/api";
|
||||
import PopoverList from "@/components/OpenHis/popoverList/index.vue";
|
||||
import MedicineList from "../components/medicineList.vue";
|
||||
import TraceNoDialog from '@/components/OpenHis/TraceNoDialog/index.vue'
|
||||
import { formatDate,formatDateymd } from "@/utils/index";
|
||||
import { ref } from "vue";
|
||||
=======
|
||||
} from '../components/api';
|
||||
import PopoverList from '@/components/OpenHis/popoverList/index.vue';
|
||||
import MedicineList from '../components/medicineList.vue';
|
||||
import TraceNoDialog from '@/components/OpenHis/TraceNoDialog/index.vue';
|
||||
import { formatDate, formatDateymd } from '@/utils/index';
|
||||
import { ref } from 'vue';
|
||||
>>>>>>> v1.3
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
@@ -1576,11 +1559,7 @@ function getDetailAll() {
|
||||
// form.purchaseinventoryList[index].statusMaxvalue = false
|
||||
e.volume = e.totalVolume;
|
||||
e.name = e.itemName;
|
||||
<<<<<<< HEAD
|
||||
e.manufacturer = e.manufacturerText;
|
||||
=======
|
||||
e.manufacturerText = e.manufacturerText;
|
||||
>>>>>>> v1.3
|
||||
if (e.purposeTypeEnum) {
|
||||
warehous_type.value.map((item) => {
|
||||
if (item.value == e.purposeTypeEnum) {
|
||||
@@ -1710,11 +1689,7 @@ function getDetail(type) {
|
||||
form.purchaseinventoryList[index].statusMaxvalue = false;
|
||||
e.volume = e.totalVolume;
|
||||
e.name = e.itemName;
|
||||
<<<<<<< HEAD
|
||||
e.manufacturer = e.manufacturerText;
|
||||
=======
|
||||
e.manufacturerText = e.manufacturerText;
|
||||
>>>>>>> v1.3
|
||||
if (e.purposeTypeEnum) {
|
||||
warehous_type.value.map((item) => {
|
||||
if (item.value == e.purposeTypeEnum) {
|
||||
@@ -2097,11 +2072,7 @@ function handleReject() {
|
||||
store.clearCurrentDataPLPDALL();
|
||||
// 跳转到审核页面
|
||||
router.replace({
|
||||
<<<<<<< HEAD
|
||||
path: '/aaaa/medicationmanagement/billapproval',
|
||||
=======
|
||||
path: '/aaaa/billapproval',
|
||||
>>>>>>> v1.3
|
||||
query: { type: 'chkstockBatch' },
|
||||
});
|
||||
}
|
||||
@@ -2118,11 +2089,7 @@ function handelApply() {
|
||||
store.clearCurrentDataPLPDALL();
|
||||
// 跳转到审核页面
|
||||
router.replace({
|
||||
<<<<<<< HEAD
|
||||
path: '/aaaa/medicationmanagement/billapproval',
|
||||
=======
|
||||
path: '/aaaa/billapproval',
|
||||
>>>>>>> v1.3
|
||||
query: { type: 'chkstockBatch' },
|
||||
});
|
||||
}
|
||||
@@ -2199,13 +2166,9 @@ function getStockReceiptTypeList() {
|
||||
console.log('详情页查询下拉树response1111111', response);
|
||||
|
||||
// categoryListOptions.value = response.data.categoryListOptions; // 药品类型
|
||||
<<<<<<< HEAD
|
||||
profitReasonOptions.value = response.data.profitReasonOptions; // 盈亏原因
|
||||
=======
|
||||
profitReasonOptions.value = response.data.profitReasonOptions; // 盈亏原因
|
||||
// receiptHeaderForm.purposeTypeEnum = warehous_type.value[0].value // 仓库类型默认值
|
||||
// handleChangePurposeTypeEnum(receiptHeaderForm.purposeTypeEnum)
|
||||
>>>>>>> v1.3
|
||||
// cabinetListOptionsBk.value = response.data.purposeTypeListOptions; // 盘点仓库列表(未过滤)
|
||||
|
||||
// purposeTypeListOptions.value = cabinetListOptionsBk.value.filter(item => item.formEnum === receiptHeaderForm.purposeTypeEnum) // 盘点仓库列表
|
||||
@@ -2316,31 +2279,6 @@ function totalQuantityChange(rowData, index, value) {
|
||||
editBatchTransfer(index);
|
||||
}
|
||||
// 切换仓库类型获取药房/药库列表 目的仓库切换
|
||||
<<<<<<< HEAD
|
||||
function handleChangePurposeTypeEnum(value,type) {
|
||||
// 确保value是数字类型
|
||||
const numValue = Number(value);
|
||||
|
||||
// 清空已选择的盘点仓库
|
||||
if(!route.query.supplyBusNo&&!type){
|
||||
receiptHeaderForm.purposeLocationId = ''
|
||||
receiptHeaderForm.purposeLocationId1 = ''
|
||||
}
|
||||
|
||||
// 根据选择的仓库类型调用不同的API获取对应类型的仓库列表
|
||||
if (numValue === 16 || numValue === 11) {
|
||||
// 使用统一接口获取药房或药库列表
|
||||
getpharmacyCabinetList().then((res) => {
|
||||
// 过滤出符合当前类型的仓库列表
|
||||
const filteredList = res.data.filter(item => item.formEnum === numValue);
|
||||
purposeTypeListOptions.value = filteredList;
|
||||
// 调用getinitValue设置默认仓库和货位
|
||||
getinitValue();
|
||||
}).catch((error) => {
|
||||
console.error('获取仓库列表失败:', error);
|
||||
purposeTypeListOptions.value = [];
|
||||
freightListOptions.value = [];
|
||||
=======
|
||||
function handleChangePurposeTypeEnum(value, type) {
|
||||
if (value == 16) {
|
||||
getPharmacyList().then((res) => {
|
||||
@@ -2359,7 +2297,6 @@ function handleChangePurposeTypeEnum(value, type) {
|
||||
receiptHeaderForm.purposeLocationId1 = '';
|
||||
}
|
||||
// getinitValue()
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
} else if (numValue === 17) {
|
||||
// 处理耗材库类型
|
||||
@@ -2443,8 +2380,6 @@ function handleTraceNo(value, row, index) {
|
||||
}
|
||||
getStockReceiptTypeList(); // 详情页查询下拉树结构
|
||||
getbusNo(); // 单据号取得
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
// 导出
|
||||
const exportRequiredParams = ref({
|
||||
@@ -2461,7 +2396,6 @@ function handleExport() {
|
||||
`批量盘点单明细_${proxy.formatDateStr(new Date(), 'YYYY-MM-DD')}.xlsx`
|
||||
);
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
|
||||
@@ -6,28 +6,6 @@
|
||||
"paperType": "自定义",
|
||||
"height": 130,
|
||||
"width": 210,
|
||||
<<<<<<< HEAD
|
||||
"paperHeader": 0,
|
||||
"paperFooter": 365.6692913385827,
|
||||
"paperNumberDisabled": true,
|
||||
"paperNumberContinue": true,
|
||||
"expandCss": "",
|
||||
"overPrintOptions": {
|
||||
"content": "",
|
||||
"opacity": 0.7,
|
||||
"type": 1
|
||||
},
|
||||
"watermarkOptions": {
|
||||
"content": "",
|
||||
"fillStyle": "rgba(184, 184, 184, 0.3)",
|
||||
"fontSize": "14px",
|
||||
"rotate": 25,
|
||||
"width": 200,
|
||||
"height": 200,
|
||||
"timestamp": false,
|
||||
"format": "YYYY-MM-DD HH:mm"
|
||||
},
|
||||
=======
|
||||
"paperHeader": 73.5,
|
||||
"paperFooter": 337.5,
|
||||
"paperNumberDisabled": true,
|
||||
@@ -35,7 +13,6 @@
|
||||
"expandCss": "",
|
||||
"overPrintOptions": {},
|
||||
"watermarkOptions": {},
|
||||
>>>>>>> v1.3
|
||||
"panelLayoutOptions": {},
|
||||
"printElements": [
|
||||
{
|
||||
@@ -44,11 +21,7 @@
|
||||
"top": 12,
|
||||
"height": 12,
|
||||
"width": 115.5,
|
||||
<<<<<<< HEAD
|
||||
"title": "长春大学医院盘点单",
|
||||
=======
|
||||
"title": "长春市朝阳区中医院医院盘点单",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontSize": 12,
|
||||
@@ -99,11 +72,7 @@
|
||||
"top": 33,
|
||||
"height": 9.75,
|
||||
"width": 120,
|
||||
<<<<<<< HEAD
|
||||
"title": "机构:长春大学医院",
|
||||
=======
|
||||
"title": "机构:长春市朝阳区中医院医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"qrCodeLevel": 0
|
||||
@@ -149,11 +118,7 @@
|
||||
"tableQRCodeLevel": 0,
|
||||
"tableSummaryTitle": true,
|
||||
"tableSummary": "",
|
||||
<<<<<<< HEAD
|
||||
"width": 50.418660151829066,
|
||||
=======
|
||||
"width": 59.68821015182906,
|
||||
>>>>>>> v1.3
|
||||
"field": "name",
|
||||
"checked": true,
|
||||
"columnId": "name",
|
||||
@@ -168,11 +133,7 @@
|
||||
"tableQRCodeLevel": 0,
|
||||
"tableSummaryTitle": true,
|
||||
"tableSummary": "",
|
||||
<<<<<<< HEAD
|
||||
"width": 47.38277249096388,
|
||||
=======
|
||||
"width": 46.07372249096389,
|
||||
>>>>>>> v1.3
|
||||
"field": "volume",
|
||||
"checked": true,
|
||||
"columnId": "volume",
|
||||
@@ -187,17 +148,10 @@
|
||||
"tableQRCodeLevel": 0,
|
||||
"tableSummaryTitle": true,
|
||||
"tableSummary": "",
|
||||
<<<<<<< HEAD
|
||||
"width": 70.82692033621548,
|
||||
"field": "manufacturer",
|
||||
"checked": true,
|
||||
"columnId": "manufacturer",
|
||||
=======
|
||||
"width": 62.86642033621548,
|
||||
"field": "manufacturerText",
|
||||
"checked": true,
|
||||
"columnId": "manufacturerText",
|
||||
>>>>>>> v1.3
|
||||
"fixed": false,
|
||||
"rowspan": 1,
|
||||
"colspan": 1
|
||||
@@ -313,8 +267,6 @@
|
||||
"colspan": 1
|
||||
},
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"title": "厂家/产地",
|
||||
"titleSync": false,
|
||||
"halign": "center",
|
||||
@@ -330,7 +282,6 @@
|
||||
"colspan": 1
|
||||
},
|
||||
{
|
||||
>>>>>>> v1.3
|
||||
"title": "盘前库存",
|
||||
"titleSync": false,
|
||||
"align": "center",
|
||||
@@ -461,31 +412,8 @@
|
||||
},
|
||||
{
|
||||
"options": {
|
||||
<<<<<<< HEAD
|
||||
"left": 480,
|
||||
"top": 130.5,
|
||||
"height": 12,
|
||||
"width": 109.5,
|
||||
"title": "盈亏合计",
|
||||
"field": "totalAmount",
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"qrCodeLevel": 0,
|
||||
"formatter": "function(title,value,options,templateData,target,paperNo){\n return value + ' 元'\n}"
|
||||
},
|
||||
"printElementType": {
|
||||
"title": "文本",
|
||||
"type": "text"
|
||||
}
|
||||
},
|
||||
{
|
||||
"options": {
|
||||
"left": 261.24609375,
|
||||
"top": 130.74609375,
|
||||
=======
|
||||
"left": 456,
|
||||
"top": 343.5,
|
||||
>>>>>>> v1.3
|
||||
"height": 12,
|
||||
"width": 109.5,
|
||||
"title": "制单人",
|
||||
@@ -502,8 +430,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
=======
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,114 +4,12 @@ import {parseStrEmpty} from '@/utils/openhis';
|
||||
// 查询盘点列表
|
||||
export function getStockTakeList (query) {
|
||||
return request ({
|
||||
<<<<<<< HEAD
|
||||
url: '/nurse-station/orgdevice-stocktake/summary-from',
|
||||
=======
|
||||
url: '/nurse-station/org-device-stockTake/summary-from',
|
||||
>>>>>>> v1.3
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// 盘点编辑页列表
|
||||
export function getstocktakingDetail (busNo) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/stocktaking-receipt',
|
||||
method: 'get',
|
||||
params: {busNo}, // 确保参数正确传递
|
||||
});
|
||||
}
|
||||
|
||||
// 添加/编辑入库单据
|
||||
export function addProductStocktaking (data) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/product-stocktaking',
|
||||
method: 'put',
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询盘点列表初始化查询区数据
|
||||
export function getInit () {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/init',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
// 查询盘点详情初始化查询区数据
|
||||
export function getDetailInit () {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/detail-init',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
// 生成批量盘点
|
||||
export function getStocktakingReceiptBatch () {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/stocktaking-receipt-batch',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
//保存批量盘点
|
||||
export function addBatch (data) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/stocktaking-receipt-addBatch',
|
||||
method: 'put',
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除单据
|
||||
export function delProductStocktaking (param) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/product-stocktaking?supplyRequestIds=' +
|
||||
param,
|
||||
method: 'delete',
|
||||
});
|
||||
}
|
||||
|
||||
// 提交审批
|
||||
export function submitApproval (busNo) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/submit-approval',
|
||||
method: 'put',
|
||||
data: busNo,
|
||||
});
|
||||
}
|
||||
|
||||
// 撤回审批
|
||||
export function withdrawApproval (busNo) {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/withdraw-approval',
|
||||
method: 'put',
|
||||
data: busNo,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取药品目录
|
||||
export function getMedicineList (queryParams) {
|
||||
return request ({
|
||||
url: '/app-common/inventory-item',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取药品目录
|
||||
export function getCount (queryParams) {
|
||||
return request ({
|
||||
url: '/inventory-manage/purchase/inventory-item-info',
|
||||
method: 'get',
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
// 获取药房列表
|
||||
export function getPharmacyList () {
|
||||
return request ({
|
||||
@@ -127,13 +25,6 @@ export function getDispensaryList () {
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
export function stocktakingReceiptAuto () {
|
||||
return request ({
|
||||
url: '/inventory-manage/stocktaking/stocktaking-receipt-auto',
|
||||
method: 'get',
|
||||
=======
|
||||
// 获取药品目录
|
||||
export function getMedicineList (queryParams) {
|
||||
return request ({
|
||||
@@ -148,6 +39,5 @@ export function saveOrgDeviceSummary (data) {
|
||||
url: '/nurse-station/org-device-stockTake/org-device-summary',
|
||||
method: 'put',
|
||||
data,
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
|
||||
@@ -35,11 +35,7 @@
|
||||
align="center"
|
||||
prop="doseUnitCode_dictText"
|
||||
/> -->
|
||||
<<<<<<< HEAD
|
||||
<el-table-column label="生产厂家" align="center" prop="manufacturer" />
|
||||
=======
|
||||
<el-table-column label="生产厂家" align="center" prop="manufacturerText" />
|
||||
>>>>>>> v1.3
|
||||
<el-table-column
|
||||
label="编码"
|
||||
align="center"
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<<<<<<< HEAD
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
|
||||
=======
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :rules="rules">
|
||||
>>>>>>> v1.3
|
||||
<el-form-item label="项目名称" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
@@ -14,11 +10,7 @@
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="仓库类型" prop="purposeTypeEnum">
|
||||
=======
|
||||
<el-form-item label="仓库" prop="purposeTypeEnum">
|
||||
>>>>>>> v1.3
|
||||
<el-select
|
||||
v-model="queryParams.purposeTypeEnum"
|
||||
placeholder="请选择"
|
||||
@@ -26,10 +18,7 @@
|
||||
filterable
|
||||
style="width: 200px"
|
||||
@change="handleChangePurposeTypeEnum"
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
@keyup.enter="handleQuery"
|
||||
>>>>>>> v1.3
|
||||
>
|
||||
<el-option
|
||||
v-for="item in warehous_type"
|
||||
@@ -39,34 +28,18 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="盘点仓库" prop="purposeLocationId">
|
||||
<el-select
|
||||
v-model="queryParams.purposeLocationId"
|
||||
=======
|
||||
<el-form-item label="盘点仓库" prop="sourceLocationId">
|
||||
<el-select
|
||||
v-model="queryParams.sourceLocationId"
|
||||
>>>>>>> v1.3
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 200px"
|
||||
<<<<<<< HEAD
|
||||
@change="handleCabinetChange(receiptHeaderForm.purposeLocationId)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ id: 1, name: '仓库1' },
|
||||
{ id: 2, name: '仓库2' },
|
||||
]"
|
||||
=======
|
||||
:disabled="!queryParams.purposeTypeEnum"
|
||||
@keyup.enter="handleQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in purposeTypeListOptions"
|
||||
>>>>>>> v1.3
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
@@ -81,19 +54,6 @@
|
||||
filterable
|
||||
style="width: 200px"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ id: 1, name: '货位1' },
|
||||
{ id: 2, name: '货位2' },
|
||||
]"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
=======
|
||||
<el-option v-for="item in []" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -108,14 +68,11 @@
|
||||
format="YYYY-MM-DD"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
>>>>>>> v1.3
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
@@ -129,17 +86,13 @@
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
>>>>>>> v1.3
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="dataList"
|
||||
@selection-change="handleSelectionChange"
|
||||
height="calc(100vh - 250px)"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-table-column type="selection" width="55" align="center" fixed></el-table-column>
|
||||
>>>>>>> v1.3
|
||||
<el-table-column
|
||||
label="项目"
|
||||
align="center"
|
||||
@@ -149,16 +102,6 @@
|
||||
fixed
|
||||
></el-table-column>
|
||||
<el-table-column label="规格" align="center" prop="totalVolume" />
|
||||
<<<<<<< HEAD
|
||||
<el-table-column label="厂家/产地" align="center" prop="manufacturer" show-overflow-tooltip />
|
||||
<el-table-column label="产品批号" align="center" prop="lotNumber" />
|
||||
<el-table-column label="单价" align="center" key="unit" prop="unitPrice" />
|
||||
<el-table-column label="发放数量" align="center" prop="dispenseQuantity" />
|
||||
<el-table-column label="库存数量" align="center" prop="quantity" />
|
||||
<el-table-column label="盈亏数量" align="center" prop="itemQuantity">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.itemQuantity" :input-style="{ textAlign: 'center' }" type="number" />
|
||||
=======
|
||||
<el-table-column label="厂家/产地" align="center" prop="manufacturerText" show-overflow-tooltip />
|
||||
<el-table-column label="产品批号" align="center" prop="lotNumber" />
|
||||
<el-table-column label="单价(元)" align="center" key="unit" prop="unitPrice" />
|
||||
@@ -188,7 +131,6 @@
|
||||
<el-table-column label="盈亏数量" align="center" prop="profitLoss">
|
||||
<template #default="scope">
|
||||
{{ calcProfitLoss(scope.row) }}
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" align="center" prop="unitCode_dictText" />
|
||||
@@ -197,14 +139,9 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
<<<<<<< HEAD
|
||||
size="mini"
|
||||
type="text"
|
||||
=======
|
||||
size="small"
|
||||
type="primary"
|
||||
link
|
||||
>>>>>>> v1.3
|
||||
icon="Check"
|
||||
@click="handleSave(scope.row)"
|
||||
v-hasPermi="['chkstock:partDeptDevice:edit']"
|
||||
@@ -216,27 +153,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
<<<<<<< HEAD
|
||||
import { ref, reactive, toRaw, computed, watch, onMounted } from 'vue';
|
||||
const { proxy } = getCurrentInstance();
|
||||
import { getStockTakeList } from './components/api.js';
|
||||
const { warehous_type } = proxy.useDict('warehous_type');
|
||||
const dataList = ref([]);
|
||||
const queryParams = reactive({
|
||||
// pageNo: 1,
|
||||
// pageSize: 10,
|
||||
});
|
||||
const loading = ref(false);
|
||||
const showSearch = ref(true);
|
||||
const total = ref(0);
|
||||
// 获取列表
|
||||
const getList = () => {
|
||||
loading.value = true;
|
||||
getStockTakeList(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
dataList.value = res.data;
|
||||
total.value = res.data.length;
|
||||
=======
|
||||
import { ref, reactive, getCurrentInstance, onMounted } from 'vue';
|
||||
import {
|
||||
getStockTakeList,
|
||||
@@ -271,33 +187,12 @@ const getList = () => {
|
||||
getStockTakeList(params).then((res) => {
|
||||
loading.value = false;
|
||||
dataList.value = res.data;
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
};
|
||||
// 搜索
|
||||
const handleQuery = () => {
|
||||
getList();
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
// 重置
|
||||
const resetQuery = () => {
|
||||
queryParams.value = {};
|
||||
handleQuery();
|
||||
};
|
||||
// 重置
|
||||
const reset = () => {};
|
||||
|
||||
// 多选
|
||||
const handleSelectionChange = (selection) => {};
|
||||
// 保存
|
||||
const handleSave = (row) => {
|
||||
console.log(row);
|
||||
// 校验盈亏数量
|
||||
if (row.itemQuantity == '' || row.itemQuantity == null) {
|
||||
proxy.$modal.msgWarning('盈亏数量不能为空');
|
||||
return;
|
||||
}
|
||||
=======
|
||||
|
||||
// 重置
|
||||
const resetQuery = () => {
|
||||
@@ -367,7 +262,6 @@ const handleSave = (row) => {
|
||||
}
|
||||
|
||||
const payload = buildSummaryPayload(targetRows);
|
||||
>>>>>>> v1.3
|
||||
proxy.$modal
|
||||
.confirm('确定保存吗?', '保存', {
|
||||
confirmButtonText: '保存',
|
||||
@@ -375,15 +269,6 @@ const handleSave = (row) => {
|
||||
type: 'warning',
|
||||
})
|
||||
.then(() => {
|
||||
<<<<<<< HEAD
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
getList();
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
const handleChangePurposeTypeEnum = (val) => {};
|
||||
const handleCabinetChange = (val) => {};
|
||||
=======
|
||||
saveOrgDeviceSummary(payload).then(() => {
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
getList();
|
||||
@@ -407,7 +292,6 @@ const handleChangePurposeTypeEnum = (val) => {
|
||||
getList();
|
||||
};
|
||||
|
||||
>>>>>>> v1.3
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -33,11 +33,7 @@
|
||||
"top": 13.5,
|
||||
"height": 12,
|
||||
"width": 75,
|
||||
<<<<<<< HEAD
|
||||
"title": "长春大学医院",
|
||||
=======
|
||||
"title": "长春市朝阳区中医院医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"fontSize": 12,
|
||||
@@ -88,11 +84,7 @@
|
||||
"top": 33,
|
||||
"height": 9.75,
|
||||
"width": 120,
|
||||
<<<<<<< HEAD
|
||||
"title": "机构:长春大学医院",
|
||||
=======
|
||||
"title": "机构:长春市朝阳区中医院医院",
|
||||
>>>>>>> v1.3
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
"qrCodeLevel": 0
|
||||
|
||||
@@ -39,17 +39,9 @@
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<<<<<<< HEAD
|
||||
<el-button type="primary" icon="View" @click="handlePrintPreview">
|
||||
预览单据
|
||||
</el-button>
|
||||
<el-button type="success" plain icon="Printer" @click="handlePrint">
|
||||
打印单据
|
||||
=======
|
||||
<el-button type="primary" plain icon="Printer" @click="handlePrint"> 打印单据 </el-button>
|
||||
<el-button type="primary" plain @click="handleExport" v-if="viewStatus == 'view'">
|
||||
导出
|
||||
>>>>>>> v1.3
|
||||
</el-button>
|
||||
<el-form
|
||||
:model="receiptHeaderForm"
|
||||
@@ -260,15 +252,7 @@
|
||||
:prop="`purchaseinventoryList.${scope.$index}.manufacturerText`"
|
||||
:rules="tableRules.manufacturerText"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<el-input
|
||||
v-model="scope.row.manufacturerText"
|
||||
placeholder=""
|
||||
disabled
|
||||
/>
|
||||
=======
|
||||
<el-input v-model="scope.row.manufacturerText" placeholder="" disabled />
|
||||
>>>>>>> v1.3
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -792,18 +776,6 @@ const data = reactive({
|
||||
medicationType: [{ required: true, message: "请选择药品类型", trigger: "change" }],
|
||||
},
|
||||
tableRules: {
|
||||
<<<<<<< HEAD
|
||||
itemId: [{ required: true, message: "项目不能为空", trigger: "blur" }],
|
||||
statusEnum_enumText: [{ required: true, message: "规格不能为空", trigger: "blur" }],
|
||||
unitCode: [{ required: true, message: "计量单位不能为空", trigger: "blur" }],
|
||||
purposeLocationId: [{ required: true, message: "目的仓库不能为空", trigger: "blur" }],
|
||||
lotNumber: [{ required: true, message: "产品批号不能为空", trigger: "change" }],
|
||||
startTime: [{ required: true, message: "开始时间不能为空", trigger: "blur" }],
|
||||
endTime: [{ required: true, message: "结束时间不能为空", trigger: "blur" }],
|
||||
price: [{ required: true, message: "单价不能为空", trigger: "blur" }],
|
||||
invoiceNo: [{ required: true, message: "发票号不能为空", trigger: "blur" }],
|
||||
totalPrice: [{ required: true, message: "总价不能为空", trigger: "blur" }],
|
||||
=======
|
||||
itemId: [{ required: true, message: '项目不能为空', trigger: 'blur' }],
|
||||
statusEnum_enumText: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
|
||||
unitCode: [{ required: true, message: '计量单位不能为空', trigger: 'blur' }],
|
||||
@@ -814,7 +786,6 @@ const data = reactive({
|
||||
price: [{ required: true, message: '单价不能为空', trigger: 'blur' }],
|
||||
invoiceNo: [{ required: true, message: '发票号不能为空', trigger: 'blur' }],
|
||||
totalPrice: [{ required: true, message: '总价不能为空', trigger: 'blur' }],
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
});
|
||||
|
||||
@@ -905,26 +876,16 @@ onUnmounted(() => {
|
||||
|
||||
function addNewRow() {
|
||||
// 先校验表头表单
|
||||
<<<<<<< HEAD
|
||||
proxy.$refs["receiptHeaderRef"].validate((valid) => {
|
||||
=======
|
||||
proxy.$refs['receiptHeaderRef'].validate((valid) => {
|
||||
>>>>>>> v1.3
|
||||
if (valid) {
|
||||
// 检查表格中是否有未保存的行
|
||||
const unsavedRows = form.purchaseinventoryList.filter((row) => !row.isSave);
|
||||
|
||||
if (unsavedRows.length > 0) {
|
||||
// 校验表格中未保存的行
|
||||
<<<<<<< HEAD
|
||||
proxy.$refs["formRef"].validate((tableValid) => {
|
||||
if (!tableValid) {
|
||||
proxy.$message.warning("请先完善当前行的必填信息后再添加新行");
|
||||
=======
|
||||
proxy.$refs['formRef'].validate((tableValid) => {
|
||||
if (!tableValid) {
|
||||
proxy.$message.warning('请先完善当前行的必填信息后再添加新行');
|
||||
>>>>>>> v1.3
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -936,39 +897,6 @@ function addNewRow() {
|
||||
|
||||
// 检查必填字段
|
||||
if (!row.itemId || !row.name) {
|
||||
<<<<<<< HEAD
|
||||
errors.push("项目");
|
||||
}
|
||||
if (!row.volume) {
|
||||
errors.push("规格");
|
||||
}
|
||||
if (!row.unitCode) {
|
||||
errors.push("计量单位");
|
||||
}
|
||||
if (!row.purposeLocationId) {
|
||||
errors.push("仓库");
|
||||
}
|
||||
if (!row.itemQuantity || row.itemQuantity === "" || row.itemQuantity === 0) {
|
||||
errors.push("采购数量");
|
||||
}
|
||||
if (!row.lotNumber) {
|
||||
errors.push("产品批号");
|
||||
}
|
||||
if (!row.startTime) {
|
||||
errors.push("生产日期");
|
||||
}
|
||||
if (!row.endTime) {
|
||||
errors.push("有效期至");
|
||||
}
|
||||
if (!row.price || row.price === "" || row.price === 0) {
|
||||
errors.push("采购单价");
|
||||
}
|
||||
if (!row.invoiceNo || row.invoiceNo === "") {
|
||||
errors.push("发票号");
|
||||
}
|
||||
if (!row.totalPrice || row.totalPrice === "" || row.totalPrice === 0) {
|
||||
errors.push("合计金额");
|
||||
=======
|
||||
errors.push('项目');
|
||||
}
|
||||
if (!row.volume) {
|
||||
@@ -1000,17 +928,12 @@ function addNewRow() {
|
||||
}
|
||||
if (!row.totalPrice || row.totalPrice === '' || row.totalPrice === 0) {
|
||||
errors.push('合计金额');
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
if (errors.length > 0) {
|
||||
invalidRows.push({
|
||||
rowIndex: rowIndex + 1,
|
||||
<<<<<<< HEAD
|
||||
errors: errors.join("、"),
|
||||
=======
|
||||
errors: errors.join('、'),
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1018,40 +941,14 @@ function addNewRow() {
|
||||
if (invalidRows.length > 0) {
|
||||
const errorMsg = invalidRows
|
||||
.map((item) => `第${item.rowIndex}行缺少:${item.errors}`)
|
||||
<<<<<<< HEAD
|
||||
.join(";");
|
||||
proxy.$message.warning(errorMsg + ",请完善后再添加新行");
|
||||
=======
|
||||
.join(';');
|
||||
proxy.$message.warning(errorMsg + ',请完善后再添加新行');
|
||||
>>>>>>> v1.3
|
||||
return;
|
||||
}
|
||||
|
||||
// 所有校验通过,允许新增
|
||||
const newRow = {
|
||||
rowKey: Date.now(),
|
||||
<<<<<<< HEAD
|
||||
id: "",
|
||||
itemTable: "",
|
||||
itemQuantity: "",
|
||||
itemId: "",
|
||||
unitCode: "",
|
||||
remake: "",
|
||||
supplierId: "",
|
||||
purposeTypeEnum: "",
|
||||
purposeLocationId: null,
|
||||
purposeLocationStoreId: null,
|
||||
practitionerId: "",
|
||||
traceNo: "",
|
||||
invoiceNo: "-",
|
||||
startTime: "",
|
||||
endTime: "",
|
||||
price: "",
|
||||
totalPrice: "",
|
||||
sellPrice: "",
|
||||
minSellPrice: "",
|
||||
=======
|
||||
id: '',
|
||||
itemTable: '',
|
||||
itemQuantity: '',
|
||||
@@ -1071,7 +968,6 @@ function addNewRow() {
|
||||
totalPrice: '',
|
||||
sellPrice: '',
|
||||
minSellPrice: '',
|
||||
>>>>>>> v1.3
|
||||
unitList: {}, // 单位列表
|
||||
isEditing: true, // 标记当前行是否正在编辑
|
||||
error: false, // 新增 error 字段
|
||||
@@ -1084,27 +980,6 @@ function addNewRow() {
|
||||
// 没有未保存的行,直接新增
|
||||
const newRow = {
|
||||
rowKey: Date.now(),
|
||||
<<<<<<< HEAD
|
||||
id: "",
|
||||
itemTable: "",
|
||||
itemQuantity: "",
|
||||
itemId: "",
|
||||
unitCode: "",
|
||||
remake: "",
|
||||
supplierId: "",
|
||||
purposeTypeEnum: "",
|
||||
purposeLocationId: null,
|
||||
purposeLocationStoreId: null,
|
||||
practitionerId: "",
|
||||
traceNo: "",
|
||||
invoiceNo: "-",
|
||||
startTime: "",
|
||||
endTime: "",
|
||||
price: "",
|
||||
totalPrice: "",
|
||||
sellPrice: "",
|
||||
minSellPrice: "",
|
||||
=======
|
||||
id: '',
|
||||
itemTable: '',
|
||||
itemQuantity: '',
|
||||
@@ -1124,7 +999,6 @@ function addNewRow() {
|
||||
totalPrice: '',
|
||||
sellPrice: '',
|
||||
minSellPrice: '',
|
||||
>>>>>>> v1.3
|
||||
unitList: {}, // 单位列表
|
||||
isEditing: true, // 标记当前行是否正在编辑
|
||||
error: false, // 新增 error 字段
|
||||
@@ -1233,15 +1107,6 @@ function selectRow(rowValue, index) {
|
||||
form.purchaseinventoryList[index].unitCode = rowValue.unitCode;
|
||||
form.purchaseinventoryList[index].manufacturerText = rowValue.manufacturerText;
|
||||
form.purchaseinventoryList[index].partPercent = rowValue.partPercent;
|
||||
<<<<<<< HEAD
|
||||
form.purchaseinventoryList[index].invoiceNo = "-";
|
||||
form.purchaseinventoryList[index].price = (rowValue.purchaseAmount || 0).toFixed(2);
|
||||
price.value = (rowValue.purchaseAmount || 0).toFixed(2);
|
||||
form.purchaseinventoryList[index].unitList = rowValue.unitList[0];
|
||||
unitMap.value["unitCode"] = rowValue.unitCode;
|
||||
unitMap.value["minUnitCode"] = rowValue.minUnitCode;
|
||||
unitMap.value["currentCode"] = rowValue.unitCode;
|
||||
=======
|
||||
form.purchaseinventoryList[index].invoiceNo = '-';
|
||||
form.purchaseinventoryList[index].price = rowValue.purchaseAmount || 0;
|
||||
price.value = rowValue.purchaseAmount || 0;
|
||||
@@ -1249,7 +1114,6 @@ function selectRow(rowValue, index) {
|
||||
unitMap.value['unitCode'] = rowValue.unitCode;
|
||||
unitMap.value['minUnitCode'] = rowValue.minUnitCode;
|
||||
unitMap.value['currentCode'] = rowValue.unitCode;
|
||||
>>>>>>> v1.3
|
||||
form.purchaseinventoryList[index].itemQuantity = 0;
|
||||
form.purchaseinventoryList[index].totalPrice = 0;
|
||||
}
|
||||
@@ -1274,17 +1138,9 @@ function handleLocationClick(item, row, index) {
|
||||
row.unitList.minUnitCode_dictText
|
||||
) || 0;
|
||||
|
||||
<<<<<<< HEAD
|
||||
form.purchaseinventoryList[index].itemTable = res.data[0].itemTable || "";
|
||||
form.purchaseinventoryList[index].startTime =
|
||||
formatDateymd(res.data[0].productionDate) || "";
|
||||
form.purchaseinventoryList[index].endTime =
|
||||
formatDateymd(res.data[0].expirationDate) || "";
|
||||
=======
|
||||
form.purchaseinventoryList[index].itemTable = res.data[0].itemTable || '';
|
||||
form.purchaseinventoryList[index].startTime = formatDateymd(res.data[0].productionDate) || '';
|
||||
form.purchaseinventoryList[index].endTime = formatDateymd(res.data[0].expirationDate) || '';
|
||||
>>>>>>> v1.3
|
||||
startTimeOld.value = form.purchaseinventoryList[index].startTime
|
||||
? form.purchaseinventoryList[index].startTime
|
||||
: "";
|
||||
@@ -1510,11 +1366,7 @@ function addPurchaseinventorys(rowList) {
|
||||
}
|
||||
|
||||
function handleTraceNoInput(value, row) {
|
||||
<<<<<<< HEAD
|
||||
row.traceNo = value.concat(",");
|
||||
=======
|
||||
row.traceNo = value.concat(',');
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
/** 选择条数 */
|
||||
@@ -1794,16 +1646,6 @@ function formatPrintData() {
|
||||
),
|
||||
printDate: new Date().toLocaleString("zh-CN"),
|
||||
...receiptHeaderForm,
|
||||
<<<<<<< HEAD
|
||||
purchaseinventoryList: form.purchaseinventoryList.map((item, index) => ({
|
||||
...item,
|
||||
rowNumber: index + 1,
|
||||
itemQuantity: Number(item.itemQuantity) || 0,
|
||||
price: Number(item.price).toFixed(2),
|
||||
totalPrice: Number(item.totalPrice).toFixed(2),
|
||||
})),
|
||||
};
|
||||
=======
|
||||
purchaseinventoryList: form.purchaseinventoryList,
|
||||
});
|
||||
const printElements = templateJson;
|
||||
@@ -1812,7 +1654,6 @@ function formatPrintData() {
|
||||
printer: 'EPSON LQ-80KFII',
|
||||
title: '打印标题',
|
||||
}); //开始打印
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
function deleteSelectedRows() {
|
||||
@@ -1854,11 +1695,7 @@ function handleTotalAmount() {
|
||||
|
||||
/** 重置操作表单 */
|
||||
function reset() {
|
||||
<<<<<<< HEAD
|
||||
proxy.resetForm("receiptHeaderRef");
|
||||
=======
|
||||
proxy.resetForm('receiptHeaderRef');
|
||||
>>>>>>> v1.3
|
||||
form.purchaseinventoryList = [];
|
||||
// 完全重置所有表单字段
|
||||
Object.assign(receiptHeaderForm, {
|
||||
@@ -1967,13 +1804,8 @@ function handleReject() {
|
||||
store.clearCurrentData();
|
||||
// 跳转到审核页面
|
||||
router.replace({
|
||||
<<<<<<< HEAD
|
||||
path: "/aaaa/medicationmanagement/billapproval",
|
||||
query: { type: "purchaseDocument" },
|
||||
=======
|
||||
path: '/aaaa/billapproval',
|
||||
query: { type: 'purchaseDocument' },
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1989,13 +1821,8 @@ function handelApply() {
|
||||
store.clearCurrentData();
|
||||
// 跳转到审核页面
|
||||
router.replace({
|
||||
<<<<<<< HEAD
|
||||
path: "/aaaa/medicationmanagement/billapproval",
|
||||
query: { type: "purchaseDocument" },
|
||||
=======
|
||||
path: '/aaaa/billapproval',
|
||||
query: { type: 'purchaseDocument' },
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
@@ -653,11 +653,7 @@ function handleDelete(row) {
|
||||
return item.id;
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
console.log(ids, 'ids');
|
||||
=======
|
||||
const deleteIds = selectedRows.value.map((item) => item.supplierId).join(',');
|
||||
>>>>>>> v1.3
|
||||
proxy.$modal
|
||||
.confirm('是否确认删除以上数据?')
|
||||
.then(function () {
|
||||
|
||||
@@ -1,32 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="100px">
|
||||
<<<<<<< HEAD
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="basicInformationDetailsList"
|
||||
@selection-change="handleSelectionChange"
|
||||
height="calc(100vh - 300px)"
|
||||
>
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column
|
||||
label="序号"
|
||||
align="center"
|
||||
key="no"
|
||||
prop="no"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="数据上报日期"
|
||||
align="center"
|
||||
key="dataReportingDate"
|
||||
prop="dataReportingDate"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
=======
|
||||
<el-form-item label="药品类别:" prop="itemTypeCode">
|
||||
<el-select multiple v-model="queryParams.itemTypeCode" clearable style="width: 200px">
|
||||
<el-option v-for="category in itemList" :key="category.value" :label="category.label"
|
||||
@@ -58,68 +32,11 @@
|
||||
<el-table-column label="序号" align="center" key="no" prop="no" width="200" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="数据上报日期" align="center" key="dataReportingDate" prop="dataReportingDate" width="200"
|
||||
:show-overflow-tooltip="true">
|
||||
>>>>>>> v1.3
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.occurrenceTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- itemTable -->
|
||||
<<<<<<< HEAD
|
||||
<el-table-column
|
||||
label="省级行政区划代码"
|
||||
align="center"
|
||||
key="provinceCodes"
|
||||
prop="provinceCodes"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="组织机构代码"
|
||||
align="center"
|
||||
key="organizationCode"
|
||||
prop="organizationCode"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医疗机构代码"
|
||||
align="center"
|
||||
key="medicalCode"
|
||||
prop="medicalCode"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="组织机构名称"
|
||||
align="center"
|
||||
key="organizationName"
|
||||
prop="organizationName"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="年度药品总收入(元)"
|
||||
align="center"
|
||||
key="yearMedicineTotalRevenue"
|
||||
prop="yearMedicineTotalRevenue"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="实有床位数"
|
||||
align="center"
|
||||
key="actualBedsNo"
|
||||
prop="actualBedsNo"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
=======
|
||||
<el-table-column label="省级行政区划代码" align="center" key="provinceCodes" prop="provinceCodes" width="200"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="组织机构代码" align="center" key="organizationCode" prop="organizationCode" width="200"
|
||||
@@ -135,19 +52,10 @@
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
>>>>>>> v1.3
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="basicInformationDetails">
|
||||
<<<<<<< HEAD
|
||||
import {
|
||||
getReportBasicInformationDetails,
|
||||
} from './statisticalManagent';
|
||||
|
||||
const basicInformationDetailsList = ref([]);
|
||||
const loading = ref(true);
|
||||
=======
|
||||
import { ElMessage } from 'element-plus';
|
||||
import {
|
||||
getReportBasicInformationDetails,
|
||||
@@ -156,7 +64,6 @@ import { onMounted } from 'vue';
|
||||
|
||||
const basicInformationDetailsList = ref([]);
|
||||
const loading = ref(false);
|
||||
>>>>>>> v1.3
|
||||
const ids = ref([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
@@ -164,11 +71,7 @@ const total = ref(0);
|
||||
const approvalTime = ref([]);
|
||||
const supplierListOptions = ref([]);
|
||||
const locationIdList = ref([]);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
const occurrenceTime = ref([]);
|
||||
>>>>>>> v1.3
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
@@ -177,19 +80,13 @@ const data = reactive({
|
||||
searchKey: undefined,
|
||||
occurrenceTimeSTime: undefined,
|
||||
occurrenceTimeETime: undefined,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
occurrenceTime,
|
||||
itemTypeCode:[]
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
rules: {},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { fin_type_code } = proxy.useDict(
|
||||
'fin_type_code'
|
||||
@@ -211,19 +108,10 @@ onMounted(() => {
|
||||
console.log("fin_type_code:",fin_type_code);
|
||||
|
||||
})
|
||||
>>>>>>> v1.3
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
getReportBasicInformationDetails(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
<<<<<<< HEAD
|
||||
basicInformationDetailsList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
});
|
||||
}
|
||||
|
||||
getList();
|
||||
=======
|
||||
basicInformationDetailsList.value = res.data
|
||||
});
|
||||
}
|
||||
@@ -258,7 +146,6 @@ function handleExport() {
|
||||
`年度药品总收入_${proxy.formatDateStr(new Date(), 'YYYY-MM-DD')}.xlsx`
|
||||
);
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
|
||||
@@ -25,16 +25,6 @@
|
||||
v-model="queryParams.medCategoryCodes"
|
||||
placeholder="请选择药品类别"
|
||||
clearable
|
||||
<<<<<<< HEAD
|
||||
style="width: 150px"
|
||||
@change="handleQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="categoryCode in item_category_code"
|
||||
:key="categoryCode.value"
|
||||
:label="categoryCode.label"
|
||||
:value="categoryCode.value"
|
||||
=======
|
||||
multiple
|
||||
filterable
|
||||
style="width: 260px"
|
||||
@@ -47,7 +37,6 @@
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
>>>>>>> v1.3
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -100,11 +89,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="库存范围:" prop="zeroFlag">
|
||||
=======
|
||||
<el-form-item label="库存范围" prop="zeroFlag">
|
||||
>>>>>>> v1.3
|
||||
<el-select
|
||||
v-model="queryParams.zeroFlag"
|
||||
placeholder="请选择库存范围"
|
||||
@@ -120,11 +105,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="仓库药房:" prop="locationId">
|
||||
=======
|
||||
<el-form-item label="仓库药房" prop="locationId">
|
||||
>>>>>>> v1.3
|
||||
<el-select
|
||||
v-model="locationId"
|
||||
placeholder="请选择仓库药房"
|
||||
@@ -141,11 +122,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
<el-form-item label="供应商:" prop="supplierId">
|
||||
=======
|
||||
<el-form-item label="供应商" prop="supplierId">
|
||||
>>>>>>> v1.3
|
||||
<el-select
|
||||
v-model="supplierId"
|
||||
placeholder="请选择供应商"
|
||||
@@ -162,8 +139,6 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<el-form-item label="备份日期" prop="backUpDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.backUpDate"
|
||||
@@ -174,7 +149,6 @@
|
||||
style="width: 150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
>>>>>>> v1.3
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
@@ -303,11 +277,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<span>{{ scope.row.purchasePrice?.toFixed(2) + ' 元' }}</span>
|
||||
=======
|
||||
<span>{{ scope.row.purchasePrice?.toFixed(3) + ' 元' }}</span>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -320,11 +290,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<span>{{ scope.row.salePrice?.toFixed(2) + ' 元' }}</span>
|
||||
=======
|
||||
<span>{{ scope.row.salePrice?.toFixed(3) + ' 元' }}</span>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -337,11 +303,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<span>{{ scope.row.totalPurchasePrice?.toFixed(2) + ' 元' }}</span>
|
||||
=======
|
||||
<span>{{ scope.row.totalPurchasePrice?.toFixed(3) + ' 元' }}</span>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -354,11 +316,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<<<<<<< HEAD
|
||||
<span>{{ scope.row.totalSalePrice?.toFixed(2) + ' 元' }}</span>
|
||||
=======
|
||||
<span>{{ scope.row.totalSalePrice?.toFixed(3) + ' 元' }}</span>
|
||||
>>>>>>> v1.3
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -508,31 +466,18 @@ import {
|
||||
cancelSupply,
|
||||
stopSupply,
|
||||
productPageTotal,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
productBackupPageTotal,
|
||||
getproductReturnBackUpPage,
|
||||
>>>>>>> v1.3
|
||||
} from './statisticalManagent';
|
||||
import traceabilityCodeManagement from './traceabilityCodeManagement.vue';
|
||||
import { formatDateStr } from '@/utils/index';
|
||||
import { getSupplierList } from '@/api/public';
|
||||
import { useStore } from '@/store/store';
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
import { computed, watch } from 'vue';
|
||||
>>>>>>> v1.3
|
||||
const store = useStore();
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
<<<<<<< HEAD
|
||||
const { item_category_code, inventory_range } = proxy.useDict(
|
||||
'item_category_code',
|
||||
'inventory_range'
|
||||
);
|
||||
|
||||
=======
|
||||
const { item_category_code, inventory_range, device_category_code, med_category_code } =
|
||||
proxy.useDict(
|
||||
'item_category_code',
|
||||
@@ -546,7 +491,6 @@ const medCategoryCodeOptions = computed(() => {
|
||||
const deviceCategoryCodeOptions = computed(() => {
|
||||
return [{ value: 'all', label: '全部' }, ...device_category_code.value];
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
const purchaseinventoryList = ref([]);
|
||||
const visible = ref(false);
|
||||
const recordInfo = ref({});
|
||||
@@ -597,9 +541,6 @@ watch(
|
||||
},
|
||||
{ immediate: true } // 修正拼写错误
|
||||
);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
watch(
|
||||
() => queryParams.value.backUpDate,
|
||||
(newValue, oldValue) => {
|
||||
@@ -648,7 +589,6 @@ function handleChangeDeviceCategoryCode(value) {
|
||||
queryParams.value.devCategoryCodes = value || [];
|
||||
}
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
function getPharmacyCabinetLists() {
|
||||
getPharmacyCabinetList().then((response) => {
|
||||
locationIdList.value = response.data;
|
||||
@@ -660,18 +600,6 @@ function getPharmacyCabinetLists() {
|
||||
chrgitmLv_enumTextOptions.value = response.data.chrgitmLvOptions;
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
/** 查询调拨管理项目列表 */
|
||||
function getList() {
|
||||
console.log(store.remainingDays, '1');
|
||||
|
||||
loading.value = true;
|
||||
salePriceTotal.value = 0;
|
||||
priceTotal.value = 0;
|
||||
queryParams.value.locationIds = locationId.value.join(',');
|
||||
queryParams.value.supplierIds = supplierId.value.join(',');
|
||||
getproductReturnPage(queryParams.value).then((res) => {
|
||||
=======
|
||||
/** 查询备份日期库存明细列表 */
|
||||
function getBackUpList() {
|
||||
loading.value = true;
|
||||
@@ -695,7 +623,6 @@ function getBackUpList() {
|
||||
backUpDate: undefined,
|
||||
};
|
||||
getproductReturnBackUpPage(params).then((res) => {
|
||||
>>>>>>> v1.3
|
||||
loading.value = false;
|
||||
purchaseinventoryList.value = res.data.records;
|
||||
if (purchaseinventoryList.value && purchaseinventoryList.value.length > 0) {
|
||||
@@ -707,9 +634,6 @@ function getBackUpList() {
|
||||
}
|
||||
total.value = res.data.total;
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
productPageTotal(queryParams.value).then((res) => {
|
||||
=======
|
||||
productBackupPageTotal(params).then((res) => {
|
||||
salePriceTotal.value = res.data.purchasePriceStatistics;
|
||||
priceTotal.value = res.data.salePriceStatistics;
|
||||
@@ -746,7 +670,6 @@ function getList() {
|
||||
total.value = res.data.total;
|
||||
});
|
||||
productPageTotal(params).then((res) => {
|
||||
>>>>>>> v1.3
|
||||
salePriceTotal.value = res.data.purchasePriceStatistics;
|
||||
priceTotal.value = res.data.salePriceStatistics;
|
||||
});
|
||||
|
||||
@@ -203,15 +203,11 @@
|
||||
show-summary 每页单独合计-->
|
||||
<el-table-column type="selection" width="60px" align="center" />
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 1 || inventoryScope == 3 || inventoryScope == 5"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 1 ||
|
||||
queryParams.inventoryScope == 3 ||
|
||||
queryParams.inventoryScope == 5
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="发药人"
|
||||
align="center"
|
||||
key="practitionerName"
|
||||
@@ -220,15 +216,11 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 1 || inventoryScope == 3 || inventoryScope == 5"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 1 ||
|
||||
queryParams.inventoryScope == 3 ||
|
||||
queryParams.inventoryScope == 5
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="发药单号"
|
||||
align="center"
|
||||
key="dispenseNo"
|
||||
@@ -237,17 +229,12 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 2 || inventoryScope == 4 || inventoryScope == 6"
|
||||
:label="inventoryScope == 2 ? '门诊号' : '住院号'"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 2 ||
|
||||
queryParams.inventoryScope == 4 ||
|
||||
queryParams.inventoryScope == 6
|
||||
"
|
||||
:label="queryParams.inventoryScope == 2 ? '门诊号' : '住院号'"
|
||||
>>>>>>> v1.3
|
||||
align="center"
|
||||
key="outpatientNo"
|
||||
prop="outpatientNo"
|
||||
@@ -261,15 +248,11 @@
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 2 || inventoryScope == 4 || inventoryScope == 6"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 2 ||
|
||||
queryParams.inventoryScope == 4 ||
|
||||
queryParams.inventoryScope == 6
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="处方号"
|
||||
align="center"
|
||||
key="prescriptionNo"
|
||||
@@ -278,15 +261,11 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 2 || inventoryScope == 4 || inventoryScope == 6"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 2 ||
|
||||
queryParams.inventoryScope == 4 ||
|
||||
queryParams.inventoryScope == 6
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="病人"
|
||||
align="center"
|
||||
key="patientName"
|
||||
@@ -295,15 +274,11 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 2 || inventoryScope == 4 || inventoryScope == 6"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 2 ||
|
||||
queryParams.inventoryScope == 4 ||
|
||||
queryParams.inventoryScope == 6
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="发药人"
|
||||
align="center"
|
||||
key="practitionerName"
|
||||
@@ -312,15 +287,11 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 2 || inventoryScope == 4 || inventoryScope == 6"
|
||||
=======
|
||||
v-if="
|
||||
queryParams.inventoryScope == 2 ||
|
||||
queryParams.inventoryScope == 4 ||
|
||||
queryParams.inventoryScope == 6
|
||||
"
|
||||
>>>>>>> v1.3
|
||||
label="发药单号"
|
||||
align="center"
|
||||
key="dispenseNo"
|
||||
@@ -337,11 +308,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 1 || inventoryScope == 3"
|
||||
=======
|
||||
v-if="queryParams.inventoryScope == 1 || queryParams.inventoryScope == 3"
|
||||
>>>>>>> v1.3
|
||||
label="药品编码"
|
||||
align="center"
|
||||
key="busNo"
|
||||
@@ -359,11 +326,7 @@
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
v-if="inventoryScope == 1 || inventoryScope == 3"
|
||||
=======
|
||||
v-if="queryParams.inventoryScope == 1 || queryParams.inventoryScope == 3"
|
||||
>>>>>>> v1.3
|
||||
label="医保编码"
|
||||
align="center"
|
||||
key="ybNo"
|
||||
@@ -541,10 +504,6 @@ const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const occurrenceTime = ref([]);
|
||||
const practitionerNameOptions = ref([]);
|
||||
<<<<<<< HEAD
|
||||
const inventoryScope = ref(1);
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
const locationIdList = ref([]);
|
||||
|
||||
const data = reactive({
|
||||
@@ -561,11 +520,8 @@ const data = reactive({
|
||||
// patientName: undefined,
|
||||
dispenseTimeSTime: undefined,
|
||||
dispenseTimeETime: undefined,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
inventoryScope: 1,
|
||||
flag: 2,
|
||||
>>>>>>> v1.3
|
||||
},
|
||||
rules: {},
|
||||
});
|
||||
@@ -580,16 +536,6 @@ watch(
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
<<<<<<< HEAD
|
||||
watch(
|
||||
() => inventoryScope.value,
|
||||
(newVlaue) => {
|
||||
inventoryScope.value = newVlaue;
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
=======
|
||||
>>>>>>> v1.3
|
||||
// 监听路由变化
|
||||
watch(
|
||||
() => route.query,
|
||||
@@ -611,11 +557,8 @@ watch(
|
||||
queryParams.value.dispenseTimeETime = newQuery.occurrenceTimeETime + ' 23:59:59';
|
||||
}
|
||||
queryParams.value.flag = 1;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
console.log('11111111111111');
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 执行查询
|
||||
getList();
|
||||
}
|
||||
@@ -667,13 +610,9 @@ const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
|
||||
// 合并一样的列住院号 outpatientNumber属性
|
||||
if (
|
||||
columnIndex === 1 &&
|
||||
<<<<<<< HEAD
|
||||
(inventoryScope.value == 2 || inventoryScope.value == 4 || inventoryScope.value == 6)
|
||||
=======
|
||||
(queryParams.value.inventoryScope == 2 ||
|
||||
queryParams.value.inventoryScope == 4 ||
|
||||
queryParams.value.inventoryScope == 6)
|
||||
>>>>>>> v1.3
|
||||
) {
|
||||
if (
|
||||
rowIndex === 0 ||
|
||||
@@ -757,18 +696,12 @@ const getSummaries = (param) => {
|
||||
};
|
||||
|
||||
function inventoryChange(val) {
|
||||
<<<<<<< HEAD
|
||||
inventoryScope.value = val;
|
||||
xiaojiTotal.value = [];
|
||||
purchaseinventoryList.value = [];
|
||||
=======
|
||||
xiaojiTotal.value = [];
|
||||
purchaseinventoryList.value = [];
|
||||
console.log('val=======>', val);
|
||||
|
||||
queryParams.value.flag = val == 1 || val == 2 ? 2 : 1;
|
||||
console.log('queryParams=======>', JSON.stringify(queryParams));
|
||||
>>>>>>> v1.3
|
||||
getList();
|
||||
}
|
||||
function getPharmacyCabinetLists() {
|
||||
@@ -801,196 +734,6 @@ function getPharmacyCabinetLists() {
|
||||
}
|
||||
/** 查询调拨管理项目列表 */
|
||||
function getList(type) {
|
||||
<<<<<<< HEAD
|
||||
if (type) {
|
||||
xiaojiTotal.value = [];
|
||||
purchaseinventoryList.value = [];
|
||||
}
|
||||
loading.value = true;
|
||||
// let queryParamsValues ={...queryParams.value}
|
||||
// delete queryParamsValues.inventoryScope
|
||||
if (inventoryScope.value == 1 || inventoryScope.value == 3 || inventoryScope.value == 5) {
|
||||
var dispensePrice = 0;
|
||||
var refundPrice = 0;
|
||||
getAmbPractitionerDetail(queryParams.value).then((res) => {
|
||||
purchaseinventoryList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
loading.value = false;
|
||||
if (purchaseinventoryList.value.length == 0) {
|
||||
return;
|
||||
}
|
||||
purchaseinventoryList.value.map((k) => {
|
||||
k.dispensePrice = k.dispensePrice || '0.00';
|
||||
k.refundPrice = k.refundPrice || '0.00';
|
||||
k.dispenseQuantity = k.dispenseQuantity
|
||||
? k.dispenseQuantity + k.unitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
k.refundQuantity = k.refundQuantity
|
||||
? k.refundQuantity + k.refundUnitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
if (total.value && total.value <= queryParams.value.pageSize) {
|
||||
dispensePrice += Number(k.dispensePrice);
|
||||
refundPrice += Number(k.refundPrice);
|
||||
}
|
||||
});
|
||||
// 1页数据
|
||||
if (total.value && total.value <= queryParams.value.pageSize) {
|
||||
dispensePrice = dispensePrice ? dispensePrice.toFixed(4) : dispensePrice;
|
||||
refundPrice = refundPrice ? refundPrice.toFixed(4) : refundPrice;
|
||||
let pageNoAll = total.value / queryParams.value.pageSize;
|
||||
if (Math.ceil(pageNoAll) == queryParams.value.pageNo) {
|
||||
purchaseinventoryList.value.push({
|
||||
practitionerName: '合计',
|
||||
dispensePrice: dispensePrice,
|
||||
refundPrice: refundPrice,
|
||||
});
|
||||
}
|
||||
}
|
||||
// 带分页数据
|
||||
if (total.value && total.value > queryParams.value.pageSize) {
|
||||
let queryParamsValue = {
|
||||
pageNo: 1,
|
||||
pageSize: total.value,
|
||||
};
|
||||
getAmbPractitionerDetail(queryParamsValue).then((res) => {
|
||||
purchaseinventoryListAll.value = res.data.records || [];
|
||||
if (purchaseinventoryListAll.value.length > 0) {
|
||||
purchaseinventoryListAll.value.map((k) => {
|
||||
k.dispensePrice = k.dispensePrice || '0.00';
|
||||
k.refundPrice = k.refundPrice || '0.00';
|
||||
k.dispenseQuantity = k.dispenseQuantity
|
||||
? k.dispenseQuantity + k.unitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
k.refundQuantity = k.refundQuantity
|
||||
? k.refundQuantity + k.refundUnitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
dispensePrice += Number(k.dispensePrice);
|
||||
refundPrice += Number(k.refundPrice);
|
||||
});
|
||||
dispensePrice = dispensePrice ? dispensePrice.toFixed(4) : dispensePrice;
|
||||
refundPrice = refundPrice ? refundPrice.toFixed(4) : refundPrice;
|
||||
let pageNoAll = total.value / queryParams.value.pageSize;
|
||||
if (Math.ceil(pageNoAll) == queryParams.value.pageNo) {
|
||||
purchaseinventoryList.value.push({
|
||||
practitionerName: '合计',
|
||||
dispensePrice: dispensePrice,
|
||||
refundPrice: refundPrice,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (inventoryScope.value == 2 || inventoryScope.value == 4 || inventoryScope.value == 6) {
|
||||
var dispensePrice2 = 0;
|
||||
var refundPrice2 = 0;
|
||||
getAmbMedicationDetail(queryParams.value).then((res) => {
|
||||
purchaseinventoryList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
if (purchaseinventoryList.value.length == 0) {
|
||||
return;
|
||||
}
|
||||
purchaseinventoryList.value.map((k) => {
|
||||
k.dispensePrice = k.dispensePrice || '0.00';
|
||||
k.refundPrice = k.refundPrice || '0.00';
|
||||
k.dispenseQuantity = k.dispenseQuantity
|
||||
? k.dispenseQuantity + k.unitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
k.refundQuantity = k.refundQuantity
|
||||
? k.refundQuantity + k.refundUnitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
if (total.value && total.value <= queryParams.value.pageSize) {
|
||||
dispensePrice2 += Number(k.dispensePrice);
|
||||
refundPrice2 += Number(k.refundPrice);
|
||||
}
|
||||
});
|
||||
// 1页数据
|
||||
if (total.value && total.value <= queryParams.value.pageSize) {
|
||||
dispensePrice2 = dispensePrice2 ? dispensePrice2.toFixed(4) : dispensePrice2;
|
||||
refundPrice2 = refundPrice2 ? refundPrice2.toFixed(4) : refundPrice2;
|
||||
let pageNoAll = total.value / queryParams.value.pageSize;
|
||||
if (Math.ceil(pageNoAll) == queryParams.value.pageNo) {
|
||||
purchaseinventoryList.value.push({
|
||||
prescriptionNo: '合计',
|
||||
dispensePrice: dispensePrice2,
|
||||
refundPrice: refundPrice2,
|
||||
});
|
||||
}
|
||||
}
|
||||
loading.value = false;
|
||||
// 带分页数据
|
||||
if (total.value && total.value > queryParams.value.pageSize) {
|
||||
let queryParamsValue = {
|
||||
pageNo: 1,
|
||||
pageSize: total.value,
|
||||
};
|
||||
getAmbMedicationDetail(queryParamsValue).then((res) => {
|
||||
purchaseinventoryListAll.value = res.data.records;
|
||||
if (purchaseinventoryListAll.value.length == 0) {
|
||||
return;
|
||||
}
|
||||
purchaseinventoryListAll.value.map((k, index) => {
|
||||
k.dispensePrice = k.dispensePrice || '0.00';
|
||||
k.refundPrice = k.refundPrice || '0.00';
|
||||
k.dispenseQuantity = k.dispenseQuantity
|
||||
? k.dispenseQuantity + k.unitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
k.refundQuantity = k.refundQuantity
|
||||
? k.refundQuantity + k.refundUnitCode_dictText
|
||||
: '0.00' + k.unitCode_dictText;
|
||||
dispensePrice2 += Number(k.dispensePrice);
|
||||
refundPrice2 += Number(k.refundPrice);
|
||||
//处理每页门诊号相同数据分开不在一页的问题start
|
||||
for (let m = 1; m < queryParams.value.pageSize && m < index; m++) {
|
||||
if (
|
||||
queryParams.value.pageNo > 1 &&
|
||||
index == queryParams.value.pageSize * (queryParams.value.pageNo - 1) &&
|
||||
k.outpatientNo == purchaseinventoryListAll.value[index - m]?.outpatientNo
|
||||
) {
|
||||
purchaseinventoryList.value.unshift(purchaseinventoryListAll.value[index - m]); // 加
|
||||
//修改计算的小计缺少加过来的部分
|
||||
let dispenseNoIndex1 = purchaseinventoryList.value.findIndex(
|
||||
(o) =>
|
||||
o.prescriptionNo == '小计' &&
|
||||
o.outpatientNo == purchaseinventoryListAll.value[index - m].outpatientNo
|
||||
);
|
||||
purchaseinventoryList.value[dispenseNoIndex1].dispensePrice =
|
||||
Number(purchaseinventoryList.value[dispenseNoIndex1].dispensePrice) +
|
||||
Number(purchaseinventoryListAll.value[index - m].dispensePrice);
|
||||
purchaseinventoryList.value[dispenseNoIndex1].refundPrice =
|
||||
Number(purchaseinventoryList.value[dispenseNoIndex1].refundPrice) +
|
||||
Number(purchaseinventoryListAll.value[index - m].refundPrice);
|
||||
}
|
||||
|
||||
if (
|
||||
index + m == queryParams.value.pageSize * queryParams.value.pageNo &&
|
||||
k.outpatientNo == purchaseinventoryListAll.value[index + m]?.outpatientNo
|
||||
) {
|
||||
let dispenseNoIndex = purchaseinventoryList.value.findIndex(
|
||||
(o) => o.dispenseNo == k.dispenseNo
|
||||
);
|
||||
purchaseinventoryList.value.splice(dispenseNoIndex, 1); // 减
|
||||
|
||||
if (
|
||||
purchaseinventoryList.value[dispenseNoIndex - 1] &&
|
||||
purchaseinventoryList.value[dispenseNoIndex - 1].prescriptionNo == '小计'
|
||||
) {
|
||||
purchaseinventoryList.value.splice(dispenseNoIndex + 1, 1); // 减掉带小计的
|
||||
}
|
||||
}
|
||||
}
|
||||
// end
|
||||
});
|
||||
dispensePrice2 = dispensePrice2 ? dispensePrice2.toFixed(4) : dispensePrice2;
|
||||
refundPrice2 = refundPrice2 ? refundPrice2.toFixed(4) : refundPrice2;
|
||||
let pageNoAll = total.value / queryParams.value.pageSize;
|
||||
if (Math.ceil(pageNoAll) == queryParams.value.pageNo) {
|
||||
purchaseinventoryList.value.push({
|
||||
prescriptionNo: '合计',
|
||||
dispensePrice: dispensePrice2,
|
||||
refundPrice: refundPrice2,
|
||||
});
|
||||
=======
|
||||
console.log('query=======>', JSON.stringify(queryParams));
|
||||
|
||||
if (type) {
|
||||
@@ -1072,13 +815,10 @@ function getList(type) {
|
||||
refundPrice: refundPrice,
|
||||
});
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
} else if (
|
||||
queryParams.value.inventoryScope == 2 ||
|
||||
queryParams.value.inventoryScope == 4 ||
|
||||
@@ -1197,7 +937,6 @@ function getList(type) {
|
||||
});
|
||||
}
|
||||
});
|
||||
>>>>>>> v1.3
|
||||
} else {
|
||||
total.value = 0;
|
||||
loading.value = false;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="100px">
|
||||
<<<<<<< HEAD
|
||||
</el-form>
|
||||
=======
|
||||
<el-form-item label="源仓库:" prop="sourceLocationId" label-width="80px">
|
||||
<el-select
|
||||
v-model="queryParams.sourceLocationId"
|
||||
@@ -62,7 +59,6 @@
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
>>>>>>> v1.3
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="medicationStockOutDetailsList"
|
||||
@@ -73,13 +69,8 @@
|
||||
<el-table-column
|
||||
label="医疗机构代码"
|
||||
align="center"
|
||||
<<<<<<< HEAD
|
||||
key="medicalInstitutionCode"
|
||||
prop="medicalInstitutionCode"
|
||||
=======
|
||||
key="medinsCode"
|
||||
prop="medinsCode"
|
||||
>>>>>>> v1.3
|
||||
width="220"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
@@ -87,13 +78,8 @@
|
||||
<el-table-column
|
||||
label="组织机构名称"
|
||||
align="center"
|
||||
<<<<<<< HEAD
|
||||
key="organizationName"
|
||||
prop="organizationName"
|
||||
=======
|
||||
key="orgCode"
|
||||
prop="orgCode"
|
||||
>>>>>>> v1.3
|
||||
width="220"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
@@ -124,43 +110,24 @@
|
||||
<el-table-column
|
||||
label="产品名称"
|
||||
align="center"
|
||||
<<<<<<< HEAD
|
||||
key="lotName"
|
||||
prop="lotName"
|
||||
=======
|
||||
key="productName"
|
||||
prop="productName"
|
||||
>>>>>>> v1.3
|
||||
width="220"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
label="出库数量(最小销售包装单位)"
|
||||
align="center"
|
||||
key="quantitySales"
|
||||
prop="quantitySales"
|
||||
=======
|
||||
label="出库数量"
|
||||
align="center"
|
||||
key="totalQuantity"
|
||||
prop="totalQuantity"
|
||||
>>>>>>> v1.3
|
||||
:show-overflow-tooltip="true"
|
||||
width="220"
|
||||
/>
|
||||
<el-table-column
|
||||
<<<<<<< HEAD
|
||||
label="出库数量(最小制剂单位)"
|
||||
align="center"
|
||||
key="quantityPreparation"
|
||||
prop="quantityPreparation"
|
||||
=======
|
||||
label="单位"
|
||||
align="center"
|
||||
key="minUnit"
|
||||
prop="minUnit"
|
||||
>>>>>>> v1.3
|
||||
:show-overflow-tooltip="true"
|
||||
width="220"
|
||||
/>
|
||||
@@ -178,20 +145,12 @@
|
||||
<script setup name="medicationStockOutDetails">
|
||||
import {
|
||||
getReportMedicationStockOutDetails,
|
||||
<<<<<<< HEAD
|
||||
} from './statisticalManagent';
|
||||
|
||||
|
||||
const medicationStockOutDetailsList = ref([]);
|
||||
const loading = ref(true);
|
||||
=======
|
||||
getPharmacyCabinetList,
|
||||
} from './statisticalManagent';
|
||||
import { ElMessage } from 'element-plus';
|
||||
const { proxy } = getCurrentInstance();
|
||||
const medicationStockOutDetailsList = ref([]);
|
||||
const loading = ref(false);
|
||||
>>>>>>> v1.3
|
||||
const ids = ref([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
@@ -199,10 +158,7 @@ const total = ref(0);
|
||||
const approvalTime = ref([]);
|
||||
const supplierListOptions = ref([]);
|
||||
const locationIdList = ref([]);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const occurrenceTime = ref([]);
|
||||
>>>>>>> v1.3
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
@@ -210,11 +166,8 @@ const data = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
sourceLocationId:undefined,
|
||||
purposeLocationId:undefined,
|
||||
>>>>>>> v1.3
|
||||
occurrenceTimeSTime: undefined,
|
||||
occurrenceTimeETime: undefined,
|
||||
},
|
||||
@@ -224,26 +177,17 @@ const data = reactive({
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
function getList() {
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
if(queryParams.value.sourceLocationId==null||
|
||||
queryParams.value.purposeLocationId==null||
|
||||
queryParams.value.occurrenceTimeSTime==null||
|
||||
queryParams.value.occurrenceTimeETime==null){
|
||||
ElMessage.warning("请构建完整的查询条件");
|
||||
}else{
|
||||
>>>>>>> v1.3
|
||||
loading.value = true;
|
||||
getReportMedicationStockOutDetails(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
medicationStockOutDetailsList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
<<<<<<< HEAD
|
||||
});
|
||||
}
|
||||
|
||||
getList();
|
||||
=======
|
||||
});}
|
||||
}
|
||||
function getPharmacyCabinetLists() {
|
||||
@@ -283,7 +227,6 @@ function handleExport() {
|
||||
|
||||
// getList();
|
||||
getPharmacyCabinetLists();
|
||||
>>>>>>> v1.3
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<!-- 搜索区域 -->
|
||||
<div class="search-form mb-4">
|
||||
<el-form :model="queryParams" inline @submit.prevent>
|
||||
@@ -44,7 +42,6 @@
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
>>>>>>> v1.3
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="medicationUsageList"
|
||||
@@ -64,22 +61,14 @@
|
||||
align="center"
|
||||
key="orgName"
|
||||
prop="orgName"
|
||||
<<<<<<< HEAD
|
||||
width="200"
|
||||
=======
|
||||
width="200"
|
||||
>>>>>>> v1.3
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="国家药品编码(YPID)"
|
||||
align="center"
|
||||
key="nationalDrugCode"
|
||||
<<<<<<< HEAD
|
||||
prop="ypCode"
|
||||
=======
|
||||
prop="nationalDrugCode"
|
||||
>>>>>>> v1.3
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
@@ -104,11 +93,7 @@
|
||||
align="center"
|
||||
key="itemName"
|
||||
prop="itemName"
|
||||
<<<<<<< HEAD
|
||||
width="200"
|
||||
=======
|
||||
width="200"
|
||||
>>>>>>> v1.3
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
@@ -130,22 +115,14 @@
|
||||
<el-table-column
|
||||
label="销售数量(最小制剂单位)"
|
||||
align="center"
|
||||
<<<<<<< HEAD
|
||||
key="dosageSalesQuantity"
|
||||
prop="dosageSalesQuantity"
|
||||
=======
|
||||
key="unitCode_dictText"
|
||||
prop="unitCode_dictText"
|
||||
>>>>>>> v1.3
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
</el-table>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
<!-- 分页组件 -->
|
||||
>>>>>>> v1.3
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
@@ -157,21 +134,6 @@
|
||||
</template>
|
||||
|
||||
<script setup name="medicationUsageDetails">
|
||||
<<<<<<< HEAD
|
||||
import {
|
||||
getReportMedicationUsage
|
||||
} from './statisticalManagent';
|
||||
|
||||
|
||||
const medicationUsageList = ref([]);
|
||||
const loading = ref(true);
|
||||
const ids = ref([]);
|
||||
const total = ref(0);
|
||||
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
=======
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { getReportMedicationUsage } from './statisticalManagent';
|
||||
|
||||
@@ -194,28 +156,12 @@ const queryParams = ref({
|
||||
searchKey: '', // 搜索关键词
|
||||
startTime: '', // 开始时间
|
||||
endTime: '', // 结束时间
|
||||
>>>>>>> v1.3
|
||||
});
|
||||
|
||||
/** 查询调拨管理项目列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
getReportMedicationUsage(queryParams.value).then((res) => {
|
||||
<<<<<<< HEAD
|
||||
loading.value = false;
|
||||
medicationUsageList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
})
|
||||
}
|
||||
|
||||
/** 选择条数 */
|
||||
function handleSelectionChange(selection) {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
}
|
||||
|
||||
=======
|
||||
medicationUsageList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
loading.value = false;
|
||||
@@ -241,25 +187,10 @@ function resetQuery() {
|
||||
getList(); // 重置后重新查询
|
||||
}
|
||||
|
||||
>>>>>>> v1.3
|
||||
// 页面加载时获取数据
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: bold;
|
||||
font-size: large;
|
||||
margin-bottom: 10px;
|
||||
=======
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -272,6 +203,5 @@ onMounted(() => {
|
||||
/* 表格与搜索框间距 */
|
||||
.mb-4 {
|
||||
margin-bottom: 16px;
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
</style>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user