This commit is contained in:
ChenQiuYu 2025-05-16 09:31:42 +08:00
parent 346e3c6e96
commit 5c01c7a88f
6 changed files with 228 additions and 192 deletions

View File

@ -108,11 +108,7 @@ body {
.clear-margin { .clear-margin {
margin: 0; margin: 0;
} }
.el-popper.is-light.type-popper, .el-popper.is-light>.el-popper__arrow:before{
background:#F5FAFF;
}
.el-popper.is-light.type-popper{ .el-popper.is-light.type-popper{
background:#F5FAFF;
padding: 0; padding: 0;
} }
.el-popper.is-light.id-code-popper{ .el-popper.is-light.id-code-popper{

View File

@ -1,5 +1,4 @@
<template> <template>
<el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef" <el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef"
:trigger-keys="[]" style="height: 500px" popper-class="type-popper"> :trigger-keys="[]" style="height: 500px" popper-class="type-popper">
<template #reference> <template #reference>
@ -19,7 +18,7 @@
/> />
</template> </template>
<div class="container"> <div class="container">
<el-scrollbar> <el-scrollbar style="max-height: 260px;width: 100%">
<table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px"> <table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px">
<!-- 表头 --> <!-- 表头 -->
<thead> <thead>
@ -33,7 +32,6 @@
</th> </th>
</tr> </tr>
</thead> </thead>
<!-- 表体 --> <!-- 表体 -->
<tbody> <tbody>
<tr class="table-body" <tr class="table-body"
@ -167,6 +165,7 @@ const handlerBlur = () => {
th { th {
text-align: left; text-align: left;
&:nth-child(1) { &:nth-child(1) {
width: 200px; width: 200px;
text-align: left; text-align: left;
@ -182,6 +181,7 @@ const handlerBlur = () => {
font-size: 14px; font-size: 14px;
color: #666666; color: #666666;
font-style: normal; font-style: normal;
td { td {
&:nth-child(1) { &:nth-child(1) {
width: 200px; width: 200px;
@ -194,7 +194,6 @@ const handlerBlur = () => {
} }
&:last-child { &:last-child {
border-radius: 0 0 8px 8px; border-radius: 0 0 8px 8px;
} }
@ -205,4 +204,8 @@ const handlerBlur = () => {
} }
} }
} }
table thead tr {
background: #F5FAFF;;
}
</style> </style>

View File

@ -1,102 +1,104 @@
<template> <template>
<panel title="药品耗材"> <panel title="药品耗材">
<el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%" <div class="panel-content" style="padding: 0 24px 24px">
:header-cell-style="{ backgroundColor: '#F5FAFF' }"> <el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%"
<el-table-column prop="name" label="名称" width="400"> :header-cell-style="{ backgroundColor: '#F5FAFF' }">
<template #default="scope"> <el-table-column prop="name" label="名称" width="400">
<el-popover <template #default="scope">
placement="top-start" <el-popover
trigger="hover" placement="top-start"
width="500" trigger="hover"
@show="getHilistInfo(scope.row)" width="500"
@hide="colosInfo" @show="getHilistInfo(scope.row)"
@hide="colosInfo"
> >
<template #reference> <template #reference>
{{ scope.row.name }} {{ scope.row.name }}
</template>
<div class="detail">
<div style="display: flex;justify-content: space-between">
<div style="font-size: 18px;font-weight: 500;color: #000">{{
hilistInfo.name
}}[{{ hilistInfo.json?.category || '-' }}]
</div>
<div>{{ scope.row.selectedPrice }}/{{ scope.row.selectedUnit }}</div>
</div>
<div style="display: flex;justify-content: space-between">
<div>规格:{{ hilistInfo.json?.dosage_specifications || '-' }}</div>
<div>生产厂商:{{ hilistInfo.json?.producer || '-' }}</div>
<div>限价:{{ hilistInfo.json?.stock || '0' }}</div>
</div>
<div style="display: flex;justify-content: space-between">
<div>批准文号:{{ hilistInfo.json?.approval_number || '-' }}</div>
<div>本位码:{{ hilistInfo.json?.standard_code || '-' }}</div>
</div>
<div style="display: flex;justify-content: space-between">
<div>限价:{{ hilistInfo.hilistPricUplmtAmt ? hilistInfo.hilistPricUplmtAmt : '无' }}</div>
<div>限价类型:{{ hilistInfo.hilistLmtpricType ? hilistInfo.hilistLmtpricType : '无' }}</div>
</div>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column prop="selectedPrice" label="单价" width="200">
<template #default="scope">
{{ scope.row.selectedPrice }}
</template>
</el-table-column>
<el-table-column prop="number" label="数量" width="250">
<template #default="scope">
<div v-if="props.status">
<el-input-number v-model="scope.row.selectedNum" :min="0" @change="handleNumChange(scope.row)"
style="margin-right: 5px"></el-input-number>
<el-dropdown v-if="scope.row.trdnFlag == 1">
<span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.packagingUnit)">{{ scope.row.packagingUnit }}
</el-dropdown-item>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.minPackagingUnit)">
{{ scope.row.minPackagingUnit }}
</el-dropdown-item>
</el-dropdown-menu>
</template> </template>
</el-dropdown> <div class="detail">
<span v-else style="line-height: 30px;margin-left: 10px">{{ scope.row.selectedUnit }}</span> <div style="display: flex;justify-content: space-between">
</div> <div style="font-size: 18px;font-weight: 500;color: #000">{{
<div v-else> hilistInfo.name
<div>{{ scope.row.selectedNum }} {{ scope.row.selectedUnit }}</div> }}[{{ hilistInfo.json?.category || '-' }}]
</div> </div>
</template> <div>{{ scope.row.selectedPrice }}/{{ scope.row.selectedUnit }}</div>
</el-table-column> </div>
<el-table-column label="小计"> <div style="display: flex;justify-content: space-between">
<template #default="scope"> <div>规格:{{ hilistInfo.json?.dosage_specifications || '-' }}</div>
{{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }} <div>生产厂商:{{ hilistInfo.json?.producer || '-' }}</div>
</template> <div>限价:{{ hilistInfo.json?.stock || '0' }}</div>
</el-table-column> </div>
<el-table-column label="操作" v-if="props.status"> <div style="display: flex;justify-content: space-between">
<template #default="scope"> <div>批准文号:{{ hilistInfo.json?.approval_number || '-' }}</div>
<el-button type="danger" link @click="delGoods(scope.row)"> <div>本位码:{{ hilistInfo.json?.standard_code || '-' }}</div>
<el-icon style="margin-right: 3px"><Delete /></el-icon> </div>
删除 <div style="display: flex;justify-content: space-between">
</el-button> <div>限价:{{ hilistInfo.hilistPricUplmtAmt ? hilistInfo.hilistPricUplmtAmt : '无' }}</div>
</template> <div>限价类型:{{ hilistInfo.hilistLmtpricType ? hilistInfo.hilistLmtpricType : '无' }}</div>
</el-table-column> </div>
</el-table> </div>
<div class="bottom" v-if="!statusDisabled"> </el-popover>
<div class="search"> </template>
<SearchInput </el-table-column>
style="height: 100%" <el-table-column prop="selectedPrice" label="单价" width="200">
:request-api="goodsSearchApi" <template #default="scope">
:show-config="goodsShowConfig" {{ scope.row.selectedPrice }}
:placeholder="'请输入药名或者拼音码'" </template>
@selectedCallBack="goodsSelect" </el-table-column>
:disabled="!props.status" <el-table-column prop="number" label="数量" width="250">
@focus="focus" <template #default="scope">
:width="1000" <div v-if="props.status">
></SearchInput> <el-input-number v-model="scope.row.selectedNum" :min="0" @change="handleNumChange(scope.row)"
style="margin-right: 5px"></el-input-number>
<el-dropdown v-if="scope.row.trdnFlag == 1">
<span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.packagingUnit)">{{ scope.row.packagingUnit }}
</el-dropdown-item>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.minPackagingUnit)">
{{ scope.row.minPackagingUnit }}
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<span v-else style="line-height: 30px;margin-left: 10px">{{ scope.row.selectedUnit }}</span>
</div>
<div v-else>
<div>{{ scope.row.selectedNum }} {{ scope.row.selectedUnit }}</div>
</div>
</template>
</el-table-column>
<el-table-column label="小计">
<template #default="scope">
{{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }}
</template>
</el-table-column>
<el-table-column label="操作" v-if="props.status">
<template #default="scope">
<el-button type="danger" link @click="delGoods(scope.row)">
<el-icon style="margin-right: 3px"><Delete /></el-icon>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<div class="bottom" v-if="!statusDisabled">
<div class="search">
<SearchInput
style="height: 100%"
:request-api="goodsSearchApi"
:show-config="goodsShowConfig"
:placeholder="'请输入药名或者拼音码'"
@selectedCallBack="goodsSelect"
:disabled="!props.status"
@focus="focus"
:width="1000"
></SearchInput>
</div>
<span v-if="status" style="padding: 10px">合计{{ getTotalPrice() }}</span>
</div> </div>
<span v-if="status" style="padding: 10px">合计{{ getTotalPrice() }}</span>
</div> </div>
</panel> </panel>
</template> </template>

View File

@ -1,70 +1,75 @@
<template> <template>
<Panel title="服务项目"> <Panel title="服务项目">
<el-table v-if="itemDetail.length>0" :data="itemDetail" max-height="300" :header-cell-style="{ backgroundColor: '#F5FAFF' }"> <div class="panel-content" style="padding: 0 24px 24px">
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="400"> <el-table v-if="itemDetail.length>0" :data="itemDetail" max-height="300"
<template #default="scope"> :header-cell-style="{ backgroundColor: '#F5FAFF' }">
<el-popover <el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="400">
width="485" <template #default="scope">
@show="show(scope.row)" <el-popover
@hide="hide" width="485"
> @show="show(scope.row)"
<template #reference> @hide="hide"
{{ scope.row.itemName }} >
</template> <template #reference>
<div class="detail"> {{ scope.row.itemName }}
<div style="display: flex;justify-content: space-between"> </template>
<div style="font-size: 18px;font-weight: 500;color: #000">{{ <div class="detail">
itemInfo.name <div style="display: flex;justify-content: space-between">
}}[{{ chrgitm_lv[itemInfo.chrgitmLv as keyof typeof chrgitm_lv || '-'] || '-' }}] <div style="font-size: 18px;font-weight: 500;color: #000">{{
itemInfo.name
}}[{{ chrgitm_lv[itemInfo.chrgitmLv as keyof typeof chrgitm_lv || '-'] || '-' }}]
</div>
<div>{{ scope.row.unitPrice }}/{{ scope.row.unit }}</div>
</div>
<div style="display: flex;justify-content: space-between">
<div>限制条件:{{ itemInfo.lmtUsedFlag == 0 ? '否' : itemInfo.lmtUsedFlag == 1 ? '是' : '-' }}</div>
<div> 医保码:{{ scope.row.itemSocialCode || '-' }}</div>
</div> </div>
<div>{{ scope.row.unitPrice }}/{{ scope.row.unit }}</div>
</div> </div>
<div style="display: flex;justify-content: space-between"> </el-popover>
<div>限制条件:{{ itemInfo.lmtUsedFlag == 0 ? '否' : itemInfo.lmtUsedFlag == 1 ? '是' : '-' }}</div> </template>
<div> 医保码:{{ scope.row.itemSocialCode || '-' }}</div> </el-table-column>
</div> <el-table-column label="单价" width="200">
</div> <template #default="scope">
</el-popover> {{ scope.row.selectedPrice }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单价" width="200"> <el-table-column label="数量" width="250">
<template #default="scope"> <template #default="scope">
{{ scope.row.selectedPrice }} <el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0"
</template> @change="handleNumChange" style="margin-right: 5px"></el-input-number>
</el-table-column> <span v-else>{{ scope.row.selectedNum }}</span>
<el-table-column label="数量" width="250"> {{ scope.row.selectedUnit }}
<template #default="scope"> </template>
<el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0" </el-table-column>
@change="handleNumChange" style="margin-right: 5px"></el-input-number> <el-table-column label="小计">
<span v-else>{{ scope.row.selectedNum }}</span> <template #default="scope">
{{ scope.row.selectedUnit }} {{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="小计"> <el-table-column label="操作" v-if="props.status">
<template #default="scope"> <template #default="scope">
{{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }} <el-button type="danger" link @click="delService(scope.row)">
</template> <el-icon style="margin-right: 3px">
</el-table-column> <Delete/>
<el-table-column label="操作" v-if="props.status"> </el-icon>
<template #default="scope"> 删除
<el-button type="danger" link @click="delService(scope.row)"> </el-button>
<el-icon style="margin-right: 3px"><Delete /></el-icon> </template>
删除 </el-table-column>
</el-button> </el-table>
</template> <div class="bottom" v-if="!statusDisabled">
</el-table-column> <div class="search">
</el-table> <SearchInput
<div class="bottom" v-if="!statusDisabled"> style="height: 100%"
<div class="search"> @focus="focus"
<SearchInput :placeholder="'请输入药服务项目或拼音码'"
style="height: 100%" :request-api="serviceSearchApi"
@focus="focus" :show-config="serviceShowConfig"
:placeholder="'请输入药服务项目或拼音码'" @selectedCallBack="serviceSelect" :disabled="!props.status"></SearchInput>
:request-api="serviceSearchApi" </div>
:show-config="serviceShowConfig" <span v-if="status" style="padding: 10px">合计{{ getTotalPrice() || 0 }}</span>
@selectedCallBack="serviceSelect" :disabled="!props.status"></SearchInput>
</div> </div>
<span v-if="status" style="padding: 10px">合计{{ getTotalPrice() || 0 }}</span>
</div> </div>
</Panel> </Panel>
</template> </template>
@ -141,7 +146,7 @@ const getTotalPrice = () => {
if (itemDetail.value) { if (itemDetail.value) {
itemDetail.value.forEach((item: any) => { itemDetail.value.forEach((item: any) => {
totalPrice += item.selectedNum * item.selectedPrice totalPrice += item.selectedNum * item.selectedPrice
totalPrice = Math.round(totalPrice * 100) / 100 totalPrice = Math.round(totalPrice * 100) / 100
}) })
} }

View File

@ -62,7 +62,9 @@
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
<el-button type="primary" @click="addSupplier">添加供应商</el-button> <div class="default-btn" style="height: 100%" @click="addSupplier">
<el-icon><Plus /></el-icon>
</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -192,7 +194,7 @@ import {ElMessage} from "element-plus";
import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue"; import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue";
import GoodsSearch from "@/components/inventory/GoodsSearch.vue"; import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
import CheckoutDetail from "@/components/inventory/CheckoutDetail.vue"; import CheckoutDetail from "@/components/inventory/CheckoutDetail.vue";
import {Search} from "@element-plus/icons-vue"; import {Plus} from "@element-plus/icons-vue";
const orderForm = ref() const orderForm = ref()
const checkoutDetailRef = ref<any>(false); const checkoutDetailRef = ref<any>(false);

View File

@ -1,55 +1,83 @@
<template> <template>
<div class="layout-container"> <div class="layout-container">
<Header class="header" /> <Header class="header"/>
<header> <div class="body">
<div class="center-wrapper"> <header style="height: 50px">
<div class="childMenu"> <div class="center-wrapper">
<router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index"> <div class="childMenu">
{{ item.name }} <router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index">
</router-link> {{ item.name }}
</router-link>
</div>
</div> </div>
</div> </header>
</header> <main class="layout-main" style="margin-top: 24px">
<div class="space"></div> <router-view/>
<main class="layout-main"> </main>
<router-view/> </div>
</main> <Footer class="footer"/>
<div class="space"></div>
<Footer class="footer" />
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.body{
height: 100%;
padding: 24px;
display: flex;
flex-direction: column;
}
.childMenu { .childMenu {
width: 100%; width: 100%;
height: 60px; height: 50px;
background: #fff; background: #fff;
display: flex; display: flex;
align-items: center; align-items: center;
border-radius: 8px;
.child-item { .child-item {
width: 136px;
display: inline-block; display: inline-block;
color: #151515; color: #151515;
outline: none; outline: none;
text-decoration: none; text-decoration: none;
font-size: 18px; font-size: 18px;
margin-left: 10px; height: 50px;
margin-right: 10px;
height: 35px;
position: relative; position: relative;
line-height: 50px;
text-align: center;
&::before{
content: '';
position: absolute;
right: 0;
top:50%;
display: block;
width: 2px;
height: 16px;
background: #D8D8D8;
border-radius: 1px;
transform: translate(0 ,-50%);
}
&:last-child::before{
display: none;
}
} }
.router-link-active:after { .router-link-active:after {
content: ''; content: '';
display: block; display: block;
width: 100%; width: 80px;
height: 2px; height: 4px;
background-color: #151515; // 线 background-color: #4D6DE4; // 线
position: absolute; position: absolute;
bottom: -5px; // 线 bottom: 0; // 线
left: 0; left: 50%;
transform: translateX(-50%);
border-radius: 2px;
} }
} }
a.router-link-active.router-link-exact-active.child-item{
color: #4D6DE4;
}
</style> </style>