Compare commits

..

No commits in common. "8217b3a44f254ff9cd05dffd52f6ace8228e2722" and "53b508017a6f5b04eb8e499ed43376b81acf9aed" have entirely different histories.

7 changed files with 318 additions and 367 deletions

View File

@ -52,6 +52,7 @@ const handleSelect = (item: any) => {
:remote-method="querySearchAsync" :remote-method="querySearchAsync"
:options="options" :options="options"
placeholder="输入关键字搜索药品" placeholder="输入关键字搜索药品"
:fit-input-width="800"
> >
<template #header> <template #header>
<div class="header"> <div class="header">

View File

@ -1,23 +1,14 @@
<template> <template>
<div class="add-panel"> <el-descriptions border label-width="100">
<div class="top"> <el-descriptions-item label="领用人" width="200">
<el-form :inline=true label-position="top" :model="formData" label-width="auto">
<el-form-item label="领用人">
<el-input v-model="formData.name" disabled></el-input> <el-input v-model="formData.name" disabled></el-input>
</el-form-item> </el-descriptions-item>
<el-form-item label="备注" style="width: 50%"> <el-descriptions-item label="备注">
<el-input v-model="formData.remark"></el-input> <el-input v-model="formData.remark"></el-input>
</el-form-item> </el-descriptions-item>
</el-form> </el-descriptions>
</div>
<div class="table_content">
<div class="add_apply">
<span>领用药品</span>
<div class="search">
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch> <GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
</div> <table class="simple-table" style="margin-top: 15px">
</div>
<table class="simple-table" style="margin-top: 15px;width: 100% ;height:300px ;max-height:550px">
<thead> <thead>
<tr> <tr>
<th>名称</th> <th>名称</th>
@ -93,8 +84,7 @@
</td> </td>
<td> <td>
<el-input v-model.number="subItem.outWholeNumber" size="small" style="width: 50px" <el-input v-model.number="subItem.outWholeNumber" size="small" style="width: 50px" @change="changeOutNumber(item)">
@change="changeOutNumber(item)">
<template #suffix> <template #suffix>
{{ item.packagingUnit }} {{ item.packagingUnit }}
</template> </template>
@ -115,8 +105,7 @@
<el-button type="primary" @click="save">保存</el-button> <el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="exit">关闭</el-button> <el-button type="primary" @click="exit">关闭</el-button>
</div> </div>
</div>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref, unref} from "vue"; import {onMounted, ref, unref} from "vue";
@ -299,7 +288,6 @@ onMounted(() => {
border-bottom: 1px solid #ebeef5; border-bottom: 1px solid #ebeef5;
} }
} }
tbody { tbody {
tr:hover { tr:hover {
background-color: #f5f7fa; /* 悬停效果 */ background-color: #f5f7fa; /* 悬停效果 */
@ -357,50 +345,15 @@ onMounted(() => {
background-color: #fffdec; background-color: #fffdec;
} }
} }
.btn { .btn {
margin-top: 5px; margin-top: 5px;
} }
.add-panel {
position: relative;
margin-top: 24px;
height: 100%;
.table_content {
margin-top: 24px;
display: flex;
flex-direction: column;
.add_apply {
height: 80px;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 800;
font-size: 18px;
color: #333333;
font-style: normal;
.search {
width: 50%;
}
}
.simple-table {
flex: 1;
}
}
}
.bottom { .bottom {
margin-top: 10px; margin-top: 10px;
position: absolute; position: absolute;
right: 10px; right: 10px;
top: 175%; bottom: 10px;
} }
</style> </style>

View File

@ -63,6 +63,7 @@
<span>添加商品</span> <span>添加商品</span>
<div class="search"> <div class="search">
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch> <GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
<el-button :icon="Search" type="primary">搜索</el-button>
</div> </div>
</div> </div>
<el-table :data="table_list" style="width: 100%" height="300" max-height="550"> <el-table :data="table_list" style="width: 100%" height="300" max-height="550">
@ -138,17 +139,16 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="totalPrice">
订单总金额{{ inventory_order_data.totalPrice.toFixed(2) }}
</div>
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="totalPrice">
订单总金额<span style="color: #FF282E;font-size: 12px"></span><span style="color: #FF282E">{{ inventory_order_data.totalPrice.toFixed(2) }}</span>
</div>
<div class="btn">
<el-button type="primary" @click="confirm">确认</el-button> <el-button type="primary" @click="confirm">确认</el-button>
<el-button type="primary" @click="exit">关闭</el-button> <el-button type="primary" @click="exit">关闭</el-button>
</div> </div>
</div> </div>
</div>
<Mask :is-show="is_add" :top="100"> <Mask :is-show="is_add" :top="100">
<Edit ref="editRef" @close="is_add = false;"/> <Edit ref="editRef" @close="is_add = false;"/>
@ -339,6 +339,21 @@ onMounted(() => {
}) })
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.order_table {
position: relative;
width: 100%;
//background-color: rgb(148.6, 212.3, 117.1);
background-color: #fff;
border-radius: 10px;
box-sizing: border-box;
padding: 10px;
tr {
height: 40px;
}
}
.link { .link {
cursor: pointer; cursor: pointer;
font-size: 12px; font-size: 12px;
@ -379,17 +394,10 @@ onMounted(() => {
} }
.bottom { .bottom {
height: 86px; margin-top: 10px;
display: flex; position: absolute;
justify-content: space-between; right: 10px;
align-items: center; bottom: 10px;
font-weight: 400;
font-size: 22px;
color: #333333;
font-style: normal;
background: #fff;
box-shadow: 0px -2 4px 0px rgba(0,0,0,0.1);
border-radius: 0 0 8px 8px;
} }
.error { .error {
@ -400,6 +408,7 @@ onMounted(() => {
} }
.table_content{ .table_content{
margin-top: 24px; margin-top: 24px;
background: #F9FAFC;
.add_goods{ .add_goods{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -409,7 +418,8 @@ onMounted(() => {
color: #333333; color: #333333;
font-style: normal; font-style: normal;
.search{ .search{
width: 50%; display: flex;
align-items: center;
} }
} }
} }

View File

@ -1,22 +1,14 @@
<template> <template>
<div class="edit-panel" v-loading="isLoading" element-loading-text="正在保存......"> <div class="edit-panel" v-loading="isLoading" element-loading-text="正在保存......">
<div class="top"> <div class="top">
<el-form :model="inventory_order_data" label-position="top" ref="orderForm"> <el-descriptions title="采购订单" border>
<el-row> <el-descriptions-item label="订单编号" width="200">
<el-col :span="6">
<el-form-item label="订单编号">
<div style="width: 234px;">
<span class="order-info">{{ inventory_order_data.code }}</span> <span class="order-info">{{ inventory_order_data.code }}</span>
</div> </el-descriptions-item>
</el-form-item> <el-descriptions-item label="采购人" width="150">
</el-col> <span class="order-info">{{ inventory_order_data.managerUserName }}</span>
<el-col :span="6"> </el-descriptions-item>
<el-form-item label="采购人"> <el-descriptions-item label="采购日期">
<span style="width: 234px;" class="order-info">{{ inventory_order_data.managerUserName }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="purchaseDate" label="采购日期">
<el-date-picker <el-date-picker
v-model="inventory_order_data.purchaseDate" v-model="inventory_order_data.purchaseDate"
type="date" type="date"
@ -24,34 +16,24 @@
size="default" size="default"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-if="orderInfoIsEdit" v-if="orderInfoIsEdit"
style="width: 234px;"
/> />
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.purchaseDate }}</span> <span class="order-info" v-else>{{ inventory_order_data.purchaseDate }}</span>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="货单号">
<el-col :span="6">
<el-form-item prop="shippingCode" label="货单号">
<el-input v-model="inventory_order_data.shippingCode" v-if="orderInfoIsEdit"></el-input> <el-input v-model="inventory_order_data.shippingCode" v-if="orderInfoIsEdit"></el-input>
<span class="order-info" v-else>{{ inventory_order_data.shippingCode }}</span> <span class="order-info" v-else>{{ inventory_order_data.shippingCode }}</span>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="发票号">
</el-row>
<el-row> <el-input v-model="inventory_order_data.invoiceCode" v-if="orderInfoIsEdit"></el-input>
<el-col :span="6"> <span class="order-info" v-else>{{ inventory_order_data.invoiceCode }}</span>
<el-form-item prop="invoiceCode" label="发票号"> </el-descriptions-item>
<el-input style="width: 234px;" v-model="inventory_order_data.invoiceCode" <el-descriptions-item label="供应商">
v-if="orderInfoIsEdit"></el-input>
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.invoiceCode }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="supplierId" label="供应商">
<el-select <el-select
v-model="inventory_order_data.supplierId" v-model="inventory_order_data.supplierId"
placeholder="请选择供应商" placeholder="请选择供应商"
v-if="orderInfoIsEdit" v-if="orderInfoIsEdit">
style="width: 234px;"
>
<el-option <el-option
v-for="item in supplier_list" v-for="item in supplier_list"
:key="item.id" :key="item.id"
@ -59,31 +41,26 @@
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.supplierName }}</span> <span class="order-info" v-else>{{ inventory_order_data.supplierName }}</span>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="备注">
<el-col :span="6"> <el-input v-model="inventory_order_data.remark" v-if="orderInfoIsEdit"/>
<el-form-item label="备注" style="width: 234px"> <span class="order-info" v-else>{{ inventory_order_data.remark }}</span>
<el-input style="width: 234px;" v-model="inventory_order_data.remark" v-if="orderInfoIsEdit"/> </el-descriptions-item>
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.remark }}</span> <el-descriptions-item>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="操作">
<el-button type="primary" @click="saveOrderEdit" v-if="orderInfoIsEdit" plain>保存</el-button> <el-button type="primary" @click="saveOrderEdit" v-if="orderInfoIsEdit" plain>保存</el-button>
<el-button type="primary" @click="editOrder" v-else plain>编辑</el-button> <el-button type="primary" @click="editOrder" v-else plain>编辑</el-button>
</el-form-item> </el-descriptions-item>
</el-col> </el-descriptions>
</el-row> <span class="btn-add-good" style="font-size: 16px"
</el-form> @click="changeShowGoodSearch">{{ showGoodSearch ? '取消' : '添加药品' }}
</span>
<GoodsSearch v-if="showGoodSearch" @selectCallBack="goodsSelectCallBack">
</GoodsSearch>
</div> </div>
<div class="table_content"> <div class="table_content">
<div class="add_goods">
<el-button type="primary" @click="changeShowGoodSearch">{{ showGoodSearch ? '取消' : '添加药品' }}</el-button>
<div class="search">
<GoodsSearch v-if="showGoodSearch" @selectCallBack="goodsSelectCallBack"></GoodsSearch>
</div>
</div>
<el-table :data="table_list" style="width: 100%" height="250"> <el-table :data="table_list" style="width: 100%" height="250">
<el-table-column prop="name" label="药品名称" width="180" show-overflow-tooltip/> <el-table-column prop="name" label="药品名称" width="180" show-overflow-tooltip/>
<el-table-column label="售价" prop="unitPrice" width="80"> <el-table-column label="售价" prop="unitPrice" width="80">
@ -174,23 +151,18 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="totalPrice">
订单总金额{{ inventory_order_data.totalPrice.toFixed(2) }}
</div>
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="totalPrice">
订单总金额<span style="color: #FF282E;font-size: 12px"></span><span
style="color: #FF282E">{{ inventory_order_data.totalPrice.toFixed(2) }}</span>
</div>
<div class="btn">
<el-button type="danger" @click="returnableAll()" plain>整单退货</el-button> <el-button type="danger" @click="returnableAll()" plain>整单退货</el-button>
<el-button type="primary" @click="exit">关闭</el-button> <el-button type="primary" @click="exit" plain>关闭</el-button>
</div> </div>
</div> </div>
</div>
<Mask :is-show="is_add" :top="100"> <Mask :is-show="is_add" :top="100">
<Edit ref="editRef" @close="is_add = false;"/> <Edit ref="editRef" @close="is_add = false;"/>
</Mask> </Mask>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@ -334,6 +306,7 @@ const getOrderDetail = () => {
post("inventory/order/detail", {code: props.code}).then((res: any) => { post("inventory/order/detail", {code: props.code}).then((res: any) => {
inventory_order_data.value = res.inventoryOrder inventory_order_data.value = res.inventoryOrder
table_list.value = res.inventoryOrderGoodsList table_list.value = res.inventoryOrderGoodsList
console.log(res)
}) })
} }
const addOneGoods = (row: any) => { const addOneGoods = (row: any) => {
@ -390,12 +363,70 @@ const goodsSelectCallBack = (inventory: any) => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.order_table {
position: relative;
width: 100%;
//background-color: rgb(148.6, 212.3, 117.1);
background-color: #fff;
border-radius: 10px;
box-sizing: border-box;
padding: 10px;
tr {
height: 40px;
}
}
.order-info {
line-height: 32px;
}
.search_box {
//background-color: rgb(148.6, 212.3, 117.1);
background-color: #fff;
padding: 10px;
border-radius: 10px;
box-sizing: border-box;
margin-top: 10px;
margin-bottom: 10px;
}
.header {
display: flex;
.text {
font-size: 16px;
width: 200px;
color: #6a6a6a;
}
}
.link { .link {
cursor: pointer; cursor: pointer;
font-size: 12px; font-size: 12px;
color: #2e7eb3; color: #2e7eb3;
} }
.btn-add-good {
cursor: pointer;
font-size: 12px;
color: #2e7eb3;
}
.row {
display: flex;
max-height: 500px;
.text {
font-size: 12px;
width: 150px;
margin-left: 10px;
overflow: hidden; /* 隐藏超出部分 */
text-overflow: ellipsis; /* 显示省略号 */
white-space: nowrap; /* 防止换行 */
}
}
.line { .line {
margin-right: 10px; margin-right: 10px;
@ -430,39 +461,9 @@ const goodsSelectCallBack = (inventory: any) => {
} }
.bottom { .bottom {
height: 86px; margin-top: 10px;
display: flex; position: absolute;
justify-content: space-between; right: 10px;
align-items: center; bottom: 10px;
font-weight: 400;
font-size: 22px;
color: #333333;
font-style: normal;
background: #fff;
box-shadow: 0px -2 4px 0px rgba(0,0,0,0.1);
border-radius: 0 0 8px 8px;
}
.error {
background-color: #F00;
}
.edit-panel{
margin-top: 24px;
}
.table_content{
margin-top: 24px;
.add_goods{
height: 80px;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 800;
font-size: 18px;
color: #333333;
font-style: normal;
.search{
width: 50%;
}
}
} }
</style> </style>

View File

@ -1,54 +1,45 @@
<template> <template>
<div class="add-supplier" style="width:100%;margin-top: 24px"> <el-descriptions
<div class="form"> direction="vertical"
<el-form style="width: 100%" ref="ruleFormRef" :model="formData" :inline=true label-position="top"> :column="1"
<el-form-item label="供货商名称" style="width: 100%;margin-right: 0"> >
<el-input style="width: 100%" v-model="formData.name" placeholder="请输入供货商名称"></el-input> <el-descriptions-item label="供货商名称">
</el-form-item> <el-input v-model="formData.name" placeholder="请输入供货商名称"></el-input>
<el-row style="width: 100%"> </el-descriptions-item>
<el-col :span="12"> </el-descriptions>
<el-form-item label="启用状态"> <el-descriptions
direction="vertical"
:column="2"
>
<el-descriptions-item label="启用状态">
<el-radio-group v-model="formData.turn" size="large"> <el-radio-group v-model="formData.turn" size="large">
<el-radio-button label="禁用" :value="0"/> <el-radio-button label="禁用" :value="0"/>
<el-radio-button label="启用" :value="1"/> <el-radio-button label="启用" :value="1"/>
</el-radio-group> </el-radio-group>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="许可证号">
<el-col :span="12">
<el-form-item label="许可证号" style="margin-right: 0">
<el-input v-model="formData.licenseCode" placeholder="请输入许可证号"></el-input> <el-input v-model="formData.licenseCode" placeholder="请输入许可证号"></el-input>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="联系人">
</el-row>
<el-row style="width: 100%">
<el-col :span="12">
<el-form-item label="联系人">
<el-input v-model="formData.contactName" placeholder="请输入联系人名称"></el-input> <el-input v-model="formData.contactName" placeholder="请输入联系人名称"></el-input>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="联系方式">
<el-col :span="12">
<el-form-item label="联系方式" style="margin-right: 0">
<el-input v-model="formData.contactTel" placeholder="请输入联系方式"></el-input> <el-input v-model="formData.contactTel" placeholder="请输入联系方式"></el-input>
</el-form-item> </el-descriptions-item>
</el-col> <el-descriptions-item label="备注">
</el-row>
<el-form-item label="备注" style="margin-right: 0;width: 100%">
<el-input v-model="formData.reamark" <el-input v-model="formData.reamark"
type="textarea" rows="5" type="textarea" rows="5"
max="200" max="200"
show-word-limit show-word-limit
placeholder="请输入备注" placeholder="请输入备注">
style="width: 100%"
>
</el-input> </el-input>
</el-form-item> </el-descriptions-item>
</el-form> </el-descriptions>
</div>
</div>
<div class="btn"> <div class="btn">
<el-button type="primary" @click="save">确定</el-button> <el-button type="primary" @click="save">确定</el-button>
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -2,11 +2,11 @@
<div class="container-wrapper"> <div class="container-wrapper">
<div class="top"> <div class="top">
<el-dropdown> <el-dropdown>
<el-button type="primary" :icon="Plus" @click="is_add = true">新增采购</el-button> <el-button type="primary" :icon="Plus" @click="open_add(null)">新增采购</el-button>
</el-dropdown> </el-dropdown>
</div> </div>
<div class="content_list"> <div class="content_list">
<el-table :data="tableData" style="width: 100%" @row-click="open_edit"> <el-table :data="tableData" style="width: 100%" @row-click="open_add">
<el-table-column fixed label="进货单号" width="250" show-overflow-tooltip> <el-table-column fixed label="进货单号" width="250" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">
<div class="link">{{ scope.row.code }}</div> <div class="link">{{ scope.row.code }}</div>
@ -46,13 +46,10 @@
/> />
</div> </div>
</div> </div>
<Mask v-if="!open_code" :width="1200" :top="100" :is-show="is_add" @close="closeAddOrder" <Mask :width="1200" :top="100" :is-show="is_add" @close="is_add=false"
title="新增" :height="760"> :title="open_code?'编辑':'新增'">
<AddOrder @close="closeAddOrder"/> <AddOrder v-if="!open_code" @close="closeAddOrder"/>
</Mask> <EditOrder v-else :code="open_code" @close="is_add=false" @updateOrderDetail="init"/>
<Mask v-else :width="1200" :top="100" :is-show="is_edit" @close="closeEditOrder"
title="编辑" :height="720">
<EditOrder :code="open_code" @close="closeEditOrder" @updateOrderDetail="init"/>
</Mask> </Mask>
</div> </div>
</template> </template>
@ -68,15 +65,18 @@ import {Plus} from "@element-plus/icons-vue";
let tableData = ref([]) let tableData = ref([])
let is_add = ref(false) let is_add = ref(false)
let is_edit = ref(false)
const route = useRoute() const route = useRoute()
let open_code = ref(null) let open_code = ref(null)
onMounted(() => { onMounted(() => {
init() init()
}) })
let open_edit = (row: any) => { let open_add = (row: any) => {
is_edit.value = true is_add.value = true
if (row!=null) {
open_code.value = row.code open_code.value = row.code
}else{
open_code.value = null
}
} }
@ -94,11 +94,6 @@ const closeAddOrder = () => {
is_add.value = false is_add.value = false
init() init()
} }
const closeEditOrder = () => {
open_code.value = null
is_edit.value = false
init()
}
// //
let pageSize = ref(20) let pageSize = ref(20)
let total = ref(0) let total = ref(0)

View File

@ -33,7 +33,7 @@
/> />
</div> </div>
</div> </div>
<Mask :width="540" :height="603" :is-show="showAdd" :top="100" @close="showAdd = false" :title="id?'编辑':'添加供应商'"> <Mask :width="400" :height="600" :is-show="showAdd" :top="100" @close="showAdd = false" :title="id?'编辑':'添加'">
<AddSupplier @close="showAdd = false" @saveSuccess="getSupplier()" ref="addSupplierRef"></AddSupplier> <AddSupplier @close="showAdd = false" @saveSuccess="getSupplier()" ref="addSupplierRef"></AddSupplier>
</Mask> </Mask>
</div> </div>