出入库

This commit is contained in:
wangweidong 2025-11-05 14:41:18 +08:00
parent 0671fb3f6b
commit fafc5c3522
11 changed files with 2611 additions and 351 deletions

View File

@ -170,17 +170,14 @@
},
{
"path": "pages/Warehouse/procurecart",
"style": {
"navigationBarTitleText": ""
}
"path": "pages/Warehouse/Inventoryalert"
},
{
"path": "pages/Warehouse/procurecart"
},
{
"path": "pages/Warehouse/purchaseorder",
"style": {
"navigationStyle": "custom"
}
"path": "pages/Warehouse/purchaseorder"
}
// {

File diff suppressed because it is too large Load Diff

View File

@ -33,7 +33,6 @@
</view>
</view>
<view @click="onlyjump(5)" class="zhanwei"></view>
<arrowkeys @movecard="movecard" :getblue="getblue" :moveleft="45" />
<view class="operationbtn">
<view v-for="(v,i) in ['请领出库','退货入库','库存盘点','实时监控']" @tap="onTap(i)"
@ -45,11 +44,14 @@
</view>
</view>
</view>
<equiment :open="tost" zhao @configdel="config" :propsmove="propsmove" ref="childRef" @del="del(anmidex)" :content="'有未完成的采购单 ,是否清空购物车?'"></equiment>
</view>
</template>
<script setup lang="ts">
import { queryShoppingCartList , emptiedQgInfo } from './api/lunpan.js'
import { ref, onMounted, onBeforeUnmount, computed, nextTick, defineProps } from 'vue';
import equiment from './components/equiment.vue';
const darkFans = ref(false);
const getblue = ref(false);
const props = defineProps({
@ -89,8 +91,24 @@
onMounted(() => {
housedex.value = 1
})
const config = ()=>{
tost.value = false
}
const navurl = ref('');
const tost = ref(false);
const del = ( )=>{
emptiedQgInfo().then(res=>{
tost.value = false;
uni.navigateBack()
})
}
const childRef = ref(null)
const propsmove = ref(0)
const movecard = (type : number) => {
if(tost.value==true){
propsmove.value = type
return
}
// console.log(type,housedex.value)
switch (type) {
case 0:
@ -130,7 +148,19 @@
break;
case 5:
//
let fm = {
nuId:uni.getStorageSync('nuId'),
pageNo: 1,
pageSize: 13,
}
queryShoppingCartList(fm).then(res => {
if(res.result.records.length>0){
tost.value = true
}else{
uni.navigateBack()
}
})
break;
default:

View File

@ -10,6 +10,14 @@ export const queryInvoicingList = (params) => {
})
}
export const getWaringMaterialTreeData = (params) => {
return request({
url: `${uni.getStorageSync('serverUrl')}//api/pad/invoicing/getWaringMaterialTreeData?nuId=`+params.nuId,
method: 'get',
data: params,
})
}
// 获取物料分类树(请购列表使用)
export const getMaterialTreeData = (params) => {
return request({

View File

@ -1,6 +1,6 @@
<template>
<view>
<view class="zhezhao" v-show="open"
<view :class="zhao?'zhezhao':'zhezhaoall'" v-show="open"
@click="closeall()">
<view class="neuro-box" @click.stop v-if="open">
<view class="button-father">
@ -33,7 +33,11 @@
},
isMain: {
type: Boolean
}
},
zhao:{
type: Boolean,
required: false,
},
});
watch(
() => props.propsmove,
@ -79,12 +83,12 @@
<style scoped lang="less">
.card-font {
margin-top: 70rpx;
width: 600rpx;
min-width: 600rpx;
justify-content: center;
display: flex;
}
.button-white {
width: 40%;
min-width: 40%;
border: 2rpx solid #c3cacd;
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
display: flex;
@ -115,6 +119,7 @@
justify-content: space-around;
padding: 0 50rpx;
}
.neuro-box {
position: absolute;
left: 0;
@ -122,18 +127,25 @@
bottom: 0;
right: 0;
margin: auto;
width: 400rpx;
width: 500rpx;
height: 270rpx;
border-radius: 30rpx;
background-color: #fff;
display: flex;
flex-direction: column;
align-items: center;
z-index: 21;
padding: 0 10%;
z-index: 999;
z-index: 40;
}
.zhezhao {
position: fixed;
top: 25vh;
left: 0;
width: 100vw;
height: 50vh;
z-index: 25;
}
.zhezhaoall{
position: fixed;
top: 0;
left: 0;

View File

@ -327,7 +327,6 @@
status: shyp.value ? '5' : '2'
}
updateKfstatus(obj).then(res => {
console.log(res)
if (res.success) {
shyp.value = shyp.value ? false : true;
cell();

View File

@ -288,61 +288,11 @@
</view>
</view>
<view class="mengban" v-if="crk" @click="qingkong"></view>
<view class="crkcard guodu" :class="crk?'':'uncrkcard'">
<view class="shopcont">
<view class="img tp">
<image :src=" '/static/index/warehouse/procurement/k.png'" mode="aspectFill"></image>
</view>
<view class="cont">
<view>纸尿裤-拉拉裤纸尿裤-拉拉裤</view>
<view>规格型号: 800mm*680mm</view>
<view>物料编码: ZHYP044</view>
<view>
<text>56</text>
当前库存
</view>
</view>
</view>
<view class="select">
<view>
<view>全部</view>
<view>日期从近到远
<image src="/static/index/hulilist/xia.png" mode="aspectFill"></image>
</view>
</view>
<view>
<text>总计:100</text>
<text>出库50</text>
<text>入库50</text>
</view>
</view>
<scroll-view scroll-y="true" class="crkscroll">
<view class="cgrk" v-for="(v,i) in 15" :key='i'>
<view>
<text>采购入库</text>
<text>服务指令:生活用品请领</text>
<text>2025-02-13 17:29:18</text>
</view>
<view>
<text>摘要:服务指令</text>
<text :class="i>5?'c':'l'">+50</text>
<text>库存96</text>
</view>
</view>
</scroll-view>
</view>
<view class="mengban" v-if="wlxq" @click="qingkong"></view>
<view class="wuliao guodu" :class="wlxq?'':'uncrkcard'">
<view v-if="wldex==0">
<view class="name">
<view>{{wuliaoobj?.materialName}}</view>
<!-- <view>
<view class="swsh guodu" :class="caigouobj.izEnabled=='0'?'act':''"
@click="caiswitchshyp(caigouobj.izEnabled,caigouobj.id)">
<view class="guodu"></view>
</view>
<text>{{caigouobj.izEnabled_dictText}}</text>
</view> -->
</view>
<view class="znk tp">
<image class="crkcard-img"
@ -350,8 +300,8 @@
mode="aspectFill"></image>
</view>
<view class="life">
<view v-if="wuliaoobj?.categoryName">{{wuliaoobj.categoryName}}</view>
<view v-if="wuliaoobj?.typeName">{{wuliaoobj.typeName}}</view>
<view v-if="wuliaoobj?.categoryId_dictText">{{wuliaoobj.categoryId_dictText}}</view>
<view v-if="wuliaoobj?.typeId_dictText">{{wuliaoobj.typeId_dictText}}</view>
<view v-if="wuliaoobj?.medicationName">{{wuliaoobj?.medicationName}}</view>
</view>
<view class="zil">
@ -387,6 +337,39 @@
</view>
</view>
</view>
<view v-if="wldex==1">
<view class="select">
<view>
<view>全部</view>
<view>日期从近到远
<image src="/static/index/hulilist/xia.png" mode="aspectFill"></image>
</view>
</view>
<view>
<text>总计:100</text>
<text>出库50</text>
<text>入库50</text>
</view>
</view>
<scroll-view scroll-y="true" class="crkscroll">
<view class="cgrk" v-for="(v,i) in 15" :key='i'>
<view>
<text>采购入库</text>
<text>服务指令:生活用品请领</text>
<text>2025-02-13 17:29:18</text>
</view>
<view>
<text>摘要:服务指令</text>
<text :class="i>5?'c':'l'">+50</text>
<text>库存96</text>
</view>
</view>
</scroll-view>
</view>
<view class="qiehuan">
<view v-for="(v,i) in ['物料详情','出入库']" :key='i' :class="i==wldex?'at':''" @click="wldex=i">{{v}}</view>
</view>
</view>
</view>
</template>
@ -410,18 +393,17 @@
const opacity = ref(false);
const gysnum = ref(false);
const gys = ref(false);
const crk = ref(false);
const wlxq = ref(false);
const lie = ref(false)
const scrollnum = ref(0);
const wldex = ref(0);
const scroll = reactive({ scrolltop1: 0, scrolltop2: 0, scrolltop3: 0, act1: -1, act2: -1, act3: -1 });
const form = reactive({
nuId: '',
pageNo: 1,
pageSize: 9,
pageSize: 11,
categoryId: '',
typeId: '',
medicationId: '',
@ -532,10 +514,10 @@
const qingkong = () => {
gys.value = false;
anmidex.value = -1;
crk.value = false;
wlxq.value = false;
gysnum.value = false;
gysflag.value = false;
wldex.value = 0;
}
const colse = () => {
@ -724,16 +706,12 @@
})
return
}
if (anmidex.value == i) {
if(i==0){
animArray.value[0].flag = false;
form.isWaring = 0;
form.pageNo = 1;
InvoicingList.value = [];
queryInvo();
uni.navigateTo({
url:'/pages/Warehouse/Inventoryalert'
})
return
}
anmidex.value = -1;
} else {
anmidex.value = i;
switch (i) {
case 0:
@ -784,7 +762,8 @@
break;
case 3:
wuliaoobj.value = InvoicingList.value[shopitem.value];
wlxq.value = true
wlxq.value = true;
console.log(wuliaoobj.value)
// let obj = {
// wlId:caigouobj.value.wlId,
// nuId:form.nuId
@ -795,19 +774,19 @@
// })
break;
case 4:
crk.value = true
break;
case 5:
// crk.value = true
uni.navigateTo({
url:'/pages/Warehouse/procurecart'
})
break;
case 5:
break;
default:
break;
}
}
}
const gysidnum = ref(0)
const gysflag = ref(false)
const gysid = (i:number)=>{
@ -909,18 +888,18 @@
name: '物料详情',
imgurl: '/static/index/warehouse/procurement/details/details01.png'
},
{
url: genPaths(
'/static/index/warehouse/procurement/bound',
'bound0',
11, //
'png',
1, // 1
false //
),
name: '出入库',
imgurl: '/static/index/warehouse/procurement/bound/bound01.png'
},
// {
// url: genPaths(
// '/static/index/warehouse/procurement/bound',
// 'bound0',
// 11, //
// 'png',
// 1, // 1
// false //
// ),
// name: '',
// imgurl: '/static/index/warehouse/procurement/bound/bound01.png'
// },
{
url: genPaths(
'/static/index/warehouse/procurement/Cart',
@ -937,17 +916,153 @@
</script>
<style lang="less">
.uncrkcard{
right: -26vw !important;
}
.wuliao {
width: 25.2vw;
height: 48.8vw;
height: 68vh;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 1vw 0rpx rgba(171, 171, 172, 0.29);
border-radius: 1.6vw;
position: fixed;
bottom: 11vw;
bottom: 10vw;
right: 1.5vw;
z-index: 103;
padding: 2vw 2.2vw 2vw;
padding:1vw 2vw 0.5vw;
.crkscroll {
width: 100%;
height: 31.2vw;
.cgrk {
width: 100%;
height: 8.5vw;
border-radius: 1.6vw;
margin: 0.8vw auto 0;
padding: 1.8vw 0.5vw;
display: flex;
justify-content: space-between;
background: #FBFBFC;
border: 1px solid rgba(204,204,204,0.34);
>view {
display: flex;
flex-direction: column;
justify-content: space-between;
&:nth-child(1) {
text {
&:nth-child(2),
&:nth-child(3) {
font-weight: 400;
font-size: 1.1vw;
color: #888888;
}
&:nth-child(1) {
font-weight: bold;
font-size: 1.2vw;
color: #333333;
}
}
}
&:nth-child(2) {
.c {
color: #FF6600 !important;
}
.l {
color: #0076D6 !important;
}
text {
font-weight: 400;
font-size: 1.1vw;
color: #888888;
text-align: right;
&:nth-child(2) {
font-weight: bold;
font-size: 1.4vw;
color: #333333;
}
}
}
}
}
}
.select {
width: 100%;
height: 7vw;
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 1vw 0;
>view {
display: flex;
justify-content: center;
&:nth-child(2) {
justify-content: space-between;
text {
font-weight: 400;
font-size: 1.1vw;
color: #555555;
}
}
&:nth-child(1) {
justify-content: flex-end;
white-space: nowrap;
view {
min-width: 5vw;
height: 2.6vw;
border-radius: 1.3vw;
border: 1px solid #DCDCDC;
padding: 0 1.4vw;
align-items: center;
display: flex;
align-items: center;
margin: 0 0.5vw;
image {
width: 0.7vw;
height: 0.5vw;
margin-left: 0.4vw;
}
}
}
}
}
.qiehuan{
width: 100%;
height: 5vw;
display: flex;
justify-content: flex-end;
align-items: center;
view{
width: 6.6vw;
height: 2.8vw;
border-radius: 1.3vw;
border: 1px solid #E5E5E5;
font-weight: 400;
font-size: 1.1vw;
color: #333333;
margin-right: 0.6vw;
display: flex;
justify-content: center;
align-items: center;
}
.at{
background: #EEF8FF;
border: 1px solid #017DE9;
color: #017DE9;
}
}
.dibu {
width: 100%;
@ -1006,7 +1121,7 @@
.life {
width: 66%;
height: 2vw;
margin: 0 auto 3vw;
margin: 0 auto 1.5vw;
display: flex;
justify-content: space-around;
flex: 1;
@ -1027,8 +1142,8 @@
}
.znk {
width: 16vw;
height: 15vw;
width: 11vw;
height: 10.5vw;
margin: 2vw auto 0;
}
@ -1060,195 +1175,6 @@
}
}
//
.uncrkcard {
right: -38vw !important;
}
.crkcard {
width: 38vw;
height: 50vw;
background: rgba(255, 255, 255, 1);
box-shadow: 0rpx 0rpx 1vw 0rpx rgba(171, 171, 172, 0.29);
border-radius: 1.6vw;
position: fixed;
right: 1.5vw;
bottom: 11vw;
z-index: 102;
.crkscroll {
width: 100%;
height: 29vw;
.cgrk {
width: 35vw;
height: 8.5vw;
background: rgba(236, 237, 239, 0.4);
border-radius: 1.6vw;
margin: 0.8vw auto 0;
padding: 1.8vw 2vw;
display: flex;
justify-content: space-between;
>view {
display: flex;
flex-direction: column;
justify-content: space-between;
&:nth-child(1) {
text {
&:nth-child(2),
&:nth-child(3) {
font-weight: 400;
font-size: 1.1vw;
color: #888888;
}
&:nth-child(1) {
font-weight: bold;
font-size: 1.2vw;
color: #333333;
}
}
}
&:nth-child(2) {
.c {
color: #FF6600 !important;
}
.l {
color: #0076D6 !important;
}
text {
font-weight: 400;
font-size: 1.1vw;
color: #888888;
text-align: right;
&:nth-child(2) {
font-weight: bold;
font-size: 1.4vw;
color: #333333;
}
}
}
}
}
}
.select {
width: 100%;
height: 7vw;
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 1vw 1.5vw;
>view {
display: flex;
&:nth-child(2) {
justify-content: space-between;
text {
font-weight: 400;
font-size: 1.1vw;
color: #555555;
}
}
&:nth-child(1) {
justify-content: flex-end;
view {
min-width: 5vw;
height: 2.6vw;
border-radius: 1.3vw;
border: 1px solid #DCDCDC;
padding: 0 1.4vw;
align-items: center;
display: flex;
align-items: center;
margin: 0 0.5vw;
image {
width: 0.7vw;
height: 0.5vw;
margin-left: 0.4vw;
}
}
}
}
}
.shopcont {
width: 100%;
height: 10vw;
background: rgba(236, 237, 239, 0.3);
border-bottom: 1px solid #DCDCDC;
display: flex;
align-items: center;
.cont {
width: 26vw;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-around;
position: relative;
padding: 2vw 0;
view {
&:nth-child(4) {
width: 5vw;
height: 5vw;
background: rgba(236, 237, 239, 1);
border-radius: 1.4vw;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
font-weight: 400;
font-size: 1vw;
position: absolute;
color: #888888;
top: 2.5vw;
right: 1.8vw;
padding: 0.5vw 0;
text {
font-weight: bold;
font-size: 1.8vw;
color: #555555;
}
}
&:nth-child(2),
&:nth-child(3) {
font-weight: 400;
font-size: 1.1vw;
color: #888888;
}
&:nth-child(1) {
font-weight: bold;
font-size: 1.4vw;
color: #212327;
}
}
}
.img {
width: 10vw;
height: 9vw;
}
}
}
//
.shuru {
width: 20.6vw;
@ -1670,6 +1596,9 @@
margin: 0.25vw 0;
border-radius: 1.6vw;
position: relative;
&:nth-child(4),&:nth-child(5){
width: 12.3vw;
}
.dot{
position: absolute;
right: 0;

View File

@ -140,9 +140,9 @@
</view>
<view class="serchs">
<view class="ipt">
<input type="text" placeholder="物料名称/物料编码/物料简拼" v-model="form.wlParamInfo" />
<input type="text" placeholder="物料名称/物料编码/物料简拼" v-model="plzinfo.cgdParamInfo" />
<image src="/static/index/warehouse/procurement/x.png" mode="aspectFill"
v-if="form.wlParamInfo" @click="search(0)"></image>
v-if="plzinfo.cgdParamInfo" @click="search(0)"></image>
</view>
<view @click="search" class="scr">
检索
@ -466,13 +466,13 @@
}
const search = (x : number) => {
if (x === 0) { form.wlParamInfo = '' }
form.pageNo = 1;
InvoicingList.value = [];
if (x === 0) { plzinfo.cgdParamInfo = '' }
plzinfo.pageNo = 1;
plsbuy.value = [];
leftitem.value = saveleftgo.value;
shopitem.value = -1;
form.cgdId = plsbuy.value[leftitem.value].id
queryInvo();
// form.cgdId = plsbuy.value[leftitem.value].id
firstgetqueryCgdList();
}
onLoad(() => {
form.nuId = uni.getStorageSync('nuId');
@ -494,7 +494,8 @@
const plzinfo = reactive({
pageNo: 1,
pageSize: 10,
canpull: true
canpull: true,
cgdParamInfo:'',
})
const mobanplzinfo = {
@ -1445,7 +1446,7 @@
.ipt {
display: flex;
align-items: center;
width: 19vw;
image {
width: 2.2vw;
height: 2.2vw;
@ -1453,7 +1454,7 @@
}
input {
width: 18vw;
width: 16.5vw;
height: 2.4vw;
font-size: 1.1vw;
padding-left: 1.6vw;

View File

@ -578,7 +578,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app/pages/camera.nvue"]]);
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app/pages/camera.nvue"]]);
export {
camera as default
};

View File

@ -577,7 +577,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app/pages/fullcamera.nvue"]]);
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app/pages/fullcamera.nvue"]]);
export {
fullcamera as default
};

File diff suppressed because one or more lines are too long