hldy_app/component/storeroom/orders.vue

1181 lines
30 KiB
Vue
Raw Permalink Normal View History

2025-04-07 17:34:20 +08:00
<template>
2025-04-08 17:33:14 +08:00
<view class="index-content-other" v-show="isShow" :style="transition?{opacity: `1`}:{opacity: `0`}">
2025-04-07 17:34:20 +08:00
<view class="index-content-right">
<!-- 解决margin重叠问题 -->
<view class="index-right-height"></view>
<view class="index-right-title">
2025-05-08 17:34:54 +08:00
<view class="ball-bgc" style="box-shadow: 2rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.3);"
@click="firstBallClick">
2025-04-08 17:33:14 +08:00
<view :class="clickBall(firstBall)">
采购
</view>
</view>
2025-05-08 17:34:54 +08:00
<view class="ball-bgc" style="box-shadow: 2rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.3);"
@click="secondBallClick">
2025-04-08 17:33:14 +08:00
<view :class="clickBall(secondBall)">
拣货
</view>
</view>
2025-05-08 17:34:54 +08:00
<view class="ball-bgc" style="box-shadow: 2rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.3);"
@click="thirdBallClick">
2025-04-08 17:33:14 +08:00
<view :class="clickBall(thirdBall)">
结账
</view>
</view>
2025-04-07 17:34:20 +08:00
<view class="index-right-name">
采购单号
</view>
<input class="index-right-input" placeholder="请输入采购单号" />
<view class="index-right-name">
供应商
</view>
<input class="index-right-input" placeholder="请输入供应商" />
2025-04-09 17:20:13 +08:00
<view class="index-right-name">
2025-04-08 17:33:14 +08:00
采购日期
2025-04-07 17:34:20 +08:00
</view>
2025-04-08 17:33:14 +08:00
<view @click.stop="calendarShow=true">
2025-04-09 17:20:13 +08:00
<view class="index-right-input" style="width: 200rpx;height: 66rpx;"
:style="stateTarget?{}:{color:`#999`}">
2025-04-08 17:33:14 +08:00
{{stateTarget ? stateTarget : `请输入采购日期`}}
2025-04-07 17:34:20 +08:00
</view>
</view>
2025-04-09 17:20:13 +08:00
<u-calendar style="width: 40%;margin-left: 30%;" border-radius="40" v-model="calendarShow" mode="date"
@change="calendarchange"></u-calendar>
2025-04-07 17:34:20 +08:00
<view class="index-right-button-all">
<view class="" v-for="(item,index) in buttonList" :key="index">
<view class="index-right-button">
<image class="index-right-button-img" :src="item.url" />
<view class="index-right-button-font">
{{item.name}}
</view>
</view>
</view>
</view>
</view>
<view class="swiper-contain">
<scroll-view scroll-y style="height: 98%;" :show-scrollbar="false">
<view class="swiper-flex">
2025-04-09 17:20:13 +08:00
<view v-for="(item,index) in sliceArray" :key="index">
<view class="swiper-card">
<view class="swiper-title-contect">
<view class="swiper-states">
<view
:class="item.cardType >1 ?`swiper-states-heng-one-green`:`swiper-states-heng-one`">
</view>
<view
:class="item.cardType >3 ?`swiper-states-heng-two-green`: `swiper-states-heng-two`">
</view>
2025-04-28 17:33:10 +08:00
<view class="ball-bgc" :style="item.cardType !==0 && item.cardType !==1?{
2025-04-11 17:23:45 +08:00
}:{boxShadow: `8rpx 8rpx 16rpx 0rpx rgba(0, 0, 0, 0.3)`,width:`110rpx`,height:`110rpx`}">
2025-04-09 17:20:13 +08:00
<view :class="getBallFirst(item.cardType)">
采购
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
</view>
2025-04-11 17:23:45 +08:00
<view class="ball-bgc" :style="item.cardType!=2 && item.cardType!=3 ?{
}:{boxShadow: `8rpx 8rpx 16rpx 0rpx rgba(0, 0, 0, 0.3)`,width:`110rpx`,height:`110rpx`}">
2025-04-09 17:20:13 +08:00
<view :class="getBallSecond(item.cardType)">
拣货
2025-04-07 17:34:20 +08:00
</view>
</view>
2025-04-11 17:23:45 +08:00
<view class="ball-bgc" :style="item.cardType!=4 ?{
}:{boxShadow: `8rpx 8rpx 16rpx 0rpx rgba(0, 0, 0, 0.3)`,width:`110rpx`,height:`110rpx`}">
2025-04-09 17:20:13 +08:00
<view :class="getBallThird(item.cardType)">
结账
</view>
2025-04-07 17:34:20 +08:00
</view>
</view>
2025-04-09 17:20:13 +08:00
<view :class="item.cardType ? `title-button`:`title-button-red`">
{{stateArray[item.cardType]}}
</view>
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
<view class="swiper-down">
<view class="swiper-flex">
<view class="swiper-down-title">采购单号:</view>
<view class="swiper-down-number">A0120250301001555</view>
</view>
<view class="swiper-down-card">
<view class="swiper-down-text">
<view class="swiper-down-text-left">
2025-07-14 17:26:40 +08:00
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
<view class="swiper-down-text-right">
王法
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
</view>
<view class="swiper-down-text">
<view class="swiper-down-text-left">
采购日期
</view>
<view class="swiper-down-text-right">
2025.03.02
2025-04-07 17:34:20 +08:00
</view>
</view>
2025-04-09 17:20:13 +08:00
<view class="swiper-down-text">
<view class="swiper-down-text-left">
</view>
<view class="swiper-down-text-right">
李月
</view>
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
<view class="swiper-down-text">
<view class="swiper-down-text-left">
联系电话
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
<view class="swiper-down-text-right">
13355653333
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
</view>
<view class="swiper-down-text" style="width: 100%;">
<view class="swiper-down-text-left">
</view>
<view class="swiper-down-text-right">
宽城区珂爱个人卫生用品店
2025-04-07 17:34:20 +08:00
</view>
</view>
2025-04-09 17:20:13 +08:00
</view>
<view class="swiper-button">
<view class="button-father">
2025-05-08 17:34:54 +08:00
<view class="swiper-button-white" @click="openDetailDrawer(item.cardType)">
2025-04-09 17:20:13 +08:00
详情
</view>
<view class="swiper-button-blue" v-show="item.cardType==4"
2025-05-20 16:10:53 +08:00
@click="openfinish(item.cardType)">
2025-04-09 17:20:13 +08:00
结账
</view>
2025-05-20 16:10:53 +08:00
<view class="swiper-button-blue" v-show="item.cardType==3||item.cardType==2"
2025-05-13 17:18:07 +08:00
@click="pickingGoodclick">
2025-04-09 17:20:13 +08:00
拣货
</view>
<!-- <view class="swiper-button-blue" v-show="item.cardType==2">
分享
</view> -->
2025-05-20 16:10:53 +08:00
<view class="swiper-button-white"
v-show="item.cardType>=2&&item.cardType!==5" @click="isBack(index)">
2025-04-09 17:20:13 +08:00
回退
</view>
<view class="swiper-button-blue" v-show="item.cardType==1"
@click="isRight(index)">
确认
</view>
<view class="swiper-button-red" v-show="item.cardType==1"
2025-05-08 17:34:54 +08:00
@click="openVoidDrawer(index)">
2025-04-09 17:20:13 +08:00
作废
</view>
2025-04-07 17:34:20 +08:00
</view>
2025-04-09 17:20:13 +08:00
2025-04-07 17:34:20 +08:00
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="index-content-down">
长春市朝阳区久泰开运养老服务有限公司
</view>
</view>
<!-- 表格详情的的弹出层 -->
<view v-show="detailisopen && isShow" class="popup-detail" @click="detailisopen=false">
<view class="popup-detail-content" :style="{ opacity: detailisopacity ? 1 : 0 }" @click.stop>
<view class="popup-detail-left">
<view class="popup-detail-left-white">
<image class="popup-detail-left-white-img" :src="`/static/index/project3.png`"
@click="opendetail" />
</view>
<view class="popup-detail-left-bottom">
2025-04-09 17:20:13 +08:00
<view class="popup-small-card">
2025-04-07 17:34:20 +08:00
2025-04-09 17:20:13 +08:00
</view>
2025-04-07 17:34:20 +08:00
</view>
</view>
<view class="popup-detail-right">
</view>
</view>
</view>
2025-05-08 17:34:54 +08:00
<!-- 详情的抽屉 -->
<Drawer ref="detaildrawer" :widNumber="60">
<otherDetail :openType="openType" @closedetail="closedetaildrawer" @openDrawer="openDrawer" />
</Drawer>
2025-05-20 16:10:53 +08:00
<!-- 改价弹窗 -->
<view v-show="pricedrawer && isShow" class="popup-detail-finish" @click="pricedrawer=false">
<view class="popup-detail-content" :style="{ opacity: detailisopacity ? 1 : 0 }" @click.stop>
<finish :changePrice="changePrice" :savePrice="savePrice" @rightclose="rightclose" @close="pricedrawer=false" @openCal="openCalsec" @closeCal="isopenCalsec=false" />
</view>
<view v-show="isopenCalsec" class="popup-detail-content-calculator" :style="{ opacity: detailisopacity ? 1 : 0 }" @click.stop>
<calculatorfly :doOnce="doOnce" :translateNumber="translateNumber" @right="rightchangePrice" />
</view>
</view>
<!-- 结账的抽屉 -->
<Drawer ref="finishAccountdrawer" :widNumber="60">
<finishAccount :valueBack="valueBack" :openType="openType" @closedetail="closedetaildrawer" @openDrawer="openDrawer" @openPen="openPen" />
</Drawer>
2025-05-08 17:34:54 +08:00
<!-- 入库单的抽屉 -->
<Drawer ref="storagedrawer" :widNumber="50" style="z-index: 1000;">
2025-05-09 17:08:16 +08:00
<storage :dantype="dantype" @opensuixing="opensuixing" @closevoid="closestorage" />
</Drawer>
<!-- 核销单的抽屉 -->
<Drawer ref="verificationdrawer" :widNumber="50" style="z-index: 1000;">
2025-05-20 16:10:53 +08:00
<verification @closehexiao="closehexiao" />
2025-05-09 17:08:16 +08:00
</Drawer>
<!-- 随行单的抽屉 -->
<Drawer ref="suixingdrawer" :widNumber="40" style="z-index: 1001;">
<suixing />
2025-05-08 17:34:54 +08:00
</Drawer>
2025-05-20 16:10:53 +08:00
<!-- 计算器弹窗 -->
2025-05-13 17:18:07 +08:00
<view v-show="caldrawer && isShow" class="popup-detail-cal" @click="caldrawer=false">
<view class="popup-detail-content" :style="{ opacity: detailisopacity ? 1 : 0 }" @click.stop>
<calculator :doOnce="doOnce" :translateNumber="translateNumber" @close="closeCal" @right="rightCal" />
</view>
</view>
<!-- 计算器的抽屉 -->
<!-- <Drawer ref="caldrawer" :widNumber="30" :canclose="false" style="z-index: 1001;">
<calculator :doOnce="doOnce" :translateNumber="translateNumber" @close="closeCal" @right="rightCal" />
</Drawer> -->
2025-05-08 17:34:54 +08:00
<!-- 作废的抽屉 -->
<Drawer ref="voiddrawer" :widNumber="60">
<otherVoid @voidIt="isDelete(saveVoidIndex)" @closevoid="closevoid" />
</Drawer>
2025-05-13 17:18:07 +08:00
<!-- 拣货的抽屉 -->
<Drawer ref="pickingGooddrawer" :widNumber="60" style="z-index: 998;">
<pickingGood @openDrawer="openDrawer" />
</Drawer>
<!-- 拣货的拣货的抽屉 -->
<Drawer ref="pickingdrawer" :canclose="false" :widNumber="50" style="z-index: 998;">
<picking :backnumber="backnumber" @openCal="openCal" @closepickingdrawer="closepickingdrawer" />
</Drawer>
2025-04-07 17:34:20 +08:00
</template>
<script setup lang="ts">
2025-04-08 17:33:14 +08:00
import { ref, onMounted, onBeforeUnmount, computed, nextTick, defineProps, watch } from 'vue';
2025-05-08 17:34:54 +08:00
import Drawer from "@/component/public/Drawer.vue"
import otherDetail from "@/component/storeroom/drawer/otherDetail/index.vue"
import otherVoid from "@/component/storeroom/drawer/otherVoid/index.vue"
import storage from "@/component/storeroom/drawer/storage/index.vue"
2025-05-09 17:08:16 +08:00
import suixing from "@/component/storeroom/drawer/suixing/index.vue"
2025-05-20 16:10:53 +08:00
import verification from "@/component/storeroom/drawer/verification/index.vue"
2025-05-13 17:18:07 +08:00
import pickingGood from "@/component/storeroom/drawer/pickingGood/index.vue"
import picking from "@/component/storeroom/drawer/picking/index.vue"
import calculator from "@/component/storeroom/drawer/calculator/index.vue"
2025-05-20 16:10:53 +08:00
import finish from "@/component/storeroom/drawer/finish/index.vue"
import finishAccount from "@/component/storeroom/drawer/finishAccount/index.vue"
import calculatorfly from "@/component/storeroom/components/calculatorfly.vue"
2025-05-08 17:34:54 +08:00
2025-04-07 17:34:20 +08:00
const props = defineProps({
isShow: {
type: Boolean,
required: true,
},
});
2025-04-08 17:33:14 +08:00
// 使用watch监听isShow变化
const transition = ref(true);
2025-04-09 17:20:13 +08:00
const getBallFirst = (type : number) => {
switch (type) {
case 0:
2025-05-08 17:34:54 +08:00
return `ball-red-big`
2025-04-09 17:20:13 +08:00
case 1:
2025-04-11 17:23:45 +08:00
return `ball-yellow-big`
2025-04-09 17:20:13 +08:00
default:
return 'ball-green'
}
}
const getBallSecond = (type : number) => {
switch (type) {
case 0:
return `ball-white`
case 1:
return `ball-white`
case 2:
2025-04-11 17:23:45 +08:00
return `ball-yellow-big`
2025-04-09 17:20:13 +08:00
case 3:
2025-04-11 17:23:45 +08:00
return `ball-yellow-big`
2025-04-09 17:20:13 +08:00
case 4:
return `ball-green`
case 5:
return `ball-green`
// default:
// return 'ball-green'
}
}
const getBallThird = (type : number) => {
switch (type) {
case 4:
2025-04-11 17:23:45 +08:00
return `ball-yellow-big`
2025-04-09 17:20:13 +08:00
case 5:
return `ball-green`
default:
return 'ball-white'
}
}
2025-04-08 17:33:14 +08:00
watch(
() => props.isShow,
(newVal, oldVal) => {
// 当旧值为false新值为true时延迟0.2秒调用方法
if (!oldVal && newVal) {
transition.value = false;
setTimeout(() => {
transition.value = true;
}, 50)
}
}
)
2025-05-20 16:10:53 +08:00
2025-05-08 17:34:54 +08:00
const detaildrawer = ref(null);
const voiddrawer = ref(null);
const storagedrawer = ref(null);
2025-05-20 16:10:53 +08:00
const verificationdrawer = ref(null);
const pricedrawer = ref(false);
2025-04-08 17:33:14 +08:00
const firstBall = ref(0);
const secondBall = ref(0);
const thirdBall = ref(0);
const calendarShow = ref(false);
2025-05-08 17:34:54 +08:00
// 打开详情
const openType = ref(-1);
2025-05-20 16:10:53 +08:00
const openDetailDrawer = (type : number) => {
2025-05-08 17:34:54 +08:00
openType.value = type;
detaildrawer.value.openDrawer();
}
2025-05-13 17:18:07 +08:00
const pickingGooddrawer = ref(null);
2025-05-20 16:10:53 +08:00
const pickingGoodclick = () => {
2025-05-13 17:18:07 +08:00
pickingGooddrawer.value.openDrawer();
}
2025-05-08 17:34:54 +08:00
const saveVoidIndex = ref(-1);
2025-05-20 16:10:53 +08:00
const openVoidDrawer = (index : number) => {
2025-05-08 17:34:54 +08:00
// openType.value = type;
saveVoidIndex.value = index
voiddrawer.value.openDrawer();
}
2025-05-09 17:08:16 +08:00
const suixingdrawer = ref(null);
2025-05-20 16:10:53 +08:00
const opensuixing = () => {
2025-05-09 17:08:16 +08:00
suixingdrawer.value.openDrawer();
}
const dantype = ref(0);
2025-05-20 16:10:53 +08:00
const pickingdrawer = ref(null);
const openDrawer = (index : number) => {
if (!index) {
2025-05-08 17:34:54 +08:00
storagedrawer.value.openDrawer();
2025-05-09 17:08:16 +08:00
dantype.value = 0;
2025-05-20 16:10:53 +08:00
} else if (index === 1) {
2025-05-09 17:08:16 +08:00
storagedrawer.value.openDrawer();
dantype.value = 1;
}
2025-05-20 16:10:53 +08:00
else if (index === 2) {
2025-05-09 17:08:16 +08:00
dantype.value = 2;
verificationdrawer.value.openDrawer();
2025-05-20 16:10:53 +08:00
} else if (index === 3) {
2025-05-13 17:18:07 +08:00
pickingdrawer.value.openDrawer();
2025-05-20 16:10:53 +08:00
} else if (index === 4) {
// console.log("?????")
2025-05-13 17:18:07 +08:00
suixingdrawer.value.openDrawer();
2025-05-08 17:34:54 +08:00
}
2025-05-20 16:10:53 +08:00
}
const savePrice = ref(0);
const changePrice = ref(0);
const valueBack = ref(-1);
const rightclose = (number:number) =>{
valueBack.value = number;
}
const rightchangePrice = (price:number) =>{
isopenCalsec.value = false;
changePrice.value = price
}
const openPen = (price:number) =>{
savePrice.value = price;
changePrice.value = price;
pricedrawer.value = true;
detailisopacity.value = true
2025-05-08 17:34:54 +08:00
}
2025-05-13 17:18:07 +08:00
const translateNumber = ref(0);
const doOnce = ref(0);
const caldrawer = ref(false);
2025-05-20 16:10:53 +08:00
const closeCal = () => {
2025-05-13 17:18:07 +08:00
caldrawer.value = false;
2025-05-20 16:10:53 +08:00
}
const isopenCalsec = ref(false);
const openCalsec = (many:number) =>{
isopenCalsec.value = true;
doOnce.value++
translateNumber.value = many
2025-05-13 17:18:07 +08:00
}
const backnumber = ref(0);
2025-05-20 16:10:53 +08:00
const rightCal = (number : number) => {
2025-05-13 17:18:07 +08:00
caldrawer.value = false;
backnumber.value = number
}
2025-05-20 16:10:53 +08:00
const openCal = (number : number) => {
2025-05-13 17:18:07 +08:00
translateNumber.value = number;
caldrawer.value = true;
detailisopacity.value = false;
setTimeout(() => {
detailisopacity.value = true
}, 100)
2025-05-20 16:10:53 +08:00
doOnce.value++
2025-05-13 17:18:07 +08:00
}
2025-05-20 16:10:53 +08:00
const closepickingdrawer = () => {
2025-05-13 17:18:07 +08:00
pickingdrawer.value.closeDrawer()
}
2025-04-09 17:20:13 +08:00
const isDelete = (index : number) => {
firstBall.value = 0
secondBall.value = 0
thirdBall.value = 0
cardArray.value[index].cardType = 0
sliceArray.value = cardArray.value;
2025-05-08 17:34:54 +08:00
voiddrawer.value.closeDrawer()
2025-04-09 17:20:13 +08:00
}
2025-05-20 16:10:53 +08:00
const finishAccountdrawer = ref(null);
const openfinish = (index : number) => {
openType.value = index;
finishAccountdrawer.value.openDrawer();
}
2025-04-09 17:20:13 +08:00
const isRight = (index : number) => {
firstBall.value = 0
secondBall.value = 0
thirdBall.value = 0
cardArray.value[index].cardType++
sliceArray.value = cardArray.value;
}
2025-05-20 16:10:53 +08:00
2025-04-09 17:20:13 +08:00
const isBack = (index : number) => {
firstBall.value = 0
secondBall.value = 0
thirdBall.value = 0
cardArray.value[index].cardType--
sliceArray.value = cardArray.value;
}
const firstBallClick = () => {
2025-04-08 17:33:14 +08:00
secondBall.value = 0
thirdBall.value = 0
2025-04-09 17:20:13 +08:00
if (firstBall.value < 3) {
2025-04-08 17:33:14 +08:00
firstBall.value++
2025-04-09 17:20:13 +08:00
} else {
2025-04-08 17:33:14 +08:00
firstBall.value = 0
}
2025-04-09 17:20:13 +08:00
if (firstBall.value) {
let saveArray = []
switch (firstBall.value) {
case 1:
cardArray.value.forEach((element : any) => {
if (element.cardType == 1) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
case 2:
cardArray.value.forEach((element : any) => {
if (element.cardType > 2) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
case 3:
cardArray.value.forEach((element : any) => {
if (element.cardType == 0) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
}
} else {
sliceArray.value = cardArray.value;
}
2025-04-08 17:33:14 +08:00
}
2025-04-09 17:20:13 +08:00
const secondBallClick = () => {
2025-04-08 17:33:14 +08:00
firstBall.value = 0
thirdBall.value = 0
2025-04-09 17:20:13 +08:00
if (secondBall.value < 2) {
2025-04-08 17:33:14 +08:00
secondBall.value++
2025-04-09 17:20:13 +08:00
} else {
2025-04-08 17:33:14 +08:00
secondBall.value = 0
}
2025-04-09 17:20:13 +08:00
if (secondBall.value) {
let saveArray = []
switch (secondBall.value) {
case 1:
cardArray.value.forEach((element : any) => {
if (element.cardType == 2 || element.cardType == 3) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
case 2:
cardArray.value.forEach((element : any) => {
if (element.cardType > 3) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
}
} else {
sliceArray.value = cardArray.value;
}
2025-04-08 17:33:14 +08:00
}
2025-04-09 17:20:13 +08:00
const thirdBallClick = () => {
2025-04-08 17:33:14 +08:00
secondBall.value = 0
firstBall.value = 0
2025-04-09 17:20:13 +08:00
if (thirdBall.value < 2) {
2025-04-08 17:33:14 +08:00
thirdBall.value++
2025-04-09 17:20:13 +08:00
} else {
2025-04-08 17:33:14 +08:00
thirdBall.value = 0
}
2025-04-09 17:20:13 +08:00
if (thirdBall.value) {
let saveArray = []
switch (thirdBall.value) {
case 1:
cardArray.value.forEach((element : any) => {
if (element.cardType == 4) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
case 2:
cardArray.value.forEach((element : any) => {
if (element.cardType == 5) {
saveArray.push(element)
}
})
sliceArray.value = saveArray;
break
}
} else {
sliceArray.value = cardArray.value;
}
2025-04-08 17:33:14 +08:00
}
2025-04-07 17:34:20 +08:00
// 表格弹窗
const detailisopen = ref(false);
const detailisopacity = ref(false);
// 初始化左侧菜单列表
const buttonList = ref([
// { url: '/static/index/Warehousing/zuoce.png', name: '请购单' },
{ url: '/static/index/Warehousing/sousuo.png', name: '查询' },
{ url: '/static/index/Warehousing/chongzhi.png', name: '重置' },
]);
2025-04-08 17:33:14 +08:00
const stateTarget = ref("");
2025-04-09 17:20:13 +08:00
const stateArray = ref(['已作废', '未确认', '已确认', '未完结', '待结账', '已结账']);
// 注意cardType 0是已作废1是未确认2是已确认3是未完结4是待结账5是已结账
2025-04-07 17:34:20 +08:00
const cardArray = ref(
Array.from({ length: 6 }, (_, index) => ({ cardType: index }))
);
2025-04-09 17:20:13 +08:00
const sliceArray = ref([]);
2025-04-08 17:33:14 +08:00
const clickBall = (index : number) => {
switch (index) {
case 0:
return `ball-white`
case 1:
return `ball-yellow`
case 2:
return `ball-green`
case 3:
return `ball-red`
}
}
2025-04-07 17:34:20 +08:00
const opendetail = () => {
detailisopen.value = true;
detailisopacity.value = false;
setTimeout(() => {
detailisopacity.value = true
}, 200)
}
2025-05-20 16:10:53 +08:00
const closedetaildrawer = () => {
2025-05-08 17:34:54 +08:00
detaildrawer.value.closeDrawer()
}
2025-05-20 16:10:53 +08:00
const closestorage = () => {
2025-05-09 17:08:16 +08:00
storagedrawer.value.closeDrawer()
}
2025-05-20 16:10:53 +08:00
const closevoid = () => {
2025-05-08 17:34:54 +08:00
voiddrawer.value.closeDrawer()
}
2025-05-20 16:10:53 +08:00
const closehexiao = () => {
2025-05-09 17:08:16 +08:00
verificationdrawer.value.closeDrawer()
}
2025-04-09 17:20:13 +08:00
const calendarchange = (e : any) => {
2025-04-08 17:33:14 +08:00
stateTarget.value = e.result
2025-04-07 17:34:20 +08:00
}
2025-04-09 17:20:13 +08:00
onMounted(() => {
sliceArray.value = cardArray.value;
})
2025-04-07 17:34:20 +08:00
</script>
<style scoped lang="less">
.index-content-other {
width: calc(100% - 170rpx);
height: 100%;
2025-04-08 17:33:14 +08:00
transition: opacity 1s ease;
2025-04-07 17:34:20 +08:00
}
.index-content-right {
height: calc(100% - 100rpx);
width: calc(100% - 60rpx);
background-color: rgba(255, 255, 255, 0.5);
/* 白色背景透明度为 10% */
background-image: url('/static/index/mountain.png');
background-position: 70% 45%;
border-radius: 50rpx;
box-shadow: 4rpx 8rpx 16rpx 4rpx rgba(0, 0, 0, 0.3);
border-radius: 1rpx solid #fff;
.index-right-height {
height: 20rpx;
}
.index-right-title {
margin-left: 30rpx;
width: calc(100% - 60rpx);
height: 120rpx;
background: linear-gradient(to right, #C4E0FD, #D5CDFF, #D9ECFF);
border-radius: 35rpx;
border: 2rpx solid #fff;
display: flex;
align-items: center;
.index-right-name {
margin-left: 20rpx;
margin-right: 10rpx;
color: #19233B;
font-size: 30rpx;
}
.index-right-input {
font-size: 23rpx;
width: 180rpx;
border: 2rpx #a0adc8 solid;
padding: 15rpx 0 15rpx 10rpx;
background-color: rgba(234, 243, 254, 0.6);
border-radius: 10rpx;
}
.index-right-button-all {
height: 100%;
margin-left: auto;
display: flex;
align-items: center;
.index-right-button {
// width: 160rpx;
2025-04-09 17:20:13 +08:00
height: 75rpx;
background: linear-gradient(to right, #00c9ff, #0076ff);
2025-04-07 17:34:20 +08:00
color: #fff;
font-size: 30rpx;
display: flex;
align-items: center;
2025-04-09 17:20:13 +08:00
border-radius: 20rpx;
2025-04-07 17:34:20 +08:00
border: 1rpx solid #fff;
margin-right: 20rpx;
.index-right-button-img {
width: 45rpx;
height: 45rpx;
2025-04-09 17:20:13 +08:00
margin: 0 5rpx 0 15rpx;
2025-04-07 17:34:20 +08:00
}
.index-right-button-font {
2025-04-09 17:20:13 +08:00
margin-right: 25rpx;
2025-04-07 17:34:20 +08:00
}
}
}
}
}
.index-content-down {
width: calc(100% - 60rpx);
height: 100rpx;
display: flex;
justify-content: flex-end;
align-items: center;
}
.swiper-contain {
width: 100%;
margin-left: 10rpx;
// width: calc(100% - 60rpx);
height: calc(100% - 140rpx);
.swiper-flex {
display: flex;
flex-wrap: wrap;
.swiper-card {
margin: 20rpx 0 0 20rpx;
width: 1007rpx;
height: 530rpx;
2025-04-09 17:20:13 +08:00
border: 3rpx solid #fff;
// border-top: 4rpx solid #FFA504;
2025-04-07 17:34:20 +08:00
border-radius: 30rpx;
/* 设置背景图和白色背景 */
background: url("/static/index/clearmountain.png") center/cover, rgba(255, 255, 255, 0.5);
/* 使用 screen 混合模式,让图像与白色混合变淡 */
background-blend-mode: screen;
isolation: isolate;
2025-04-09 17:20:13 +08:00
box-shadow: 4rpx 4rpx 8rpx 0rpx rgba(0, 0, 0, 0.3);
2025-04-07 17:34:20 +08:00
display: flex;
position: relative;
overflow: hidden;
2025-04-09 17:20:13 +08:00
flex-direction: column;
2025-04-08 17:33:14 +08:00
2025-04-09 17:20:13 +08:00
.swiper-title-contect {
margin-bottom: 0;
2025-04-07 17:34:20 +08:00
width: 100%;
2025-04-09 17:20:13 +08:00
height: 115rpx;
background: linear-gradient(to right, #CBD8FC, #F2EAFF, #E2EDFE, #BDCAE9);
border-top-right-radius: 30rpx;
border-top-left-radius: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 3rpx solid;
/* 指定边框宽度 */
border-image: linear-gradient(to right, transparent, #fff, transparent) 1;
.swiper-states {
margin-left: 15rpx;
2025-04-07 17:34:20 +08:00
display: flex;
justify-content: space-between;
align-items: center;
2025-04-09 17:20:13 +08:00
width: 350rpx;
height: 100%;
position: relative;
.swiper-states-heng-one {
position: absolute;
top: 50%;
left: 80rpx;
width: 100rpx;
height: 10rpx;
background-color: #C6CBF6;
}
.swiper-states-heng-one-green {
position: absolute;
top: 50%;
left: 80rpx;
width: 100rpx;
height: 10rpx;
background: linear-gradient(to top, #ACE800, #55B718);
}
.swiper-states-heng-two {
position: absolute;
top: 50%;
left: 180rpx;
width: 100rpx;
height: 10rpx;
background-color: #C6CBF6;
}
.swiper-states-heng-two-green {
position: absolute;
top: 50%;
left: 180rpx;
width: 100rpx;
height: 10rpx;
background: linear-gradient(to top, #ACE800, #55B718);
2025-04-08 17:33:14 +08:00
2025-04-07 17:34:20 +08:00
}
}
}
2025-04-08 17:33:14 +08:00
2025-04-07 17:34:20 +08:00
}
}
}
.swiper-heng {
width: 100rpx;
height: 10rpx;
background: linear-gradient(to right, #0EA7DD, #047ADB);
border-radius: 30rpx;
margin-top: 10rpx;
margin-bottom: 30rpx;
}
.popup-detail {
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(89, 109, 154, 0.4);
/* 添加毛玻璃效果 */
2025-05-20 16:10:53 +08:00
.popup-detail-price{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 1000rpx;
height: 1000rpx;
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.5);
background-blend-mode: screen;
border: 2rpx solid #fff;
/* 使用 screen 混合模式,让图像与白色混合变淡 */
border-radius: 30rpx;
box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
transition: opacity 0.4s ease;
z-index: 1005;
}
2025-04-07 17:34:20 +08:00
.popup-detail-content {
display: flex;
width: 1500rpx;
height: 900rpx;
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.5);
background-blend-mode: screen;
border: 2rpx solid #fff;
/* 使用 screen 混合模式,让图像与白色混合变淡 */
border-radius: 30rpx;
box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
transition: opacity 0.4s ease;
.popup-detail-left {
height: 100%;
width: 45%;
.popup-detail-left-white {
margin: 70rpx 0 0rpx 70rpx;
width: 600rpx;
height: 600rpx;
// background-color: #fff;
background-color: rgba(255, 255, 255, 0.3);
display: flex;
border-radius: 30rpx;
justify-content: center;
align-items: center;
.popup-detail-left-white-img {
width: 550rpx;
height: 550rpx;
}
}
.popup-detail-left-bottom {
width: calc(100% - 70rpx);
margin-left: 70rpx;
height: 230rpx;
2025-04-09 17:20:13 +08:00
// background-color: #fff
display: flex;
2025-04-07 17:34:20 +08:00
}
}
.popup-detail-right {
height: 100%;
width: 55%;
}
}
}
.ball-bgc {
background-color: #fff;
width: 90rpx;
height: 90rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
margin-left: 20rpx;
2025-05-08 17:34:54 +08:00
2025-04-07 17:34:20 +08:00
z-index: 1;
}
.ball-yellow {
background: linear-gradient(to top right, #FF9F00, #FFDF2A);
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
color: #A53600;
font-size: 25rpx;
}
2025-05-20 16:10:53 +08:00
2025-04-11 17:23:45 +08:00
.ball-yellow-big {
background: linear-gradient(to top right, #FF9F00, #FFDF2A);
width: 100rpx;
height: 100rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
color: #A53600;
font-size: 35rpx;
}
2025-05-20 16:10:53 +08:00
2025-05-08 17:34:54 +08:00
.ball-red-big {
2025-04-07 17:34:20 +08:00
background: #FF642F;
2025-05-08 17:34:54 +08:00
color: #fff;
2025-04-28 17:33:10 +08:00
width: 100rpx;
height: 100rpx;
2025-04-07 17:34:20 +08:00
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
2025-04-28 17:33:10 +08:00
font-size: 35rpx;
2025-04-07 17:34:20 +08:00
}
2025-04-08 17:33:14 +08:00
2025-05-08 17:34:54 +08:00
.ball-red {
background: #FF642F;
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
color: #fff;
font-size: 25rpx;
}
2025-04-08 17:33:14 +08:00
.ball-white {
background: linear-gradient(to bottom, #CBD9FD, #A2B7E0);
2025-04-07 17:34:20 +08:00
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
2025-04-08 17:33:14 +08:00
// color: #585858;
2025-04-07 17:34:20 +08:00
font-size: 25rpx;
}
2025-04-08 17:33:14 +08:00
2025-04-07 17:34:20 +08:00
.ball-green {
2025-04-09 17:20:13 +08:00
background: linear-gradient(to top, #ACE800, #55B718);
2025-04-07 17:34:20 +08:00
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
2025-04-08 17:33:14 +08:00
color: #fff;
2025-04-07 17:34:20 +08:00
font-size: 25rpx;
}
.ball-blue {
2025-04-08 17:33:14 +08:00
background: linear-gradient(to top, #0076ff, #00c9ff);
2025-04-07 17:34:20 +08:00
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
2025-04-08 17:33:14 +08:00
color: #fff;
2025-04-07 17:34:20 +08:00
font-size: 25rpx;
}
2025-04-08 17:33:14 +08:00
.title-button {
2025-04-07 17:34:20 +08:00
margin-right: 30rpx;
border: 2rpx solid #fff;
border-radius: 20rpx;
2025-04-09 17:20:13 +08:00
background: #00AEFF;
2025-04-07 17:34:20 +08:00
color: #fff;
padding: 10rpx 20rpx;
}
2025-04-08 17:33:14 +08:00
.title-button-red {
2025-04-07 17:34:20 +08:00
margin-right: 30rpx;
border: 2rpx solid #fff;
border-radius: 20rpx;
2025-04-09 17:20:13 +08:00
background: linear-gradient(to bottom, #FF8251, #F52E2C);
2025-04-07 17:34:20 +08:00
color: #fff;
padding: 10rpx 20rpx;
}
2025-04-09 17:20:13 +08:00
.swiper-down {
width: 100%;
height: calc(100% - 115rpx);
padding: 0 30rpx;
background-color: rgba(255, 255, 255, 0.5);
.swiper-flex {
display: flex;
margin: 30rpx 0;
margin-left: 10rpx;
}
.swiper-down-title {
font-weight: 500;
font-size: 30rpx;
}
.swiper-down-number {
font-weight: 700;
font-size: 30rpx;
}
.swiper-down-card {
width: 100%;
height: 200rpx;
background-color: rgba(255, 255, 255, 0.3);
border-radius: 20rpx;
box-shadow: 2rpx 4rpx 8rpx 2rpx rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
padding: 20rpx 0;
padding-left: 20rpx;
.swiper-down-text {
width: 50%;
// height: 40rpx;
padding-left: 20rpx;
display: flex;
align-items: center;
.swiper-down-text-left {
color: #596278;
}
}
}
.swiper-button {
width: 100%;
// background-color: #fff;
height: 110rpx;
display: flex;
justify-content: center;
align-items: center;
.button-father {
display: flex;
}
.swiper-button-white {
background: linear-gradient(to bottom, #D5E0F8, #ECF6FF);
border: 2rpx solid #fff;
border-radius: 20rpx;
width: 150rpx;
height: 70rpx;
display: flex;
justify-content: center;
align-items: center;
margin: 0 10rpx;
}
.swiper-button-blue {
background: linear-gradient(to bottom, #00C9FF, #0076FF);
border: 2rpx solid #fff;
border-radius: 20rpx;
width: 150rpx;
height: 70rpx;
display: flex;
justify-content: center;
align-items: center;
margin: 0 10rpx;
color: #fff;
}
.swiper-button-red {
background: linear-gradient(to bottom, #FF8251, #F52E2C);
border: 2rpx solid #fff;
border-radius: 20rpx;
width: 150rpx;
height: 70rpx;
display: flex;
justify-content: center;
align-items: center;
margin: 0 10rpx;
color: #fff;
}
}
}
2025-05-20 16:10:53 +08:00
2025-05-13 17:18:07 +08:00
.popup-detail-cal {
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(89, 109, 154, 0.4);
/* 添加毛玻璃效果 */
z-index: 999;
2025-05-20 16:10:53 +08:00
2025-05-13 17:18:07 +08:00
.popup-detail-content {
position: absolute;
right: 330rpx;
top: 140rpx;
display: flex;
width: 600rpx;
height: 900rpx;
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.5);
background-blend-mode: screen;
border: 2rpx solid #fff;
/* 使用 screen 混合模式,让图像与白色混合变淡 */
border-radius: 40rpx;
box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
transition: opacity 0.4s ease;
overflow: hidden;
}
}
2025-05-20 16:10:53 +08:00
.popup-detail-finish {
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(89, 109, 154, 0.4);
/* 添加毛玻璃效果 */
z-index: 1001;
.popup-detail-content {
position: absolute;
left: 350rpx;
top: 400rpx;
// left: 0;
// bottom: 0;
display: flex;
width: 1200rpx;
height: 700rpx;
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.5);
background-blend-mode: screen;
border: 2rpx solid #fff;
/* 使用 screen 混合模式,让图像与白色混合变淡 */
border-radius: 40rpx;
box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
transition: opacity 0.4s ease;
overflow: hidden;
}
}
.popup-detail-content-calculator {
position: absolute;
right: 100rpx;
top: 310rpx;
display: flex;
width: 650rpx;
height: 850rpx;
background-color: #fff;
border: 2rpx solid #fff;
border-radius: 30rpx;
box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
transition: opacity 0.4s ease;
overflow: hidden;
}
2025-04-07 17:34:20 +08:00
</style>