This commit is contained in:
wangweidong 2025-11-17 16:35:37 +08:00
commit 5f4c729e7d
12 changed files with 3055 additions and 176 deletions

View File

@ -2,21 +2,31 @@
<view class="calendar"> <view class="calendar">
<view class="header"> <view class="header">
<view class="header-title"> <view class="header-title">
<view class="year-month">{{ year }}{{ month + 1 }}</view> <view class="head-left">
<view class="botton-father"> <image class="head-img" src="/static/index/calendar/superleft.png" @click="prevYear" />
<view class="click-button" @click="prevMonth">上个月</view> <image class="head-img" src="/static/index/calendar/left.png" @click="prevMonth" />
<view class="click-button" @click="nextMonth">下个月</view>
</view> </view>
<view class="year-month">{{ year }}{{ month + 1 }}</view>
<view class="head-left">
<image class="head-img" src="/static/index/calendar/right.png" @click="nextMonth" />
<image class="head-img" src="/static/index/calendar/superright.png" @click="nextYear" />
</view>
</view> </view>
<view class="weekdays"> <view class="weekdays">
<view v-for="(day, idx) in weekdays" :key="idx" class="weekday">{{ day }}</view> <view v-for="(day, idx) in weekdays" :key="idx" class="weekday">{{ day }}</view>
</view> </view>
</view> </view>
<view class="days"> <view class="days">
<view v-for="cell in cells" :key="cell.key" class="day-cell" <view v-for="cell in cells" :key="cell.key" class="day-cell" :class="{
:class="{'prev-month': cell.prev,'next-month': cell.next,selected: isSelected(cell.key)}" 'prev-month': cell.prev,
@click="selectDate(cell)"> 'next-month': cell.next,
'start': isStart(cell.key),
'end': isEnd(cell.key),
'in-range': isInRange(cell.dateNumber)
}" @click="selectDate(cell)">
<view class="gregorian">{{ cell.dateText }}</view> <view class="gregorian">{{ cell.dateText }}</view>
<view class="lunar" v-if="cell.lunarText">{{ cell.lunarText }}</view> <view class="lunar" v-if="cell.lunarText">{{ cell.lunarText }}</view>
</view> </view>
@ -31,66 +41,182 @@
} from 'vue'; } from 'vue';
import solarlunar from 'solarlunar'; // npm install solarlunar import solarlunar from 'solarlunar'; // npm install solarlunar
//
const now = new Date(); const now = new Date();
const year = ref(now.getFullYear()); const year = ref(now.getFullYear());
const month = ref(now.getMonth()); const month = ref(now.getMonth()); // 0-based
// key // / key (: YYYY-MM-DD)
const selectedKey = ref(null); const startKey = ref(null);
const endKey = ref(null);
// // 便 YYYYMMDD
function toDateNumber(y, m, d) {
// m 0-base
const mm = m + 1;
return y * 10000 + mm * 100 + d;
}
// keym 0-base =>
function formatKey(y, m, d) {
const mm = String(m + 1).padStart(2, '0');
const dd = String(d).padStart(2, '0');
return `${y}-${mm}-${dd}`;
}
// ..
const weekdays = ['一', '二', '三', '四', '五', '六', '日']; const weekdays = ['一', '二', '三', '四', '五', '六', '日'];
// Monday = 0
const firstWeekdayOfMonth = (y, m) => { const firstWeekdayOfMonth = (y, m) => {
const d = new Date(y, m, 1).getDay(); const d = new Date(y, m, 1).getDay(); // 0 (Sun) - 6 (Sat)
return (d + 6) % 7; return (d + 6) % 7; // Monday=0 .. Sunday=6
}; };
const cells = computed(() => { // 6*7 (42) cells
function buildCells(y, m) {
const list = []; const list = [];
const prevMonthDate = new Date(year.value, month.value, 0); //
const prevYear = prevMonthDate.getFullYear(); const prevDate = new Date(y, m, 0); //
const prevMonth = prevMonthDate.getMonth(); const prevYear = prevDate.getFullYear();
const prevTotal = prevMonthDate.getDate(); const prevMonth = prevDate.getMonth();
const startOffset = firstWeekdayOfMonth(year.value, month.value); const prevTotal = prevDate.getDate();
const startOffset = firstWeekdayOfMonth(y, m);
//
for (let i = 0; i < startOffset; i++) { for (let i = 0; i < startOffset; i++) {
const day = prevTotal - startOffset + i + 1; const day = prevTotal - startOffset + i + 1;
const lunar = solarlunar.solar2lunar(prevYear, prevMonth + 1, day); const lunar = solarlunar.solar2lunar(prevYear, prevMonth + 1, day);
const dateNumber = toDateNumber(prevYear, prevMonth, day);
list.push({ list.push({
key: `prev-${prevYear}-${prevMonth + 1}-${day}`, key: `prev-${prevYear}-${prevMonth + 1}-${day}`,
dateText: day, dateText: day,
lunarText: lunar.dayCn, lunarText: lunar ? lunar.dayCn : '',
prev: true, prev: true,
next: false, next: false,
year: prevYear,
month: prevMonth,
day,
dateNumber,
}); });
} }
const totalDays = new Date(year.value, month.value + 1, 0).getDate();
//
const totalDays = new Date(y, m + 1, 0).getDate();
for (let d = 1; d <= totalDays; d++) { for (let d = 1; d <= totalDays; d++) {
const lunar = solarlunar.solar2lunar(year.value, month.value + 1, d); const lunar = solarlunar.solar2lunar(y, m + 1, d);
const dateNumber = toDateNumber(y, m, d);
list.push({ list.push({
key: `${year.value}-${month.value + 1}-${d}`, key: formatKey(y, m, d),
dateText: d, dateText: d,
lunarText: lunar.dayCn, lunarText: lunar ? lunar.dayCn : '',
prev: false, prev: false,
next: false, next: false,
year: y,
month: m,
day: d,
dateNumber,
}); });
} }
// 42
const need = 42 - list.length;
for (let i = 1; i <= need; i++) {
const nd = new Date(y, m + 1, i);
const ny = nd.getFullYear();
const nm = nd.getMonth();
const lunar = solarlunar.solar2lunar(ny, nm + 1, i);
const dateNumber = toDateNumber(ny, nm, i);
list.push({
key: `next-${ny}-${nm + 1}-${i}`,
dateText: i,
lunarText: lunar ? lunar.dayCn : '',
prev: false,
next: true,
year: ny,
month: nm,
day: i,
dateNumber,
});
}
return list; return list;
}
// cells
const cells = computed(() => buildCells(year.value, month.value));
// start/end 便
const startNumber = computed(() => {
if (!startKey.value) return null;
const [y, m, d] = startKey.value.split('-').map(Number);
return toDateNumber(y, m - 1, d);
});
const endNumber = computed(() => {
if (!endKey.value) return null;
const [y, m, d] = endKey.value.split('-').map(Number);
return toDateNumber(y, m - 1, d);
}); });
function isSelected(key) { // start / end
return selectedKey.value === key; function isStart(key) {
return startKey.value === key;
} }
function isEnd(key) {
return endKey.value === key;
}
//
function isInRange(dateNumber) {
if (!startNumber.value || !endNumber.value) return false;
return dateNumber >= startNumber.value && dateNumber <= endNumber.value;
}
const emit = defineEmits(["datachange"]); //
//
function selectDate(cell) { function selectDate(cell) {
if (cell.prev) { // console.log("ZZZZ",isInRange(cell.dateNumber))
return if (cell.prev || cell.next) return
const key = formatKey(cell.year, cell.month, cell.day);
const num = cell.dateNumber;
// start -> start
if (!startKey.value) {
startKey.value = key;
endKey.value = null;
return;
} }
selectedKey.value = cell.key;
// // start end
console.log('Selected date:', cell.key); if (startKey.value && !endKey.value) {
// start -> end
if (num >= startNumber.value) {
endKey.value = key;
// console.log(",", startKey.value, endKey.value)
emit("datachange", {
start: startKey.value,
end: endKey.value,
});
return;
}
// start -> start end
endKey.value = startKey.value;
startKey.value = key;
// console.log(",", startKey.value, endKey.value)
emit("datachange", {
start: startKey.value,
end: endKey.value,
});
return;
}
// start end -> start end
startKey.value = key;
endKey.value = null;
} }
// /
function prevMonth() { function prevMonth() {
if (month.value === 0) { if (month.value === 0) {
year.value--; year.value--;
@ -108,89 +234,97 @@
month.value++; month.value++;
} }
} }
function prevYear() {
year.value--;
}
function nextYear() {
year.value++;
}
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.calendar { .calendar {
padding: 16px; padding: 16px;
background: #fff;
border-radius: 30rpx;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
// max-width: 720rpx;
margin: 0 auto;
} }
.header { .header {
width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.header-title { .header-title {
width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 10rpx;
} }
.year-month { .year-month {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
margin-bottom: 8px;
} }
.botton-father {
display: flex;
margin-top: -20rpx;
}
.click-button {
padding: 10rpx;
width: 120rpx;
font-size: 25rpx;
height: 40rpx;
margin-right: 10rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background-color: #888;
border-radius: 10rpx;
}
.weekdays { .weekdays {
display: flex; display: flex;
background-color: #E9E7FC; background-color: #F8F8FA;
border-radius: 30rpx; border-radius: 18rpx;
padding: 10rpx; padding: 8rpx;
margin-top: 8rpx;
} }
.weekday { .weekday {
flex: 1; flex: 1;
text-align: center; text-align: center;
font-size: 12px;
} }
.days { .days {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
padding: 10rpx; padding: 8rpx 0;
} }
.day-cell { .day-cell {
width: 73.5rpx; width: calc(100% / 7);
height: 80.5rpx; height: 78rpx;
text-align: center; text-align: center;
padding-top: 8rpx; padding-top: 8rpx;
padding-bottom: 8rpx;
box-sizing: border-box; box-sizing: border-box;
position: relative;
} }
/* 前后月份灰色显示 */
.day-cell.prev-month .gregorian, .day-cell.prev-month .gregorian,
.day-cell.next-month .gregorian { .day-cell.next-month .gregorian {
color: #ccc; color: #ccc;
} }
/* 选中样式 */ /* 范围内(中间)样式 */
.day-cell.selected { .day-cell.in-range {
background-color: #0B98DC; background-color: #E6F7FF;
border-radius: 10rpx;
} }
.day-cell.selected .gregorian, /* 开始/结束 的样式 */
.day-cell.selected .lunar { .day-cell.start,
.day-cell.end {
background-color: #0B98DC;
border-radius: 8rpx;
}
.day-cell.start .gregorian,
.day-cell.end .gregorian,
.day-cell.start .lunar,
.day-cell.end .lunar {
color: #fff; color: #fff;
} }
@ -202,4 +336,13 @@
font-size: 10px; font-size: 10px;
color: #888; color: #888;
} }
.head-left{
width: 100rpx;
display: flex;
justify-content: space-between;
.head-img{
width: 40rpx;
height: 40rpx;
}
}
</style> </style>

View File

@ -182,6 +182,13 @@
"navigationStyle": "custom" "navigationStyle": "custom"
} }
},
{
"path": "pages/Warehouse/paymoney",
"style": {
"navigationStyle": "custom"
}
}, },
{ {
"path": "pages/Warehouse/procurecart", "path": "pages/Warehouse/procurecart",

View File

@ -27,9 +27,9 @@
<view v-for="(item,index) in bodyTagList" :key="index" @click="addbody(index)"> <view v-for="(item,index) in bodyTagList" :key="index" @click="addbody(index)">
<view class="tags-father" :class="bodystatustarget===index?'secondtarget':''"> <view class="tags-father" :class="bodystatustarget===index?'secondtarget':''">
<image class="tags-img" <image class="tags-img"
:src="item.izSelected==`1`?item.netPicFocus: item.netPic" /> :src="item.izSelected==`Y`?item.netPicFocus: item.netPic" />
<view class="tags-font" <view class="tags-font"
:style="item.izSelected==`1`?{color:`rgb(54, 159, 239)`}:{}"> :style="item.izSelected==`Y`?{color:`rgb(54, 159, 239)`}:{}">
{{item.tagName}} {{item.tagName}}
</view> </view>
</view> </view>
@ -62,9 +62,9 @@
<view v-for="(item,index) in emotionTagList" :key="index" @click="addface(index)"> <view v-for="(item,index) in emotionTagList" :key="index" @click="addface(index)">
<view class="tags-father" :class="facestatustarget===index?'secondtarget':''"> <view class="tags-father" :class="facestatustarget===index?'secondtarget':''">
<image class="tags-img" <image class="tags-img"
:src="item.izSelected==`1`?item.netPicFocus: item.netPic" /> :src="item.izSelected==`Y`?item.netPicFocus: item.netPic" />
<view class="tags-font" <view class="tags-font"
:style="item.izSelected==`1`?{color:`rgb(54, 159, 239)`}:{}"> :style="item.izSelected==`Y`?{color:`rgb(54, 159, 239)`}:{}">
{{item.tagName}} {{item.tagName}}
</view> </view>
</view> </view>
@ -420,7 +420,7 @@
<!-- 点击的弹出层 --> <!-- 点击的弹出层 -->
<view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999;touchindex1=-1"> <view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999;touchindex1=-1">
<view class="popup-overlay-content" style="height: 390rpx;" :class="getjiao" <view class="popup-overlay-content" style="height: 390rpx;" :class="getjiao"
v-if="timearr[showDetail[0]]?.children[showDetail[1]]?.izPackage=='0'" v-if="timearr[showDetail[0]]?.children[showDetail[1]]?.izPackage=='N'"
:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0 }" :style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0 }"
@click.stop> @click.stop>
<view class="popup-overlay-content-left"> <view class="popup-overlay-content-left">
@ -824,15 +824,15 @@
const bodytarget = ref([]); const bodytarget = ref([]);
const facetarget = ref([]); const facetarget = ref([]);
const addbody = (index : number) => { const addbody = (index : number) => {
if (bodyTagList.value[index].izSelected == '1') { if (bodyTagList.value[index].izSelected == 'Y') {
// console.log("///",bodyTagList.value[index]) // console.log("///",bodyTagList.value[index])
// return // return
bodyTagList.value[index].izSelected = '0'; bodyTagList.value[index].izSelected = 'N';
} else { } else {
let targetNumber = 0; let targetNumber = 0;
bodyTagList.value.forEach((element : any) => { bodyTagList.value.forEach((element : any) => {
if (element.izSelected == '1') { if (element.izSelected == 'Y') {
targetNumber++ targetNumber++
} }
}) })
@ -845,18 +845,18 @@
}) })
return return
} else { } else {
bodyTagList.value[index].izSelected = '1'; bodyTagList.value[index].izSelected = 'Y';
} }
} }
saveAll() saveAll()
} }
const addface = (index : number) => { const addface = (index : number) => {
if (emotionTagList.value[index].izSelected == '1') { if (emotionTagList.value[index].izSelected == 'Y') {
emotionTagList.value[index].izSelected = '0' emotionTagList.value[index].izSelected = 'N'
} else { } else {
let targetNumber = 0; let targetNumber = 0;
emotionTagList.value.forEach((element : any) => { emotionTagList.value.forEach((element : any) => {
if (element.izSelected == '1') { if (element.izSelected == 'Y') {
targetNumber++ targetNumber++
} }
}) })
@ -869,7 +869,7 @@
}) })
return return
} else { } else {
emotionTagList.value[index].izSelected = '1'; emotionTagList.value[index].izSelected = 'Y';
} }
} }
saveAll() saveAll()
@ -1796,7 +1796,7 @@
serviceDuration: allobject.serviceDuration, serviceDuration: allobject.serviceDuration,
positioning: saveEditIndex.value.index0.toString(), positioning: saveEditIndex.value.index0.toString(),
positioningLong: saveEditIndex.value.index1.toString(), positioningLong: saveEditIndex.value.index1.toString(),
izPackage: '1', izPackage: 'Y',
previewFile: "", previewFile: "",
previewFileSmall: "", previewFileSmall: "",
immediateFile: "", immediateFile: "",
@ -1942,7 +1942,7 @@
endTime: formattedEnd, endTime: formattedEnd,
positioning: saveEditIndex.value.index0.toString(), positioning: saveEditIndex.value.index0.toString(),
positioningLong: saveEditIndex.value.index1.toString(), positioningLong: saveEditIndex.value.index1.toString(),
izPackage: '0', izPackage: 'N',
previewFile: allobject.previewFile, previewFile: allobject.previewFile,
previewFileSmall: allobject.previewFileSmall, previewFileSmall: allobject.previewFileSmall,
serviceDuration: allobject.serviceDuration, serviceDuration: allobject.serviceDuration,
@ -1996,12 +1996,12 @@
let info = [] let info = []
bodyTagList.value.forEach((element : any) => { bodyTagList.value.forEach((element : any) => {
if (element.izSelected == '1') { if (element.izSelected == 'Y') {
info.push(element) info.push(element)
} }
}) })
emotionTagList.value.forEach((element : any) => { emotionTagList.value.forEach((element : any) => {
if (element.izSelected == '1') { if (element.izSelected == 'Y') {
info.push(element) info.push(element)
} }
}) })
@ -2103,14 +2103,14 @@
emotionTagListLook.value = [] emotionTagListLook.value = []
bodyTagListLook.value = [] bodyTagListLook.value = []
res.result.emotionTagList.forEach((res : any) => { res.result.emotionTagList.forEach((res : any) => {
if (res.izSelected == '1') { if (res.izSelected == 'Y') {
emotionTagListLook.value.push(res.netPic) emotionTagListLook.value.push(res.netPic)
} }
}) })
bodyTagList.value = res.result.bodyTagList bodyTagList.value = res.result.bodyTagList
// console.log("zzzz",res.result.bodyTagList) // console.log("zzzz",res.result.bodyTagList)
res.result.bodyTagList.forEach((res : any) => { res.result.bodyTagList.forEach((res : any) => {
if (res.izSelected == '1') { if (res.izSelected == 'Y') {
bodyTagListLook.value.push(res.netPic) bodyTagListLook.value.push(res.netPic)
} }
}) })
@ -2214,7 +2214,7 @@
endTime: "", endTime: "",
positioning: "", positioning: "",
positioningLong: "", positioningLong: "",
izPackage: '0', izPackage: 'N',
previewFile: "", previewFile: "",
previewFileSmall: "", previewFileSmall: "",
serviceDuration: "", serviceDuration: "",

View File

@ -34,7 +34,7 @@
</view> </view>
<view @click="onlyjump(5)" class="zhanwei"></view> <view @click="onlyjump(5)" class="zhanwei"></view>
<arrowkeys @movecard="movecard" :getblue="getblue" :moveleft="45" /> <!-- <arrowkeys @movecard="movecard" :getblue="getblue" :moveleft="45" /> -->
<view class="operationbtn"> <view class="operationbtn">
<view v-for="(v,i) in ['请领出库','退货入库','库存盘点','实时监控']" @tap="onTap(i)" <view v-for="(v,i) in ['请领出库','退货入库','库存盘点','实时监控']" @tap="onTap(i)"
:class="beblue === i ? 'click-box-target' : 'click-box'"> :class="beblue === i ? 'click-box-target' : 'click-box'">
@ -61,8 +61,15 @@
const housedex = ref(-1); const housedex = ref(-1);
const housactive = (index : number) => { const housactive = (index : number) => {
console.log("点击哪个了",index)
if (index > 5) { return } if (index > 5) { return }
if(housedex.value == index){ if(housedex.value == index){
if (housedex.value == 0) {
navurl.value = 'pages/Warehouse/paymoney'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (housedex.value == 1) { if (housedex.value == 1) {
navurl.value = 'pages/procurement/material' navurl.value = 'pages/procurement/material'
uni.navigateTo({ uni.navigateTo({

View File

@ -135,4 +135,19 @@ export const updateWarehouserEnabled = (params) => {
method: 'post', method: 'post',
data: params, data: params,
}) })
}
//获得采购人
export const getCgrLis = () => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/invoicing/getCgrList`,
method: 'get'
})
}
//获得采购人
export const getGysList = () => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/invoicing/getGysList`,
method: 'get'
})
} }

View File

@ -199,7 +199,7 @@
</view> </view>
</view> </view>
<view <view
style="width: 95%;height: 0.5rpx; background-color: #eff1f3;margin-top: 10rpx;margin-bottom: 5rpx;"> style="width: 95%;height: 0.5rpx;background-color: #eff1f3;margin-top: 10rpx;margin-bottom: 5rpx;">
</view> </view>
</view> </view>
<view style=""> <view style="">
@ -322,7 +322,7 @@
</text> </text>
</view> </view>
</view> </view>
<view class="photowall-other-one" v-if="topbuttontarget==1"> <!-- <view class="photowall-other-one" v-if="topbuttontarget==1">
<view <view
style="width: 100%;height: 70%;display: flex;flex-direction: column;justify-content: center;align-items: center;background-color:#fafdff ;border: 1rpx solid #78B1EB;border-radius: 30rpx;"> style="width: 100%;height: 70%;display: flex;flex-direction: column;justify-content: center;align-items: center;background-color:#fafdff ;border: 1rpx solid #78B1EB;border-radius: 30rpx;">
@ -332,7 +332,7 @@
点击拍照上传 点击拍照上传
</view> </view>
</view> </view>
</view> </view> -->
</view> </view>
</view> </view>
<view class="contain-left"> <view class="contain-left">

2636
pages/Warehouse/paymoney.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,11 @@
<template> <template>
<view class="contain"> <view class="contain">
<view v-show="moreindex!=-1 || topbuttontarget!=-1 || openjianhuo || opengaijia" class="mengban" <view v-show="moreindex!=-1 || topbuttontarget!=-1 || openjianhuo || opengaijia || opendata || opencgr " class="mengban"
@click="moreindex=-1; topbuttontarget=-1;openjianhuo=false;opengaijia=false"></view> @click="moreindex=-1; topbuttontarget=-1;openjianhuo=false;opengaijia=false;opendata=false;opencgr=false"></view>
<!-- 日期 -->
<view class="calendar-father" v-show="opendata">
<calendar @datachange="dateget" />
</view>
<!-- 改价 --> <!-- 改价 -->
<view class="gaijiafather" v-show="opengaijia" :style="donghuaopo?{opacity:1}:{opacity:0}"> <view class="gaijiafather" v-show="opengaijia" :style="donghuaopo?{opacity:1}:{opacity:0}">
<view style="width: 100%;margin-top: 50rpx;font-size: 30rpx;"> <view style="width: 100%;margin-top: 50rpx;font-size: 30rpx;">
@ -182,8 +185,9 @@
</view> </view>
</view> </view>
<view style="display: flex;flex-wrap: wrap;width: 60%;"> <view style="display: flex;flex-wrap: wrap;width: 60%;">
<view style="width: 40%;height: 150rpx;margin-right: 4%;margin-top: 3%;background-color: #F9F9F9;display: flex;justify-content: center;align-items: center;border-radius: 20rpx;" v-for="(item,index) in [1,1,1]" <view
:key="index"> style="width: 40%;height: 150rpx;margin-right: 4%;margin-top: 3%;background-color: #F9F9F9;display: flex;justify-content: center;align-items: center;border-radius: 20rpx;"
v-for="(item,index) in [1,1,1]" :key="index">
<image style="width: 38%;height: 55%;" src="/static/zhanwei.png" /> <image style="width: 38%;height: 55%;" src="/static/zhanwei.png" />
</view> </view>
<view style="width: 40%;height: 150rpx;margin-right: 4%;margin-top: 3%;"> <view style="width: 40%;height: 150rpx;margin-right: 4%;margin-top: 3%;">
@ -342,8 +346,8 @@
</view> </view>
<view class="bottom-right"> <view class="bottom-right">
确定 确定
<text style="font-size: 25rpx;margin-top: 5rpx;"> <text style="font-size: 25rpx;margin-top: 5rpx;" v-if="alltotal>=99">
(10+采购单) (99+采购单)
</text> </text>
</view> </view>
@ -352,38 +356,47 @@
采购单状态 采购单状态
</view> </view>
<view class="more-statues-father"> <view class="more-statues-father">
<view :class="!typestatues?`more-statues-button-target`:`more-statues-button`" <view :class="plzinfo.cgdType==`0,1`?`more-statues-button-target`:`more-statues-button`"
@click="typestatues=0"> @click="plzinfo.cgdType=`0,1`;search()">
全部 全部
</view> </view>
<view :class="typestatues==1?`more-statues-button-target`:`more-statues-button`" <view :class="plzinfo.cgdType==`0`?`more-statues-button-target`:`more-statues-button`"
@click="typestatues=1"> @click="plzinfo.cgdType=`0`;search()">
待入库 待入库
</view> </view>
<view :class="typestatues==2?`more-statues-button-target`:`more-statues-button`" <view :class="plzinfo.cgdType==`1`?`more-statues-button-target`:`more-statues-button`"
@click="typestatues=2"> @click="plzinfo.cgdType=`1`;search()">
待完结 待完结
</view> </view>
</view> </view>
<view class="more-time"> <view class="more-time">
采购日期 采购日期
</view> </view>
<view class="more-time-select"> <view class="more-time-select" @click="opendata=!opendata">
<view class="more-gray"> <view class="more-gray" v-show="!plzinfo.startTime">
开始日期 开始日期
</view> </view>
<view class="more-black" v-show="plzinfo.startTime">
{{ plzinfo.startTime }}
</view>
<view style="font-size: 32rpx;"> <view style="font-size: 32rpx;">
</view> </view>
<view class="more-gray"> <view class="more-gray" v-show="!plzinfo.endTime">
结束日期 结束日期
</view> </view>
<view class="more-black" v-show="plzinfo.endTime">
{{ plzinfo.endTime }}
</view>
<image class="more-img" src="/static/index/warehouse/procurement/picking/data.png" /> <image class="more-img" src="/static/index/warehouse/procurement/picking/data.png" />
</view> </view>
<view class="more-select"> <view class="more-select">
采购人 采购人
</view> </view>
<view class="more-time-select"> <view class="more-time-select" @click="opencgr=true">
<view class="more-gray" style="margin-left: 30rpx;"> <view class="more-gray" style="margin-left: 30rpx;">
请输入采购人 请输入采购人
</view> </view>
@ -392,7 +405,7 @@
<view class="more-select"> <view class="more-select">
供应商 供应商
</view> </view>
<view class="more-time-select"> <view class="more-time-select" @click="opengys=true">
<view class="more-gray" style="margin-left: 30rpx;"> <view class="more-gray" style="margin-left: 30rpx;">
请输入供应商 请输入供应商
</view> </view>
@ -400,10 +413,10 @@
</view> </view>
</view> </view>
<view class="title-input-father"> <view class="title-input-father">
<input class="title-input" type="text" v-model="searchValue" maxlength="15" placeholder="采购单号/采购日期/供应商" <input class="title-input" type="text" v-model="plzinfo.cgdParamInfo" maxlength="15"
@confirm="search()" /> placeholder="采购单号/采购日期/供应商" @confirm="search()" />
<image v-show="searchValue" class="title-input-img" src="@/static/x.png" <image v-show="plzinfo.cgdParamInfo" class="title-input-img" src="@/static/x.png"
@click="searchValue='';search()" /> @click="plzinfo.cgdParamInfo='';search()" />
<view class="title-input-button" @click="search()"> <view class="title-input-button" @click="search()">
检索 检索
</view> </view>
@ -419,27 +432,27 @@
<view class="statues-gray"> <view class="statues-gray">
单据状态 单据状态
</view> </view>
<view :class="!typestatues?`statues-button-target`:`statues-button`" style="margin-left: 4%;" <view :class="plzinfo.cgdType==`0,1`?`statues-button-target`:`statues-button`" style="margin-left: 4%;"
@click="typestatues=0"> @click="plzinfo.cgdType=`0,1`;search()">
全部 全部
</view> </view>
<view :class="typestatues==1?`statues-button-target`:`statues-button`" @click="typestatues=1"> <view :class="plzinfo.cgdType==`0`?`statues-button-target`:`statues-button`"
@click="plzinfo.cgdType=`0`;search()">
待入库 待入库
</view> </view>
<view :class="typestatues==2?`statues-button-target`:`statues-button`" @click="typestatues=2"> <view :class="plzinfo.cgdType==`1`?`statues-button-target`:`statues-button`"
@click="plzinfo.cgdType=`1`;search()">
待完结 待完结
</view> </view>
</view> </view>
<view class="left-menu-father"> <view class="left-menu-father">
<scroll-view scroll-y="true" scroll-with-animation class="left-menu-scroll" :scroll-top="leftscrolltop" <scroll-view scroll-y="true" scroll-with-animation class="left-menu-scroll" :scroll-top="leftscrolltop"
@scrolltolower="plsbuytolower" :lower-threshold="400"> @scrolltolower="plsbuytolower" :lower-threshold="400">
<view class="pls-card" v-for="(v,i) in [1,1,1]" :key='i' @click="clickLeftMenu(i)" <view class="pls-card" v-for="(v,i) in plsbuy" :key='i' @click="clickLeftMenu(i)"
:style="{borderColor: i==lefttarget? ``:`#fff` }"> :style="{borderColor: i==lefttarget? ``:`#fff` }">
<view class="pls-card-title"> <view class="pls-card-title">
<view class="title-left"> <view class="title-left">
10120251023012 {{ v.cgdNo }}
</view> </view>
<view class="title-right"> <view class="title-right">
<text style="position: absolute;bottom: 4rpx;left: -30rpx;"> <text style="position: absolute;bottom: 4rpx;left: -30rpx;">
@ -447,17 +460,15 @@
</text> </text>
<view class="title-right-big"> <view class="title-right-big">
800.55 {{ v.totalPrice.toFixed(2) }}
</view> </view>
<!-- <image class="title-right-img" src="/static/more.png" @click="openmore(i)" /> -->
</view> </view>
</view> </view>
<view class="pls-card-middle"> <view class="pls-card-middle">
<view class="pls-card-middle-one"> <view class="pls-card-middle-one">
<view class="middle-title"> <view class="middle-title">
2025.10.03 {{ v.qgDate }}
</view> </view>
<view class="middle-heng-father"> <view class="middle-heng-father">
<view class="middle-heng" <view class="middle-heng"
@ -478,29 +489,28 @@
采购 采购
</view> </view>
<view style="font-size: 25rpx;"> <view style="font-size: 25rpx;">
[ 梁嘉豪 ] {{ "[ " + v.qgBy + " ]" }}
</view> </view>
</view> </view>
</view> </view>
<view class="pls-card-middle-one"> <view class="pls-card-middle-one">
<view class="middle-title"> <view class="middle-title">
{{ i==1 ?``:`2025.10.04` }} {{ v.jhTime }}
</view> </view>
<view class="middle-heng-father"> <view class="middle-heng-father">
<view class="middle-heng"></view> <view class="middle-heng"></view>
<!-- <view class="middle-heng" <!-- <view class="middle-heng"
style="border-radius: 20rpx;background-color: #1083F8;width: 105%;margin-left: -5%;"> style="border-radius: 20rpx;background-color: #1083F8;width: 105%;margin-left: -5%;">
</view> --> </view> -->
<view class="middle-heng" v-if="i!=1 " <view class="middle-heng" v-if="Number(v.status)==1"
style="border-radius: 20rpx;background-color: #1083F8;width: 105%;margin-left: -5%;"> style="border-radius: 20rpx;background-color: #1083F8;width: 105%;margin-left: -5%;">
</view> </view>
<view class="middle-ball" <view class="middle-ball"
:style="i!=1?{backgroundColor: `#1083F8`}:{} "> :style="Number(v.status)==1?{backgroundColor: `#1083F8`}:{} ">
</view> </view>
<!-- <view class="middle-ball" :style="{backgroundColor: `#1083F8`}"></view> --> <!-- <view class="middle-ball" :style="{backgroundColor: `#1083F8`}"></view> -->
<view class="middle-ball" <view class="middle-ball"
:style="i!=1?{backgroundColor: `#1083F8`}:{} "> :style="Number(v.status)==1?{backgroundColor: `#1083F8`}:{} ">
</view> </view>
</view> </view>
<view class="end-font"> <view class="end-font">
@ -508,11 +518,11 @@
:style="Number(v.status)<3 && Number(v.status)>0?{color: `#1083F8`}:{} "> :style="Number(v.status)<3 && Number(v.status)>0?{color: `#1083F8`}:{} ">
拣货 拣货
</view> --> </view> -->
<view class="" :style="i!=1?{color: `#1083F8`}:{}"> <view class="" :style="Number(v.status)==1?{color: `#1083F8`}:{}">
拣货 拣货
</view> </view>
<view style="font-size: 25rpx;" v-if="i!=1 "> <view style="font-size: 25rpx;" v-if="Number(v.status)==1 && v.jhBy">
[ 梁嘉豪 ] {{ "[ " + v.jhBy + " ]" }}
</view> </view>
</view> </view>
</view> </view>
@ -523,16 +533,12 @@
<view class="middle-heng" <view class="middle-heng"
style="border-top-right-radius: 20rpx;border-bottom-right-radius: 20rpx;"> style="border-top-right-radius: 20rpx;border-bottom-right-radius: 20rpx;">
</view> </view>
<view class="middle-heng" v-if="Number(v.status)<3 && Number(v.status)>1 "
style="border-radius: 20rpx;background-color: #1083F8;width: 105%;margin-left: -5%;"> <view class="middle-ball">
</view>
<view class="middle-ball"
:style="Number(v.status)<3 && Number(v.status)>1?{backgroundColor: `#1083F8`}:{} ">
</view> </view>
</view> </view>
<view class="end-font"> <view class="end-font">
<view class="" <view class="">
:style="Number(v.status)<3 && Number(v.status)>1?{color: `#1083F8`}:{} ">
完结 完结
</view> </view>
<view class=""> <view class="">
@ -544,7 +550,7 @@
<view class="end-left"> <view class="end-left">
<image class="end-left-img" src="/static/shili.png" /> <image class="end-left-img" src="/static/shili.png" />
<view class="end-left-font"> <view class="end-left-font">
长春市天林商贸有限公司 {{ v.gysId_dictText }}
</view> </view>
</view> </view>
<!-- <view :class="v?.cgdType=='9' ?`tag-fail`:`tag-success`"> <!-- <view :class="v?.cgdType=='9' ?`tag-fail`:`tag-success`">
@ -552,8 +558,8 @@
{{ tagesstatues[Number(v.status)] }} {{ tagesstatues[Number(v.status)] }}
</view> --> </view> -->
<view class="tag-success"> <view class="tag-success">
{{ i==1?`待入库`:`待完结` }} {{ tagesstatues[Number(v.status)] }}
</view> </view>
</view> </view>
</view> </view>
@ -629,7 +635,8 @@
</text> </text>
<text style="font-size: 30rpx;" :style="{fontWeight:middletarget !== i?`600`:``}"> <text style="font-size: 30rpx;"
:style="{fontWeight:middletarget !== i?`600`:``}">
{{ i==0 ? '15.30' {{ i==0 ? '15.30'
: i==1 ? '86.16' : i==1 ? '86.16'
: i==2 ? '189.55' : i==2 ? '189.55'
@ -643,10 +650,11 @@
:style="{fontWeight:middletarget === i?`600`:``,color:middletarget === i?``:`#888888`}"> :style="{fontWeight:middletarget === i?`600`:``,color:middletarget === i?``:`#888888`}">
20 20
</text> </text>
<text style="position: absolute;right: -10rpx;font-size: 26rpx;bottom: 2rpx;color: #888888;"> <text
style="position: absolute;right: -10rpx;font-size: 26rpx;bottom: 2rpx;color: #888888;">
</text> </text>
</view> </view>
</view> </view>
@ -878,11 +886,11 @@
<text style="color: #888888;"> <text style="color: #888888;">
采购数量 采购数量
</text> </text>
<text style="font-weight: 600;"> <text style="font-weight: 600;">
100 100
</text> </text>
</view> </view>
</view> </view>
@ -900,7 +908,7 @@
<text style="color: black;"> <text style="color: black;">
</text> </text>
</view> </view>
<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;"> 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;">
@ -1000,6 +1008,7 @@
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view :class="['neuro-wrapper', donghuacs ? 'is-active' : '']" v-show="badshow"> <view :class="['neuro-wrapper', donghuacs ? 'is-active' : '']" v-show="badshow">
<view class="neuro-mask" @click="badshow=false;"></view> <view class="neuro-mask" @click="badshow=false;"></view>
@ -1016,19 +1025,22 @@
</view> </view>
</view> </view>
</view> </view>
<u-select v-model="opencgr" :list="cgrlist" label-name="cgBy" value-name="cgBy" ></u-select>
<u-select v-model="opengys" :list="gyslist" label-name="suppliersName" value-name="suppliers" ></u-select>
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineProps, onUnmounted } from 'vue'; import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick, defineProps, onUnmounted } from 'vue';
import { queryInvoicingList, getCgdMaterialTreeData, queryNuInfoByNuId, updateKfstatus, queryCgdList, queryCgdInfoList, queryWlInfoByWlId, voidedCgdMain } from './api/lunpan.js' import { queryInvoicingList, getCgdMaterialTreeData, queryNuInfoByNuId, updateKfstatus, queryCgdList, queryCgdInfoList, queryWlInfoByWlId, voidedCgdMain, getCgrLis, getGysList } from './api/lunpan.js'
import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app" import { onShow, onLoad, onHide, onPageScroll } from "@dcloudio/uni-app"
import calendar from '@/component/public/calendar.vue'
const typechange = ref(0); const typechange = ref(0);
const serverUrl = ref(""); const serverUrl = ref("");
const opengaijia = ref(false); const opengaijia = ref(false);
const openjianhuo = ref(false); const openjianhuo = ref(false);
const opendata = ref(false);
const openjianhuoclick = () => { const openjianhuoclick = () => {
openjianhuo.value = true; openjianhuo.value = true;
@ -1037,13 +1049,7 @@
donghuaopo.value = true; donghuaopo.value = true;
}, 100) }, 100)
} }
// const opengaijiaclick = () => {
// opengaijia.value = true;
// donghuaopo.value = false;
// setTimeout(() => {
// donghuaopo.value = true;
// }, 100)
// }
const opengaijiaclick = () => { const opengaijiaclick = () => {
opengaijia.value = true; opengaijia.value = true;
donghuaopo.value = false; donghuaopo.value = false;
@ -1054,13 +1060,28 @@
onLoad(() => { onLoad(() => {
firstgetqueryCgdList(); firstgetqueryCgdList();
serverUrl.value = uni.getStorageSync('serverUrl') + '/sys/common/static/'; serverUrl.value = uni.getStorageSync('serverUrl') + '/sys/common/static/';
getSelectList();
}) })
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 openselect = ref(false);
const searchValue = ref(""); const searchValue = ref("");
const middletarget = ref(0); const middletarget = ref(0);
const tagesstatues = ["待采购", "拣货", "完结", "作废"]; const tagesstatues = ["待入库", "待完结"];
const topbuttontarget = ref(-1); const topbuttontarget = ref(-1);
@ -1069,21 +1090,44 @@
const plzinfo = reactive({ const plzinfo = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
canpull: true canpull: true,
cgdParamInfo: "",
suppliers: "",
cgdType: "0,1",
startTime: "",
endTime: "",
cgBy: "",
}) })
const mobanplzinfo = { const mobanplzinfo = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
canpull: true canpull: true,
cgdParamInfo: "",
suppliers: "",
cgdType: "0,1",
startTime: "",
endTime: "",
cgBy: "",
}
type datetype = {
start : string,
end : string
}
const dateget = (res : datetype) => {
plzinfo.startTime = res.start;
plzinfo.endTime = res.end;
search()
} }
const leftscrolltop = ref(0) const leftscrolltop = ref(0)
const plsbuy = ref([]) const plsbuy = ref([])
const alltotal = ref(0);
const firstgetqueryCgdList = () => { const firstgetqueryCgdList = () => {
queryCgdList(plzinfo).then((res : any) => { queryCgdList(plzinfo).then((res : any) => {
plsbuy.value.push(...res.result.records) plsbuy.value.push(...res.result.records)
console.log("zzzz", plsbuy.value) alltotal.value = res.result.total
// console.log("zzzz", res.result.total)
if (res.result.records.length) { if (res.result.records.length) {
form.cgdId = plsbuy.value[0].id form.cgdId = plsbuy.value[0].id
queryInvo(); queryInvo();
@ -1112,7 +1156,7 @@
if (!plzinfo.canpull) return if (!plzinfo.canpull) return
queryCgdList(plzinfo).then((res : any) => { queryCgdList(plzinfo).then((res : any) => {
plsbuy.value.push(...res.result.records) plsbuy.value.push(...res.result.records)
alltotal.value = res.result.total
if (res.result.records.length < plzinfo.pageSize) { if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false; plzinfo.canpull = false;
} }
@ -1182,12 +1226,10 @@
const InvoicingList = ref([]) const InvoicingList = ref([])
const queryInvo = () => { const queryInvo = () => {
queryCgdInfoList(form).then(res => { queryCgdInfoList(form).then(res => {
if (res.result.records.length == 1) { // if (res.result.records.length == 1) {
InvoicingList.value.push(...res.result.records); // InvoicingList.value.push(...res.result.records);
InvoicingList.value.push(...res.result.records);
InvoicingList.value.push(...res.result.records); // }
InvoicingList.value.push(...res.result.records);
}
InvoicingList.value.push(...res.result.records); InvoicingList.value.push(...res.result.records);
clickmiddle(0); clickmiddle(0);
@ -1207,13 +1249,24 @@
} }
const search = () => { const search = () => {
// if (!searchValue.value) return // if (!plzinfo.cgdParamInfo) return
form.pageNo = 1; plzinfo.pageNo = 1;
InvoicingList.value = []; plsbuy.value = [];
middletarget.value = 0; queryCgdList(plzinfo).then((res : any) => {
form.wlParamInfo = searchValue.value; plsbuy.value.push(...res.result.records)
form.cgdId = plsbuy.value[lefttarget.value].id alltotal.value = res.result.total
queryInvo(); if (res.result.records.length) {
form.cgdId = plsbuy.value[0].id
queryInvo();
}
if (res.result.records.length < plzinfo.pageSize) {
plzinfo.canpull = false;
}
})
// middletarget.value = 0;
// form.wlParamInfo = searchValue.value;
// form.cgdId = plsbuy.value[lefttarget.value].id
// queryInvo();
} }
const moreindex = ref(-1); const moreindex = ref(-1);
const zuofeiindex = ref(-1); const zuofeiindex = ref(-1);
@ -1439,7 +1492,7 @@
} }
.bottom-right { .bottom-right {
padding: 0 30rpx; padding: 0 50rpx;
height: 80rpx; height: 80rpx;
color: #0385FA; color: #0385FA;
border: 1rpx solid #0385FA; border: 1rpx solid #0385FA;
@ -1488,6 +1541,14 @@
align-items: center; align-items: center;
} }
.more-black {
font-size: 28rpx;
width: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.more-img { .more-img {
width: 35rpx; width: 35rpx;
height: 35rpx; height: 35rpx;
@ -2619,7 +2680,7 @@
@keyframes colorScale { @keyframes colorScale {
0% { 0% {
color: #1083F8 ; color: #1083F8;
transform: scale(calc(1)); transform: scale(calc(1));
} }
@ -2633,4 +2694,14 @@
transform: scale(calc(1)); transform: scale(calc(1));
} }
} }
.calendar-father {
position: fixed;
top: 550rpx;
left: 60rpx;
width: 700rpx;
height: 600rpx;
background-color: #fff;
z-index: 999;
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB