hldy_app_mini/pages/procurement/common/toryitem.vue

720 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<scroll-view scroll-y="true" class="itembox" scroll-with-animation @scrolltolower="scrolltolower()"
enable-back-to-top enable-flex :scroll-top="scrolltop" @scroll="scroll">
<defaultr cont="暂无数据" v-if="pddlist.length==0 && listflag" style="position: absolute;width: 10vw;height: 10vw;"></defaultr>
<view class="items guodu" v-for="(v,i) in pddlist" :key='i' :class="{'itembord0':v.zk==true}">
<view class="speitem guodu">
<view class="imgs">
<image :src="v?.materialImg?serverUrl+v?.materialImg:'/static/index/procurement/k.png'"
mode="aspectFill">
</image>
</view>
<view class="cardp">
<view v-if="v.categoryName">{{v.categoryName}}</view>
<view v-if="v.typeName">{{v.typeName}}</view>
<view v-if="v.medicationName">{{v.medicationName}}</view>
</view>
</view>
<view class="wuli">
<view class="tite">{{v?.materialName}}</view>
<view class="cot">
<text>物料编码:</text>
{{v?.materialNo}}
</view>
<view class="cot">
<text>物料单位:</text>
{{v?.materialUnits}}
</view>
<view class="cot" style="white-space: nowrap;">
<text>规格型号:</text>
{{v?.specificationModel}}
</view>
<view class="wltwo">
<view>
<view>{{v?.dqkcsl}}</view>
<text>库存数量</text>
</view>
<view class="dot">
<view style="text-align: right;">{{v?.pdsl?v?.pdsl:'--'}}</view>
<text>盘点数量</text>
</view>
</view>
</view>
<view class="chae">
<!-- pdType 1:b/ 2:r -->
<view :class="{b:v?.pdType==1,r:v?.pdType==2}">{{v?.pdType==2?'-':''}}{{v?.cesl!=null?v?.cesl:'--'}}</view>
<text>差额</text>
</view>
<view class="pandian" @click="zhankai(v,i)">
<image :src="v.zk?'/static/index/procurement/pd1.png':'/static/index/procurement/pd0.png'" mode="aspectFill" v-if="v.pdType==null"></image>
<!-- <image src="/static/index/procurement/pd1.png" mode="aspectFill" v-if="v.pdType==null && v.cesl!=null"></image> -->
<image :src="v.zk?'/static/index/procurement/pd5.png':'/static/index/procurement/pd2.png'" mode="aspectFill" v-if="v.pdType == 1"></image>
<image :src="v.zk?'/static/index/procurement/pd4.png':'/static/index/procurement/pd3.png'" mode="aspectFill" v-if="v.pdType == 2"></image>
</view>
<view class="tan guodu" :class="v.zk?'':'itemhei0'">
<view class="tbox guodu" :class="v.zk?'':'itemhei0'" :style="v.zk?'':'overflow: hidden'">
<torytor :show="v.yczk" :tb="v.dqkcsl" @pddjjnum="pddjjnum" :idex="i"></torytor>
<view class="bpq" v-show="v.yczk">
<view class="bp b" @click="v.bz = !v.bz;v.pz = false">
<image src="/static/index/procurement/th.png" mode="aspectFill"></image>
备注
<text class="r" v-if="v.content">1</text>
</view>
<view class="bp p" @click="v.pz = !v.pz;v.bz = false">
<image src="/static/index/procurement/xj.png" mode="aspectFill"></image>
拍照
<text class="g">5</text>
</view>
<view class="qued">
确定
</view>
<view class="triangle-leftbz" v-if="v.bz">
<image src="/static/index/procurement/jb.png" mode="aspectFill"></image>
</view>
<view class="triangle-leftpz" v-if="v.pz">
<image src="/static/index/procurement/jb.png" mode="aspectFill"></image>
</view>
<view class="gray-bgc guodu" :class="v.bz?'':'itemhei0'">
<view class="textare" v-if="v.bz">
<textarea v-model="v.model" placeholder="请输入备注" maxlength="200"></textarea>
</view>
<view class="submit" v-if="v.bz">
<view>取消</view>
<view>确定</view>
</view>
</view>
<view class="gray-pgc guodu" :class="v.pz?'':'itemhei0'">
<view class="pztit" v-if="v.pz">拍照:</view>
<view class="zpj" v-if="v.pz">
<view class="zpk">
<image :src="'/static/zhanwei.png'" mode="aspectFill" style="width: 2.1vw;height: 2.1vw;">
</image>
<view @click.stop="open=1">
<image src="/static/x.png" mode="aspectFill" style="width: 100%;height: 100%;"></image>
</view>
</view>
<view class="clkpz" >
<image src="/static/index/procurement/xjpz.png" mode="aspectFill"></image>
<text>点击拍照上传</text>
</view>
</view>
<view class="submit" v-if="v.pz">
<view>取消</view>
<view @click="config(v,i)">确定</view>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="mengban" v-if="v.zk" @click="v.zk = false"></view> -->
</view>
<view style="height:3vw;width: 100%;display: flex;align-items: center;justify-content: center;">
<u-loadmore :status="status" :loadText="{nomore:'暂无更多数据'}" v-if="pddlist.length>6" />
</view>
</scroll-view>
<tanchuang :show="open==1" font="是否删除此图片" @back="open = 0" @right="del()"> </tanchuang>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch, reactive } from 'vue';
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import { queryQld } from '../api/lunpan.js'
import torytor from './torytor.vue'
import defaultr from '../components/default.vue'
const open = ref(0)
const scrolltop = ref(0)
const list = ref([]);
const serverUrl = ref(uni.getStorageSync('serverUrl') + '/sys/common/static/')
const props = defineProps({
pddlist: {
type: Array
},
status: {
type: String
}
})
const listflag = ref(false)
onMounted(() => {
nextTick(()=>{
props.pddlist.forEach(item=>{
item.zk = false;
item.yczk=false;
item.bz=false;
item.model='';
item.pz=false;
item.ce = '';
})
})
setTimeout(()=>{
listflag.value = true;
},1000)
// for (let i = 0; i < 20; i++) {
// list.value.push({ zk: false, yczk: false, bz: false, model: '', pz: false })
// }
})
const zhankai = (v, i) => {
let s = Math.ceil((i + 1) / 3);
console.log(s)
scrolltop.value = top.value;
v.zk = !v.zk;
if (v.zk) {
setTimeout(() => {
v.yczk = v.zk;
}, 200)
} else {
v.yczk = v.zk;
v.bz = false;
v.pz = false;
}
nextTick(() => {
scrolltop.value = (top.value > (s - 2) * 182) ? top.value : (s - 2) * 182;
})
gb(i)
}
const gb = (i) => {
props.pddlist.forEach((item, k) => {
if (i != k) {
item.zk = false;
item.bz = false;
item.pz = false;
item.yczk = false;
}
})
}
const top = ref(0)
const scroll = (e) => {
// console.log(e.detail.scrollTop)
top.value = e.detail.scrollTop;
}
const pddjjnum = (e,i) =>{
let ce = 0;
props.pddlist[i].pdsl = e;
ce = e - props.pddlist[i].dqkcsl;
props.pddlist[i].cesl = Math.abs(ce) ;
props.pddlist[i].pdType = ce==0?'':(ce>0?1:2)
console.log(e)
}
const config = (e,i) =>{
// 没点确认情况下把pdslcesl pdType 归 null 需要加字段
}
const emit = defineEmits([ 'scrolltolower' ])
const scrolltolower = () => {
emit('scrolltolower')
}
</script>
<style scoped lang="less">
.guodu {
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.itembox {
width: 100%;
height: 50vw;
display: flex;
.itembord0 {
border-radius: 1.6vw 1.6vw 0 0 !important;
z-index: 25 !important;
}
.itemhei0 {
height: 0vw !important;
z-index: 27 !important;
}
.items {
width: 31.5vw;
height: 16vw;
background: #FFFFFF;
border-radius: 1.6vw;
display: inline-block;
margin: 0 0.8vw 0.5vw 0;
position: relative;
z-index: 20;
.tan {
position: absolute;
width: 31.5vw;
height: 17vw;
background: #fff;
top: 15.5vw;
left: 0;
z-index: 27;
border-radius: 0 0 1.6vw 1.6vw;
.submit {
width: 100%;
height: 3.2vw;
margin-top: 0.9vw;
padding-right: 2vw;
display: flex;
justify-content: flex-end;
view {
display: flex;
justify-content: center;
align-items: center;
&:nth-child(1) {
width: 5.7vw;
height: 2.3vw;
background: #F8F8F8;
border-radius: 1.2vw;
border: 1px solid #E5E5E5;
font-weight: 400;
font-size: 1.2vw;
color: #555555;
}
&:nth-child(2) {
width: 5.7vw;
height: 2.3vw;
background: linear-gradient(0deg, #CAE0F9, #E9F4FF);
border-radius: 1.2vw;
border: 1px solid rgba(3, 133, 250, 0.34);
font-weight: 400;
font-size: 1.2vw;
color: #1083F8;
margin-left: 0.7vw;
}
}
}
.bpq {
width: 31vw;
height: 2.6vw;
position: absolute;
display: flex;
bottom: 0.7vw;
left: 0;
.triangle-leftpz {
width: 2vw;
height: 1.5vw;
position: absolute;
bottom: 2.2vw;
left: 11vw;
z-index: 30;
image {
width: 100%;
height: 100%;
}
}
.triangle-leftbz {
width: 2vw;
height: 1.5vw;
position: absolute;
bottom: 2.2vw;
left: 4vw;
z-index: 30;
image {
width: 100%;
height: 100%;
}
}
.gray-pgc {
background: #fff;
width: 29vw;
height: 27vw;
border-radius: 2vw;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(116, 141, 164, 0.22);
position: absolute;
bottom: 3.6vw;
left: 1vw;
overflow: hidden;
.zpj {
width: 100%;
height: 20vw;
display: flex;
justify-content: space-between;
padding: 0 1.6vw;
flex-wrap: wrap;
.zpk {
width: 12.6vw;
height: 6.4vw;
margin-top: 0.3vw;
border-radius: 1.1vw;
position: relative;
display: flex;
justify-content: center;
align-items: center;
background: #F9F9F9;
view {
width: 1.6vw;
height: 1.6vw;
z-index: 20;
position: absolute;
right: 0.1vw;
top: 0.1vw;
background: rgba(255, 255, 255, 0.7);
display: flex;
justify-content: center;
align-items: center;
}
}
.clkpz {
width: 12.6vw;
height: 6.4vw;
background: #FAFDFF;
border-radius: 1.1vw;
border: 1px solid #DDEFFF;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0.3vw;
flex-direction: column;
text {
font-weight: 400;
font-size: 0.7vw;
color: #78B1EB;
}
image {
width: 2.3vw;
height: 2.3vw;
}
}
}
.pztit {
font-weight: 400;
font-size: 1.2vw;
color: #888888;
margin: 1.6vw auto 0;
width: 100%;
padding-left: 2.4vw;
}
}
.gray-bgc {
background: #fff;
width: 28vw;
height: 12vw;
border-radius: 2vw;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(116, 141, 164, 0.22);
position: absolute;
bottom: 3.6vw;
left: 1vw;
overflow: hidden;
.triangle-left {
width: 2vw;
height: 1.5vw;
position: absolute;
top: 99.5%;
left: 3vw;
image {
width: 100%;
height: 100%;
}
}
.textare {
width: 26vw;
height: 6.5vw;
background: #F5F5F5;
border-radius: 1vw;
margin: 1.6vw auto 0;
padding: 1vw;
textarea {
width: 100%;
height: 100%;
font-weight: 400;
font-size: 1.1vw;
color: #999999;
}
}
}
.qued {
width: 6vw;
height: 2.6vw;
background: linear-gradient(0deg, #CAE0F9, #E9F4FF);
border-radius: 1.3vw;
border: 1px solid rgba(3, 133, 250, 0.34);
right: 1.4vw;
top: 0;
position: absolute;
font-weight: 400;
font-size: 1.4vw;
color: #0385FA;
display: flex;
align-items: center;
justify-content: center;
}
.bp {
width: 5vw;
height: 2.6vw;
display: flex;
align-items: center;
font-weight: 400;
font-size: 1.2vw;
color: #555555;
margin-left: 1.5vw;
white-space: nowrap;
position: relative;
>text {
min-width: 1vw;
height: 1vw;
border-radius: 0.5vw;
font-weight: 400;
font-size: 0.8vw;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.4vw;
position: absolute;
right: -0.5vw;
top: 0;
}
.g {
background: #0385FA;
border: 1px solid #0385FA;
}
.r {
background: #FF5757;
border: 1px solid #FF5757;
}
image {
width: 1.8vw;
height: 1.8vw;
margin-right: 0.4vw;
}
}
}
.tbox {
width: 100%;
height: 16vw;
position: absolute;
top: 1vw;
z-index: 28;
left: 0;
}
}
.chae {
width: 4vw;
height: 4vw;
position: absolute;
right: 0;
top: 0;
display: flex;
flex-direction: column;
align-items: center;
padding: 1vw 2vw 0 0;
view {
font-weight: bold;
font-size: 1.8vw;
}
text {
font-weight: 400;
font-size: 1vw;
color: #888888;
}
.r {
color: #FF5757;
}
.b {
color: rgba(16, 131, 248, 1);
}
}
.pandian {
width: 3.3vw;
height: 3.3vw;
position: absolute;
right: 0;
bottom: 0;
image {
width: 1.7vw;
height: 1.7vw;
}
}
.wuli {
width: 18vw;
height: 100%;
overflow: hidden;
position: absolute;
left: 12vw;
top: 0;
.wltwo {
width: 11vw;
height: 3.7vw;
display: flex;
margin-top: 1.2vw;
justify-content: space-between;
>view {
// min-width: 5vw;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-around;
position: relative;
align-items: left;
padding: 0 1vw;
view {
font-weight: bold;
font-size: 1.7vw;
color: #555555;
}
text {
font-weight: 400;
font-size: 1.2vw;
color: #999999;
white-space: nowrap;
display: block;
}
}
.dot::after {
content: '';
width: 1px;
height: 3.3vw;
position: absolute;
left: 0;
bottom: 0;
border-right: 1px solid rgba(230, 230, 230, 1);
}
}
.cot {
width: 18vw;
font-weight: 400;
font-size: 1.3vw;
color: rgba(85, 85, 85, 1);
margin-top: 0.2vw;
text {
color: rgba(153, 153, 153, 1);
font-size: 1.2vw;
font-weight: 300;
}
}
.tite {
width: 13vw;
font-weight: bold;
font-size: 1.6vw;
color: #222222;
height: 2vw;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
margin: 1.3vw 0 1.2vw 0;
}
}
.speitem {
width: 12vw;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
left: 0;
top: 0;
.cardp {
width: 12vw;
height: 4vw;
display: flex;
flex-wrap: wrap;
margin: 0 auto;
align-items: center;
view {
min-width: 5vw;
height: 1.8vw;
border-radius: 0.9vw;
border: 1px solid #D2D2D2;
margin: 0.5vw 0 0 0.5vw;
display: flex;
justify-content: center;
align-items: center;
font-weight: 400;
font-size: 0.8vw;
color: #555555;
padding: 0 0.25vw;
&:nth-child(1),
&:nth-child(2) {
max-width: 5.5vw;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
line-height: 1.8vw;
text-align: center;
}
}
}
.imgs {
width: 9.8vw;
height: 9.8vw;
background: #F8F8F8;
border-radius: 1.1vw;
display: flex;
justify-content: center;
align-items: center;
margin: 0.8vw auto 0;
>image {
width: 8.8vw;
height: 7.5vw;
}
}
}
}
}
.mengban {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 21;
background: RGBA(239, 240, 244, 0);
}
</style>