hldy_app_mini/pages/material/component/inventory.vue

1096 lines
23 KiB
Vue
Raw Normal View History

2026-04-20 08:57:36 +08:00
<template>
<view>
<view class="cont guodu" :style="!transition?'opacity: 0':'opacity: 1'">
2026-04-20 08:57:36 +08:00
<view class="topbox">
<view class="carditem guodu">
2026-04-20 08:57:36 +08:00
<view class="cgsl">
2026-04-29 17:30:41 +08:00
<text :style="{ color: diffInfo.color }">{{ diffInfo.text }}</text>
2026-04-20 08:57:36 +08:00
<view>差额</view>
</view>
<view class="kcpdsl">
<view style="border-right: 1px solid #E6E6E6;">
<text>{{ Number(cardvalue.kcsl).toFixed(2) }}</text>
2026-04-20 08:57:36 +08:00
<text>库存数量</text>
</view>
<view>
<text>{{ Number(pandiannumber).toFixed(2) }}</text>
2026-04-20 08:57:36 +08:00
<text>盘点数量</text>
</view>
</view>
<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>
<view class="msitem guodu">
<view>
2026-04-29 17:30:41 +08:00
<view>{{ cardvalue.materialName }}</view><text
style="white-space: nowrap;">{{ cardvalue.materialNo }}</text>
2026-04-20 08:57:36 +08:00
</view>
<view style="margin-top: 1.6vw;">
<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>
<text style="white-space: nowrap;"> {{ cardvalue.gysName }}</text>
2026-04-20 08:57:36 +08:00
</view>
</view>
</view>
</view>
<view class="jisuansl">
<!-- <torytor></torytor> -->
<view class="tan guodu">
<view class="tbox guodu">
2026-04-20 08:57:36 +08:00
<!-- :tb="v.dqkcsl" :pz="pz" @pddjjnum="pddjjnum" :pdsl="v.pdsl" :idex="i" -->
2026-04-29 17:30:41 +08:00
<torytor :show="true" :pddType='pddType' :pushnumber="pushnumber" @pddjjnum="pddjjnum">
</torytor>
<view class="bpq">
2026-04-20 08:57:36 +08:00
<view class="bp b" @click="bz = !bz;pz = false">
2026-04-29 17:30:41 +08:00
<image :src="`/static/index/procurement/th${diffInfo.type}.png`" mode="aspectFill"></image>
2026-04-20 08:57:36 +08:00
备注
<!-- <text :class="{r:v?.pdType == 2&&v?.cesl>0,g:v.pdType == 1}" v-if="v?.content">1</text> -->
2026-04-29 17:30:41 +08:00
<text :style="{ backgroundColor: diffInfo.color }" v-show="relcontent">1</text>
2026-04-20 08:57:36 +08:00
</view>
<view class="bp p" @click="pz = !pz;bz = false">
2026-04-29 17:30:41 +08:00
<image :src="`/static/index/procurement/xj${diffInfo.type}.png`" mode="aspectFill"></image>
2026-04-20 08:57:36 +08:00
拍照
<!-- <text :class="{r:v?.pdType == 2&&v?.cesl>0,g:v.pdType == 1}"
v-if="v?.picPatharr?.length>0">{{v?.picPatharr?.length}}</text> -->
2026-04-29 17:30:41 +08:00
<text v-show="saveimagearray.length" :style="{ backgroundColor: diffInfo.color }">{{ saveimagearray.length }}</text>
</view>
<view class="qued same" @click="samecopy" v-if="pddType=='1'">
同步
2026-04-20 08:57:36 +08:00
</view>
<view class="qued" @click="config()" v-if="pddType=='1'">
2026-04-20 08:57:36 +08:00
确定
</view>
<view class="triangle-leftbz" v-if="bz">
<image src="/static/index/procurement/jb.png" mode="aspectFill"></image>
</view>
<view class="triangle-leftpz" v-if="pz">
<image src="/static/index/procurement/jb.png" mode="aspectFill"></image>
</view>
<view class="gray-bgc guodu" :class="bz?'':'itemhei0'">
<view class="textare" v-if="bz">
<!-- <textarea v-model="v?.content" placeholder="请输入备注" maxlength="200"
:disabled="pddType!='1'"></textarea> -->
2026-04-29 17:30:41 +08:00
<textarea v-model="content" placeholder="请输入备注" maxlength="200"
:disabled="false"></textarea>
2026-04-20 08:57:36 +08:00
</view>
<view class="submit" v-if="bz">
<view @click="bz = false;relcontent=``;content=``">{{pddType=='1'?'取消':'关闭'}}</view>
<view @click="bz = false;relcontent=content" v-if="pddType=='1'">确定</view>
2026-04-20 08:57:36 +08:00
</view>
</view>
<view class="gray-pgc guodu" :class="pz?'':'itemhei0'">
<view class="pztit" v-if="pz">拍照</view>
2026-04-29 17:30:41 +08:00
<scroll-view scroll-y :scroll-top="scrollTop" class="scrollbgc">
2026-04-20 08:57:36 +08:00
<view class="zpj" v-if="pz">
2026-04-29 17:30:41 +08:00
<view class="zpk" v-for="(p,o) in saveimagearray" :key="o"
@click="previewImage(saveimagearray,p,o)">
2026-04-20 08:57:36 +08:00
<image :src="serverUrl+p" mode="aspectFill"></image>
<view @click.stop="open=1;del(o)">
2026-04-20 08:57:36 +08:00
<image src="/static/index/keyimg/deletebutton.png" mode="aspectFill"
style="width: 75%;height: 70%;"></image>
</view>
</view>
<view class="clkpz" @click="uplod()">
2026-04-20 08:57:36 +08:00
<image src="/static/index/procurement/xjpz.png" mode="aspectFill"></image>
<text>点击拍照上传 </text>
</view>
<!-- <defaultr cont="暂无图片"
style="position: absolute;width: 10vw;height: 10vw;"></defaultr> -->
2026-04-20 08:57:36 +08:00
</view>
</scroll-view>
2026-04-20 08:57:36 +08:00
<view class="submit" v-if="pz" style="height: 3.5vw;">
<view @click="pz = false;saveimagearray=[]">{{pddType=='1'?'取消':'关闭'}}</view>
<view @click="pz = false">确定</view>
2026-04-20 08:57:36 +08:00
</view>
2026-04-20 08:57:36 +08:00
</view>
</view>
</view>
</view>
</view>
2026-04-20 08:57:36 +08:00
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineComponent, inject, watch } from 'vue';
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import torytor from './torytor.vue'
import { savePddInfo } from '../api/api.js'
2026-04-29 17:30:41 +08:00
2026-04-20 08:57:36 +08:00
const transition = ref(false)
const bz = ref(false)
const pz = ref(false)
const pddType = ref('1')
const props = defineProps({
isShow: {
type: Boolean
},
cardvalue: {
type: Object
}
});
watch(
() => props.isShow,
(newVal, oldVal) => {
if (!oldVal && newVal) {
transition.value = false;
setTimeout(() => {
transition.value = true;
}, 10)
} else {
transition.value = false;
}
}
)
2026-04-29 17:30:41 +08:00
const diffInfo = computed(() => {
const diff = Number(pandiannumber.value || 0) - Number(props.cardvalue.kcsl || 0)
if (!Number.isFinite(diff) || diff === 0) {
return {
text: '--',
color: 'black',
type:0
}
}
return {
text: diff.toFixed(2),
color: diff > 0 ? '#0385FA' : '#FF5757',
type: diff > 0 ? 1 : 2
}
})
const open = ref(0)
const scrolltop = ref(0)
const serverUrl = ref(uni.getStorageSync('serverUrl') + '/sys/common/static/')
const emit = defineEmits(['finishit'])
const valitem = ref({});
const valindex = ref(-1);
const havezk = ref(false)
// 点击锁
const secondlock = ref(false)
// 检测上一次点击
const savelastvalue = ref(false)
// const zhankai = (v, i) => {
// let s = Math.ceil((i + 1) / 3);
// if (valindex.value != i && valindex.value > -1 && uni.getStorageSync('valitem') && props.pddType == '1') {
// emit('tabitem', valindex.value, uni.getStorageSync('valitem'))
// }
// valindex.value = i;
// scrolltop.value = top.value;
// v.zk = !v.zk;
// savelastvalue.value = v.zk
// if (savelastvalue.value && v.zk) {
// secondlock.value = true;
// }
// havezk.value = v.zk
// if (v.zk) {
// if (props.pddType == '1') { uni.setStorageSync('valitem', v); }
// setTimeout(() => {
// v.yczk = v.zk;
// }, 200)
// } else {
// v.yczk = v.zk;
// v.bz = false;
// v.pz = false;
// }
// 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) => {
top.value = e.detail.scrollTop;
}
2026-04-29 17:30:41 +08:00
const inputValue = ref({
2026-04-29 17:30:41 +08:00
pandiannumber: 0,
})
2026-04-29 17:30:41 +08:00
const pandiannumber = ref(0)
2026-04-29 17:30:41 +08:00
const pddjjnum = (e : number) => {
// 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("aaaa",e)
pandiannumber.value = e
}
const config = () => {
// console.log("点击成功了吗?")
2026-04-29 17:30:41 +08:00
if ((Number(props.cardvalue.kcsl || 0) - Number(pandiannumber.value || 0)) && (relcontent.value == '' || relcontent.value == null)) {
uni.showToast({
icon: 'error',
title: "请填写备注!"
})
return
}
const diff = Number((Number(pandiannumber.value || 0) - Number(props.cardvalue.kcsl || 0)).toFixed(2))
2026-04-29 17:30:41 +08:00
let inputValue = {
2026-04-29 17:30:41 +08:00
nuId: uni.getStorageSync('nuId'),
id: props.cardvalue.id,
ckId: props.cardvalue.id,
pdsl: pandiannumber.value,
pdType: diff > 0 ? 1 : diff < 0 ? 2 : 0,
2026-04-29 17:30:41 +08:00
cesl: diff,
content: relcontent.value,
picPath: saveimagearray.value.toString()
}
2026-04-29 17:30:41 +08:00
// console.log("看看入参",inputValue)
2026-04-29 17:30:41 +08:00
savePddInfo(inputValue).then((res : any) => {
// console.log("看看有啥吧",res.success)
2026-04-29 17:30:41 +08:00
if (res.success) {
emit('finishit')
}
})
// let inputValue = {
// // cardvalue:""
// }
// savePddInfo()
// emit('right', e, i)
}
// const scrolltolower = () => {
// emit('scrolltolower')
// }
// 上传
const albumlist = ref([])
const uplod = () => {
uni.chooseImage({
count: 1, //默认9
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera'], //从相册选择
success: (e) => {
let ar = JSON.stringify(e.tempFilePaths)
uni.compressImage({
src: JSON.parse(ar)[0],
quality: 60,
success: res => {
sxdupld(res.tempFilePath)
}
})
}
});
}
2026-04-29 17:30:41 +08:00
const scrollTop = ref(0)
const sxdupld = (e) => {
let now = new Date();
let year = now.getFullYear();
let month = now.getMonth() + 1;
uni.uploadFile({
url: uni.getStorageSync('serverUrl') + '/sys/common/upload',
filePath: e,
name: 'file',
formData: {
biz: year + '/' + month + '/pddPic'
},
header: {
'X-Access-Token': uni.getStorageSync('token')
},
success: res => {
const data = JSON.parse(res.data);
saveimagearray.value.push(data.message)
2026-04-29 17:30:41 +08:00
scrollTop.value = 999998
nextTick(() => {
scrollTop.value = 999999 // 直接给一个很大的值
})
},
fail: () => {
uni.showToast({ title: '上传失败', icon: 'none' })
}
})
}
2026-04-29 17:30:41 +08:00
const saveimagearray = ref([])
2026-04-29 17:30:41 +08:00
const previewImage = (arr, p, i) => {
let u = []
2026-04-29 17:30:41 +08:00
arr.forEach(e => {
u.push(serverUrl.value + e)
})
uni.previewImage({
current: i,
urls: u,
showmenu: false,
longPressActions: {
itemList: [],
}
})
}
// const shuzhi = (v) => {
// v.picPath = '';
// v.picPatharr.forEach((e, i) => {
// v.picPath += e + ','
// })
// }
const picv = ref({});
const pici = ref(0);
2026-04-29 17:30:41 +08:00
const del = (index : number) => {
saveimagearray.value.splice(index, 1)
}
// const del1 = () => {
// picv.value.picPatharr.splice(pici.value, 1);
// open.value = 0
// }
/** 只针对 UniApp 原生 App 的最简判断函数true = 上半false = 下半null = 无法判断) */
function isTopHalfApp(e) {
if (!e) return null;
// 原生 app 常见changedTouches 或 touches
const touch = (e.changedTouches && e.changedTouches[0]) || (e.touches && e.touches[0]) || null;
const y = touch
? (typeof touch.clientY === 'number' ? touch.clientY : (typeof touch.pageY === 'number' ? touch.pageY : null))
: (e.detail && typeof e.detail.y === 'number' ? e.detail.y : null);
let h = null;
try {
h = uni.getSystemInfoSync().windowHeight; // UniApp 原生 App 推荐使用
} catch (err) {
h = null;
}
if (y == null || !h) return null;
return y <= (h * 1 / 2);
}
const isbottom = ref(false);
const clicklock = ref(false)
/** 事件处理示例 */
function onTap(e) {
const top = isTopHalfApp(e);
if (top === null) {
// uni.showToast({ title: '无法判断坐标', icon: 'none' });
return;
}
if (havezk.value) {
// console.log("top", top, clicklock.value)
if (!clicklock.value || secondlock.value) {
if (!top) {
isbottom.value = true
// console.log("开启了")
} else {
isbottom.value = false
}
clicklock.value = true;
secondlock.value = false;
}
} else {
clicklock.value = false
}
}
const pushnumber = ref(0);
const content = ref("");
const relcontent = ref("")
2026-04-29 17:30:41 +08:00
const samecopy = () => {
pushnumber.value = -13.33;
2026-04-29 17:30:41 +08:00
nextTick(() => {
pushnumber.value = Number(props.cardvalue.kcsl)
})
}
2026-04-20 08:57:36 +08:00
</script>
<style lang="less" scoped>
.cont {
width: 50vw;
2026-04-29 17:30:41 +08:00
height: 45vw;
background: #FFFFFF;
border-radius: 1.6vw;
position: fixed;
z-index: 110;
top: 9.8vw;
right: 24.8vw;
.jisuansl {
width: 100%;
height: 24vw;
2026-04-29 17:30:41 +08:00
margin-top: 1vw;
}
.topbox {
width: 100%;
height: 22vw;
position: relative;
}
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
.itemhei0 {
height: 0vw !important;
z-index: 27 !important;
}
.carditem {
2026-04-20 08:57:36 +08:00
position: absolute;
top: 2.5vw;
left: 0;
height: 17.5vw;
width: 100%;
display: flex;
transition: transform 500ms cubic-bezier(.2, .8, .2, 1);
will-change: transform;
.kcpdsl {
2026-04-20 08:57:36 +08:00
width: 16.4vw;
height: 3vw;
display: flex;
position: absolute;
bottom: 0;
left: 16vw;
view {
2026-04-20 08:57:36 +08:00
width: 50%;
height: 3vw;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
text {
&:nth-child(1) {
2026-04-20 08:57:36 +08:00
font-weight: bold;
font-size: 1.7vw;
color: #555555;
}
&:nth-child(2) {
2026-04-20 08:57:36 +08:00
font-size: 1.1vw;
color: #999999;
}
}
}
}
.cgsl {
2026-04-20 08:57:36 +08:00
position: absolute;
width: 5vw;
height: 4.5vw;
2026-04-20 08:57:36 +08:00
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
right: 2.6vw;
top: 0vw;
text {
2026-04-20 08:57:36 +08:00
font-weight: bold;
font-size: 1.7vw;
color: #222222;
font-style: normal;
text-transform: none;
margin: 0.6vw 0;
}
view {
2026-04-20 08:57:36 +08:00
font-size: 1vw;
color: #777777;
font-style: normal;
text-transform: none;
}
}
.cgdh {
2026-04-20 08:57:36 +08:00
position: absolute;
width: 25vw;
height: 3vw;
display: flex;
align-items: center;
top: -2vw;
left: 2.3vw;
text {
2026-04-20 08:57:36 +08:00
width: 1.5vw;
height: 1.5vw;
border-radius: 0.3vw;
font-weight: bold;
font-size: 1vw;
line-height: 1.5vw;
text-align: center;
display: block;
color: #fff;
margin-left: 1.2vw;
}
.s {
2026-04-20 08:57:36 +08:00
background: #FF5B5B;
}
.j {
2026-04-20 08:57:36 +08:00
background: #1083F8;
}
}
2026-04-20 08:57:36 +08:00
.zkf {
width: 7vw;
right: -7vw;
}
.add {
width: 4.5vw;
height: 100%;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
top: 50%;
transform: translateY(-50%);
// top: 0.8vw;
right: 16vw;
// background-color: red;
>view {
width: 5.5vw;
height: 2.2vw;
background: #fff;
border-radius: 0.9vw;
border: 1px solid #1083F8;
font-weight: 400;
font-size: 1.4vw;
color: #1083F8;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 2.3vw;
right: 0.8vw;
}
image {
width: 2.5vw;
height: 2.5vw;
}
}
.msitem {
min-width: 25vw;
height: 20vw;
margin-right: 4.2vw;
position: relative;
>view {
&:nth-child(2),
&:nth-child(3),
&:nth-child(4),
&:nth-child(6),
&:nth-child(5) {
margin-top: 0.25vw;
max-width: 25vw;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
text {
font-weight: 400;
font-size: 1.3vw;
color: #777777;
margin-top: 0.25vw;
}
}
&:nth-child(1) {
display: flex;
align-items: center;
height: 2vw;
margin-top: 1vw;
>view {
max-width: 13vw;
height: 2vw;
font-weight: bold;
font-size: 1.8vw;
color: #222222;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
text {
width: 6vw;
font-weight: 300;
font-size: 1.4vw;
color: #222222;
padding-left: 0.5vw;
padding-top: 0.2vw;
2026-04-20 08:57:36 +08:00
}
}
}
>.wlsy {
width: 100%;
height: 3.4vw;
display: flex;
justify-content: space-between;
margin-top: 0vw;
>view {
width: 33.3%;
height: 100%;
display: flex;
flex-direction: column;
position: relative;
margin-top: 1vw;
&:nth-child(1) {
width: 30%;
align-items: left;
}
&:nth-child(2) {
width: 40%;
align-items: center;
}
&:nth-child(3) {
width: 30%;
text-align: right;
align-items: right;
}
&:nth-child(2)::after {
content: '';
position: absolute;
right: 0;
width: 100%;
height: 2.2vw;
border-left: 1px solid #C9C9C9;
border-right: 1px solid #C9C9C9;
top: 0.6vw;
}
text {
&:nth-child(1) {
font-weight: bold;
font-size: 1.8vw;
color: #555555;
}
&:nth-child(2) {
font-weight: 400;
font-size: 1.2vw;
color: #999999;
}
}
}
}
}
// .spleft{
// margin-left: -15vw !important;
// }
.speitem {
min-width: 18vw;
height: 17vw;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.cardp {
width: 12.5vw;
height: 4vw;
display: flex;
flex-wrap: wrap;
margin: 0 auto;
align-items: center;
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;
&: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;
}
&: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;
}
}
}
.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-20 08:57:36 +08:00
.tan {
width: 100%;
height: 100%;
2026-04-20 08:57:36 +08:00
.submit {
width: 100%;
height: 1vw;
margin-top: 0.7vw;
// margin-top: 0.9vw;
padding-right: 2vw;
display: flex;
justify-content: flex-end;
2026-04-20 08:57:36 +08:00
view {
display: flex;
justify-content: center;
align-items: center;
2026-04-20 08:57:36 +08:00
&: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;
}
2026-04-20 08:57:36 +08:00
&: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;
}
}
}
2026-04-20 08:57:36 +08:00
.bpq {
width: 100%;
height: 2.6vw;
2026-04-29 17:30:41 +08:00
// background-color: red;
2026-04-20 08:57:36 +08:00
position: absolute;
display: flex;
2026-04-29 17:30:41 +08:00
bottom: -1.7vw;
2026-04-20 08:57:36 +08:00
left: 1vw;
2026-04-20 08:57:36 +08:00
.triangle-leftpz {
width: 2vw;
height: 1.5vw;
position: absolute;
bottom: 2.2vw;
left: 11vw;
z-index: 30;
2026-04-20 08:57:36 +08:00
image {
width: 100%;
height: 100%;
}
}
2026-04-20 08:57:36 +08:00
.triangle-leftbz {
width: 2vw;
height: 1.5vw;
position: absolute;
bottom: 2.2vw;
left: 4vw;
z-index: 30;
2026-04-20 08:57:36 +08:00
image {
width: 100%;
height: 100%;
}
}
2026-04-20 08:57:36 +08:00
.gray-pgc {
background: #fff;
width: 46vw;
height: 30vw;
border-radius: 2vw;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(116, 141, 164, 0.22);
position: absolute;
bottom: 3.6vw;
left: 1vw;
overflow: hidden;
2026-04-20 08:57:36 +08:00
>.submit {
position: absolute;
bottom: 0;
right: 0;
}
2026-04-20 08:57:36 +08:00
.scrollbgc {
width: 92%;
margin-left: 4%;
height: 22vw;
2026-04-20 08:57:36 +08:00
.zpj {
2026-04-29 17:30:41 +08:00
width: 106%;
2026-04-20 08:57:36 +08:00
display: flex;
flex-wrap: wrap;
2026-04-29 17:30:41 +08:00
// flex-direction: column;
2026-04-20 08:57:36 +08:00
// padding: 0 1.6vw;
height: 22vw;
// background-color: red;
2026-04-20 08:57:36 +08:00
.zpk {
2026-04-29 17:30:41 +08:00
width: 30%;
2026-04-20 08:57:36 +08:00
height: 10vw;
margin-top: 1vw;
border-radius: 1.1vw;
position: relative;
display: flex;
justify-content: center;
align-items: center;
background: #F9F9F9;
overflow: hidden;
2026-04-29 17:30:41 +08:00
margin-right: 2%;
2026-04-20 08:57:36 +08:00
view {
width: 2vw;
height: 2vw;
z-index: 20;
position: absolute;
right: 0.8vw;
top: 0.8vw;
border-radius: 0.6vw 1.1vw 0.6vw 0.6vw;
background: rgba(255, 255, 255, 1);
display: flex;
justify-content: center;
align-items: center;
}
2026-04-20 08:57:36 +08:00
image {
width: 100%;
height: 100%;
}
}
2026-04-20 08:57:36 +08:00
.clkpz {
2026-04-29 17:30:41 +08:00
width: 30%;
2026-04-20 08:57:36 +08:00
height: 10vw;
background: #FAFDFF;
border-radius: 1.1vw;
border: 1px solid #DDEFFF;
display: flex;
justify-content: center;
align-items: center;
margin-top: 1vw;
flex-direction: column;
2026-04-29 17:30:41 +08:00
margin-right: 2%;
2026-04-20 08:57:36 +08:00
text {
font-weight: 400;
font-size: 1vw;
color: #78B1EB;
}
2026-04-20 08:57:36 +08:00
image {
width: 2.8vw;
height: 2.8vw;
}
}
2026-04-20 08:57:36 +08:00
}
}
2026-04-20 08:57:36 +08:00
.pztit {
font-weight: 400;
font-size: 1.5vw;
color: #888888;
margin: 1.6vw auto 0;
width: 100%;
padding-left: 2.4vw;
}
}
2026-04-20 08:57:36 +08:00
.gray-bgc {
background: #fff;
width: 33vw;
height: 14.1vw;
border-radius: 2vw;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(116, 141, 164, 0.6);
position: absolute;
bottom: 3.6vw;
left: 1vw;
overflow: hidden;
2026-04-20 08:57:36 +08:00
.triangle-left {
width: 2vw;
height: 1.5vw;
position: absolute;
top: 99.5%;
left: 3vw;
2026-04-20 08:57:36 +08:00
image {
width: 100%;
height: 100%;
}
}
2026-04-20 08:57:36 +08:00
.textare {
width: 29vw;
height: 7.8vw;
2026-04-20 08:57:36 +08:00
background: #F5F5F5;
border: 4rpx solid #F5F5F5;
border-radius: 1vw;
margin: 1.6vw auto 0;
padding: 1vw;
2026-04-20 08:57:36 +08:00
textarea {
width: 100%;
height: 100%;
font-weight: 400;
font-size: 1.3vw;
color: #999999;
}
}
2026-04-20 08:57:36 +08:00
}
2026-04-20 08:57:36 +08:00
.qued {
width: 6vw;
height: 2.8vw;
background: linear-gradient(0deg, #CAE0F9, #E9F4FF);
border-radius: 1.3vw;
border: 1px solid rgba(3, 133, 250, 0.34);
right: 3.2vw;
top: 1vw;
position: absolute;
font-weight: 400;
font-size: 1.4vw;
color: #0385FA;
display: flex;
align-items: center;
justify-content: center;
}
2026-04-29 17:30:41 +08:00
.same {
right: 10.5vw;
}
2026-04-29 17:30:41 +08:00
2026-04-20 08:57:36 +08:00
.bp {
width: 5vw;
height: 2.8vw;
display: flex;
2026-04-29 17:30:41 +08:00
align-items: center;
2026-04-20 08:57:36 +08:00
font-weight: 400;
font-size: 1.2vw;
color: #555555;
margin-left: 1.5vw;
white-space: nowrap;
position: relative;
2026-04-29 17:30:41 +08:00
margin-top: 1.2vw;
2026-04-20 08:57:36 +08:00
>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;
background: #555555;
}
2026-04-29 17:30:41 +08:00
2026-04-20 08:57:36 +08:00
image {
2026-04-29 17:30:41 +08:00
width: 2vw;
height: 2vw;
2026-04-20 08:57:36 +08:00
margin-right: 0.4vw;
2026-04-29 17:30:41 +08:00
// padding-top: 0.4vw;
2026-04-20 08:57:36 +08:00
}
}
}
2026-04-20 08:57:36 +08:00
.tbox {
width: 100%;
height: 16vw;
position: absolute;
top: 1vw;
z-index: 28;
left: 0;
2026-04-20 08:57:36 +08:00
}
}
</style>