前端最新版本同步

This commit is contained in:
Zhang.WH
2025-09-25 10:36:07 +08:00
parent a3a06d6f3c
commit 1276dc4adb
117 changed files with 11964 additions and 2466 deletions

View File

@@ -40,6 +40,7 @@
</div>
<div class="medicalOrderList-table">
<el-table :data="drugDistributionDetailData" v-if="searchForm.isDetails == '1'" row-key="id"
default-expand-all
style="width: 100%; height: 100%" border :span-method="arraySpanMethod" show-overflow-tooltip>
<el-table-column type="selection" />
<el-table-column label="类型" prop="name" min-width=" 60px">
@@ -129,8 +130,9 @@
</div>
</div>
</template>
<script setup lang="ts">
<script setup >
import { ref } from 'vue';
const searchForm = ref({
drugType: '1',
isDetails: '1',
@@ -155,7 +157,7 @@ const drugDistributionDetailData = ref([
gender: '男',
content: '维生素B12注射液【1ml0.5mg*1】 ',
dates: [{
date: '05/04',
date: '09/04',
times: [{
time: '08:00',
nurse: '刘护士',
@@ -166,7 +168,7 @@ const drugDistributionDetailData = ref([
checked: false
}]
}, {
date: '05/05',
date: '09/05',
times: [{
time: '08:00',
nurse: '刘护士',
@@ -278,7 +280,7 @@ const arraySpanMethod = ({
column,
rowIndex,
columnIndex,
}: any) => {
}) => {
// console.log(row, column, rowIndex, columnIndex);
// 如果是父级行
if (row.children && row.children.length > 0) {

View File

@@ -85,3 +85,11 @@ export function childLocationList(queryParams) {
params: queryParams
})
}
export function getPractitionerWard(queryParams) {
return request({
url: '/app-common/practitioner-ward',
method: 'get',
params: queryParams
})
}

View File

@@ -7,9 +7,9 @@
<el-select v-model="queryParams.wardId" @change="changeWardLocationId">
<el-option
v-for="item in initInfoOptions.wardListOptions"
:key="item.value"
:label="item.label"
:value="item.value"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
@@ -180,7 +180,7 @@
<script setup lang="ts">
import { getCurrentInstance, onBeforeMount, onMounted, reactive, ref, computed } from 'vue'
import { TransferInDialog, SignEntryDialog } from './index'
import { getPendingInfo, getBedInfo, getInit, childLocationList } from './api'
import { getPendingInfo, getBedInfo, getInit, childLocationList, getPractitionerWard } from './api'
import { formatDate } from '@/utils/index';
import { init } from '../../../basicmanage/consumablesBinding/components/api';
import { ElMessage, ElMessageBox } from 'element-plus'
@@ -242,10 +242,13 @@ onMounted(() => {
getInit().then(res => {
initInfoOptions.value = res.data
priorityOptions.value = res.data.priorityOptions || []
queryParams.value.wardId = res.data.wardListOptions[0].value
changeWardLocationId(res.data.wardListOptions[0].value)
getList()
})
getPractitionerWard().then(res => {
queryParams.value.wardId = res[0].id
initInfoOptions.value.wardListOptions = res
changeWardLocationId(res[0].id)
})
})
defineExpose({ state })

View File

@@ -154,6 +154,7 @@
import { getPrescriptionList } from './api';
import { patientInfoList } from '../store/patient.js';
import { formatDate, formatDateStr } from '@/utils/index';
import { ref, getCurrentInstance } from 'vue';
const activeNames = ref([]);
const prescriptionList = ref([]);

View File

@@ -0,0 +1,344 @@
<!--
* @Author: sjjh
* @Date: 2025-09-09 13:49:40
* @Description: 药品发送
-->
<template>
<div class="medicineCollect-container">
<div class="patientList-container">
<el-input v-model="searchValue" style="width: 240px" placeholder="床号/姓名" />
<el-tree
ref="treeRef"
style="max-width: 600px"
default-expand-all
:data="data"
show-checkbox
node-key="id"
@node-click="handleNodeClick"
/></div>
<div class="medicineList-container">
<div class="filter-container">
<el-space>
<el-select v-model="tableFilterForm.type" placeholder="药品类型" style="width: 240px">
<el-option key="1" label="西药" value="1"/>
<el-option key="2" label="中药" value="2"/>
</el-select>
<el-select v-model="tableFilterForm.type" placeholder="医嘱类型" style="width: 240px">
<el-option key="0" label="全部" value="0"/>
<el-option key="1" label="长期" value="1"/>
<el-option key="2" label="临时" value="2"/>
</el-select>
<span>截止时间</span>
<el-date-picker
v-model="tableFilterForm.endTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
/>
<el-select v-model="tableFilterForm.dept" placeholder="领药科室" style="width: 240px">
<el-option key="0" label="住院西药房" value="0"/>
<el-option key="1" label="住院东药房" value="1"/>
<el-option key="2" label="住院北药房" value="2"/>
<el-option key="3" label="住院南药房" value="3"/>
</el-select>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="collectDrug">领药申请</el-button>
</el-space>
<el-space>
</el-space>
</div>
<el-table :data="collectTsableData" row-key="id" style="width: 100%; height: 100%" border
:span-method="arraySpanMethod">
<el-table-column type="selection" />
<el-table-column label="类型" prop="name" width="140">
<template #default="{ row }">
<span v-if="!row.children">长期/西药</span>
<template v-else>
{{ row.name }} 11 000000001 &nbsp; 林俊杰 /24 &nbsp;1级 自费 主诊断 医生医生甲&nbsp; 预交金1990.3
</template>
</template>
</el-table-column>
<el-table-column label="医嘱内容" prop="content" min-width="300px">
<template #default="{ row }">
<span v-if="row.children">{{ row.content }}</span>
</template>
</el-table-column>
<el-table-column label="用法" prop="gender">
</el-table-column>
<el-table-column label="数量" prop="gender">
</el-table-column>
<el-table-column label="金额" prop="gender">
</el-table-column>
<el-table-column label="领取科室" prop="gender">
</el-table-column>
<el-table-column label="执行时间" prop="gender" min-width="300">
<template #default="{ row }">
<template v-if="!row.children">
<div v-for="item in row.dates" :key="item.id">
<el-space :size="10">
<span>{{ item.date }}</span>
<span v-for="time in item.times" :key="time.id">
<el-checkbox v-model="time.checked" :label="`${time.time}`" border />
</span>
</el-space>
</div>
</template>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script setup >
import { id } from 'element-plus/es/locale/index.mjs';
import { getCurrentInstance, onBeforeMount, onMounted, reactive,ref } from 'vue'
// const { proxy } = getCurrentInstance();
import { ElMessage, ElMessageBox } from 'element-plus'
const emits = defineEmits([])
const props = defineProps({
})
const state = reactive({
})
const data = ref([
{
label: '内科',
id:1,
children: [
{
label: '唐僧',
id:11
},
],
},
])
const searchValue = ref('')
const handleNodeClick=(data)=>{
console.log(data)
treeRef.value.setCheckedKeys([data.id])
}
const treeRef = ref()
// ====表格
const tableFilterForm = ref({
type: '',
name: '',
})
const arraySpanMethod = ({
row,
column,
rowIndex,
columnIndex
}) => {
console.log(row, column, rowIndex, columnIndex);
// 如果是父级行
if (row.children && row.children.length > 0) {
if (columnIndex === 0) {
return [1, 1]
}
// 如果是患者列
if (columnIndex === 1) {
return [1, 7]
} else {
return [1, 0]
}
}
// 如果是子级行,显示其他列
if (!row.children || row.children.length == 0) {
return [1, 1]
}
// 如果是父级行,隐藏其他列
return [1, 1]
}
const collectTsableData = ref([
// {
// id: 1,
// name: '唐僧',
// age: 20,
// gender: '男',
// children: [
// {
// name: '',
// age: 10,
// gender: '男',
// content: '维生素B12注射液【1ml0.5mg*1】 ',
// dates: [{
// date: '05/04',
// times: [{
// time: '08:00',
// nurse: '刘护士',
// checked: false
// }, {
// time: '12:00',
// nurse: '刘护士',
// checked: false
// }]
// }, {
// date: '05/05',
// times: [{
// time: '08:00',
// nurse: '刘护士',
// checked: false
// }, {
// time: '12:00',
// nurse: '刘护士',
// checked: false
// }]
// }]
// }, {
// name: '',
// age: 10,
// gender: '男',
// content: '维生素B12注射液【1ml0.5mg*1】 ',
// dates: [{
// date: '05/04',
// times: [{
// time: '08:00',
// nurse: '刘护士',
// checked: false
// }, {
// time: '12:00',
// nurse: '刘护士',
// checked: false
// }]
// }, {
// date: '05/05',
// times: [{
// time: '08:00',
// nurse: '刘护士',
// checked: false
// }, {
// time: '12:00',
// nurse: '刘护士',
// checked: false
// }]
// }]
// }]
// },
])
const handleSearch = () => {
collectTsableData.value=[{
id: 1,
name: '唐僧',
age: 20,
gender: '男',
children: [
{
name: '',
age: 10,
gender: '男',
content: '维生素B12注射液【1ml0.5mg*1】 ',
dates: [{
date: '05/04',
times: [{
time: '08:00',
nurse: '刘护士',
checked: false
}, {
time: '12:00',
nurse: '刘护士',
checked: false
}]
}, {
date: '05/05',
times: [{
time: '08:00',
nurse: '刘护士',
checked: false
}, {
time: '12:00',
nurse: '刘护士',
checked: false
}]
}]
}, {
name: '',
age: 10,
gender: '男',
content: '维生素B12注射液【1ml0.5mg*1】 ',
dates: [{
date: '05/04',
times: [{
time: '08:00',
nurse: '刘护士',
checked: false
}, {
time: '12:00',
nurse: '刘护士',
checked: false
}]
}, {
date: '05/05',
times: [{
time: '08:00',
nurse: '刘护士',
checked: false
}, {
time: '12:00',
nurse: '刘护士',
checked: false
}]
}]
}]
},
]
}
// ====collectDrug
const collectDrug=()=>{
ElMessageBox.confirm(
'是否确认领药申请?',
'提醒',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
ElMessage({
type: 'success',
message: '申请成功!',
})
collectTsableData.value=[]
})
.catch(() => {
})
}
onBeforeMount(() => {
})
onMounted(() => {
})
defineExpose({ state })
</script>
<style lang="scss" scoped>
.medicineCollect-container{
display: flex;
height: 100%;
padding: 8px;
.patientList-container{
width: 300px;
height: 100%;
}
.medicineList-container{
flex: auto;
.filter-container{
height: 44px;
}
}
}
</style>

View File

@@ -0,0 +1,32 @@
<!--
* @Author: sjjh
* @Date: 2025-09-09 13:49:40
* @Description:
-->
<template>
<div class="container">
</div>
</template>
<script setup >
import { getCurrentInstance, onBeforeMount, onMounted, reactive } from 'vue'
const { proxy } = getCurrentInstance();
const emits = defineEmits([])
const props = defineProps({
})
const state = reactive({
})
onBeforeMount(() => {
})
onMounted(() => {
})
defineExpose({ state })
</script>
<style lang="scss" scoped>
</style>