hldy_app_mini/pages/material/component/price.vue

600 lines
13 KiB
Vue
Raw Normal View History

2026-04-15 16:03:39 +08:00
<template>
<view>
<view class="box guodu" :style="!show?'width: 0;right:-6vw':'width: 78vw'">
2026-04-20 08:57:36 +08:00
<view class="title">
<view></view>
销售价格
</view>
<view class="gys">供应商{{ cardvalue.gysName }}</view>
2026-04-20 08:57:36 +08:00
<view class="list">
<view class="cgdh">
<view class="zc">
采购单号 {{ cardvalue.ddNo }}
2026-04-29 17:30:41 +08:00
<view>库存数量<text style="padding-left: 0.5vw;">{{ Number(cardvalue.kcsl ).toFixed(2) }}</text>
</view>
2026-04-20 08:57:36 +08:00
</view>
<view class="sxd" @click="sxd = true">随行单</view>
</view>
<view class="contents">
<view class="carditem guodu">
2026-04-20 08:57:36 +08:00
<view class="speitem guodu">
<view class="imghs">
<image style="border-radius: 1vw;"
:src="cardvalue.materialImg?serverUrl+cardvalue.materialImg:'/static/index/procurement/k.png'"
2026-04-20 08:57:36 +08:00
mode="aspectFill">
</image>
</view>
<view class="cardp">
<view>{{ cardvalue.categoryId_dictText }}</view>
<view>{{ cardvalue.typeId_dictText }}</view>
2026-04-20 08:57:36 +08:00
</view>
<!-- <view class="cardp">
<view v-if="v.categoryId_dictText">{{v.categoryId_dictText}}</view>
<view v-if="v.typeId_dictText">{{v.typeId_dictText}}</view>
<view v-if="v.medicationId_dictText">{{v.medicationId_dictText}}</view>
</view> -->
</view>
<view class="msitem guodu">
<view>
<view>{{ cardvalue.materialName }}</view>
2026-04-20 08:57:36 +08:00
</view>
<view style="margin-top: 1vw;">
<text style="white-space: nowrap;"> 物料编码: {{ cardvalue.materialNo }}</text>
2026-04-20 08:57:36 +08:00
</view>
<view>
<text style="white-space: nowrap;"> 规格型号: {{ cardvalue.specificationModel }}</text>
2026-04-20 08:57:36 +08:00
</view>
<view>
<text style="white-space: nowrap;"> 品牌型号{{ cardvalue.brandType }}</text>
2026-04-20 08:57:36 +08:00
</view>
<view>
<text style="white-space: nowrap;"> 生产厂家{{ cardvalue.manufacturer }}</text>
2026-04-20 08:57:36 +08:00
</view>
</view>
2026-04-20 08:57:36 +08:00
</view>
2026-04-20 08:57:36 +08:00
<view class="righs">
2026-04-29 17:30:41 +08:00
<view class="hezi" style="position: relative;">
2026-04-20 08:57:36 +08:00
<view>
<text></text>
{{ Number(cardvalue.procurementPrice).toFixed(2) }}
<text class="s" v-if="cardvalue.procurementPrice < cardvalue.arrivalPrice"> <text
class="info-text">
{{ (cardvalue.arrivalPrice - cardvalue.procurementPrice).toFixed(2) }}</text></text>
<text class="j" v-if="cardvalue.procurementPrice > cardvalue.arrivalPrice"><text
class="info-text">
{{ (cardvalue.procurementPrice - cardvalue.arrivalPrice).toFixed(2) }}</text></text>
2026-04-20 08:57:36 +08:00
</view>
2026-04-29 17:30:41 +08:00
<view class="jg">
采购价格
<!-- <text class="s"></text><text class="sb ss">0.26 </text> -->
</view>
2026-04-20 08:57:36 +08:00
</view>
<view class="hezi" @click="openCalcul">
2026-04-20 08:57:36 +08:00
<view>
<text></text>{{ changethenvalue==-998? Number(cardvalue.xsjg).toFixed(2):Number(changethenvalue).toFixed(2) }}
<!-- <image src="/static/index/material/edh.png" mode="aspectFill"></image> -->
2026-04-20 08:57:36 +08:00
<image src="/static/index/material/edl.png" mode="aspectFill"></image>
</view>
2026-04-29 17:30:41 +08:00
<view class="jg">
2026-04-20 08:57:36 +08:00
销售价格
<!-- <text class="j"></text><text class="sb jj">0.26 </text> -->
2026-04-20 08:57:36 +08:00
</view>
</view>
<view class="hezi">
<view>
{{ cardvalue.wlunits }}
2026-04-20 08:57:36 +08:00
</view>
<text>采购单位</text>
</view>
<view class="hezi">
<view style="padding-left: 0.3vw;">
{{ cardvalue.xsdw }}
<!-- <image src="/static/index/material/edr.png" mode="aspectFill"></image> -->
2026-04-20 08:57:36 +08:00
</view>
<text>销售单位</text>
2026-04-20 08:57:36 +08:00
</view>
</view>
</view>
</view>
<view class="btn">
<view class="qx" @click="emit('close')">取消</view>
<view class="qd" @click="successchange">确认</view>
</view>
<view class="mengban" style="z-index: 1;" v-if="opencal" @click="opencal=false"></view>
<view class="cal-view" :style="opencal?{}:{bottom:`-1200rpx`}">
<calculator :show="true" :translateNumber="translateNumber" @right="rightchange" @close="opencal=false">
</calculator>
2026-04-20 08:57:36 +08:00
</view>
</view>
<view class="mengban" v-if="sxd" @click="sxd = false"> </view>
<sxds :show="sxd" @close="sxd = false"></sxds>
<!-- <view class="mengban" style="z-index: 119;" v-if="true"></view> -->
<errorshow :show="openerror" :font="errmsg" @close="openerror=false" />
<!-- <calculator :show="addflag" @jjnum="jjnum" :caigouobj="caigouobj" @colse="qk" @right="right"></calculator> -->
2026-04-15 16:03:39 +08:00
</view>
</template>
2026-04-20 08:57:36 +08:00
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineComponent, watch } from 'vue';
import sxds from './sxd.vue'
import calculator from './calculator.vue'
import { editXsjg } from '../api/api.js'
const props = defineProps({
show: {
type: Boolean
},
cardvalue: {
type: Object
}
})
watch(
() => props.show,
() => {
changethenvalue.value = -998;
opencal.value = false
}
)
const sxd = ref(false)
const emit = defineEmits(['close', 'finishit'])
const serverUrl = uni.getStorageSync('serverUrl') + '/sys/common/static/';
const opencal = ref(false);
const translateNumber = ref(0)
const openerror = ref(false)
const errmsg = ref('')
const openCalcul = () => {
opencal.value = true;
translateNumber.value = -63.21
nextTick(() => {
if (changethenvalue.value == -998) {
translateNumber.value = Number(props.cardvalue.xsjg)
} else {
translateNumber.value = Number(changethenvalue.value)
}
})
}
const changethenvalue = ref(-998)
const rightchange = (price : number) => {
changethenvalue.value = price
console.log("right", price)
opencal.value = false
}
const successchange = () => {
if (changethenvalue.value == -998) {
emit('close')
} else {
let data = {
id: props.cardvalue.id,
xsjg: changethenvalue.value
}
editXsjg(data).then((res : any) => {
if (res.success) {
console.log("看看改成啥了", res)
emit("finishit")
emit('close')
} else {
errmsg.value = res.result?.message ? res.result?.message : res.message
openerror.value = true;
}
})
// console.log("data", data)
}
}
2026-04-20 08:57:36 +08:00
</script>
<style lang="less" scoped>
.mengban {
2026-04-20 08:57:36 +08:00
width: 100vw;
height: 100vh;
position: fixed;
background: RGBA(240, 240, 240, 0.64);
top: 0;
left: 0;
z-index: 1010;
}
.box {
width: 0;
height: 100vh;
background: #FFFFFF;
position: fixed;
top: 0;
right: 0;
z-index: 1001;
overflow: hidden;
border-radius: 3vw 0 0 3vw;
padding: 3vw;
.btn {
position: absolute;
right: 3.5vw;
bottom: 2.7vw;
2026-04-20 08:57:36 +08:00
display: flex;
justify-content: flex-end;
view {
width: 8vw;
height: 3.4vw;
border-radius: 1.1vw;
font-size: 16px;
display: flex;
justify-content: center;
align-items: center;
margin-left: 1vw;
}
.qd {
background: #57A8FA;
color: #FFFFFF;
}
.qx {
background: #E1F0FF;
color: #555555;
}
2026-04-20 08:57:36 +08:00
}
.list::after {
content: '';
width: 1rpx;
height: 15vw;
background: #D2D2D2;
position: absolute;
top: 4vw;
2026-04-29 17:30:41 +08:00
left: 36vw;
2026-04-20 08:57:36 +08:00
}
.list {
width: 71.9vw;
height: 21.5vw;
background: #FFFFFF;
border-radius: 2.2vw;
border: 1px solid #D2D2D2;
margin-top: 1.7vw;
padding: 1.8vw 2.3vw 0;
position: relative;
.contents {
width: 100%;
height: 16vw;
2026-04-20 08:57:36 +08:00
display: flex;
.righs {
width: 30vw;
height: 100%;
2026-04-20 08:57:36 +08:00
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-top: 3vw;
2026-04-29 17:30:41 +08:00
.s {
color: #FF5B5B !important;
2026-04-29 17:30:41 +08:00
// margin: 0 0.5vw;
position: absolute;
top: -20%;
// transform: translateY(-50%);
right: -2.5vw;
.info-text {
color: #fff;
background-color: #FF5B5B;
padding-left: 0.3vw;
padding-right: 0.5vw;
border-radius: 10rpx;
2026-04-20 08:57:36 +08:00
}
}
.j {
color: #0385FA !important;
margin: 0 0.5vw;
2026-04-29 17:30:41 +08:00
position: absolute;
top: -20%;
// transform: translateY(-50%);
right: -2.5vw;
.info-text {
color: #fff;
background-color: #0385FA;
padding-left: 0.3vw;
padding-right: 0.5vw;
border-radius: 10rpx;
2026-04-20 08:57:36 +08:00
}
}
.ss {
background: #FF5B5B !important;
}
.jj {
background: #0385FA !important;
}
.sb {
width: 4.8vw;
height: 2.1vw;
border-radius: 0.5vw;
font-weight: 400;
font-size: 1.4vw;
color: #FFFFFF !important;
display: flex;
justify-content: center;
align-items: center;
margin-left: 0.5vw;
}
.hezi {
width: 14vw;
height: 70rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
2026-04-20 08:57:36 +08:00
white-space: nowrap;
>view {
font-size: 2.2vw;
color: #333333;
display: flex;
align-items: flex-end;
font-weight: bold;
height: 2.4vw;
white-space: nowrap;
text {
font-size: 1.4vw;
line-height: 2.3vw;
}
image {
width: 1.4vw;
height: 1.4vw;
position: relative;
top: -0.4vw;
}
}
.jg {
font-size: 1.3vw;
color: #888888;
white-space: nowrap;
}
2026-04-20 08:57:36 +08:00
}
}
}
.cgdh {
width: 100%;
height: 40rpx;
2026-04-20 08:57:36 +08:00
display: flex;
align-items: center;
justify-content: space-between;
white-space: nowrap;
.zc {
font-size: 1.5vw;
color: #777777;
display: flex;
align-items: center;
view {
margin-left: 4.5vw;
text {
font-weight: bold;
font-size: 2vw;
color: #222222;
}
2026-04-20 08:57:36 +08:00
}
}
.sxd {
width: 5.5vw;
height: 2.4vw;
background: #FFFFFF;
border-radius: 0.9vw;
border: 1px solid #0385FA;
font-size: 1.2vw;
color: #0385FA;
display: flex;
justify-content: center;
align-items: center;
}
2026-04-20 08:57:36 +08:00
}
2026-04-20 08:57:36 +08:00
}
.gys {
font-weight: bold;
font-size: 1.4vw;
color: #777777;
margin-top: 2.3vw;
}
.title {
font-size: 1.7vw;
color: #222222;
display: flex;
align-items: center;
view {
width: 0.5vw;
height: 1.4vw;
background: radial-gradient(0% 0% at 0% 0%, #006DC9 7.25%, #0385FA 100%), #F7F7F7;
border-radius: 0.2vw;
margin-right: 1vw;
}
2026-04-20 08:57:36 +08:00
}
}
.guodu {
2026-04-20 08:57:36 +08:00
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
2026-04-20 08:57:36 +08:00
.carditem {
height: 100%;
2026-04-29 17:30:41 +08:00
width: 35vw;
2026-04-20 08:57:36 +08:00
display: flex;
transition: transform 500ms cubic-bezier(.2, .8, .2, 1);
will-change: transform;
2026-04-29 17:30:41 +08:00
margin-top: 1vw;
2026-04-20 08:57:36 +08:00
justify-content: space-between;
padding-right: 1.8vw;
2026-04-29 17:30:41 +08:00
// background-color: red;
2026-04-20 08:57:36 +08:00
.msitem {
min-width: 23vw;
height: 14vw;
position: relative;
display: flex;
flex-direction: column;
justify-content: space-around;
2026-04-20 08:57:36 +08:00
>view {
2026-04-20 08:57:36 +08:00
&:nth-child(2),
&:nth-child(3),
&:nth-child(4),
&:nth-child(6),
&:nth-child(5) {
margin-top: 0.25vw;
max-width: 23vw;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
2026-04-20 08:57:36 +08:00
text {
font-weight: 400;
font-size: 1.3vw;
color: #777777;
margin-top: 0.25vw;
}
}
2026-04-20 08:57:36 +08:00
&:nth-child(1) {
display: flex;
justify-content: space-between;
align-items: center;
height: 2vw;
margin-top: 1vw;
2026-04-20 08:57:36 +08:00
>view {
width: 19vw;
height: 2vw;
font-weight: bold;
font-size: 1.8vw;
color: #222222;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
2026-04-20 08:57:36 +08:00
text {
width: 6vw;
font-weight: 300;
font-size: 1.4vw;
color: #222222;
}
}
}
2026-04-20 08:57:36 +08:00
}
2026-04-20 08:57:36 +08:00
// .spleft{
// margin-left: -15vw !important;
// }
.speitem {
min-width: 13vw;
height: 14vw;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
2026-04-20 08:57:36 +08:00
.cardp {
width: 12.5vw;
height: 4vw;
display: flex;
flex-wrap: wrap;
margin: 0 auto;
align-items: center;
2026-04-20 08:57:36 +08:00
view {
min-width: 5.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: 1vw;
color: #555555;
padding: 0 0.25vw;
2026-04-20 08:57:36 +08:00
&:nth-child(1),
&:nth-child(2) {
max-width: 6vw;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
line-height: 1.8vw;
text-align: center;
}
2026-04-20 08:57:36 +08:00
&:nth-child(3) {
max-width: 11.5vw;
padding: 0 0.8vw;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
line-height: 1.8vw;
text-align: center;
}
}
}
2026-04-20 08:57:36 +08:00
.imghs {
width: 10vw;
height: 10vw;
margin: 1vw auto 0.25vw;
padding: 0.2vw;
background: #fff;
border-radius: 1.1vw;
2026-04-20 08:57:36 +08:00
>image {
width: 100%;
height: 100%;
border-radius: 1.1vw;
}
}
2026-04-15 16:03:39 +08:00
}
}
.cal-view {
position: absolute;
bottom: 70rpx;
left: 400rpx;
width: 800rpx;
height: 1000rpx;
transition: bottom 0.3s ease;
z-index: 2;
}
</style>