hldy_app_mini/pages/procurement/materialcar.vue

420 lines
10 KiB
Vue

<template>
<view>
<view class="serchs">
<view class="leftbtn">
<view class="ipt">
<input type="text" placeholder="物料名称/物料编码/物料简拼" v-model="form.wlParamInfo" @confirm="search()"/>
<image src="/static/index/procurement/x.png" mode="aspectFill" v-if="form.wlParamInfo"
@click="search(0)"></image>
</view>
<view @click="search" class="scr">
<image src="/static/index/procurement/sh.png" mode="aspectFill" class="sh"></image>
检索
</view>
<view class="shx" @click="ification=true">
<image src="/static/index/procurement/sx.png" mode="aspectFill"></image>
筛选
</view>
<view class="shx" @click="chongzhi"
v-if="form.categoryId!=''||form.wlParamInfo!=''||form.suppliers!=''"
>
<image src="/static/index/procurement/cz.png" mode="aspectFill"></image>
重置
</view>
</view>
<view class="rightbtn">
<view @click="open = 1">
<image src="/static/index/procurement/del1.png" mode="aspectFill"></image>
清空
</view>
<view @click="caigouclk">
<image src="/static/index/procurement/procure01.png" mode="aspectFill"></image>
采购
</view>
<view class="back" @click="uni.navigateBack()">
<image src="/static/index/procurement/bk.png" mode="aspectFill"></image>
返回
</view>
</view>
</view>
<carlist :InvoicingList="InvoicingList" :status="status" @delindex="opendelindex" @addcartory="addcartory"></carlist>
<tanchuang :show="open==1" font="是否清空购物车?" @back="open = 0" @right="del()"> </tanchuang>
<tanchuang :show="open==2" font="是否删除此物料?" @back="open = 0" @right="delindex()"> </tanchuang>
<!-- 筛选 -->
<view class="mengban" v-if="ification" @click="ification = false"></view>
<classification @confirm="confirm" :show="ification" :typenum="1" ref="classication"></classification>
<defaultr cont="暂无数据" v-if="status=='nomore'&&InvoicingList.length==0"></defaultr>
<view class="mengban" v-if="addflag" @click="addflag = false"></view>
<calculator :show="addflag" :caigouobj="caigouobj" @colse="addflag = false" @right="right"></calculator>
<view class="mengban" v-if="caigouflag" @click="caigouflag = false"></view>
<purorder :arrlist="generatedOrder" :show="caigouflag" @cloe="caigouflag = false" @config="configr"></purorder>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineProps ,defineComponent} from 'vue';
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import {generatedPurchaseViewOrder,eddShoppingCartList, queryShoppingCartList, getGwcMaterialTreeData, queryNuInfoByNuId, updateKfstatus,deleteQgInfoById,emptiedQgInfo ,queryWlInfoByWlId,generatedPurchaseOrder } from './api/lunpan.js'
import carlist from './components/carlist.vue';
import tanchuang from './components/tanchuang.vue';
import classification from './components/classification.vue'
import defaultr from './components/default.vue'
import calculator from './components/calculator.vue'
import purorder from './components/purorder.vue'
import config from '../../uni_modules/vk-uview-ui/libs/config/config.js';
const addflag = ref(false)
const ification = ref(false)
const caigouobj = ref({})
const form = reactive({
nuId: uni.getStorageSync('nuId'),
pageNo: 1,
pageSize: -1,
categoryId: '',
typeId: '',
medicationId: '',
wlParamInfo: '',
suppliers:''
})
const InvoicingList = ref([])
const status = ref('loading')
const open = ref(0)
onShow(()=>{
InvoicingList.value = [];
queryInvo()
})
const classication = ref<InstanceType<typeof ChildComponent>>()
const chongzhi=()=>{
form.categoryId = '';
form.typeId = '';
form.medicationId = '';
form.suppliers = '';
form.pageNo=1;
form.wlParamInfo= '',
InvoicingList.value = [];
classication.value.typescroll(1,-1,{});
classication.value.qingkong();
classication.value.config();
}
const queryInvo = () => {
queryShoppingCartList(form).then(res => {
res.result.records.forEach((item,i)=>{
item.flag = true;
item.zk = false;
item.scrollleft = 0;
})
console.log(res.result.records)
InvoicingList.value.push(...res.result.records);
status.value = res.result.total == InvoicingList.value.length ? 'nomore' : 'loadmore';
setout.value = (res.result.total == InvoicingList.value.length ? false : true)
})
}
const search = (x : number) => {
if (x === 0) { form.wlParamInfo = '' }
form.pageNo = 1;
InvoicingList.value = [];
queryInvo();
}
const addcartory =(e:any)=>{
console.log(e)
caigouobj.value = e;
addflag.value = true;
}
const confirm =(e:any)=>{
form.categoryId = e.categoryId;
form.typeId = e.typeId;
form.medicationId = e.medicationId;
form.suppliers = e.suppliers;
form.pageNo=1;
InvoicingList.value = [];
queryInvo();
ification.value = false
}
const configr=()=>{
caigouflag.value = false;
search(1);
setTimeout(()=>{
uni.navigateTo({
url:'/pages/procurement/purchaseorder'
})
},1000)
}
let times = null;
const setout = ref(true)
const scrolltolower = (t:number) => {
if (setout.value==false) { return }
status.value = 'loading'
setout.value = false;
form.pageNo++;
queryInvo()
}
const del=()=>{
emptiedQgInfo().then(res=>{
if(res.success){
form.pageNo=1;
InvoicingList.value = [];
chongzhi()
}
open.value = 0;
// uni.showToast({
// icon:res.success?'success':'none',
// title:res.message
// })
})
}
const delobj = ref({})
const opendelindex=(v:any,i:number)=>{
open.value = 2;
v.index = i;
delobj.value = v;
}
const delindex =()=>{
let delstr = delobj.value.id;
deleteQgInfoById(delstr).then(res=>{
uni.showToast({
icon:res.success?'success':'none',
title:res.message
})
setTimeout(()=>{
if(res.success){
InvoicingList.value.splice(delobj.value.index,1);
open.value = 0;
status.value = InvoicingList.value.length == 0 ? 'nomore' : 'loadmore';
classication.value.getTreelnum()
}
},800)
})
}
const right = (n:number,nm:any,type:Object) => {
connfig(nm,n,type)
}
const timers = ref(true)
const connfig = (nm:any,num:Number,type:Object) =>{
if(timers.value==false){return}
timers.value=false;
let dt = {
nuId:form.nuId,
purchaseQuantity:num,
suppliersId:nm.id,
suppliersName:nm.name,
id:caigouobj.value.id,
wlId:caigouobj.value.wlId,
kcsl:caigouobj.value.kcsl,
wlUnits:type.unit,
referenceUnitPrice:type.price,
dhbl:type.num
}
console.log(dt)
eddShoppingCartList(dt).then(res=>{
uni.showToast({
icon:res.success?'success':'none',
title:res.message
})
setTimeout(()=>{
timers.value=true;
if(res.success){
addflag.value = false;
form.pageNo=1;
InvoicingList.value = [];
queryInvo();
}
},700)
})
}
const caigouflag = ref(false)
const caigouarr = ref([])
const generatedOrder = ref([])
const caigouclk =()=>{
uni.showLoading()
let arr = [];
caigouarr.value = [];
InvoicingList.value.forEach(item=>{
if(item.flag){
arr.push(item)
}
})
caigouarr.value = arr;
console.log("????",arr)
if(arr.length==0){
uni.showToast({
title:'请选择物料!',
icon:'none'
})
return
}
generatedPurchaseViewOrder(caigouarr.value).then(res=>{
if(res.success){
generatedOrder.value = res.result;
caigouflag.value = true;
uni.hideLoading();
}else{
uni.showToast({
title:res.message,
icon:'none'
})
}
})
}
</script>
<style scoped lang="less">
.serchs {
width:96vw;
height: 3.3vw;
border-radius: 1.6vw;
display: flex;
align-items: center;
margin: 0.7vw 0 0;
justify-content: space-between;
.leftbtn{
width: 64vw;
height: 3.3vw;
display: flex;
align-items: center;
}
.rightbtn{
width: 30vw;
height: 3.3vw;
display: flex;
align-items: center;
justify-content: flex-end;
view{
width: 7.3vw;
height: 3.3vw;
border: 1px solid #D9DADC;
background: rgba(255, 255, 255, 1);
border-radius: 1.65vw;
font-weight: 400;
font-size: 1.4vw;
color: rgba(85, 85, 85, 1);
display: flex;
justify-content: center;
align-items: center;
margin-left:0.7vw;
color: #555555;
border: 1px solid #D9DADC;
image {
width: 1.5vw;
height: 1.3vw;
margin: 0 0.5vw 0 0;
}
}
}
.ipt {
display: flex;
align-items: center;
width: 27vw;
background: #E2E4E9;
border-radius: 1.65vw;
height: 3.3vw;
image {
width: 1.8vw;
height: 1.8vw;
margin:0 0.5vw;
}
input {
width: 25vw;
height: 3.3vw;
font-size: 1.4vw;
padding-left: 1.6vw;
}
}
.back{
width: 8vw;
height: 3.3vw;
border-radius: 1.6vw;
background: rgba(255, 255, 255, 1);
border-radius: 1.65vw;
font-weight: 400;
font-size: 1.4vw;
color: rgba(85, 85, 85, 1);
display: flex;
justify-content: center;
align-items: center;
margin-left:0.6vw;
border: 1px solid #D9DADC;
image {
width: 1.5vw !important;
height: 1.5vw !important;
margin: 0 0.5vw 0 0;
}
}
.rightbtn>view:active,.shx:active,.scr:active{
color: #1083F8;
background: linear-gradient(-45deg, rgba(223, 244, 252, 1), rgba(204, 228, 249, 0.43));
border: 1px solid #1083F8;
}
.scr {
border-radius: 1.65vw;
font-weight: 400;
font-size: 1.4vw;
display: flex;
justify-content: center;
align-items: center;
width: 7.3vw;
height: 3.3vw;
margin: 0 0 0 0.7vw;
background: rgba(255, 255, 255, 1);
border: 1px solid #D9DADC;
color: #555555;
image {
width: 1.5vw;
height: 1.3vw;
margin: 0 0.5vw 0 0;
}
}
.shx {
width: 7.3vw;
height: 3.3vw;
background: rgba(255, 255, 255, 1);
border-radius: 1.65vw;
border: 1px solid #D9DADC;
font-weight: 400;
font-size: 1.4vw;
color: #222;
display: flex;
justify-content: center;
align-items: center;
margin: 0 0 0 0.7vw;
color: #555555;
image {
width: 1.5vw;
height: 1.3vw;
margin: 0 0.5vw 0 0;
}
}
}
.guodu {
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.mengban {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 90;
background: RGBA(239, 240, 244, 0.55);
}
</style>
<style>
page {
background: RGBA(239, 240, 244, 1);
padding: 2vw;
box-sizing: border-box;
}
</style>