Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
3340e5f3fd
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<span v-for="(item,index) in statusList " :key="index" :class="query.status == item.value ? 'tabs-item' : ''"
|
<span v-for="(item,index) in statusList " :key="index" :class="query.status == item.value ? 'tabs-item' : ''"
|
||||||
@click="tab(item)">{{ item.label }} {{ item.num }}
|
@click="tab(item)">{{ item.label }} ({{ item.num }})
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
|
|
|
||||||
|
|
@ -46,12 +46,6 @@
|
||||||
width: 140px;
|
width: 140px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div style="position: fixed; z-index: 99999;">
|
<div style="position: fixed; z-index: 99999;">
|
||||||
<Mask :height="700" :width="900" :is-show="show">
|
<Mask :height="700" :width="900" :is-show="show" @close="show =false">
|
||||||
<CloseBtn @click="show = false"></CloseBtn>
|
|
||||||
<el-card>
|
<el-card>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="header">追溯码采集</div>
|
<div class="header">追溯码采集</div>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,19 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="采购人">
|
||||||
<el-input style="width: 234px;" disabled v-model="userInfo.name"></el-input>
|
<el-select
|
||||||
|
v-model="inventory_order_data.managerUserId"
|
||||||
|
placeholder="选择采购人"
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in managerUserList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -42,7 +54,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item prop="supplierId" label="供应商" :rules="formRules.supplierId">
|
<el-form-item prop="supplierId" label="供应商" :rules="formRules.supplierId">
|
||||||
<el-select style="width: 234px;" v-model="inventory_order_data.supplierId" placeholder="请选择供应商">
|
<el-select style="width: 130px;margin-right: 10px" v-model="inventory_order_data.supplierId" placeholder="请选择供应商">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in supplier_list"
|
v-for="item in supplier_list"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
|
|
@ -50,6 +62,7 @@
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<el-button type="primary" @click="addSupplier">添加供应商</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
|
@ -163,6 +176,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
<AddSupplier ref="addSupplierRef" @close="getSupplierList"></AddSupplier>
|
||||||
<!-- <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>-->
|
||||||
|
|
@ -175,6 +189,7 @@ import {post} from '@/utils/request.ts'
|
||||||
import Edit from "@/components/inventory/goods/Edit.vue";
|
import Edit from "@/components/inventory/goods/Edit.vue";
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import {ElMessage} from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
|
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 {Search} from "@element-plus/icons-vue";
|
||||||
|
|
@ -195,8 +210,8 @@ let inventory_order_data = ref({
|
||||||
managerUserId: null,
|
managerUserId: null,
|
||||||
kindConut: 0,
|
kindConut: 0,
|
||||||
totalPrice: 0,
|
totalPrice: 0,
|
||||||
shippingCode: null,
|
shippingCode: "-",
|
||||||
invoiceCode: null,
|
invoiceCode: "-",
|
||||||
inventoryOrderGoodsList: []
|
inventoryOrderGoodsList: []
|
||||||
})
|
})
|
||||||
const checkProductionDate = (row: any) => {
|
const checkProductionDate = (row: any) => {
|
||||||
|
|
@ -245,6 +260,11 @@ const getTotalPrice = () => {
|
||||||
const emit = defineEmits(['close'])
|
const emit = defineEmits(['close'])
|
||||||
let exit = () => {
|
let exit = () => {
|
||||||
isShow.value = false
|
isShow.value = false
|
||||||
|
initInventoryOrderData()
|
||||||
|
table_list.value = []
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
const initInventoryOrderData = () => {
|
||||||
inventory_order_data.value = {
|
inventory_order_data.value = {
|
||||||
code: null,
|
code: null,
|
||||||
purchaseDate: getFormattedDate(),
|
purchaseDate: getFormattedDate(),
|
||||||
|
|
@ -254,12 +274,10 @@ let exit = () => {
|
||||||
managerUserId: null,
|
managerUserId: null,
|
||||||
kindConut: 0,
|
kindConut: 0,
|
||||||
totalPrice: 0,
|
totalPrice: 0,
|
||||||
shippingCode: null,
|
shippingCode: "-",
|
||||||
invoiceCode: null,
|
invoiceCode: "-",
|
||||||
inventoryOrderGoodsList: []
|
inventoryOrderGoodsList: []
|
||||||
}
|
}
|
||||||
table_list.value = []
|
|
||||||
emit('close')
|
|
||||||
}
|
}
|
||||||
const table_list: any = ref([])
|
const table_list: any = ref([])
|
||||||
|
|
||||||
|
|
@ -281,7 +299,6 @@ let confirm = async () => {
|
||||||
|
|
||||||
// 验证通过后执行原有逻辑
|
// 验证通过后执行原有逻辑
|
||||||
inventory_order_data.value.kindConut = table_list.value.length;
|
inventory_order_data.value.kindConut = table_list.value.length;
|
||||||
inventory_order_data.value.managerUserId = userInfo.value.id;
|
|
||||||
|
|
||||||
// 添加药品列表验证
|
// 添加药品列表验证
|
||||||
if (table_list.value.length === 0) {
|
if (table_list.value.length === 0) {
|
||||||
|
|
@ -355,6 +372,7 @@ const userInfo = ref<any>({})
|
||||||
const getUserInfo = () => {
|
const getUserInfo = () => {
|
||||||
post("manager/user/verify", null).then((res: any) => {
|
post("manager/user/verify", null).then((res: any) => {
|
||||||
userInfo.value = res
|
userInfo.value = res
|
||||||
|
inventory_order_data.value.managerUserId = res.id
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const removeTableRow = (row: any) => {
|
const removeTableRow = (row: any) => {
|
||||||
|
|
@ -367,7 +385,16 @@ const removeTableRow = (row: any) => {
|
||||||
const init = () => {
|
const init = () => {
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
getSupplierList()
|
getSupplierList()
|
||||||
|
getManagerUserList()
|
||||||
getUserInfo()
|
getUserInfo()
|
||||||
|
|
||||||
|
}
|
||||||
|
const managerUserList: any = ref([])
|
||||||
|
const getManagerUserList = () => {
|
||||||
|
post("manager/user/list", {
|
||||||
|
}).then((res: any) => {
|
||||||
|
managerUserList.value = res
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// 追溯码代码
|
// 追溯码代码
|
||||||
const openCheckoutDetail = (row: any) => {
|
const openCheckoutDetail = (row: any) => {
|
||||||
|
|
@ -389,6 +416,12 @@ const confirmTrace = (data: any) => {
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
}
|
}
|
||||||
|
const addSupplierRef = ref()
|
||||||
|
const addSupplier = () => {
|
||||||
|
nextTick(() => {
|
||||||
|
addSupplierRef.value?.addInit();
|
||||||
|
})
|
||||||
|
}
|
||||||
defineExpose({init})
|
defineExpose({init})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,21 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="采购人">
|
||||||
<span style="width: 234px;" class="order-info">{{ inventory_order_data.managerUserName }}</span>
|
<el-select
|
||||||
|
v-if="orderInfoIsEdit"
|
||||||
|
v-model="inventory_order_data.managerUserId"
|
||||||
|
placeholder="选择采购人"
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in managerUserList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.managerUserName }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -52,7 +66,7 @@
|
||||||
v-model="inventory_order_data.supplierId"
|
v-model="inventory_order_data.supplierId"
|
||||||
placeholder="请选择供应商"
|
placeholder="请选择供应商"
|
||||||
v-if="orderInfoIsEdit"
|
v-if="orderInfoIsEdit"
|
||||||
style="width: 234px;"
|
style="width: 130px;margin-right: 10px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in supplier_list"
|
v-for="item in supplier_list"
|
||||||
|
|
@ -61,7 +75,8 @@
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span style="width: 234px;" class="order-info" v-else>{{ inventory_order_data.supplierName }}</span>
|
<el-button v-if="orderInfoIsEdit" type="primary" @click="addSupplier">添加供应商</el-button>
|
||||||
|
<span style="width: 234px;" class="order-info" v-if="!orderInfoIsEdit">{{ inventory_order_data.supplierName }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -192,7 +207,7 @@
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
||||||
|
<AddSupplier ref="addSupplierRef" @close="getSupplierList"></AddSupplier>
|
||||||
<Mask :is-show="is_add">
|
<Mask :is-show="is_add">
|
||||||
<Edit ref="editRef" @close="is_add = false;"/>
|
<Edit ref="editRef" @close="is_add = false;"/>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -207,6 +222,7 @@ import Mask from "@/components/common/Mask.vue";
|
||||||
import {ElMessage, ElMessageBox} from "element-plus";
|
import {ElMessage, ElMessageBox} from "element-plus";
|
||||||
import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
|
import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
|
||||||
import CloseBtn from "@/components/CloseBtn.vue";
|
import CloseBtn from "@/components/CloseBtn.vue";
|
||||||
|
import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
code: {
|
code: {
|
||||||
|
|
@ -303,7 +319,9 @@ const init = (e: any) => {
|
||||||
code.value = e
|
code.value = e
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
getSupplierList()
|
getSupplierList()
|
||||||
|
getManagerUserList()
|
||||||
getOrderDetail()
|
getOrderDetail()
|
||||||
|
|
||||||
}
|
}
|
||||||
const getTotalPrice = () => {
|
const getTotalPrice = () => {
|
||||||
let totalPrice = 0;
|
let totalPrice = 0;
|
||||||
|
|
@ -362,6 +380,13 @@ const addOneGoods = (row: any) => {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
const managerUserList: any = ref([])
|
||||||
|
const getManagerUserList = () => {
|
||||||
|
post("manager/user/list", {}).then((res: any) => {
|
||||||
|
managerUserList.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const checkValue = (data: any) => {
|
const checkValue = (data: any) => {
|
||||||
let msg = null;
|
let msg = null;
|
||||||
if (data.wholeNumber == 0) {
|
if (data.wholeNumber == 0) {
|
||||||
|
|
@ -397,7 +422,13 @@ const goodsSelectCallBack = (inventory: any) => {
|
||||||
getTotalPrice()
|
getTotalPrice()
|
||||||
}, 200)
|
}, 200)
|
||||||
}
|
}
|
||||||
|
const addSupplierRef = ref();
|
||||||
|
const addSupplier = () => {
|
||||||
|
nextTick(() => {
|
||||||
|
addSupplierRef.value?.addInit()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
defineExpose({init})
|
defineExpose({init})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -439,6 +470,7 @@ defineExpose({init})
|
||||||
.active {
|
.active {
|
||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.edit-panel {
|
.edit-panel {
|
||||||
height: 562px;
|
height: 562px;
|
||||||
padding: 24px 24px 0;
|
padding: 24px 24px 0;
|
||||||
|
|
@ -471,6 +503,7 @@ defineExpose({init})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
height: 86px;
|
height: 86px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,11 @@ const reciceMessage = (response: Response) => {
|
||||||
}
|
}
|
||||||
const errorCallback = () => {
|
const errorCallback = () => {
|
||||||
emit('changeLoading', false)
|
emit('changeLoading', false)
|
||||||
|
ElMessage({
|
||||||
|
message: "读卡器连接失败",
|
||||||
|
duration: 1000,
|
||||||
|
type: 'error',
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const emit = defineEmits(['socialCardUpdate', 'close', 'changeLoading'])
|
const emit = defineEmits(['socialCardUpdate', 'close', 'changeLoading'])
|
||||||
|
|
@ -82,14 +87,6 @@ const getInfoFor1101 = (params: any) => {
|
||||||
duration: 1000,
|
duration: 1000,
|
||||||
});
|
});
|
||||||
emit('socialCardUpdate', socialCard.value)
|
emit('socialCardUpdate', socialCard.value)
|
||||||
}).catch((err:any) => {
|
|
||||||
isReading.value = false;
|
|
||||||
emit('changeLoading', false)
|
|
||||||
ElMessage({
|
|
||||||
message: "读取失败",
|
|
||||||
duration: 1000,
|
|
||||||
type: 'error',
|
|
||||||
});
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-container">
|
<div class="layout-container">
|
||||||
<Header class="header"/>
|
<Header class="header"/>
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="center-wrapper">
|
<div class="center-wrapper">
|
||||||
<div class="childMenu">
|
<div class="childMenu">
|
||||||
|
|
@ -11,8 +10,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
||||||
<div class="space"></div>
|
<div class="space"></div>
|
||||||
<main class="layout-main">
|
<main class="layout-main">
|
||||||
<router-view/>
|
<router-view/>
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,22 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<el-form :inline="true" :model="searchModel">
|
<el-form :inline="true" :model="searchModel">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input placeholder="请输入名称"
|
<el-input placeholder="名称/首字母/批准文号/条形码/标识码"
|
||||||
clearable
|
clearable
|
||||||
v-model="searchModel.keyword"
|
v-model="searchModel.keyword"
|
||||||
style="width: 290px;height: 42px"
|
style="width: 290px;height: 42px"
|
||||||
@input="searchGoods"
|
@input="searchGoods"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon>
|
||||||
|
<Search/>
|
||||||
|
</el-icon>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-cascader style="width: 180px;height: 42px" :options="allCateList" :show-all-levels="false" v-model="searchModel.cateId" clearable/>
|
<el-cascader style="width: 180px;height: 42px" :options="allCateList" :show-all-levels="false"
|
||||||
|
v-model="searchModel.cateId" clearable/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -37,7 +40,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="margin-right: 0">
|
<el-form-item style="margin-right: 0">
|
||||||
<el-input placeholder="最低毛利率" v-model="searchModel.minInterestRate" style="width: 100px;height: 42px">
|
<el-input placeholder="最低毛利率" v-model="searchModel.minInterestRate"
|
||||||
|
style="width: 100px;height: 42px">
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<el-icon class="el-input__icon">%</el-icon>
|
<el-icon class="el-input__icon">%</el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -47,22 +51,33 @@
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input placeholder="最高毛利率" v-model="searchModel.maxInterestRate" style="width: 100px;height: 42px">
|
<el-input placeholder="最高毛利率" v-model="searchModel.maxInterestRate"
|
||||||
|
style="width: 100px;height: 42px">
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<el-icon class="el-input__icon">%</el-icon>
|
<el-icon class="el-input__icon">%</el-icon>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="btn">
|
|
||||||
<div @click="searchGoods">搜索</div>
|
|
||||||
<div @click="resetSearch">重置</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="btn-group">
|
||||||
<div class="right">
|
<div class="left">
|
||||||
<el-checkbox v-model="inventoryNumber" label="不看0库存" size="large" @change="searchGoods"/>
|
<el-checkbox v-model="inventoryNumber" label="不看0库存" size="large" @change="searchGoods"/>
|
||||||
<el-checkbox v-model="status" label="不看已停用" size="large" @change="searchGoods"/>
|
<el-checkbox v-model="status" label="不看已停用" size="large" @change="searchGoods"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn" @click="resetSearch">
|
||||||
|
<el-icon style="margin-right: 10px">
|
||||||
|
<Refresh/>
|
||||||
|
</el-icon>
|
||||||
|
重置
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="searchGoods">
|
||||||
|
<el-icon style="margin-right: 10px">
|
||||||
|
<Search/>
|
||||||
|
</el-icon>
|
||||||
|
搜索
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="addBtn">
|
<div class="addBtn">
|
||||||
<span @click="open_edit(1301,0)">新增中西成药</span>
|
<span @click="open_edit(1301,0)">新增中西成药</span>
|
||||||
|
|
@ -72,7 +87,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_goods" ref="content">
|
<div class="content_goods" ref="content">
|
||||||
<el-table :data="tableData" style="width: 100%;height: 100%;padding: 0 24px" @row-click="openMack" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
<el-table :data="tableData" style="width: 100%;height: 100%;padding: 0 24px" @row-click="openMack"
|
||||||
|
:header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip>
|
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.name }}{{ scope.row.commonName ? "(" + scope.row.commonName + ")" : "" }}
|
{{ scope.row.name }}{{ scope.row.commonName ? "(" + scope.row.commonName + ")" : "" }}
|
||||||
|
|
@ -152,11 +168,6 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" prop="remark" width="100" show-overflow-tooltip/>
|
<el-table-column label="备注" prop="remark" width="100" show-overflow-tooltip/>
|
||||||
<el-table-column label="医保类别">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ getTypeName(scope.row.type) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
|
|
@ -204,7 +215,8 @@ import Edit from "@/components/inventory/goods/Edit.vue";
|
||||||
import InventoryBatchDetail from "@/components/inventory/goods/InventoryBatchDetail.vue";
|
import InventoryBatchDetail from "@/components/inventory/goods/InventoryBatchDetail.vue";
|
||||||
import InventoryStatistics from "@/components/inventory/goods/InventoryStatistics.vue";
|
import InventoryStatistics from "@/components/inventory/goods/InventoryStatistics.vue";
|
||||||
import CloseBtn from "@/components/CloseBtn.vue";
|
import CloseBtn from "@/components/CloseBtn.vue";
|
||||||
import {Search, SemiSelect} from "@element-plus/icons-vue";
|
import {Search, SemiSelect, Refresh} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
const statisticsData = ref<any>({})
|
const statisticsData = ref<any>({})
|
||||||
const inventoryNumber = ref(false)
|
const inventoryNumber = ref(false)
|
||||||
const status = ref(false)
|
const status = ref(false)
|
||||||
|
|
@ -431,7 +443,7 @@ const getStatisticsData = () => {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
height: 157px;
|
height: 144px;
|
||||||
padding: 24px 24px 0;
|
padding: 24px 24px 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -468,6 +480,12 @@ const getStatisticsData = () => {
|
||||||
color: #4D6DE4;
|
color: #4D6DE4;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 42px;
|
line-height: 42px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -499,10 +517,34 @@ const getStatisticsData = () => {
|
||||||
.tags {
|
.tags {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-cascader .el-input) {
|
:deep(.el-cascader .el-input) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-select__wrapper) {
|
:deep(.el-select__wrapper) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-group {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 42px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #979797;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,37 +1,111 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<el-dropdown>
|
<div class="search">
|
||||||
<el-button type="primary" :icon="Plus" @click="openAdd">新增采购</el-button>
|
<div class="left">
|
||||||
</el-dropdown>
|
<el-form :inline="true" :model="searchModel">
|
||||||
|
<el-form-item >
|
||||||
|
<el-date-picker
|
||||||
|
v-model="selectedDate"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="-"
|
||||||
|
@change="handleDateChange"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="searchModel.code"
|
||||||
|
placeholder="单号"
|
||||||
|
style="width: 200px;height: 42px"
|
||||||
|
:prefix-icon="Search"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select
|
||||||
|
v-model="searchModel.supplierIds"
|
||||||
|
placeholder="供应商"
|
||||||
|
style="width: 200px;height: 42px"
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in supplier_list"
|
||||||
|
:key="item"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select
|
||||||
|
v-model="searchModel.managerUserIds"
|
||||||
|
placeholder="采购人"
|
||||||
|
style="width: 200px;height: 42px"
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in managerUserList"
|
||||||
|
:key="item"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<div class="btn" @click="resetSearch">
|
||||||
|
<el-icon style="margin-right: 10px">
|
||||||
|
<Refresh/>
|
||||||
|
</el-icon>
|
||||||
|
重置
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="init">
|
||||||
|
<el-icon style="margin-right: 10px">
|
||||||
|
<Search/>
|
||||||
|
</el-icon>
|
||||||
|
搜索
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="addBtn">
|
||||||
|
<span @click="openAdd">新增采购</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list">
|
<div class="content_list">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-table :data="tableData" style="width: 100%" @row-click="open_edit">
|
<el-table :data="tableData" style="width: 100%" @row-click="open_edit" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column fixed label="进货单号" width="250" show-overflow-tooltip>
|
<el-table-column fixed label="采购单号" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="link">{{ scope.row.code }}</div>
|
<div class="link">{{ scope.row.code }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="品种" prop="kindCount" width="100">
|
<el-table-column label="货单号" prop="shippingCode">
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="入库金额" width="100">
|
<el-table-column label="品种" prop="kindCount">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="入库金额">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
¥{{ scope.row.totalPrice.toFixed(2) }}
|
¥{{ scope.row.totalPrice.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="采购人" prop="managerUserName" width="100"></el-table-column>
|
<el-table-column label="采购人" prop="managerUserName"></el-table-column>
|
||||||
<el-table-column label="供应商" prop="supplierName"></el-table-column>
|
<el-table-column label="供应商" prop="supplierName"></el-table-column>
|
||||||
<el-table-column prop="purchaseDate" label="采购时间">
|
<el-table-column prop="purchaseDate" label="采购时间">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ formatDate(scope.row.purchaseDate) }}
|
{{ formatDate(scope.row.purchaseDate) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="createDatetime" label="创建时间">
|
<!-- <el-table-column prop="createDatetime" label="入库时间">-->
|
||||||
<template #default="scope">
|
<!-- <template #default="scope">-->
|
||||||
{{ formatDate(scope.row.createDatetime) }}
|
<!-- {{ formatDate(scope.row.purchaseDate) }}-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<el-table-column label="备注" prop="remark">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
|
|
@ -60,7 +134,8 @@ import {useRoute} from "vue-router";
|
||||||
import AddOrder from "@/components/inventory/purchase/AddOrder.vue";
|
import AddOrder from "@/components/inventory/purchase/AddOrder.vue";
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
||||||
import {Plus} from "@element-plus/icons-vue";
|
import {Plus, Refresh, Search, SemiSelect} from "@element-plus/icons-vue";
|
||||||
|
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
let tableData = ref([])
|
let tableData = ref([])
|
||||||
let is_edit = ref(false)
|
let is_edit = ref(false)
|
||||||
|
|
@ -68,6 +143,8 @@ const route = useRoute()
|
||||||
let open_code = ref(null)
|
let open_code = ref(null)
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
|
getSupplierList()
|
||||||
|
getManagerUserList()
|
||||||
})
|
})
|
||||||
const addOrderRef = ref<any>('')
|
const addOrderRef = ref<any>('')
|
||||||
const openAdd = () => {
|
const openAdd = () => {
|
||||||
|
|
@ -87,6 +164,7 @@ let init = () => {
|
||||||
const query = {
|
const query = {
|
||||||
page: page.value,
|
page: page.value,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
...searchModel.value
|
||||||
}
|
}
|
||||||
post("inventory/order/list", {query: query}).then((res: any) => {
|
post("inventory/order/list", {query: query}).then((res: any) => {
|
||||||
tableData.value = res.list
|
tableData.value = res.list
|
||||||
|
|
@ -115,6 +193,49 @@ const formatDate = (isoStr: any) => {
|
||||||
const date = new Date(isoStr);
|
const date = new Date(isoStr);
|
||||||
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
|
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const selectedDate = ref<any>([])
|
||||||
|
const handleDateChange = (date: any[]) => {
|
||||||
|
selectedDate.value = formatDateArray(date)
|
||||||
|
if (selectedDate.value[0] == selectedDate.value[1]) {
|
||||||
|
selectedDate.value[1] = getEndOfDay(selectedDate.value[1]); // 输出今天 23:59
|
||||||
|
}
|
||||||
|
searchModel.value.beginTime = selectedDate.value[0]
|
||||||
|
searchModel.value.endTime = selectedDate.value[1]
|
||||||
|
}
|
||||||
|
const supplier_list = ref<any>([])
|
||||||
|
const getSupplierList = () => {
|
||||||
|
const query = {
|
||||||
|
turn: 1
|
||||||
|
}
|
||||||
|
post("inventory/supplier/list", {query: query}).then((res: any) => {
|
||||||
|
supplier_list.value = res.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const managerUserList: any = ref([])
|
||||||
|
const getManagerUserList = () => {
|
||||||
|
post("manager/user/list", {
|
||||||
|
}).then((res: any) => {
|
||||||
|
managerUserList.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const searchModel = ref({
|
||||||
|
code: "",
|
||||||
|
managerUserIds: [],
|
||||||
|
supplierIds: [],
|
||||||
|
beginTime: null,
|
||||||
|
endTime:null
|
||||||
|
})
|
||||||
|
const resetSearch = () => {
|
||||||
|
searchModel.value = {
|
||||||
|
code: "",
|
||||||
|
managerUserIds: [],
|
||||||
|
supplierIds: [],
|
||||||
|
beginTime: null,
|
||||||
|
endTime:null
|
||||||
|
}
|
||||||
|
init()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@use "@/assets/scss/base.scss";
|
@use "@/assets/scss/base.scss";
|
||||||
|
|
@ -202,4 +323,74 @@ const formatDate = (isoStr: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
.top {
|
||||||
|
height: 110px;
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.left {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-right: 24px;
|
||||||
|
.el-form-item {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
display: flex;
|
||||||
|
.btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 42px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #979797;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.addBtn {
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 120px;
|
||||||
|
height: 42px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #4D6DE4;
|
||||||
|
margin-right: 24px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #4D6DE4;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 42px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
:deep(.el-range-editor.el-input__wrapper) {
|
||||||
|
height: 42px;
|
||||||
|
}
|
||||||
|
:deep(.el-select__wrapper) {
|
||||||
|
height: 42px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Loading…
Reference in New Issue