hldy_app_mini/pages/Warehouse/picking.vue

3292 lines
81 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 class="contain guodu" :style="!transition?'opacity: 0':'opacity: 1'" style="transition: opacity 1s ease;">
<view v-show="moreindex!=-1 || topbuttontarget!=-1 || openjianhuo || opengaijia || opendata" class="mengban"
:style="opencgr||opengys||opendata ?{background:`transparent`}:{}"
@click="moreindex=-1; topbuttontarget=-1;openjianhuo=false;opengaijia=false;opendata=false;opencgr=false;opengys=false;albumlist=[]">
</view>
<view class="mengban" style="background: #fff;width:100vw;right:0;left: 0;top: -5vh;height: 110vh;"
v-if="nomessageshow">
<defaultr cont="暂无数据" style="z-index: 999;"></defaultr>
</view>
<!-- 给模糊搜索用的 -->
<view v-show="filteredCgrListsecond.length&&gysvalue" class="mengban" style="background: transparent;"
@click="closefilteredCgrListsecond">
</view>
<view class="input-next" style="bottom: 500rpx;" v-if="filteredCgrListsecond.length && gysvalue">
<view v-show="filteredCgrListsecond[0].suppliersName!=`暂无数据`" class="next-father"
v-for="(item, index) in filteredCgrListsecond.slice(0, 5)" :key="index"
@click="clickfilteredCgrListsecond(item,index)">
{{ item.suppliersName }}
</view>
<view class="nomessage" v-if="filteredCgrListsecond[0].suppliersName===`暂无数据`">
暂无数据
</view>
</view>
<!-- 给模糊搜索用的 -->
<view v-show="filteredCgrList.length&&cgrvalue" class="mengban" style="background: transparent;"
@click="closefilteredCgrList"></view>
<view class="input-next" v-if="filteredCgrList.length && cgrvalue">
<view v-show="filteredCgrList[0].cgBy!=`暂无数据`" class="next-father"
v-for="(item, index) in filteredCgrList.slice(0, 5)" :key="index" @click="clickfilteredCgrList(item)">
{{ item.cgBy }}
</view>
<view class="nomessage" v-if="filteredCgrList[0].cgBy===`暂无数据`">
暂无数据
</view>
</view>
<!-- 日期 -->
<view class="calendar-father" v-show="opendata" v-if="xiaohui">
<calendar @datachange="dateget" />
</view>
<!-- 改价 -->
<view class="gaijiafather" v-show="opengaijia" :style="donghuaopo?{opacity:1}:{opacity:0}">
<view style="width: 100%;margin-top: 50rpx;font-size: 30rpx;">
采购单价:
<text style="color: #888888;">
¥{{ gaijia }}
</text>
</view>
<view style="margin-top: 150rpx;display: flex;align-items: center;flex-direction: column;width: 50%;">
<view style="font-size: 30rpx;margin-bottom: 10rpx;">
到货单价
</view>
<view class="gray-input" style="width: 410rpx;">
¥ {{ gaijia }}
</view>
</view>
<view style="position: absolute;right: 30rpx;bottom: 30rpx;">
<view style="display: flex;">
<view @click="opengaijia=false"
style="width: 160rpx;height: 75rpx;background-color: #ebeced;color: #888888;display: flex;justify-content: center;align-items: center;font-size: 30rpx;border-radius: 40rpx;">
取消
</view>
<view @click="dogaijia"
style="width: 160rpx;height: 75rpx;;color: #0385FA;display: flex;justify-content: center;align-items: center;font-size: 30rpx;border-radius: 40rpx;border: 1rpx solid #0385FA;background: linear-gradient(to bottom,#E9F4FF,#CAE0F9);margin: 0 40rpx;">
确定
</view>
</view>
</view>
<view class="jianhuo-jianpan" style="right: -40rpx;bottom: 150rpx;">
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="press('1')">
1
</view>
<view class="gray-button-jianpan" @click="press('2')">
2
</view>
<view class="gray-button-jianpan" @click="press('3')">
3
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="press('4')">
4
</view>
<view class="gray-button-jianpan" @click="press('5')">
5
</view>
<view class="gray-button-jianpan" @click="press('6')">
6
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="press('7')">
7
</view>
<view class="gray-button-jianpan" @click="press('8')">
8
</view>
<view class="gray-button-jianpan" @click="press('9')">
9
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" style="font-size: 30rpx;" @click="press('AC')">
清零
</view>
<view class="gray-button-jianpan" @click="press('0')">
0
</view>
<view class="gray-button-jianpan" @click="press('.')">
.
</view>
</view>
</view>
</view>
<!-- 拣货 -->
<view class="jianhuofather guodu" v-show="openjianhuo" :style="donghuaopo?{opacity:1}:{opacity:0}">
<view style="margin: 40rpx 0;width: 100%;text-align: center;font-size: 35rpx;font-weight: 600;">
{{showvalue.wlName}}
</view>
<view style="display: flex;justify-content: space-between;width: 100%;">
<view style="font-weight: 600;font-size: 30rpx;">
物料信息
</view>
<view style="font-weight: 600;font-size: 35rpx;color: #555555;">
¥{{showvalue.totalPrice}}
</view>
</view>
<view style="display: flex;margin-top: 10rpx;">
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
物料编码
</view>
<view class="" style="margin-top: 5rpx;font-size: 34rpx;">
{{showvalue.wlMaterialNo}}
</view>
</view>
<view style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;white-space: nowrap;font-size: 25rpx;">
规格型号
</view>
<view
style="margin-top: 5rpx;font-size: 34rpx;white-space: nowrap;display: flex;flex-wrap: nowrap;">
{{showvalue.wlSpecificationModel}}
</view>
</view>
</view>
<view style="display: flex;margin-top: 15rpx;">
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
采购单价
</view>
<view class="text-anim" style="margin-top: 5rpx;font-weight: 600;font-size: 34rpx;">
¥{{showvalue.arrivalPrice?Number(showvalue.arrivalPrice).toFixed(2):Number(showvalue.procurementPrice).toFixed(2)}}
</view>
</view>
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
采购数量
</view>
<view class="" style="margin-top: 5rpx;font-weight: 600;font-size: 34rpx;">
{{showvalue.purchaseQuantity}}
</view>
</view>
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
采购单位
</view>
<view class="" style="margin-top: 5rpx;font-size: 34rpx;">
{{showvalue.wlUnits}}
</view>
</view>
</view>
<view style="width: 95%;height: 0.5rpx; background-color: #eff1f3;margin-top: 10rpx;margin-bottom: 5rpx;">
</view>
<view style="">
<view style="font-weight: 600;font-size: 30rpx;margin-top: 10rpx;">
入库信息
</view>
</view>
<view style="display: flex;margin-top: 10rpx;">
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
入库数量
</view>
<view class="" style="margin-top: 5rpx;font-size: 34rpx;">
{{showvalue.rksl}}
</view>
</view>
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
挂账数量
</view>
<view class="" style="margin-top: 5rpx;font-size: 34rpx;">
{{showvalue.wrksl}}
</view>
</view>
<view class="" style="width: 33%;">
<view style="color: #999999;margin-top: 10rpx;font-size: 25rpx;">
销账数量
</view>
<view class="" style="margin-top: 5rpx;font-size: 34rpx;">
{{showvalue.xzsl}}
</view>
</view>
</view>
<view style="width: 95%;height: 0.5rpx; background-color: #eff1f3;margin-top: 10rpx;margin-bottom: 5rpx;">
</view>
<view style="">
<view style="font-weight: 600;font-size: 30rpx;margin-top: 10rpx;">
拣货拍照
</view>
</view>
<view style="display: flex;flex-wrap: wrap;width: 60%;">
<view class="moban-photo" v-for="(item,index) in albumlist" :key="index">
<view @click.stop="deldex=index;open=1">
<image src="/static/index/keyimg/deletebutton.png" mode="aspectFill"
style="width: 75%;height: 70%;"></image>
</view>
<image style="width: 100%;height: 100%;" :src="item?item:'/static/zhanwei.png'" mode="aspectFill"
@click="previewImage(item,index,albumlist)" />
</view>
<view style="width: 40%;height: 150rpx;margin-right: 4%;margin-top: 3%;" v-if="albumlist.length<4"
@click="uplod(0)">
<view class="moban-photo-special">
<image style="width: 50rpx;height: 50rpx;margin-bottom: 5rpx;"
src="/static/index/warehouse/procurement/picking/addphoto.png" />
<view style="color: #78B1EB;font-size: 25rpx;">
点击拍照上传
</view>
</view>
</view>
<view
style="width: 87%;height: 0.5rpx; background-color: #eff1f3;margin-top: 10rpx;margin-bottom: 5rpx;">
</view>
</view>
<view style="">
<view style="font-weight: 600;font-size: 30rpx;">
数量
</view>
</view>
<view style="display: flex;margin-top: 20rpx;">
<view class="gray-button" @click="jjnum(-1)" @longpress="handleTouchStart(-1)"
@touchend="handleTouchEnd">
-
</view>
<view class="gray-input" style="width:12vw;">
<text v-for="(v,i) in stringjh" :key="i">{{v}}</text>
</view>
<view class="gray-button" @click="jjnum(1)" @longpress="handleTouchStart(1)" @touchend="handleTouchEnd">
+
</view>
</view>
<view class="jianhuobutton">
<view style="display: flex;">
<view @click="openjianhuo = false;clickflag = false"
style="width: 160rpx;height: 75rpx;background-color: #ebeced;color: #888888;display: flex;justify-content: center;align-items: center;font-size: 30rpx;border-radius: 40rpx;">
关闭
</view>
<view @click="config(1)"
style="width: 160rpx;height: 75rpx;;color: #0385FA;display: flex;justify-content: center;align-items: center;font-size: 30rpx;border-radius: 40rpx;border: 1rpx solid #0385FA;background: linear-gradient(to bottom,#E9F4FF,#CAE0F9);margin: 0 20rpx;">
销账
</view>
<view @click="config(0)"
style="width: 160rpx;height: 75rpx;;color: #0385FA;display: flex;justify-content: center;align-items: center;font-size: 30rpx;border-radius: 40rpx;border: 1rpx solid #0385FA;background: linear-gradient(to bottom,#E9F4FF,#CAE0F9);">
入库
</view>
</view>
</view>
<view class="jianhuo-jianpan">
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="clknum(1)">
1
</view>
<view class="gray-button-jianpan" @click="clknum(2)">
2
</view>
<view class="gray-button-jianpan" @click="clknum(3)">
3
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="clknum(4)">
4
</view>
<view class="gray-button-jianpan" @click="clknum(5)">
5
</view>
<view class="gray-button-jianpan" @click="clknum(6)">
6
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" @click="clknum(7)">
7
</view>
<view class="gray-button-jianpan" @click="clknum(8)">
8
</view>
<view class="gray-button-jianpan" @click="clknum(9)">
9
</view>
</view>
<view style="display: flex;width: 480rpx;">
<view class="gray-button-jianpan" style="font-size: 30rpx;" @click="clknum('AC')">
清零
</view>
<view class="gray-button-jianpan" @click="clknum(0)">
0
</view>
<view class="gray-button-jianpan" @click="clknum('AE')">
<image src="/static/cleanone.png" mode="aspectFill" style="width: 50%;height: 50%;"></image>
</view>
</view>
</view>
</view>
<!-- 照片墙 -->
<view class="photowall" v-show="topbuttontarget!=-1" :style="donghuaopo?{opacity:1}:{opacity:0}">
<view class="photowall-title">
<view class="photowall-name">
{{ !topbuttontarget?`拣货照片`:`随行单` }}
</view>
<view class="">
<text class="photowall-left">
采购单号:
</text>
<text class="photowall-right">
{{plsbuy[lefttarget]?.cgdNo}}
</text>
</view>
</view>
<scroll-view scroll-y="true" class="photowall-other" scroll-with-animation v-if="topbuttontarget==0">
<view class="photowall-other-one" v-for="(item,index) in jhdanarr" :key="index"
@click="previewImage(item,index,jhdanarr,2)">
<image style="width: 100%;height: 70%;border-radius: 30rpx;"
:src="item.jhPic?serverUrl + item.jhPic:'/static/ceshiyaoshan.png'" mode="aspectFill"
:lazy-load="true" />
<view style="margin-top: 20rpx;">
<text style="color: #888888;">
上传时间:
</text>
<text style="margin-left: 15rpx;">
{{item.createTime.replace(/-/g, '.')}}
</text>
</view>
<view style="margin-top: 10rpx;">
<text style="color: #888888;letter-spacing: 8.9rpx;">
上传人:
</text>
<text>
{{item.createBy}}
</text>
</view>
</view>
<view class="noarray" v-if="!jhdanarr.length">
<image class="noarray-img" src="/static/index/warehouse/procurement/picking/noarray.png"
mode="aspectFill" />
<view class="noarray-font">
暂无拣货照片
</view>
</view>
</scroll-view>
<scroll-view scroll-y="true" class="photowall-other" scroll-with-animation v-if="topbuttontarget==1"
style="margin-top:0 !important;">
<view class="photowall-other-one" v-for="(item,index) in suixingdanarr" :key="index"
@click="previewImage(item,index,suixingdanarr,1)">
<image style="width: 100%;height: 70%;border-radius: 30rpx;"
:src="item.sxdPic?serverUrl + item.sxdPic:'/static/ceshiyaoshan.png'" mode="aspectFill" />
<view style="margin-top: 20rpx;">
<text style="color: #888888;">
上传时间:
</text>
<text style="margin-left: 15rpx;">
{{item.createTime.replace(/-/g, '.')}}
</text>
</view>
<view style="margin-top: 10rpx;">
<text style="color: #888888;letter-spacing: 8.9rpx;">
上传人:
</text>
<text>
{{item.createBy}}
</text>
</view>
</view>
<view class="photowall-other-one" v-if="topbuttontarget==1">
<view style="width: 100%;height: 71%;display: flex;flex-direction: column;
justify-content: center;align-items: center;position: absolute;top:1vw;left: 0;
background-color:#fafdff ;border: 1rpx solid #78B1EB;border-radius: 30rpx;" @click="uplod(1)">
<image style="width: 70rpx;height: 70rpx;margin-bottom: 5rpx;"
src="/static/index/warehouse/procurement/picking/addphoto.png" />
<view style="color: #78B1EB;">
点击拍照上传
</view>
</view>
</view>
</scroll-view>
</view>
<view class="contain-left">
<view v-show="openselect" class="mengban" style="background: transparent;" @click="openselect=false"></view>
<view class="left-select-more" v-show="openselect">
<view class="more-bottom">
<view class="bottom-left" @click="chongzhi">
重置
</view>
<view class="bottom-right" @click="openselect=false;search()">
确定
<text style="font-size: 25rpx;margin-top: 5rpx;" v-if="alltotal">
{{ alltotal }}采购单)
</text>
</view>
</view>
<view class="more-title">
采购单状态
</view>
<view class="more-statues-father">
<view :class="plzinfo.status==``?`more-statues-button-target`:`more-statues-button`"
@click="plzinfo.cgdType=`0,1`;plzinfo.status='';search()">
全部
</view>
<view :class="plzinfo.status==`0`?`more-statues-button-target`:`more-statues-button`"
@click="plzinfo.cgdType=`0`;plzinfo.status='0';search()">
待入库
</view>
<view :class="plzinfo.status==`1`?`more-statues-button-target`:`more-statues-button`"
@click="plzinfo.cgdType=`0`;plzinfo.status='1';search()">
待完结
</view>
</view>
<view class="more-time">
采购日期
</view>
<view class="more-time-select" @click="opendata=!opendata">
<view class="more-gray" v-show="!plzinfo.startTime">
开始日期
</view>
<view class="more-black" v-show="plzinfo.startTime">
{{ plzinfo.startTime }}
</view>
<view style="font-size: 32rpx;">
</view>
<view class="more-gray" v-show="!plzinfo.endTime">
结束日期
</view>
<view class="more-black" v-show="plzinfo.endTime">
{{ plzinfo.endTime }}
</view>
<image class="more-img" src="/static/index/warehouse/procurement/picking/data.png" />
</view>
<view class="more-select">
采购人
</view>
<view class="more-time-select" @click="opencgr=true">
<input class="more-gray" v-model="cgrvalue" placeholder="请输入采购人" placeholder-style="color: #BFBFBF;"
style="margin-left: 30rpx;width: 400rpx;" @input="changeArray"></input>
<image class="select-img" src="/static/index/warehouse/procurement/picking/center.png" />
</view>
<view class="more-select">
供应商
</view>
<view class="more-time-select" @click="opengys=true">
<input class="more-gray" v-model="gysvalue" placeholder="请输入供应商" placeholder-style="color: #BFBFBF;"
style="margin-left: 30rpx;width: 400rpx;" @input="changeArraysecond"></input>
<image class="select-img" src="/static/index/warehouse/procurement/picking/center.png" />
</view>
</view>
<view class="title-input-father">
<input class="title-input" type="text" v-model="plzinfo.cgdParamInfo" maxlength="15"
placeholder="采购单号/采购日期/供应商" @confirm="search()" />
<image v-show="plzinfo.cgdParamInfo" class="title-input-img" src="@/static/x.png"
@click="plzinfo.cgdParamInfo='';search()" />
<view class="title-ball" @click="search();handleClick()">
<image class="title-ball-img" :src="imgSrc" mode="aspectFill"></image>
</view>
<view class="title-ball" @click="openselect=!openselect">
<image class="title-ball-img"
:src="`/static/index/purchaseorder/select${openselect?`target`:``}.png`" mode="aspectFill">
</image>
</view>
</view>
<view class="statues-father">
<view class="statues-gray">
单据状态:
</view>
<view class="statues-tags" :style="plzinfo.status==''?{fontWeight:`600`}:{}"
@click="plzinfo.cgdType=`0,1`;plzinfo.status='';search()">
全部
</view>
<view class="statues-tags" :style="plzinfo.status=='0'?{fontWeight:`600`}:{}"
@click="plzinfo.cgdType=`0`;plzinfo.status='0';search()">
待入库
</view>
<view class="statues-tags" :style="plzinfo.status=='1'?{fontWeight:`600`}:{}"
@click="plzinfo.cgdType=`0`;plzinfo.status='1';search()">
待完结
</view>
<view class="blue-heng"
:style="plzinfo.status?{left:`${(198 + (Number(plzinfo.status)+1)*135 )}rpx`}:{}"></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="haventmessage" v-if="shownomessage">
<view class="que">
<image src="/static/index/procurement/que.png" mode="aspectFill"></image>
<view>暂无数据</view>
</view>
</view>
<view class="pls-card" v-for="(v,i) in plsbuy" :key='i' @click="clickLeftMenu(i,v)" :style="{
borderColor: i === lefttarget ? '#0f9fff' : '',
}">
<text style="display: block;background: #ff5757;
position: absolute;width: 1.3vw;height: 1.3vw;border-radius: 50%;right: 0vw;top: 0vw;" v-if="v.izNew=='Y'">
</text>
<view class="pls-card-title">
<view class="title-left">
{{ v.cgdNo }}
</view>
<view class="title-right">
<text style="position: absolute;bottom: 0rpx;left: -25rpx;color: #555555;">
</text>
<view class="title-right-big">
{{ Number(v.totalPrice).toFixed(2) }}
</view>
</view>
</view>
<view class="pls-card-middle">
<view class="middle-heng"></view>
<view class="pls-card-middle-one">
<view class="middle-title">
{{ v.qgDate.replace(/-/g, '.') }}
</view>
<view class="middle-heng-father">
<image class="middle-ball-img" src="/static/index/requestform/isok.png" />
</view>
<view class="end-font">
<view>
采购
</view>
<view>
{{ "[ " + v.qgBy + " ]" }}
</view>
</view>
</view>
<view class="pls-card-middle-one">
<view class="middle-title">
{{ Number(v.status)<1 ? "": v.jhTime?.slice(0,10).replace(/-/g, '.') }}
</view>
<view class="middle-heng-father">
<view class="middle-ball" v-if="Number(v.status)<2"></view>
<image class="middle-ball-img" v-else src="/static/index/requestform/isok.png" />
</view>
<view class="end-font">
<view>
拣货
</view>
<view v-if=" v.jhBy">
{{ Number(v.status)<1 ? "":"[ " + v.jhBy + " ]" }}
</view>
</view>
</view>
<view class="pls-card-middle-one">
<view class="middle-title">
{{ Number(v.status)>=2 ? v.wjTime?.slice(0,10).replace(/-/g, '.') :""}}
</view>
<view class="middle-heng-father">
<view class="middle-ball" :style="{backgroundColor: `#E5E5E5`}"
v-if="Number(v.status)!=2"></view>
<image class="middle-ball-img" v-else src="/static/index/requestform/isok.png" />
</view>
<view class="end-font">
<view>
完结
</view>
<view style="font-size: 25rpx;" v-if=" v.wjBy">
{{ "[ " + v.wjBy + " ]" }}
</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.gysId_dictText }}
</view>
</view>
<view class="tag-success">
{{ tagesstatues[Number(v.status)] }}
</view>
</view>
</view>
<view class="pls-card center" v-if="!shownomessage&&plsbuy.length===1">
<view class="que">
<image src="/static/index/procurement/que.png" mode="aspectFill"></image>
<view>暂无数据</view>
</view>
</view>
<view class="pls-card center" v-if="!shownomessage&&plsbuy.length===1">
<view class="que">
<image src="/static/index/procurement/que.png" mode="aspectFill"></image>
<view>暂无数据</view>
</view>
</view>
<view class="pls-card center" v-if="!shownomessage&&plsbuy.length===2">
<view class="que">
<image src="/static/index/procurement/que.png" mode="aspectFill"></image>
<view>暂无数据</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="contain-right">
<view class="contain-right-father">
<view class="contain-right-title">
<view class="left-top-tags">
<view class="blue-shu"></view>
<view class="">
物料信息
</view>
</view>
<view style="display: flex;margin-right: 25rpx;">
<view :class=" `contain-right-button`" @click="donghuastart(0)" style="width: 10vw;">
<image class="buttont-img"
:src="`/static/index/warehouse/procurement/picking/camera.png`" />
<view class="button-font">
拣货照片
</view>
</view>
<view :class=" `contain-right-button`" @click="donghuastart(1)" style="width: 10vw;">
<image class="buttont-img" :src="`/static/index/warehouse/procurement/picking/work.png`" />
<view class="button-font">
随行单
</view>
</view>
<view
:class="!Number(plsbuy[lefttarget]?.status)?`contain-right-button`: `contain-right-title-bad`"
style="" @click="bebad">
<image class="buttont-img" :src="`/static/index/warehouse/procurement/picking/bebad.png`" />
<view class="button-font">
作废
</view>
</view>
</view>
</view>
<scroll-view scroll-x="true" class="middle-Y" :scroll-left="Invoiscroll" scroll-with-animation>
<view class="middle-Y-father">
<view class="middle-one" v-for="(v,i) in InvoicingList" :key='i'
:style="{border: middletarget === i? '2rpx solid #3A9BFF': '2rpx solid #E5E5E5',backgroundColor:middletarget === i?`#F9FCFF`:`` }"
@click="clickmiddle(i)">
<view :class="v.status<2?`up-tags-target`: `up-tags`">
{{v.status_dictText}}
</view>
<image class="middle-img"
:src="v.materialImg?serverUrl + v.materialImg : '/static/index/warehouse/procurement/k.png'"
mode="aspectFill"></image>
<view class="middle-right">
<view class="right-title">
{{ v.wlName }}
</view>
<view class="juzhong">
<view class="">
<text style="color: #888888;">
采购单价:
</text>
</view>
<view class="juzhong-right">
¥{{v.arrivalPrice? Number(v.arrivalPrice).toFixed(2):Number(v.procurementPrice).toFixed(2) }}
</view>
</view>
<view class="juzhong">
<view class="">
<text style="color: #888888;">
规格型号:
</text>
</view>
<view class="juzhong-right">
{{v.wlSpecificationModel}}
</view>
</view>
<view class="juzhong">
<view class="">
<text style="color: #888888;">
采购数量:
</text>
</view>
<view class="juzhong-right">
{{v.purchaseQuantity}}
{{v.wlUnits}}
</view>
</view>
</view>
<view class="middle-right-end">
<view class="right-end">
<view class="end-num" :style=" {fontWeight: v.rksl>0? `600` :`` }">
{{v.rksl}}
</view>
<view class="end-font" style="color: #888888;">
入库数量
</view>
</view>
<view class="right-end">
<view class="end-num" :style=" {fontWeight: v.rksl>0? `600` :`` }">
{{v.wrksl}}
</view>
<view class="end-font" style="color: #888888;">
挂账数量
</view>
</view>
<view class="right-end">
<view class="end-num" :style=" {fontWeight: v.rksl>0? `600` :`` }">
{{v.xzsl}}
</view>
<view class="end-font" style="color: #888888;">
销账数量
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view class="contain-right-middle">
<view style="display: flex;justify-content: space-between;width: 100%;">
<view style="display: flex;">
<view :class="!typechange? `wuliao-title`:`wuliao-title-no`" @click="typechange = 0">
物料详情
<view class="wuliao-heng"></view>
</view>
<view :class="typechange==1? `wuliao-title`:`wuliao-title-no`" style="margin-left: 10rpx;"
@click="typechange = 1">
拣货记录
<view class="wuliao-heng"></view>
</view>
</view>
<view style="display: flex;margin-top: 25rpx;font-size: 30rpx;">
<view :class="showvalue.jianhuobtn==false?`jianhuobutton-gray-bad`: `jianhuobutton-gray`" @click="opengaijiaclick"
style="margin-right: 20rpx;">
改价
</view>
<view @click="openjianhuoclick"
:class="showvalue.jianhuobtn==false?`jianhuobutton-gray-bad`: `jianhuobutton-gray`">
拣货
</view>
</view>
</view>
<view style="width: 95%;height: 0.5rpx; background-color: #eff1f3;margin-left: 5%;"></view>
<view class="right-bottom" v-show="!typechange">
<view class="right-bottom-left">
<image class="left-img"
:src="showvalue?.materialImg?serverUrl + showvalue?.materialImg : '/static/index/warehouse/procurement/k.png'"
mode="aspectFill"></image>
<view class="left-tags">
<view class="tags-one" v-if="showvalue.categoryId_dictText">
{{showvalue.categoryId_dictText}}
</view>
<view class="tags-one" v-if="showvalue.typeId_dictText">
{{showvalue.typeId_dictText}}
</view>
<view class="tags-one" v-if="showvalue.medicationId_dictText">
{{showvalue.medicationId_dictText}}
</view>
</view>
</view>
<view class="right-bottom-right">
<view class="bottom-right-title">
<view class="title-left">
{{showvalue.wlName}}
</view>
</view>
<view class="bottom-right-middle">
<view class="middle-onecard">
<view class="threeone">
<view class="gray-text">
物料编码
</view>
<view class="right-text">
{{showvalue.wlMaterialNo}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
规格型号
</view>
<view class="right-text" style="white-space: nowrap;">
{{showvalue.wlSpecificationModel}}
</view>
</view>
<view class="gray-heng"></view>
</view>
<view class="middle-onecard">
<view class="threeone">
<view class="gray-text">
采购单价
</view>
<view class="right-text">
¥{{showvalue.arrivalPrice? Number(showvalue.arrivalPrice).toFixed(2):Number(showvalue.procurementPrice).toFixed(2) }}
</view>
</view>
<view class="threeone">
<view class="gray-text">
采购数量
</view>
<view class="right-text">
{{showvalue.purchaseQuantity}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
采购单位
</view>
<view class="right-text">
{{showvalue.wlUnits}}
</view>
</view>
<view class="gray-heng"></view>
</view>
<view class="middle-onecard">
<view class="threeone">
<view class="gray-text">
库存数量
</view>
<view class="right-text">
{{showvalue.kcsl}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
物料上限 ↑
</view>
<view class="right-text">
{{showvalue.wlUpperLimit}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
物料下限 ↓
</view>
<view class="right-text">
{{showvalue.wlLowerLimit}}
</view>
</view>
<view class="gray-heng"></view>
</view>
<view class="middle-onecard">
<view class="threeone">
<view class="gray-text">
入库数量
</view>
<view class="right-text">
{{showvalue.rksl}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
挂账数量
</view>
<view class="right-text">
{{showvalue.wrksl}}
</view>
</view>
<view class="threeone">
<view class="gray-text">
销账数量
</view>
<view class="right-text">
{{showvalue.xzsl}}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="right-bottom" v-show="typechange==1" style="padding: 0 50rpx;flex-direction: column;">
<view
style="width: 100%;display: flex;justify-content: space-between;margin-top: 30rpx;margin-bottom: 10rpx;">
<view style="font-size: 35rpx;font-weight: 600;margin-left: 20rpx;color: #222222;">
{{showvalue.wlName}}
</view>
<view style="color: black;margin-top: 5rpx;">
<text style="color: #888888;">
采购数量:
</text>
<text style="font-weight: 600;color: #555555;">
{{showvalue.purchaseQuantity}}
</text>
{{showvalue.wlUnits}}
</view>
</view>
<scroll-view style="width: 110%;height: 400rpx;display: flex;flex-wrap: wrap;" scroll-y="true"
scroll-with-animation @scrolltolower="lhjlfy()">
<view
style=" display: inline-block;width: 45%;height: 180rpx;background-color: #F9F9F9;border-radius: 30rpx;margin-right: 2%;margin-top: 20rpx;padding: 0 30rpx;color: #888888;"
v-for="(item,index) in lhjlarr" :key="index">
<view
style="width: 100%;justify-content: space-between;display: flex;align-items: center;height: 60rpx;margin-top: 20rpx;">
<view class="">
拣货数量:
<text style="font-weight: 600;color: #555555;">
{{item.crkNum}}
</text>
<text style="color: #555555;">
{{showvalue.materialUnits}}
</text>
</view>
<view
style="width: 110rpx;height: 50rpx;border-radius: 30rpx;display: flex;justify-content: center;align-items: center;border: 1rpx solid #C3C3C3;background-color: #f1f1f1;color: #888888;margin-top: -10rpx;">
{{ item.crkStatus_dictText}}
</view>
</view>
<view style="width: 100%;justify-content: space-between;display: flex;">
<view class="">
采购单价:
<text style="font-weight: 600;color: #555555;">
{{Number(item.oldPrice).toFixed(2)}}
</text>
</view>
<view class="">
拣货人:
<text style="color: #888888;font-weight: 600;">
{{item.createBy}}
</text>
</view>
</view>
<view style="width: 100%;justify-content: space-between;display: flex;margin-top: 10rpx;">
<view class="" style="white-space: nowrap;">
到货单价:
<text style="font-weight: 600;color: #555555;white-space: nowrap;">
{{Number(item.newPrice).toFixed(2)}}
</text>
</view>
<view class="" style="white-space: nowrap;">
{{item.createTime.replace(/-/g, '.')}}
</view>
</view>
</view>
</scroll-view>
<view style="width: 100%;display: flex;justify-content: center;color: #C3C3C3;margin-top: 40rpx;"
v-if="lhjlarr.length">
<image v-if="statustory=='loading'"
style="width: 25rpx;height: 25rpx;margin-right: 10rpx;margin-top: 5rpx;margin-left: -10rpx;"
src="/static/index/warehouse/procurement/picking/loading.png" />
<text v-if="statustory=='loading'">上划加载更多</text>
<text v-if="statustory=='nomore'">已加载全部~</text>
<text v-if="statustory=='loadmore'">加载中~</text>
</view>
<view class="nomessage-samll" v-if="!lhjlarr.length">
<image style="width: 300rpx;height: 300rpx;margin-top: -200rpx;"
src="/static/index/warehouse/procurement/picking/nomessage.png" />
<view class="noarray-font">
暂无拣货记录
</view>
</view>
</view>
</view>
</view>
<tanchuang :show="badshow" font="确定要作废这个采购单吗" @back="badshow=false;" @right="zuofei"> </tanchuang>
<tanchuang :show="open==1" font="是否删除此图片" @back="open = 0" @right="del()"> </tanchuang>
<tanchuang :show="open==2" font="是否销账此物料?" @back="open = 0" @right="sctp(1)"> </tanchuang>
<errorshow :show="openerror" :font="errmsg" @close="openerror=false" />
<severcard></severcard>
<errorshow :show="openmessage" :font="errormessage" @close="openmessage=false" />
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, onUnmounted, watch } from 'vue';
import { editIzNew, queryPickingRecordList, queryJhzpList, addSxd, querySxdList, queryInvoicingList, getCgdMaterialTreeData, queryNuInfoByNuId, updateKfstatus, queryCgdList, queryCgdInfoList, queryWlInfoByWlId, voidedCgdMain, getCgrLis, getGysList, upload, editPrice, pickingInfo } from './api/lunpan.js'
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import calendar from '@/component/public/calendar.vue'
import defaultr from '@/pages/procurement/components/default.vue';
const props = defineProps({
isShow: {
type: Boolean
},
});
watch(
() => props.isShow,
(newVal, oldVal) => {
if (!oldVal && newVal) {
firstgetqueryCgdList();
getSelectList();
transition.value = false;
setTimeout(() => {
transition.value = true;
}, 50)
} else {
transition.value = false;
}
}
)
onMounted(() => {
firstgetqueryCgdList();
getSelectList();
transition.value = false;
setTimeout(() => {
transition.value = true;
}, 50)
})
const transition = ref(false)
const open = ref(0);
const typechange = ref(0);
const stringjh = ref("")
const serverUrl = ref(uni.getStorageSync('serverUrl') + '/sys/common/static/');
const opengaijia = ref(false);
const guiling = ref(false);
const openjianhuo = ref(false);
const opendata = ref(false);
const gaijia = ref("");
const openmessage = ref(false)
const errormessage = ref("")
// 改价
const dogaijia = () => {
if(showvalue.value.jianhuobtn){
editPrice({ id: showvalue.value.id, arrivalPrice: gaijia.value }).then((res) => {
console.log("res", res)
if (res.code == 200) {
showvalue.value.arrivalPrice = gaijia.value;
showvalue.value.totalPrice = Number(gaijia.value) * Number(showvalue.value.purchaseQuantity);
plsbuy.value[lefttarget.value].totalPrice = res.result.totalPrice
opengaijia.value = false;
}else{
openmessage.value = true;
errormessage.value = res.message
}
})
}
}
// 计算器
function press(k : string) {
if (guiling.value) {
gaijia.value = '';
guiling.value = false
}
if (k === 'AC') {
gaijia.value = '0'
return
}
// 小数点
if (k === '.') {
if (!gaijia.value.includes('.')) {
gaijia.value = gaijia.value === '' ? '0.' : gaijia.value + '.'
}
return
}
// 数字
if (/^\d$/.test(k)) {
// 有小数
if (gaijia.value.includes('.')) {
const [i, d] = gaijia.value.split('.')
if ((d || '').length < 2) gaijia.value += k
return
}
// 无小数,整数部分限制 4 位
let intPart = gaijia.value
if (intPart === '0') intPart = '' // 防止 01
if (intPart.length < 4) gaijia.value = intPart + k
}
}
// 模糊查询
const gysclick = (res : any) => {
console.log("///", res);
opengys.value = false;
}
const openjianhuoclick = () => {
if (showvalue.value.jianhuobtn == false) {
return
}
openjianhuo.value = true;
clickflag.value = true;
donghuaopo.value = false;
setTimeout(() => {
donghuaopo.value = true;
}, 100)
}
const opengaijiaclick = () => {
opengaijia.value = true;
guiling.value = true
gaijia.value = (showvalue.value.arrivalPrice ? showvalue.value.arrivalPrice : showvalue.value.procurementPrice).toString()
donghuaopo.value = false;
setTimeout(() => {
donghuaopo.value = true;
}, 100)
}
// 过滤后的结果,页面上渲染用这个
const filteredCgrList = ref([]);
const closefilteredCgrList = () => {
filteredCgrList.value = [];
cgrvalue.value = plzinfo.cgBy;
lookshuliang()
}
const clickfilteredCgrList = (item : any) => {
filteredCgrList.value = [];
plzinfo.cgBy = item.cgBy
cgrvalue.value = plzinfo.cgBy;
lookshuliang()
}
// --- 模糊匹配 ---
function fuzzyMatch(text : unknown, q : string) {
const s = String(text ?? '').toLowerCase()
const ql = String(q ?? '').toLowerCase().trim()
if (!ql) return true
if (s.includes(ql)) return true
// subsequence 模糊字符序列
let i = 0
for (let j = 0; j < s.length && i < ql.length; j++) {
if (s[j] === ql[i]) i++
}
return i === ql.length
}
// --- 0.3 秒防抖专用变量 ---
let debounceTimer : number | null = null
/**
* changeArray - 防抖搜索0.3 秒后无再次输入才执行)
*/
function changeArray(res : any) {
if (!res.detail.value) {
plzinfo.cgBy = "";
filteredCgrList.value = [];
search()
return
}
const keyword = String(
typeof res === 'string' ? res : res?.detail?.value ?? ''
).trim()
// 清除上一次的定时器
if (debounceTimer) clearTimeout(debounceTimer)
// 重新等待 300ms
debounceTimer = setTimeout(() => {
if (!keyword) {
filteredCgrList.value = cgrlist.value.slice()
return
}
filteredCgrList.value = cgrlist.value.filter(item =>
fuzzyMatch(item?.cgBy, keyword)
)
if (!filteredCgrList.value.length) {
filteredCgrList.value.push({ cgBy: `暂无数据` })
}
}, 300)
}
// 过滤后的结果,页面上渲染用这个
const filteredCgrListsecond = ref([]);
const secondindex = ref(-1)
const closefilteredCgrListsecond = () => {
filteredCgrListsecond.value = [];
gysvalue.value = "";
plzinfo.suppliers = "";
lookshuliang()
}
const clickfilteredCgrListsecond = (item : any, index : number) => {
filteredCgrListsecond.value = [];
plzinfo.suppliers = item.suppliers;
gysvalue.value = item.suppliersName;
secondindex.value = index;
lookshuliang()
}
const cgrvalue = ref("");
const gysvalue = ref("");
function changeArraysecond(res : any) {
if (!res.detail.value) {
plzinfo.suppliers = "";
filteredCgrListsecond.value = [];
secondindex.value = -1;
gysvalue.value = "";
search()
return
}
const keyword = String(
typeof res === 'string' ? res : res?.detail?.value ?? ''
).trim()
// 清除上一次的定时器
if (debounceTimer) clearTimeout(debounceTimer)
// 重新等待 300ms
debounceTimer = setTimeout(() => {
if (!keyword) {
filteredCgrListsecond.value = gyslist.value.slice()
return
}
filteredCgrListsecond.value = gyslist.value.filter(item =>
fuzzyMatch(item?.suppliersName, keyword)
)
if (!filteredCgrListsecond.value.length) {
filteredCgrListsecond.value.push({ suppliersName: `暂无数据` })
}
}, 300)
}
const opencgr = ref(false);
const opengys = ref(false);
const cgrlist = ref([]);
const gyslist = ref([]);
const getSelectList = () => {
getCgrLis().then((res : any) => {
cgrlist.value = res.result;
})
getGysList().then((res : any) => {
gyslist.value = res.result;
})
}
const openselect = ref(false);
const searchValue = ref("");
const middletarget = ref(0);
const tagesstatues = ["待入库", "待完结", '已完结'];
const topbuttontarget = ref(-1);
const typestatues = ref(0)
const plzinfo = reactive({
pageNo: 1,
pageSize: 10,
canpull: true,
cgdParamInfo: "",
suppliers: "",
cgdType: "0,1",
startTime: "",
endTime: "",
cgBy: "",
nuId: uni.getStorageSync('nuId'),
status: ''
})
const mobanplzinfo = {
pageNo: 1,
pageSize: 10,
canpull: true,
cgdParamInfo: "",
suppliers: "",
cgdType: "0,1",
startTime: "",
endTime: "",
cgBy: "",
nuId: uni.getStorageSync('nuId')
}
// 销毁日历
const xiaohui = ref(true);
const chongzhi = () => {
xiaohui.value = false;
setTimeout(() => {
xiaohui.value = true;
}, 300)
Object.assign(plzinfo, mobanplzinfo);
cgrvalue.value = "";
gysvalue.value = ""
search()
}
type datetype = {
start : string,
end : string
}
const dateget = (res : datetype) => {
plzinfo.startTime = res.start;
plzinfo.endTime = res.end;
lookshuliang()
}
const lookshuliang = () => {
let data = {
...plzinfo,
pageNo: 1
}
queryCgdList(data).then((res : any) => {
alltotal.value = res.result.total
})
}
const leftscrolltop = ref(0)
const shownomessage = ref(false)
const plsbuy = ref([])
const alltotal = ref(0);
const nomessageshow = ref(false);
const firstgetqueryCgdList = () => {
queryCgdList(plzinfo).then((res : any) => {
plsbuy.value.push(...res.result.records)
alltotal.value = res.result.total
if (!res.result.total) {
nomessageshow.value = true;
}
if (res.result.records.length) {
form.cgdId = plsbuy.value[0].id
queryInvo(0);
}
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) => {
plsbuy.value.push(...res.result.records)
alltotal.value = res.result.total
if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false;
}
})
}
const lefttarget = ref(0);
const clickLeftMenu = (index : any, item : any) => {
let num = Math.ceil((index + 1))
leftscrolltop.value = (num - 2) * 188.5;
lefttarget.value = index;
form.cgdId = plsbuy.value[index].id
form.pageNo = 1
form.canpull = true;
queryCgdInfoList(form).then(res => {
InvoicingList.value = []
// console.log("数据呢", form)
InvoicingList.value.push(...res.result.records);
if (form.pageNo) {
clickmiddle(0);
}
})
if (item.izNew == 'Y') {
item.izNew = 'N'
editIzNew({ id: item.id })
}
}
const showvalue = ref({
materialImg: "",
cgrvalue: "",
gysvalue: "",
wlName: "",
procurementPrice: "",
wlMaterialNo: "",
wlSpecificationModel: "",
purchaseQuantity: "",
wlUnits: "",
kcsl: "",
wlUpperLimit: "",
wlLowerLimit: "",
suppliersName: "",
jianhuobtn: false,
})
const goback = () => {
uni.navigateBack()
}
const form = reactive({
nuId: '',
pageNo: 1,
pageSize: -1,
categoryId: '',
typeId: '',
medicationId: '',
wlParamInfo: '',
cgdId: "",
isWaring: 0,
canpull: true
})
const mobanform = {
nuId: '',
pageNo: 1,
pageSize: -1,
categoryId: '',
typeId: '',
medicationId: '',
wlParamInfo: '',
cgdId: "",
isWaring: 0
}
const Invoiscroll = ref(0)
const tagsArray = [`待入库`, `挂账中`, `已入库`, `已销账`,]
const clickmiddle = (index : number) => {
// console.log(InvoicingList.value[index])
middletarget.value = index;
showvalue.value = InvoicingList.value[index];
showvalue.value.jianhuobtn = false;
Invoiscroll.value = (index - 1) * 212;
if (Number(showvalue.value.status) == 0 || (Number(showvalue.value.status) > 0 && Number(showvalue.value.wrksl) > 0)) {
showvalue.value.maxnum = (showvalue.value.rksl == 0 && showvalue.value.wrksl == 0 && showvalue.value.xzsl == 0) ? showvalue.value.purchaseQuantity : showvalue.value.wrksl
showvalue.value.num = showvalue.value.maxnum;
stringjh.value = toFixed4ByPadStart(showvalue.value.num);
showvalue.value.jianhuobtn = true;
}
Object.assign(form, mobanform)
lhjpageNo.value = 1;
lhjlarr.value = [];
lhjilu()
}
const InvoicingList = ref([])
const queryInvo = (index : number) => {
queryCgdInfoList(form).then(res => {
InvoicingList.value = res.result.records;
clickmiddle(index);
})
}
const lhjlarr = ref([])
const lhjpageNo = ref(1)
const statustory = ref('loading')
const lhjilu = () => {
let obj = {
cgdId: showvalue.value.cgdId,
wlId: showvalue.value.wlId,
pageNo: lhjpageNo.value,
pageSize: 10,
}
queryPickingRecordList(obj).then(res => {
lhjlarr.value.push(...res.result.records)
statustory.value = (res.result.total == lhjlarr.value.length || res.result.records.length == 0 ? 'nomore' : 'loadmore')
})
}
const lhjlfy = () => {
if (statustory.value == 'nomore') { return }
lhjpageNo.value++;
lhjilu()
}
const search = () => {
plzinfo.pageNo = 1;
plsbuy.value = [];
plzinfo.canpull = true
queryCgdList(plzinfo).then((res : any) => {
if (res.result.records.length) {
shownomessage.value = false;
} else {
shownomessage.value = true;
}
plsbuy.value.push(...res.result.records)
alltotal.value = res.result.total
if (res.result.records.length) {
form.cgdId = plsbuy.value[0].id
queryInvo(0);
}
if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false;
}
})
}
const moreindex = ref(-1);
const zuofeiindex = ref(-1);
const badshow = ref(false);
const bebad = () => {
if (!Number(plsbuy.value[lefttarget.value]?.status) && plsbuy.value.length) {
badshow.value = true;
moreindex.value = -1;
}
}
const zuofei = () => {
voidedCgdMain({ id: plsbuy.value[lefttarget.value].id }).then((res : any) => {
if (res.success) {
uni.showToast({
title: res.message,
icon: 'success', // 'none' 表示不带图标
duration: 2000
})
lefttarget.value = 0;
badshow.value = false;
InvoicingList.value = [];
plsbuy.value = []
Object.assign(plzinfo, mobanplzinfo)
Object.assign(form, mobanform)
firstgetqueryCgdList();
} else {
uni.showToast({
title: res.message,
icon: 'none',
duration: 2000
})
badshow.value = false;
}
})
}
const donghuaopo = ref(false)
const suixingdanarr = ref([])
const jhdanarr = ref([])
const donghuastart = (index : number) => {
if (index == 1) {
sxdarr()
} else {
JhzpList()
}
topbuttontarget.value = index;
donghuaopo.value = false;
setTimeout(() => {
donghuaopo.value = true;
}, 100)
}
const Jhz = ref(1)
const JhzpList = () => {
let obj = {
cgdId: plsbuy.value[lefttarget.value].id,
}
queryJhzpList(obj).then(res => {
jhdanarr.value = res.result
})
}
const sxdarr = () => {
let obj = {
cgdId: plsbuy.value[lefttarget.value].id,
pageNo: 1,
pageSize: -1
}
querySxdList(obj).then(res => {
suixingdanarr.value = res.result.records
})
}
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 + '/sxdPic'
},
header: {
'X-Access-Token': uni.getStorageSync('token')
},
success: res => {
const data = JSON.parse(res.data)
addSxd({ sxdPic: data.message, cgdId: plsbuy.value[lefttarget.value].id }).then(resd => {
if (resd.success) {
sxdarr()
}
})
},
fail: () => {
uni.showToast({ title: '上传失败', icon: 'none' })
}
})
}
// 上传
const albumlist = ref([])
const uplod = (type : number) => {
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 => {
if (!type) {
albumlist.value.push(res.tempFilePath)
} else if (type == 1) {
sxdupld(res.tempFilePath)
}
}
})
}
});
}
// 预览
const previewImage = (v, i, arr, n) => {
if (n == 1) {
let u = []
arr.forEach(e => {
u.push(serverUrl.value + e.sxdPic)
})
uni.previewImage({
current: i,
urls: u,
showmenu: false,
longPressActions: {
itemList: [],
}
})
}
else if (n == 2) {
let u = []
arr.forEach(e => {
u.push(serverUrl.value + e.jhPic)
})
uni.previewImage({
current: i,
urls: u,
showmenu: false,
longPressActions: {
itemList: [],
}
})
}
else {
uni.previewImage({
current: i,
urls: arr,
showmenu: false,
longPressActions: {
itemList: [],
}
})
}
}
// 删除1个
const deldex = ref(-1)
const del = () => {
albumlist.value.splice(deldex.value, 1)
deldex.value = -1;
open.value = 0;
}
const clickflag = ref(false);
const clknum = (item : any) => {
if (item == "AC") {
showvalue.value.num = 0;
stringjh.value = toFixed4ByPadStart(showvalue.value.num);
return
}
if (item == "AE") {
showvalue.value.num = Math.trunc(showvalue.value.num / 10)
stringjh.value = toFixed4ByPadStart(showvalue.value.num);
return
}
if (clickflag.value == true) {
showvalue.value.num = item;
clickflag.value = false;
stringjh.value = toFixed4ByPadStart(showvalue.value.num)
return
}
if (digitCountByString(showvalue.value.num) > 3) {
} else {
if (!showvalue.value.num) {
showvalue.value.num = item
} else {
showvalue.value.num = showvalue.value.num * 10 + item;
}
stringjh.value = toFixed4ByPadStart(showvalue.value.num)
}
}
// 数字转化
const digitCountByString = (n) => {
const s = Math.abs(n).toString();
return s.length;
}
// 数字转化
const toFixed4ByPadStart = (n) => {
const intPart = Math.floor(Math.abs(n));
return String(intPart).padStart(4, '0');
}
// 加减
const InteroutId = ref(null)
const handleTouchStart = (e : number) => {
Interval(e)
}
const handleTouchEnd = () => {
clearInterval(InteroutId.value);
// 清除定时器
}
const Interval = (e : number) => {
InteroutId.value = setInterval(() => {
jjnum(e);
}, 120);
}
const jjnum = (e : number) => {
let m = showvalue.value.maxnum;
if (m <= showvalue.value.num && e == 1) { showvalue.value.num = m; return }
if (showvalue.value.num <= 1 && e == -1) { showvalue.value.num = 1; return }
showvalue.value.num += e;
stringjh.value = toFixed4ByPadStart(showvalue.value.num)
}
//
const openerror = ref(false)
const errmsg = ref('')
const fag = (e) => {
let str = '';
addupimg.value.forEach(item => {
str += item + ','
})
let obj = {
jhId: showvalue.value.id,
jhNum: showvalue.value.num,
jhType: e,
jhPic: str == '' ? null : str,
cgdId: showvalue.value.cgdId
}
pickingInfo(obj).then(res => {
if (res.success) {
uni.showToast({
icon: res.success ? 'success' : 'none',
title: res.message ? res.message : '操作成功'
})
plsbuy.value[lefttarget.value].totalPrice = res.result.cgdTotalPrice
albumlist.value = [];
addupimg.value = [];
openjianhuo.value = false;
open.value = 0;
form.cgdId = plsbuy.value[lefttarget.value].id;
plsbuy.value[lefttarget.value] = res.result.cgdInfo;
setTimeout(() => {
queryInvo(middletarget.value)
}, 700)
} else {
addupimg.value = [];
errmsg.value = res.message;
openerror.value = true;
}
})
}
const addupimg = ref([])
const sctp = (e : number) => {
if (albumlist.value.length == 0) {
fag(e)
return
}
let now = new Date();
let year = now.getFullYear();
let month = now.getMonth() + 1;
albumlist.value.forEach(item => {
uni.uploadFile({
url: uni.getStorageSync('serverUrl') + '/sys/common/upload',
filePath: item,
name: 'file',
formData: {
biz: year + '/' + month + '/jhPic'
},
header: {
'X-Access-Token': uni.getStorageSync('token')
},
success: res => {
const data = JSON.parse(res.data)
addupimg.value.push(data.message);
console.log(addupimg.value)
if (addupimg.value.length == albumlist.value.length) {
fag(e)
}
},
fail: () => {
uni.showToast({ title: '上传失败', icon: 'none' })
}
})
})
}
const config = (e) => {
// console.log("ceshi",Number(stringjh.value))
if (!Number(stringjh.value)) {
uni.showToast({ title: '数量为0的时候无法销账或入库', icon: 'none' })
return
}
if (e == 1) {
open.value = 2;
} else {
sctp(0)
}
}
// 启动定时器:推进 baseP从 0 线性到 1 再回到 0循环
let timer = null;
onMounted(() => {
});
onUnmounted(() => {
if (timer) clearInterval(timer);
});
const jiansuotarget = ref(false);
const basePath = '/static/index/procurement/' // 图片公共路径
const imgNormal = basePath + 'sh.png'
const imgActive = basePath + 'shr.png'
const imgSrc = ref(imgNormal)
const busy = ref(false) // 防止重复点击造成多个定时器
function handleClick () {
if (busy.value) return
busy.value = true
// 切换到 active 图
imgSrc.value = imgActive
// 0.5 秒后复原
setTimeout(() => {
imgSrc.value = imgNormal
busy.value = false
}, 300)
}
</script>
<style lang="less" scoped>
.contain {
background-color: rgb(239, 240, 244);
width: 92.7vw;
height: calc(100vh - 3vw);
padding: 0 2vw 0 1vw;
display: flex;
.contain-left {
height: 95vh;
width: 32%;
// background-color: red;
position: relative;
z-index: 99;
.left-select-more {
position: absolute;
top: 7%;
left: 0;
width: 100%;
height: 83%;
background-color: #fff;
border-radius: 30rpx;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
z-index: 9999;
padding: 0 50rpx;
.more-bottom {
position: absolute;
bottom: 60rpx;
right: 50rpx;
display: flex;
.bottom-left {
padding: 0 50rpx;
height: 80rpx;
color: #888888;
background-color: #F8F8FA;
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
margin-right: 12rpx;
}
.bottom-right {
padding: 0 50rpx;
height: 80rpx;
color: #0385FA;
border: 1rpx solid #0385FA;
// background-color: #F8F8FA;
background: linear-gradient(to bottom, #E9F4FF, #CAE0F9);
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
}
}
.more-title {
margin-top: 55rpx;
font-size: 30rpx;
white-space: nowrap;
}
.more-time {
margin-top: 20rpx;
font-size: 30rpx;
}
.more-select {
margin: 30rpx 0;
font-size: 30rpx;
}
.more-time-select {
margin-top: 30rpx;
width: 100%;
height: 7vh;
display: flex;
align-items: center;
background-color: #F8F8FA;
border-radius: 30rpx;
position: relative;
.more-gray {
color: #BFBFBF;
font-size: 30rpx;
width: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.more-black {
font-size: 28rpx;
width: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.more-img {
width: 35rpx;
height: 35rpx;
}
.select-img {
position: absolute;
right: 40rpx;
top: 50%;
transform: translateY(-50%);
width: 25rpx;
height: 18rpx;
}
}
.more-statues-father {
width: 103%;
height: 7vh;
margin-top: 30rpx;
display: flex;
margin-left: -10rpx;
justify-content: space-between;
.more-statues-gray {
color: #888888;
font-size: 28rpx;
}
.more-statues-button {
width: 30%;
// margin-right: 2%;
margin: 0 1%;
height: 5.5vh;
border-radius: 40rpx;
font-size: 28rpx;
background-color: #fff;
border: 1rpx solid #D9DADC;
color: #555555;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
}
.more-statues-button-target {
width: 30%;
margin: 0 1%;
height: 5.5vh;
border-radius: 40rpx;
font-size: 28rpx;
background-color: #fff;
border: 1rpx solid #0da6f8;
color: #0da6f8;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
}
}
}
.title-input-father {
height: 6vh;
width: 100%;
display: flex;
position: relative;
.title-input {
width: 68%;
height: 5.1vh;
background-color: #fff;
font-size: 27.5rpx;
padding-left: 26rpx;
border-radius: 40rpx;
padding-top: 2rpx;
border: 2rpx solid #C9C9C9;
}
.title-ball {
width: 5.3vh;
height: 5.3vh;
border-radius: 50%;
margin-left: 10rpx;
background-color: #fff;
border: 2rpx solid #D9DADC;
display: flex;
justify-content: center;
align-items: center;
.title-ball-img {
width: 55%;
height: 55%;
}
}
}
.statues-father {
margin-top: 0.5vh;
margin-bottom: 1vh;
width: 100%;
height: 5.9vh;
display: flex;
align-items: center;
background-color: #fff;
border-radius: 34rpx;
position: relative;
.blue-heng {
position: absolute;
left: 198rpx;
bottom: 1rpx;
width: 30rpx;
height: 6rpx;
border-radius: 5rpx;
background-color: #008CF6;
/* 过渡 */
transition: left 300ms ease;
will-change: left;
}
.statues-gray {
color: #888888;
font-size: 27rpx;
white-space: nowrap;
margin-left: 30rpx;
}
.statues-tags {
width: 135rpx;
height: 100%;
// border: 1rpx solid black;
display: flex;
justify-content: center;
align-items: center;
font-size: 29rpx;
}
}
.left-menu-father {
height: 83.2vh;
max-width: 590rpx;
min-width: 590rpx;
.left-menu-scroll {
height: 100%;
width: 100%;
.pls-card {
width: 100%;
height: 359rpx;
border: transparent 3rpx solid;
background-color: #fff;
border-radius: 40rpx;
margin-bottom: 18rpx;
padding: 0 30rpx;
position: relative;
background-color: #fff;
.pls-card-title {
height: 5.6vh;
width: 105%;
display: flex;
justify-content: space-between;
align-items: flex-end;
.title-left {
font-weight: 800;
font-size: 32rpx;
}
.title-right {
display: flex;
align-items: flex-end;
font-size: 30rpx;
position: relative;
.title-right-big {
font-weight: 800;
font-size: 40rpx;
margin-right: 35rpx;
color: #555555;
}
.title-right-img {
position: absolute;
right: -10rpx;
bottom: 6rpx;
width: 40rpx;
height: 40rpx;
}
}
}
.pls-card-middle {
width: 100%;
height: 11vh;
margin-top: 2vh;
display: flex;
position: relative;
.middle-heng {
position: absolute;
left: 4%;
top: 35%;
transform: translateY(-35%);
width: 92%;
height: 2px;
/* 虚线粗细 */
background-image: repeating-linear-gradient(to right,
#E5E5E5 0,
#E5E5E5 6px,
transparent 6px,
transparent 10px);
}
.pls-card-middle-one {
width: 33.3%;
height: 100%;
// background-color: yellow;
.middle-title {
width: 100%;
height: 2.1vh;
// background-color: #007CFF;
color: #888888;
text-align: center;
font-size: 25rpx;
overflow: hidden;
}
.middle-heng-father {
width: 100%;
height: 4vh;
position: relative;
.middle-ball-img {
width: 35rpx;
height: 35rpx;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.middle-ball {
width: 20rpx;
height: 20rpx;
background-color: #1083F8;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
}
}
.end-font {
width: 100%;
height: 6vh;
font-size: 25rpx;
text-align: center;
color: #666666;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.pls-card-end {
width: 100%;
height: 7.7vh;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
.end-left {
height: 100%;
display: flex;
align-items: center;
.end-left-img {
width: 37rpx;
height: 37rpx;
}
.end-left-font {
margin-top: 3rpx;
width: 400rpx;
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;
border: 1rpx solid #1083F8;
position: absolute;
right: -5rpx;
bottom: 20rpx;
}
}
}
}
}
}
.contain-right {
z-index: 1;
height: 100vh;
width: 100vw;
margin-left: 20rpx;
overflow: hidden;
.contain-right-title {
width: 100%;
height: 110rpx;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
.contain-right-button {
width: 7.3vw;
height: 3.3vw;
background: #FFFFFF;
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.5vw;
margin: 0 0.2vw 0 0;
}
}
.contain-right-title-bad {
width: 7.3vw;
height: 3.3vw;
background: #fff;
border-radius: 1.65vw;
border: 1px solid #EEEFF1;
font-weight: 400;
font-size: 1.4vw;
color: #999;
display: flex;
justify-content: center;
align-items: center;
margin: 0 0 0 0.7vw;
color: #b9b9ba;
image {
width: 1.5vw;
height: 1.5vw;
margin: 0 0.2vw 0 0;
}
}
.contain-right-button:active {
color: #1083F8;
background: linear-gradient(-45deg, rgba(223, 244, 252, 1), rgba(204, 228, 249, 0.43));
border: 1px solid #1083F8;
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
}
.contain-right-middle {
width: 100%;
height: 675rpx;
margin-top: 20rpx;
background-color: #fff;
border-radius: 30rpx;
}
}
}
.middle-Y {
width: 96%;
height: 77%;
margin-left: 2%;
.middle-Y-father {
display: flex;
height: 100%;
.middle-one {
min-width: 400rpx;
max-width: 400rpx;
height: 100%;
background-color: #F9F9F9;
border-radius: 30rpx;
margin-right: 24rpx;
margin-bottom: 30rpx;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
border: 2rpx solid #c9c9c9;
// justify-content: center;
// justify-content: space-around;
.middle-img {
margin-top: 10rpx;
width: 150rpx;
height: 150rpx;
}
.middle-right {
width: 400rpx;
display: flex;
flex-direction: column;
align-items: center;
.right-title {
width: 100%;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 超出隐藏 */
text-overflow: ellipsis;
/* 显示省略号 */
display: block;
font-weight: 800;
font-size: 30rpx;
margin-bottom: 20rpx;
text-align: center;
}
.right-middle {
// margin-bottom: 7rpx;
height: 15rpx;
}
}
}
}
}
.wuliao-title {
margin-top: 40rpx;
margin-left: 30rpx;
display: flex;
flex-direction: column;
align-items: center;
font-size: 34rpx;
font-weight: 600;
width: 200rpx;
.wuliao-heng {
background-color: #1083F8;
width: 40rpx;
height: 10rpx;
border-radius: 5rpx;
margin-top: 10rpx;
}
}
.wuliao-title-no {
margin-top: 40rpx;
margin-left: 30rpx;
display: flex;
flex-direction: column;
align-items: center;
font-size: 34rpx;
font-weight: 600;
width: 200rpx;
color: #888888;
.wuliao-heng {
display: none;
}
}
.right-bottom {
width: 100%;
height: 600rpx;
display: flex;
.right-bottom-left {
height: 100%;
width: 30%;
padding-left: 30rpx;
padding-top: 30rpx;
.left-img {
width: 250rpx;
height: 250rpx;
margin-left: 50rpx;
margin-top: 2vw;
// margin-right: 50rpx;
}
.left-tags {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.tags-one {
min-width: 130rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 30rpx;
border: 1rpx solid #D2D2D2;
margin-left: 20rpx;
margin-top: 10rpx;
font-size: 23rpx;
color: #555555;
padding: 0 0.5vw;
}
}
.right-bottom-right {
height: 100%;
width: 70%;
margin-left: 30rpx;
.bottom-right-title {
width: 100%;
height: 100rpx;
display: flex;
justify-content: space-between;
align-items: center;
// background-color: red;
.title-left {
font-weight: 600;
font-size: 35rpx;
}
.title-right {
font-weight: 600;
font-size: 35rpx;
position: relative;
margin-right: 20rpx;
}
}
.bottom-right-middle {
width: 100%;
.threeone {
width: 33%;
}
.middle-onecard {
width: 100%;
height: 120rpx;
display: flex;
position: relative;
.gray-text {
color: #999999;
margin-bottom: 3rpx;
font-size: 25rpx;
}
.right-text {
font-size: 32rpx;
color: #555555;
}
}
}
}
}
.gray-heng {
position: absolute;
left: 0;
bottom: 20%;
background-color: #eff1f3;
height: 0.5rpx;
width: 80%;
}
.title-input-img {
width: 35rpx;
height: 35rpx;
position: absolute;
right: 220rpx;
top: 50%;
transform: translateY(-50%);
}
.more-father {
position: absolute;
right: 60rpx;
top: 15rpx;
width: 165rpx;
height: 150rpx;
background-color: #fff;
z-index: 102;
border-radius: 35rpx;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.15);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20rpx 0;
.more-one {
width: 100%;
height: 50%;
display: flex;
justify-content: center;
align-items: center;
}
}
.mengban {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 100;
background: RGBA(239, 240, 244, 0.55);
}
.popup-share {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
backdrop-filter: blur(1rpx);
background-color: rgba(236, 237, 241, 0.4);
/* 添加毛玻璃效果 */
z-index: 999;
.share-other {
z-index: 1;
width: 100%;
height: 100%;
padding: 50rpx;
position: relative;
.share-main {
display: flex;
justify-content: space-between;
.share-weight {
font-weight: 600;
font-size: 30rpx;
}
.share-font {
color: #666666;
font-size: 30rpx;
margin-top: 20rpx;
}
}
}
.blue-button {
margin-top: 60rpx;
width: 150rpx;
height: 70rpx;
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
color: #007CFF;
font-size: 30rpx;
background: linear-gradient(to bottom, #e7f4ff, #c5e5ff);
border: 2rpx solid #9AD1FF;
}
}
/* 容器默认隐藏,透明度为 0不接受点击 */
.neuro-wrapper {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
z-index: 999;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
/* 显示时透明度过渡到 1可接受点击 */
.neuro-wrapper.is-active {
opacity: 1;
pointer-events: auto;
}
/* 遮罩层,半透明黑色 */
.neuro-mask {
position: absolute;
inset: 0;
background-color: rgba(0, 0, 0, 0.3);
}
/* 拟态框 固定尺寸 + 阴影样式 + 相对定位于 wrapper */
.neuro-box {
position: relative;
width: 600rpx;
height: 450rpx;
border-radius: 30rpx;
background-color: #fff;
display: flex;
flex-direction: column;
align-items: center;
z-index: 1;
padding: 0 10%;
.button {
width: 47%;
background-color: #ddf0ff;
display: flex;
justify-content: center;
align-items: center;
// color: #fff;
color: #007CFF;
border: 1rpx solid #007CFF;
font-size: 25rpx;
border-radius: 30rpx;
}
.card-font {
margin-top: 70rpx;
width: 600rpx;
justify-content: center;
display: flex;
}
.button-white {
width: 47%;
border: 2rpx solid #c3cacd;
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
display: flex;
justify-content: center;
align-items: center;
font-size: 25rpx;
border-radius: 30rpx;
}
.button-father {
position: absolute;
bottom: 60rpx;
left: 50%;
transform: translateX(-50%);
width: 100%;
height: 70rpx;
display: flex;
justify-content: space-between;
padding: 0 50rpx;
}
.title {
margin-top: 80rpx;
font-weight: 600;
font-size: 35rpx;
}
}
.left-top-tags {
display: flex;
align-items: center;
font-size: 34rpx;
.blue-shu {
background-color: #1083F8;
height: 32rpx;
width: 12rpx;
// margin: 0 20rpx;
margin-left: 50rpx;
margin-right: 23rpx;
border-radius: 8rpx;
}
}
.juzhong {
align-items: center;
height: 40rpx;
font-size: 25rpx;
display: flex;
width: 335rpx;
color: black;
.juzhong-right {
margin-left: 10rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 210rpx;
height: 40rpx;
}
}
.up-tags {
position: absolute;
right: 15rpx;
top: 15rpx;
width: 110rpx;
height: 50rpx;
border-radius: 40rpx;
background-color: #fff;
color: #555555;
border: 1rpx solid #C3C3C3;
font-size: 24rpx;
z-index: 2;
display: flex;
justify-content: center;
align-items: center;
}
.up-tags-target {
position: absolute;
right: 15rpx;
top: 15rpx;
width: 110rpx;
height: 50rpx;
border-radius: 40rpx;
background-color: #fff;
color: #1083F8;
border: 1rpx solid #A4D5FE;
font-size: 24rpx;
z-index: 2;
display: flex;
justify-content: center;
align-items: center;
}
.gaijiafather {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 50%;
height: 55%;
border-radius: 40rpx;
background-color: #fff;
transition: all 0.3s;
z-index: 999;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
padding: 0 60rpx;
}
.jianhuofather {
position: fixed;
top: 0%;
left: 50%;
transform: translate(-50%, 0%);
width: 55%;
height: 100%;
border-radius: 40rpx;
background-color: #fff;
transition: all 0.3s;
z-index: 999;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
padding: 0 60rpx;
.jianhuobutton {
position: absolute;
bottom: 30rpx;
right: 50rpx;
display: flex;
}
}
.photowall {
position: fixed;
top: 54%;
left: 50%;
transform: translate(-50%, -50%);
width: 80%;
height: 83%;
border-radius: 30rpx;
background-color: #fff;
transition: all 0.3s;
z-index: 999;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
padding: 0 90rpx;
.photowall-title {
margin-top: 50rpx;
display: flex;
justify-content: space-between;
width: 100%;
margin-bottom: 50rpx;
.photowall-name {
font-size: 38rpx;
// font-weight: 600;
}
.photowall-left {
color: #888888;
}
.photowall-right {
font-size: 30rpx;
font-weight: 600;
}
}
.photowall-other {
width: 107%;
height: 64vh;
display: flex;
margin-top: 20rpx;
.photowall-other-one {
width: 28.5%;
height: 430rpx;
margin-right: 3vw;
margin-bottom: 0%;
border-radius: 30rpx;
display: inline-block;
position: relative;
}
}
}
.gray-button {
font-size: 50rpx;
background-color: #f3f5f9;
// box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.12);
border-radius: 20rpx;
width: 100rpx;
height: 100rpx;
border: 1rpx solid #eeeeee;
display: flex;
justify-content: center;
align-items: center;
margin-right: 10rpx;
}
.gray-button:active {
background: linear-gradient(to top, #00C9FF, #0076FF);
color: #fff;
font-size: 44rpx;
font-weight: 700;
border: 1rpx solid #00C9FF;
}
// .title-ball:active {
// background: linear-gradient(to top, #1083F8, #1083F8);
// color: #fff;
// font-size: 44rpx;
// font-weight: 700;
// border: 1rpx solid #00C9FF;
// }
.gray-button-jianpan:active {
background: linear-gradient(to top, #00C9FF, #0076FF);
color: #fff;
font-size: 44rpx;
font-weight: 700;
border: 1rpx solid #00C9FF;
}
.gray-button-jianpan {
font-size: 40rpx;
font-weight: 600;
background-color: #f3f5f9;
border-radius: 35rpx;
// box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.12);
color: #555555;
width: 100rpx;
height: 100rpx;
border: 1rpx solid #eeeeee;
display: flex;
justify-content: center;
align-items: center;
margin-right: 30rpx;
margin-bottom: 20rpx;
transition: .1s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.gray-input {
font-size: 50rpx;
font-weight: 600;
background-color: #f3f5f9;
border-radius: 20rpx;
// box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.12);
padding: 0 30rpx;
letter-spacing: 10rpx;
height: 100rpx;
border: 1rpx solid #eeeeee;
display: flex;
justify-content: flex-end;
align-items: center;
padding-left: 40rpx;
margin-right: 10rpx;
}
.jianhuo-jianpan {
position: absolute;
right: -10rpx;
bottom: 12%;
}
.text-anim {
animation: colorScale 2s linear infinite;
transform-origin: left bottom;
animation-iteration-count: 1;
color: #1083F8;
}
@keyframes colorScale {
0% {
color: #1083F8;
transform: scale(calc(1));
}
50% {
color: #333333;
transform: scale(calc(3));
}
100% {
color: #1083F8;
transform: scale(calc(1));
}
}
.calendar-father {
position: fixed;
top: 510rpx;
left: 60rpx;
width: 700rpx;
height: 600rpx;
background-color: #fff;
z-index: 999;
}
.input-next {
position: fixed;
bottom: 700rpx;
left: 40rpx;
width: 555rpx;
// height: 300rpx;
border-radius: 30rpx;
z-index: 102;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
padding: 40rpx 30rpx;
.next-father {
color: #999;
margin: 10rpx;
font-size: 28rpx;
}
}
.nomessage {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 200rpx;
font-size: 34rpx;
color: #999;
}
.moban-photo {
width: 40%;
height: 150rpx;
margin-right: 4%;
margin-top: 3%;
background-color: #F9F9F9;
display: flex;
justify-content: center;
align-items: center;
border-radius: 0.6vw;
overflow: hidden;
position: relative;
>view {
width: 2vw;
height: 2vw;
z-index: 20;
position: absolute;
right: 0.1vw;
top: 0.1vw;
border-radius: 10rpx 0.6vw 10rpx 10rpx;
background: rgba(255, 255, 255, 1);
display: flex;
justify-content: center;
align-items: center;
}
}
.moban-photo-special {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #fafdff;
border: 1rpx solid #c4ebff;
border-radius: 20rpx;
}
.jianhuobutton-gray {
background-color: #fff;
color: #555555;
display: flex;
align-items: center;
justify-content: center;
color: #555555;
width: 160rpx;
height: 70rpx;
border-radius: 40rpx;
// box-shadow: 0 4rpx 6rpx rgba(0, 0, 0, 0.1);
// margin-left: 20rpx;
margin-right: 35rpx;
border: 1px solid #D9DADC;
}
.jianhuobutton-gray-bad {
background-color: #f8f8f8;
color: #999;
display: flex;
align-items: center;
justify-content: center;
// color: #555555;
width: 160rpx;
height: 70rpx;
border-radius: 40rpx;
// box-shadow: 0 4rpx 6rpx rgba(0, 0, 0, 0.1);
// margin-left: 20rpx;
margin-right: 35rpx;
border: 1px solid #D9DADC;
}
.bottom-left:active,
.donghua-do:active,
.contain-right-button:active,
.jianhuobutton-gray:active {
color: #1083F8;
background: linear-gradient(-45deg, rgba(223, 244, 252, 1), rgba(204, 228, 249, 0.43));
border: 1px solid #1083F8;
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.noarray {
width: 90%;
height: 100%;
// background-color: red;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.noarray-img {
margin-top: -200rpx;
width: 350rpx;
height: 350rpx;
}
}
.noarray-font {
margin-top: -60rpx;
color: #888888;
font-size: 25rpx;
}
.nomessage-samll {
width: 100%;
height: 100%;
// background-color: red;
display: flex;
// justify-content: center;
align-items: center;
flex-direction: column;
}
.guodu {
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.contain-right-father {
background-color: #fff;
width: 1305rpx;
height: 600rpx;
border-radius: 30rpx;
}
.middle-right-end {
width: 88%;
height: 110rpx;
display: flex;
.right-end {
// background-color: red;
width: 33%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.end-num {
font-size: 32rpx;
margin-bottom: 5rpx;
}
.end-font {
font-size: 24rpx;
}
}
}
.haventmessage {
width: 100%;
height: 100%;
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
border-radius: 30rpx;
}
.que {
width: 10vw;
height: 10vw;
// margin: auto;
image {
width: 100%;
height: 100%;
}
view {
margin-top: -30rpx;
width: 100%;
text-align: center;
font-weight: 300;
font-size: 1.2vw;
color: #555555;
}
}
.center{
display: flex;
justify-content: center;
align-items: center;
}
</style>