This commit is contained in:
ChenQiuYu 2025-04-28 14:16:01 +08:00
parent 4980225f2f
commit b47c0ee658
9 changed files with 918 additions and 913 deletions

View File

@ -1,4 +1,5 @@
<template> <template>
<Mask :width="1200" :height="600" :top="100" :is-show="isShow" @close="exit" title="新增领用" :show-footer="true">
<div class="add-panel"> <div class="add-panel">
<div class="top"> <div class="top">
<el-form :inline=true label-position="top" :model="formData" label-width="auto"> <el-form :inline=true label-position="top" :model="formData" label-width="auto">
@ -111,23 +112,29 @@
</template> </template>
</tbody> </tbody>
</table> </table>
</div>
</div>
<template #footer>
<div class="bottom"> <div class="bottom">
<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> </template>
</div> </Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref, unref} from "vue"; import {onMounted, ref, unref} from "vue";
import GoodsSearch from "@/components/inventory/GoodsSearch.vue"; import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import CloseBtn from "@/components/CloseBtn.vue"; import CloseBtn from "@/components/CloseBtn.vue";
import Mask from "@/components/common/Mask.vue";
const isShow = ref<any>(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const exit = () => { const exit = () => {
isShow.value = false
emit('close') emit('close')
} }
const formData = ref({ const formData = ref({
@ -162,7 +169,7 @@ const goodsSelectCallBack = (inventory: any) => {
if (findIndexForTableList(inventory.goodId) != -1) { if (findIndexForTableList(inventory.goodId) != -1) {
return return
} }
post("inventory/goods/getByGoodsId", {goodsId: inventory.goodId}).then((res: any) => { post("inventory/goods/getByGoodsId", {goodsId: inventory.goodId,isZero:false}).then((res: any) => {
inventory.batchList = res.inventoryGoodsList inventory.batchList = res.inventoryGoodsList
inventory.minPackagingUnit = res.minPackagingUnit inventory.minPackagingUnit = res.minPackagingUnit
inventory.trdnFlag = res.trdnFlag inventory.trdnFlag = res.trdnFlag
@ -173,7 +180,6 @@ const goodsSelectCallBack = (inventory: any) => {
inventory.packagingUnit = res.packagingUnit inventory.packagingUnit = res.packagingUnit
tableList.value.push(inventory) tableList.value.push(inventory)
}) })
console.log(inventory)
} }
interface childCheck { interface childCheck {
@ -228,7 +234,6 @@ const addLine = (row: any) => {
} }
row.children = children; row.children = children;
console.log("row", row)
}) })
} }
const changeOutNumber = (row: any) => { const changeOutNumber = (row: any) => {
@ -244,25 +249,6 @@ const changeOutNumber = (row: any) => {
console.log(row) console.log(row)
} }
const save = () => { const save = () => {
let children = [];
console.log(tableList.value)
// for (let i = 0; i < tableList.value.length; i++) {
// let item = tableList.value[i];
// for (let j = 0; j < item.children.length; j++) {
// let child = item.children[j];
// if (child && (child.outWholeNumber > 0 || child.outFragmentNumber > 0)) {
// let childrenItem = {
// id: child.id,
// outWholeNumber: child.outWholeNumber,
// outFragmentNumber: child.outFragmentNumber,
// }
// children.push(childrenItem);
// }
// }
//
//
// }
// let dataJson = JSON.stringify(tableList.value);
post("inventory/apply/create", {useInfo: formData.value, data: tableList.value}).then((res: any) => { post("inventory/apply/create", {useInfo: formData.value, data: tableList.value}).then((res: any) => {
exit() exit()
}) })
@ -270,15 +256,14 @@ const save = () => {
} }
const getUserInfo = () => { const getUserInfo = () => {
isShow.value = true
post("manager/user/verify", null).then((res: any) => { post("manager/user/verify", null).then((res: any) => {
formData.value.useUserId = res.id; formData.value.useUserId = res.id;
formData.value.name = res.name; formData.value.name = res.name;
formData.value.username = res.username; formData.value.username = res.username;
}) })
} }
onMounted(() => { defineExpose({getUserInfo})
getUserInfo()
})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.simple-table { .simple-table {
@ -366,6 +351,7 @@ onMounted(() => {
position: relative; position: relative;
margin-top: 24px; margin-top: 24px;
height: 100%; height: 100%;
padding: 0 24px;
.table_content { .table_content {
margin-top: 24px; margin-top: 24px;
@ -397,10 +383,10 @@ onMounted(() => {
.bottom { .bottom {
margin-top: 10px; height: 100%;
position: absolute; display: flex;
right: 10px; justify-content: flex-end;
top: 175%; align-items: center;
padding: 0 24px;
} }
</style> </style>

View File

@ -1,4 +1,6 @@
<template> <template>
<Mask :width="1200" :height="600" :top="100" :is-show="isShow" @close="exit" title="查看领用" :show-footer="true">
<div style="margin-top: 24px;padding: 0 24px">
<el-descriptions border label-width="100"> <el-descriptions border label-width="100">
<el-descriptions-item label="领用人" width="200"> <el-descriptions-item label="领用人" width="200">
<el-input v-model="formData.name" disabled></el-input> <el-input v-model="formData.name" disabled></el-input>
@ -94,14 +96,19 @@
</template> </template>
</tbody> </tbody>
</table> </table>
</div>
<template #footer>
<div class="bottom"> <div class="bottom">
<el-button type="primary" @click="exit">关闭</el-button> <el-button type="primary" @click="exit">关闭</el-button>
</div> </div>
</template> </template>
</Mask>
</template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref, defineProps} from "vue"; import {onMounted, ref, defineProps} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import CloseBtn from "@/components/CloseBtn.vue"; import CloseBtn from "@/components/CloseBtn.vue";
import Mask from "@/components/common/Mask.vue";
const props = defineProps({ const props = defineProps({
id: { id: {
@ -109,11 +116,17 @@ const props = defineProps({
default: null default: null
} }
}) })
const isShow = ref<any>(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const exit = () => { const exit = () => {
formData.value = {
useUserId: null,
name: '',
username: "",
remark: ''
}
isShow.value = false
emit('close') emit('close')
} }
const formData = ref({ const formData = ref({
@ -194,22 +207,27 @@ const addLine = (row: any) => {
}) })
} }
const getUserInfo = () => { const getUserInfo = () => {
post("manager/user/verify", null).then((res: any) => { post("manager/user/verify").then((res: any) => {
formData.value.useUserId = res.id; formData.value.useUserId = res.id;
formData.value.name = res.name; formData.value.name = res.name;
formData.value.username = res.username; formData.value.username = res.username;
}) })
} }
const detail = () => { const detail = (id: any) => {
post("inventory/apply/getApplyDetail", {id: props.id}).then((res: any) => { isShow.value = true
post("inventory/apply/getApplyDetail", {id}).then((res: any) => {
formData.value = res.useInfo; formData.value = res.useInfo;
tableList.value = JSON.parse(res); tableList.value = JSON.parse(res);
}) })
} }
onMounted(() => { onMounted(() => {
getUserInfo()
detail()
}) })
const init=(id: any) => {
getUserInfo()
detail(id)
}
defineExpose({init})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.simple-table { .simple-table {
@ -231,6 +249,7 @@ onMounted(() => {
} }
} }
} }
tbody { tbody {
tr:hover { tr:hover {
background-color: #f5f7fa; /* 悬停效果 */ background-color: #f5f7fa; /* 悬停效果 */
@ -287,15 +306,17 @@ tbody {
background-color: #fffdec; background-color: #fffdec;
} }
} }
.btn { .btn {
margin-top: 5px; margin-top: 5px;
} }
.bottom { .bottom {
margin-top: 10px; height: 100%;
position: absolute; display: flex;
right: 10px; justify-content: flex-end;
bottom: 10px; align-items: center;
padding: 0 24px;
} }
</style> </style>

View File

@ -1,4 +1,5 @@
<template> <template>
<Mask :width="1200" :height="540" :is-show="isShow" :top="100" @close="exit" title="新增盘点" :show-footer="true">
<div class="body_wrapper"> <div class="body_wrapper">
<div class="top" style="width: 100%"> <div class="top" style="width: 100%">
<el-form :model="form" style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top"> <el-form :model="form" style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top">
@ -121,7 +122,7 @@
</table> </table>
</div> </div>
</div> </div>
<template #footer>
<div class="bottom"> <div class="bottom">
<div class="btn"> <div class="btn">
<el-button @click="save" type="primary">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
@ -129,16 +130,206 @@
</div> </div>
</div> </div>
</template> </template>
</Mask>
</template>
<script setup lang="ts">
import {post} from "@/utils/request.ts";
import {ref} from "vue";
import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
import Mask from "@/components/common/Mask.vue";
import {ElMessage} from "element-plus";
const form = ref<any>({
remark: ""
})
const state = ref([])
const goodsSelectCallBack = (item: any) => {
if (findIndexForTableList(item.goodId) != -1) {
return
}
addRow(item.goodId);
state.value = []
}
const findIndexForTableList = (goodId: any) => {
return list.value.findIndex((item: any) => item.goodsId === goodId);
}
interface Check {
id?: number,
goodsId: number,
name: string,
minPackagingUnit: string,
packagingUnit: string,
minPackagingNumber: number,
listSize: number,
trdnFlag: number,
childIdList: number[],
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
children: childCheck[],
selectList: seletcType[],
}
interface seletcType {
id: number,
wholeNumber: number,
fragmentNumber: number,
productionBatchCode: string,
productionDate: string,
expiryDate: string,
purchaseUnitPrice: string
}
interface childCheck {
id?: number,
goodsId: number,
name: string,
minPackagingNumber: number,
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
}
const list = ref<Check[]>([])
const emit = defineEmits(['close'])
let setChange = function (row: any) {
let totalBefore = row.before.wholeNumber * row.minPackagingNumber + row.before.fragmentNumber; // 使
let totalAfter = row.after.wholeNumber * row.minPackagingNumber + row.after.fragmentNumber; // 使
console.log(totalBefore, totalAfter)
let diff = totalAfter - totalBefore;
row.change.wholeNumber = Math.trunc(diff / row.minPackagingNumber);
row.change.fragmentNumber = diff % row.minPackagingNumber
}
let addLine = (row: any) => {
post("inventory/goods/getListByIds", {idList: row.childIdList}).then((list: any) => {
let children = [];
for (let i = 0; i < list.length; i++) {
let inventoryGoods = list[i];
let index = row.children.findIndex((item: any) => item.id === inventoryGoods.id);
if (index > -1) {
children.push(row.children[index]);
} else {
let childCheck: childCheck = {
name: inventoryGoods.name,
id: inventoryGoods.id,
goodsId: inventoryGoods.goodId,
minPackagingNumber: row.minPackagingNumber,
before: {
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
},
after: {
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
},
change: {
wholeNumber: 0,
fragmentNumber: 0,
}
}
children.push(childCheck);
}
}
row.children = children;
})
}
let addRow = (goodsId: number) => {
post("inventory/goods/getByGoodsId", {goodsId, isZero: true}).then((res: any) => {
let check: Check = {
goodsId: res.id,
name: res.name,
listSize: res.listSize,
childIdList: [],
minPackagingNumber: res.minPackagingNumber,
packagingUnit: res.packagingUnit,
minPackagingUnit: res.minPackagingUnit,
trdnFlag: res.trdnFlag,
before: {
wholeNumber: res.wholeNumber,
fragmentNumber: res.fragmentNumber,
},
after: {
wholeNumber: res.wholeNumber,
fragmentNumber: res.fragmentNumber,
},
change: {
wholeNumber: 0,
fragmentNumber: 0,
},
children: [],
selectList: [],
}
let inventoryGoodsList = res.inventoryGoodsList
for (let i = 0; i < inventoryGoodsList.length; i++) {
let inventoryGoods = inventoryGoodsList[i];
let childCheck: seletcType = {
id: inventoryGoods.id,
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
productionBatchCode: inventoryGoods.productionBatchCode,
productionDate: inventoryGoods.productionDate,
expiryDate: inventoryGoods.expiryDate,
purchaseUnitPrice: inventoryGoods.purchaseUnitPrice,
}
check.selectList.push(childCheck)
}
list.value.push(check)
})
}
let save = () => {
post("inventory/check/save", {list: list.value, remark: form.value.remark}).then((res: any) => {
ElMessage.success('保存成功')
exit()
})
}
let exit = () => {
form.value = {
remark: ""
}
list.value=[]
isShow.value = false
emit('close');
}
const isShow = ref<any>(false)
const init = () => {
isShow.value = true
}
defineExpose({init})
</script>
<style scoped lang="scss"> <style scoped lang="scss">
.body_wrapper { .body_wrapper {
position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
min-height: 0; min-height: 0;
flex-direction: column; flex-direction: column;
margin-top: 24px; margin-top: 24px;
padding: 0 24px;
.top { .top {
position: relative; position: relative;
@ -286,203 +477,10 @@
} }
.bottom { .bottom {
height: 86px;
width: 100%;
margin-top: 10px;
position: absolute;
right: 10px;
bottom: 0;
border-top: 1px solid #EAEAEC;
.btn{
width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
} padding: 0 24px;
} }
</style> </style>
<script setup lang="ts">
import {onMounted} from "vue";
import {post} from "@/utils/request.ts";
import {ref} from "vue";
import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
const form = ref<any>({
remark: ""
})
const state = ref([])
const options = ref([])
const goodsSelectCallBack = (item: any) => {
if (findIndexForTableList(item.goodId) != -1) {
return
}
addRow(item.goodId);
state.value = []
}
const findIndexForTableList = (goodId: any) => {
return list.value.findIndex((item: any) => item.goodsId === goodId);
}
interface Check {
id?: number,
goodsId: number,
name: string,
minPackagingUnit: string,
packagingUnit: string,
minPackagingNumber: number,
listSize: number,
trdnFlag: number,
childIdList: number[],
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
children: childCheck[],
selectList: seletcType[],
}
interface seletcType {
id: number,
wholeNumber: number,
fragmentNumber: number,
productionBatchCode: string,
productionDate: string,
expiryDate: string,
purchaseUnitPrice: string
}
interface childCheck {
id?: number,
goodsId: number,
name: string,
minPackagingNumber: number,
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
}
const list = ref<Check[]>([])
const emit = defineEmits(['close'])
onMounted(() => {
//addRow(1);
})
let setChange = function (row: any) {
let totalBefore = row.before.wholeNumber * row.minPackagingNumber + row.before.fragmentNumber; // 使
let totalAfter = row.after.wholeNumber * row.minPackagingNumber + row.after.fragmentNumber; // 使
console.log(totalBefore, totalAfter)
let diff = totalAfter - totalBefore;
row.change.wholeNumber = Math.trunc(diff / row.minPackagingNumber);
row.change.fragmentNumber = diff % row.minPackagingNumber
}
let addLine = (row: any) => {
post("inventory/goods/getListByIds", {idList: row.childIdList}).then((list: any) => {
let children = [];
for (let i = 0; i < list.length; i++) {
let inventoryGoods = list[i];
let index = row.children.findIndex((item: any) => item.id === inventoryGoods.id);
if (index > -1) {
children.push(row.children[index]);
} else {
let childCheck: childCheck = {
name: inventoryGoods.name,
id: inventoryGoods.id,
goodsId: inventoryGoods.goodId,
minPackagingNumber: row.minPackagingNumber,
before: {
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
},
after: {
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
},
change: {
wholeNumber: 0,
fragmentNumber: 0,
}
}
children.push(childCheck);
}
}
row.children = children;
})
}
let addRow = (goodsId: number) => {
post("inventory/goods/getByGoodsId", {goodsId}).then((res: any) => {
let check: Check = {
goodsId: res.id,
name: res.name,
listSize: res.listSize,
childIdList: [],
minPackagingNumber: res.minPackagingNumber,
packagingUnit: res.packagingUnit,
minPackagingUnit: res.minPackagingUnit,
trdnFlag: res.trdnFlag,
before: {
wholeNumber: res.wholeNumber,
fragmentNumber: res.fragmentNumber,
},
after: {
wholeNumber: res.wholeNumber,
fragmentNumber: res.fragmentNumber,
},
change: {
wholeNumber: 0,
fragmentNumber: 0,
},
children: [],
selectList: [],
}
let inventoryGoodsList = res.inventoryGoodsList
for (let i = 0; i < inventoryGoodsList.length; i++) {
let inventoryGoods = inventoryGoodsList[i];
let childCheck: seletcType = {
id: inventoryGoods.id,
wholeNumber: inventoryGoods.wholeNumber,
fragmentNumber: inventoryGoods.fragmentNumber,
productionBatchCode: inventoryGoods.productionBatchCode,
productionDate: inventoryGoods.productionDate,
expiryDate: inventoryGoods.expiryDate,
purchaseUnitPrice: inventoryGoods.purchaseUnitPrice,
}
check.selectList.push(childCheck)
}
list.value.push(check)
})
}
let save = () => {
post("inventory/check/save", {list: list.value, remark: form.value.remark}).then((res: any) => {
emit('close');
})
// emit('close');
}
let exit = () => {
emit('close');
}
</script>

View File

@ -1,4 +1,5 @@
<template> <template>
<Mask :width="1200" :height="540" :is-show="isShow" :top="100" @close="exit" title="查看盘点" :show-footer="true">
<div class="body_wrapper"> <div class="body_wrapper">
<div class="top"> <div class="top">
<el-form :model="form" style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top"> <el-form :model="form" style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top">
@ -108,23 +109,118 @@
</table> </table>
</div> </div>
</div> </div>
<template #footer>
<div class="bottom"> <div class="bottom">
<div class="btn"> <div class="btn">
<el-button @click="exit" type="primary">关闭</el-button> <el-button @click="exit" type="primary">关闭</el-button>
</div> </div>
</div> </div>
</template> </template>
</Mask>
</template>
<script setup lang="ts">
import {onMounted,defineProps} from "vue";
import {post} from "@/utils/request.ts";
import {ref} from "vue";
import Mask from "@/components/common/Mask.vue";
const props = defineProps({
id: {
type: String,
default: null
}
})
const form=ref<any>({
remark: "",
})
interface Check {
id?: number,
goodsId: number,
name: string,
minPackagingUnit: string,
packagingUnit: string,
minPackagingNumber: number,
listSize: number,
trdnFlag: number,
childIdList: number[],
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
children: childCheck[],
selectList: seletcType[],
}
interface seletcType {
id: number,
wholeNumber: number,
fragmentNumber: number,
productionBatchCode: string,
productionDate: string,
expiryDate: string,
purchaseUnitPrice: string
}
interface childCheck {
id?: number,
goodsId: number,
name: string,
minPackagingNumber: number,
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
}
const list = ref<Check[]>([])
const emit = defineEmits(['close'])
let exit = () => {
form.value = {
remark: ""
}
list.value=[]
isShow.value = false
emit('close');
}
const detail = (id: any) => {
isShow.value = true
post("inventory/check/getCheckDetail",{id}).then((res: any) => {
list.value = JSON.parse(res);
})
}
const isShow = ref(false)
defineExpose({detail})
</script>
<style scoped lang="scss"> <style scoped lang="scss">
.body_wrapper { .body_wrapper {
position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
min-height: 0; min-height: 0;
flex-direction: column; flex-direction: column;
margin-top: 24px; margin-top: 24px;
padding: 0 24px;
.top { .top {
position: relative; position: relative;
@ -258,104 +354,10 @@
} }
.bottom { .bottom {
height: 86px;
width: 100%;
margin-top: 10px;
position: absolute;
right: 10px;
bottom: 0;
border-top: 1px solid #EAEAEC;
.btn{
width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
} padding: 0 24px;
} }
</style> </style>
<script setup lang="ts">
import {onMounted,defineProps} from "vue";
import {post} from "@/utils/request.ts";
import {ref} from "vue";
const props = defineProps({
id: {
type: String,
default: null
}
})
const form=ref<any>({
remark: "",
})
interface Check {
id?: number,
goodsId: number,
name: string,
minPackagingUnit: string,
packagingUnit: string,
minPackagingNumber: number,
listSize: number,
trdnFlag: number,
childIdList: number[],
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
children: childCheck[],
selectList: seletcType[],
}
interface seletcType {
id: number,
wholeNumber: number,
fragmentNumber: number,
productionBatchCode: string,
productionDate: string,
expiryDate: string,
purchaseUnitPrice: string
}
interface childCheck {
id?: number,
goodsId: number,
name: string,
minPackagingNumber: number,
before: {
wholeNumber: number,
fragmentNumber: number,
},
after: {
wholeNumber: number,
fragmentNumber: number,
},
change: {
wholeNumber: number,
fragmentNumber: number,
}
}
const list = ref<Check[]>([])
const emit = defineEmits(['close'])
onMounted(() => {
detail()
})
let exit = () => {
emit('close');
}
const detail = () => {
post("inventory/check/getCheckDetail",{id: props.id}).then((res: any) => {
list.value = JSON.parse(res);
})
}
defineExpose({detail})
</script>

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="add-supplier" style="width:100%;margin-top: 24px"> <Mask :width="540" :height="603" :is-show="isShow" :top="100" @close="close" :title="id?'编辑':'添加供应商'" :show-footer="true">
<div class="add-supplier" style="width:100%;margin-top: 24px;padding: 0 24px">
<div class="form"> <div class="form">
<el-form style="width: 100%" ref="ruleFormRef" :model="formData" :inline=true label-position="top"> <el-form style="width: 100%" ref="ruleFormRef" :model="formData" :inline=true label-position="top">
<el-form-item label="供货商名称" style="width: 100%;margin-right: 0"> <el-form-item label="供货商名称" style="width: 100%;margin-right: 0">
@ -45,27 +46,32 @@
</el-form> </el-form>
</div> </div>
</div> </div>
<div class="btn"> <template #footer>
<div class="bottom">
<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>
</Mask>
</template>
<script setup lang="ts"> <script setup lang="ts">
import {ref} from "vue"; import {ref} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import CloseBtn from "@/components/CloseBtn.vue"; import CloseBtn from "@/components/CloseBtn.vue";
import Mask from "@/components/common/Mask.vue";
const formData = ref({ const formData = ref({
name: null, name: null,
turn: 1, turn: 0,
contactName: null, contactName: null,
contactTel: null, contactTel: null,
reamark: null, reamark: null,
licenseCode: null, licenseCode: null,
}) })
const errorMsg = ref('') const errorMsg = ref('')
const emit = defineEmits(['close', 'saveSuccess']) const isShow = ref(false)
const emit = defineEmits(['close'])
const save = () => { const save = () => {
if (formData.value.name === '' || formData.value.name === null) { if (formData.value.name === '' || formData.value.name === null) {
@ -73,15 +79,19 @@ const save = () => {
return return
} }
post("inventory/supplier/save", {inventorySupplier: formData.value}).then((res: any) => { post("inventory/supplier/save", {inventorySupplier: formData.value}).then((res: any) => {
emit('saveSuccess')
close() close()
}) })
} }
const id = ref<any>(null)
const edit = (supplierData: any) => { const editInit = (supplierData: any) => {
isShow.value = true
id.value = supplierData.id
formData.value = supplierData formData.value = supplierData
} }
defineExpose({edit}) const addInit = () => {
isShow.value = true
}
defineExpose({addInit, editInit})
const close = () => { const close = () => {
formData.value = { formData.value = {
@ -93,14 +103,19 @@ const close = () => {
licenseCode: null, licenseCode: null,
} }
errorMsg.value = '' errorMsg.value = ''
isShow.value = false
id.value = null
emit('close') emit('close')
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.btn { .bottom {
position: absolute; height: 100%;
right: 10px; display: flex;
bottom: 10px; justify-content: flex-end;
align-items: center;
padding: 0 24px;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="container-wrapper"> <div class="container-wrapper">
<div class="top"> <div class="top">
<el-button type="primary" :icon="Plus" @click="is_add = true">新增领用</el-button> <el-button type="primary" :icon="Plus" @click="clickApply">新增领用</el-button>
</div> </div>
<div class="content"> <div class="content">
<el-table :data="dataList" style="width: 100%" @row-click="rowClick"> <el-table :data="dataList" style="width: 100%" @row-click="rowClick">
@ -28,33 +28,29 @@
/> />
</div> </div>
</div> </div>
<Mask :width="1200" :height="600" :top="100" :is-show="is_add" @close="is_add=false" title="新增领用"> <AddApply ref="addApplyRef" @close="closeAddApply"/>
<AddApply @close="closeAddApply"/> <DetailApply ref="detailApplyRef" @close="closeDetailApply"/>
</Mask>
<Mask :width="1200" :height="600" :top="100" :is-show="is_detail" @close="is_detail=false" title="查看领用">
<DetailApply :id="id" @close="closeDetailApply"/>
</Mask>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import AddApply from "@/components/inventory/apply/AddApply.vue"; import AddApply from "@/components/inventory/apply/AddApply.vue";
import {onMounted, ref} from "vue"; import {nextTick, onMounted, ref} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import DetailApply from "@/components/inventory/apply/DetailApply.vue"; import DetailApply from "@/components/inventory/apply/DetailApply.vue";
import {Plus} from "@element-plus/icons-vue"; import {Plus} from "@element-plus/icons-vue";
const is_add = ref(false) const is_add = ref(false)
const is_detail = ref(false) const is_detail = ref(false)
const id = ref('')
const dataList = ref([]) const dataList = ref([])
const getList = () => { const getList = () => {
const query = { const query = {
pageNum: 1, pageNum: page.value,
pageSize: 20, pageSize: 20,
} }
post("inventory/apply/list", {query: query}).then((res: any) => { post("inventory/apply/list", {query: query}).then((res: any) => {
dataList.value = res.list dataList.value = res.list
total.value = res.total_count
}) })
} }
onMounted(() => { onMounted(() => {
@ -66,14 +62,7 @@ let total = ref(0)
let page = ref(1) let page = ref(1)
let changePage = (value: number) => { let changePage = (value: number) => {
page.value = value page.value = value
const query = { getList()
pageNum: value,
pageSize: pageSize.value,
}
post("inventory/apply/list", {query: query}).then((res: any) => {
dataList.value = res.list
total.value = res.total_count
})
} }
const closeAddApply = () => { const closeAddApply = () => {
is_add.value = false is_add.value = false
@ -87,14 +76,23 @@ 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 detailApplyRef = ref()
const rowClick = (row: any) => { const rowClick = (row: any) => {
id.value = row.id nextTick(()=>{
is_detail.value = true detailApplyRef.value?.init(row.id)
})
}
const addApplyRef = ref()
const clickApply = () => {
nextTick(() => {
addApplyRef.value?.getUserInfo()
})
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@use "@/assets/scss/base.scss"; @use "@/assets/scss/base.scss";
.container-wrapper { .container-wrapper {
box-sizing: border-box; box-sizing: border-box;
padding: 24px; padding: 24px;
@ -102,12 +100,14 @@ const rowClick = (row: any) => {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
.content { .content {
width: 100%; width: 100%;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
margin-top: base.$margin-base; margin-top: base.$margin-base;
} }
.bottom { .bottom {
width: 100%; width: 100%;
height: 60px; height: 60px;

View File

@ -6,6 +6,7 @@
</el-dropdown> </el-dropdown>
</div> </div>
<div class="content_list"> <div class="content_list">
<el-scrollbar>
<el-table :data="tableData" @cell-click="editCheck"> <el-table :data="tableData" @cell-click="editCheck">
<el-table-column label="订单号" prop="code" width="250"> <el-table-column label="订单号" prop="code" width="250">
</el-table-column> </el-table-column>
@ -17,6 +18,7 @@
</el-table-column> </el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column> <el-table-column label="备注" prop="remark"></el-table-column>
</el-table> </el-table>
</el-scrollbar>
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="page_btn_list"> <div class="page_btn_list">
@ -31,15 +33,11 @@
</div> </div>
</div> </div>
</div> </div>
<Mask :width="1200" :height="540" :is-show="showAdd" :top="100" @close="showAdd = false" title="新增盘点"> <Add ref="addRef" @close="getCheck()"/>
<Add @close="showAdd = false;getCheck()"/> <Detail ref="detailRef" @close="getCheck()"/>
</Mask>
<Mask :width="1200" :height="540" :is-show="showDetail" :top="100" @close="showDetail = false" title="查看盘点">
<Detail :id="id" @close="showDetail = false;getCheck()"/>
</Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref} from "vue"; import {nextTick, onMounted, ref} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import Add from "@/components/inventory/check/Add.vue"; import Add from "@/components/inventory/check/Add.vue";
@ -49,12 +47,13 @@ import {Plus} from "@element-plus/icons-vue";
const tableData = ref([]) const tableData = ref([])
const getCheck = () => { const getCheck = () => {
const query = { const query = {
pageNum: 1, pageNum: page.value,
pageSize: 20 pageSize: 20
} }
post("inventory/check/list", {query: query}).then( post("inventory/check/list", {query: query}).then(
(res: any) => { (res: any) => {
tableData.value = res.list tableData.value = res.list
total.value = res.total_count
} }
) )
} }
@ -62,12 +61,17 @@ const detailCheckRef = ref<any>('');
const showAdd = ref(false) const showAdd = ref(false)
const showDetail = ref(false) const showDetail = ref(false)
const id = ref('') const id = ref('')
const addRef = ref<any>('');
const openAdd = () => { const openAdd = () => {
showAdd.value = true nextTick(() => {
addRef.value?.init()
})
} }
const detailRef = ref<any>('');
const editCheck = (row: any) => { const editCheck = (row: any) => {
id.value = row.id nextTick(() => {
showDetail.value = true detailRef.value?.detail(row.id)
})
} }
onMounted(() => { onMounted(() => {
@ -79,14 +83,7 @@ let total = ref(0)
let page = ref(1) let page = ref(1)
let changePage = (value: number) => { let changePage = (value: number) => {
page.value = value page.value = value
const query = { getCheck()
pageNum: value,
pageSize: pageSize.value,
}
post("goods/goods/searchDetail", {query: query}).then((res: any) => {
tableData.value = res.list
total.value = res.total_count
})
} }
// YYYY-MM-DD // YYYY-MM-DD
const formatDate = (isoStr: any) => { const formatDate = (isoStr: any) => {
@ -105,8 +102,8 @@ const formatDate = (isoStr: any) => {
.content_list { .content_list {
flex: 1; flex: 1;
overflow: hidden;
margin-top: base.$margin-base; margin-top: base.$margin-base;
min-height: 0;
} }
.bottom { .bottom {

View File

@ -6,6 +6,7 @@
</el-dropdown> </el-dropdown>
</div> </div>
<div class="content_list"> <div class="content_list">
<el-scrollbar>
<el-table :data="tableData" style="width: 100%" @row-click="open_edit"> <el-table :data="tableData" style="width: 100%" @row-click="open_edit">
<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">
@ -33,6 +34,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-scrollbar>
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="page_btn_list"> <div class="page_btn_list">
@ -83,11 +85,12 @@ let open_edit = (row: any) => {
let init = () => { let init = () => {
const query = { const query = {
page: 1, page: page.value,
pageSize: 20, pageSize: 20,
} }
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
total.value = res.total_count
}) })
} }
@ -105,14 +108,7 @@ let total = ref(0)
let page = ref(1) let page = ref(1)
let changePage = (value: number) => { let changePage = (value: number) => {
page.value = value page.value = value
const query = { init()
pageNum: value,
pageSize: pageSize.value,
}
post("goods/goods/searchDetail", {query: query}).then((res: any) => {
tableData.value = res.list
total.value = res.total_count
})
} }
// YYYY-MM-DD // YYYY-MM-DD
const formatDate = (isoStr: any) => { const formatDate = (isoStr: any) => {

View File

@ -2,7 +2,7 @@
<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="openAdd">添加供应商</el-button> <el-button type="primary" :icon="Plus" @click="addSupplier(null)">添加供应商</el-button>
</el-dropdown> </el-dropdown>
</div> </div>
<div class="content_list"> <div class="content_list">
@ -33,9 +33,7 @@
/> />
</div> </div>
</div> </div>
<Mask :width="540" :height="603" :is-show="showAdd" :top="100" @close="showAdd = false" :title="id?'编辑':'添加供应商'"> <AddSupplier ref="addSupplierRef" @close="getSupplier()"></AddSupplier>
<AddSupplier @close="showAdd = false" @saveSuccess="getSupplier()" ref="addSupplierRef"></AddSupplier>
</Mask>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -48,29 +46,28 @@ import {Plus} from "@element-plus/icons-vue";
const tableData = ref([]) const tableData = ref([])
const getSupplier = () => { const getSupplier = () => {
const query = { const query = {
page: 1, page: page.value,
pageSize: 20, pageSize: 20,
} }
post("inventory/supplier/list", {query: query}, null).then( post("inventory/supplier/list", {query: query}, null).then(
(res: any) => { (res: any) => {
tableData.value = res.list tableData.value = res.list
total.value = res.total_count
} }
) )
} }
const addSupplierRef = ref(); const addSupplierRef = ref();
const openAdd = () => {
showAdd.value = true
}
const id = ref('')
const editSupplier = (row: any) => { const editSupplier = (row: any) => {
id.value = row.id
openAdd()
nextTick(() => { nextTick(() => {
addSupplierRef.value.edit(row) addSupplierRef.value.editInit(row)
})
}
const addSupplier = (row: any) => {
nextTick(() => {
addSupplierRef.value.addInit()
}) })
} }
const showAdd = ref(false)
onMounted(() => { onMounted(() => {
getSupplier() getSupplier()
}) })
@ -80,14 +77,7 @@ let total = ref(0)
let page = ref(1) let page = ref(1)
let changePage = (value: number) => { let changePage = (value: number) => {
page.value = value page.value = value
const query = { getSupplier()
pageNum: value,
pageSize: pageSize.value,
}
post("goods/goods/searchDetail", {query: query}).then((res: any) => {
tableData.value = res.list
total.value = res.total_count
})
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">