hldy_app_mini/pages/Warehouse/purchaseorder.vue

376 lines
9.3 KiB
Vue

<template>
<view class="contain">
<view class="contain-left">
<view class="title-input-father">
<input class="title-input" type="text" v-model="searchValue" maxlength="15"
placeholder="采购单号/采购日期/供应商" />
<view class="title-input-button">
检索
</view>
</view>
<view class="left-menu-father">
<scroll-view scroll-y="true" scroll-with-animation class="left-menu-scroll" :scroll-top="leftscrolltop" @scrolltolower="plsbuytolower" :lower-threshold="400">
<view class="pls-card" v-for="(v,i) in plsbuy" :key='i' @click="clickLeftMenu(i)" :style="{borderColor: i==lefttarget? ``:`#fff` }" >
<view class="pls-card-title">
<view class="title-left">
{{ v.cgdNo }}
</view>
<view class="title-right">
<text style="position: absolute;bottom: 4rpx;left: -30rpx;">
</text>
<view class="title-right-big">
{{ v.totalPrice }}
</view>
<image class="title-right-img" src="/static/more.png" />
</view>
</view>
<view class="pls-card-middle">
<view class="pls-card-middle-one">
<view class="middle-title">
2025.10.03
</view>
<view class="middle-heng-father">
<view class="middle-heng" style="border-top-left-radius: 20rpx;border-bottom-left-radius: 20rpx;"></view>
<view class="middle-heng" style="border-radius: 20rpx;background-color: #1083F8;"></view>
<view class="middle-ball" style="background-color: #1083F8;"></view>
</view>
<view class="end-font">
<view class="" style="color: #1083F8;">
采购
</view>
<view class="">
[ 梁嘉豪 ]
</view>
</view>
</view>
<view class="pls-card-middle-one">
<view class="middle-title">
<!-- 2025.10.03 -->
</view>
<view class="middle-heng-father">
<view class="middle-heng"></view>
<view class="middle-ball"></view>
</view>
<view class="end-font">
<view class="">
拣货
</view>
<view class="">
<!-- [ 梁嘉豪 ] -->
</view>
</view>
</view>
<view class="pls-card-middle-one">
<view class="middle-title">
<!-- 2025.10.03 -->
</view>
<view class="middle-heng-father">
<view class="middle-heng" style="border-top-right-radius: 20rpx;border-bottom-right-radius: 20rpx;"></view>
<view class="middle-ball"></view>
</view>
<view class="end-font">
<view class="">
完结
</view>
<view class="">
<!-- [ 梁嘉豪 ] -->
</view>
</view>
</view>
</view>
<view class="pls-card-end">
<view class="end-left">
<image class="end-left-img" src="/static/shili.png" />
<view class="end-left-font">
{{ v.gysName }}
</view>
</view>
<view :class="v?.cgdType=='9' ?`tag-fail`:`tag-success`" >
{{ v?.cgdType=='9' ?`已作废`:`已确定` }}
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="contain-right">
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineProps } from 'vue';
import { queryInvoicingList, getCgdMaterialTreeData, queryNuInfoByNuId, updateKfstatus, queryCgdList, queryCgdInfoList, queryWlInfoByWlId, voidedCgdMain } from './api/lunpan.js'
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import shadowview from './components/ShadowView.vue';
import calculator from './components/calculator.vue';
onMounted(()=>{
firstgetqueryCgdList()
})
const searchValue = ref("")
const plzinfo = reactive({
pageNo: 1,
pageSize: 10,
canpull: true
})
const leftscrolltop = ref(0)
const plsbuy = ref([])
const firstgetqueryCgdList = () => {
queryCgdList(plzinfo).then((res : any) => {
plsbuy.value.push(...res.result.records)
console.log("plsbuy",plsbuy.value)
if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false;
}
})
}
const setout = ref(true)
let times = null
const plsbuytolower = () => {
if (!setout.value) { return }
plzinfo.pageNo++;
getqueryCgdList()
setout.value = false
times = setTimeout(() => {
setout.value = true
}, 500)
}
//获得采购单列表
const getqueryCgdList = () => {
if (!plzinfo.canpull) return
queryCgdList(plzinfo).then((res : any) => {
// console.log("请购单", res.result.records)
plsbuy.value.push(...res.result.records)
if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false;
}
})
}
const lefttarget = ref(0);
const clickLeftMenu = (index:any) => {
let num = Math.ceil((index + 1))
leftscrolltop.value = (num - 2) * 186;
lefttarget.value = index
}
</script>
<style lang="less" scoped>
.contain {
background-color: rgb(239, 240, 244);
width: 100vw;
height: 100vh;
padding: 5vh 2vw 0 2vw;
display: flex;
.contain-left {
height: 95vh;
width: 30%;
overflow: hidden;
// background-color: green;
.title-input-father {
height: 6vh;
width: 100%;
display: flex;
align-items: center;
.title-input {
width: 71%;
height: 5vh;
background-color: #E2E4E9;
font-size: 30rpx;
padding-left: 45rpx;
border-radius: 40rpx;
}
.title-input-button {
width: 20%;
margin-left: 2%;
height: 5vh;
border-radius: 40rpx;
font-size: 30rpx;
background: linear-gradient(to bottom, #e7f4ff, #c5e5ff);
border: 2rpx solid #9AD1FF;
color: #007CFF;
display: flex;
justify-content: center;
align-items: center;
-webkit-tap-highlight-color: transparent;
}
}
.left-menu-father {
margin-top: 2vh;
width: 100%;
height: 84vh;
.left-menu-scroll {
height: 100%;
width: 100%;
.pls-card{
width: 100%;
height: 26.5vh;
border: #0f9fff 3rpx solid;
background-color: #fff;
border-radius: 40rpx;
margin-bottom: 2vh;
padding: 0 30rpx;
.pls-card-title{
height: 7vh;
width: 100%;
display: flex;
justify-content: space-between;
align-items: flex-end;
.title-left{
font-weight: 600;
font-size: 32rpx;
}
.title-right{
display: flex;
align-items: flex-end;
font-size: 30rpx;
position: relative;
.title-right-big{
font-weight: 600;
font-size: 40rpx;
margin-right: 35rpx;
}
.title-right-img{
position: absolute;
right: -10rpx;
bottom: 6rpx;
width: 40rpx;
height: 40rpx;
}
}
}
.pls-card-middle{
width: 100%;
height: 11vh;
margin-top: 1vh;
// background-color: blue;
display: flex;
.pls-card-middle-one{
width: 33.3%;
height: 100%;
// background-color: yellow;
.middle-title{
width: 100%;
height: 2vh;
// background-color: #007CFF;
color: #888888;
text-align: center;
font-size: 25rpx;
}
.middle-heng-father{
width: 100%;
height: 4vh;
position: relative;
.middle-heng{
width: 100%;
height: 1vh;
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
background-color: #EEEEEE;
}
.middle-ball{
width: 30rpx;
height: 30rpx;
background-color: #EEEEEE;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
border-radius: 50%;
}
}
.end-font{
width: 100%;
height: 5vh;
text-align: center;
color: #666666;
}
}
}
.pls-card-end{
width: 100%;
height: 7vh;
display: flex;
justify-content: space-between;
position: relative;
.end-left{
height: 100%;
display: flex;
align-items: center;
.end-left-img{
width: 30rpx;
height: 30rpx;
}
.end-left-font{
margin-top: 3rpx;
width: 400rpx;
// background-color: #007CFF;
// font-size: 26rpx;
color: #666666;
margin-left: 10rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.tag-fail{
width: 120rpx;
height: 50rpx;
border-radius: 30rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #FDEBEC;
color: #FF5757;
position: absolute;
right: -5rpx;
bottom: 20rpx;
}
.tag-success{
width: 120rpx;
height: 50rpx;
border-radius: 30rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #ECF6FF;
color: #1083F8;
position: absolute;
right: -5rpx;
bottom: 20rpx;
}
}
}
}
}
}
.contain-right {
height: 95vh;
width: 70%;
overflow: hidden;
}
}
</style>