供应商-随行单模块完毕

This commit is contained in:
Teng 2026-04-24 16:33:50 +08:00
parent b6ca8d0b5f
commit ae6f0edb34
5 changed files with 374 additions and 142 deletions

View File

@ -393,14 +393,16 @@
"path" : "pages/yuangongindex/purchaseorder",
"style" :
{
"navigationBarTitleText" : ""
"navigationBarTitleText" : "",
"enablePullDownRefresh": true
}
},
{
"path" : "pages/yuangongindex/purchaseorderdetail",
"style" :
{
"navigationBarTitleText" : ""
"navigationBarTitleText" : "",
"enablePullDownRefresh": true
}
},
{

View File

@ -266,12 +266,13 @@
// uni.showLoading()
}
const jumpother = (e) => {
// console.log("e",e.suppliersId)
uni.navigateTo({
url: "/pages/yuangongindex/purchaseorder?serverUrl="+e.serverUrl
url: "/pages/yuangongindex/purchaseorder?id="+e.suppliersId
})
}
const buttonArray = ref(["物料信息", "敬请期待", "敬请期待"])
const buttonArray = ref(["物料信息", "完结单", "敬请期待"])
const statusarray = ["loading", "success", "fail"]
const which = ref(0);

View File

@ -93,4 +93,37 @@ export function getDictItems(data){
method: 'get',
data,
})
}
// 采购单列表
export function queryCgdList(data){
return request({
url: `/api/suppliers/queryCgdList?gysId=${data.gysId}&pageNo=${data.pageNo}&pageSize=10&status=${data.status}`,
method: 'get',
data,
})
}
// 采购单详情列表
export function queryCgdInfoList(data){
return request({
url: `/api/suppliers/queryCgdInfoList?cgdId=${data.cgdId}&pageNo=${data.pageNo}&pageSize=10`,
method: 'get',
data,
})
}
//采购单详情改价
export function editArrivalPrice(data){
return request({
url: `/api/suppliers/editArrivalPrice`,
method: 'post',
data,
})
}
//单据确认
export function cgdQueren(data){
return request({
url: `/api/suppliers/cgdQueren`,
method: 'post',
data,
})
}

View File

@ -11,21 +11,21 @@
v-for="(item,index) in tabarray" :key="index" @click="changeTab(index)">
{{ item }}
</view>
<view class="tab-view-target" :style="{left:`${13.5 + tabtargetindex * 23}%` }">
<view class="tab-view-target" :style="{left:`${11 + tabtargetindex * 18.4}%` }">
</view>
</view>
<view :style="{height:`${uni.getStorageSync('moveHeight') + 98}px`}"></view>
<view class="card-view" v-for="(item,index) in cardlist" :key="index" @click="gotoDeatil(item.id)">
<view class="card-view" v-for="(item,index) in cardlist" :key="index" @click="gotoDeatil(item)">
<view class="card-top">
<view class="card-top-left">
<image class="card-mark" src="https://www.focusnu.com/media/directive/index/buylist.png" />
<view>
<view class="card-id">
{{ item.id }}
{{ item.cgdNo }}
</view>
<view class="card-time">
采购日期{{ item.time }}
采购日期{{ item.qgDate }}
</view>
</view>
</view>
@ -36,7 +36,7 @@
</text>
<text class="card-price">
{{ item.price }}
{{ item.totalPrice }}
</text>
</view>
@ -50,14 +50,23 @@
</view>
<view class="card-end">
<view class="card-name">
机构名称{{ item.address }}
机构名称{{ item.departName }}
</view>
<view class="card-tags"
:style="{borderColor:`${tagstype[item.type].color}`,color:`${tagstype[item.type].color}`}">
{{ tagstype[item.type].name }}
:style="{borderColor:`${tagstype[item.status].color}`,color:`${tagstype[item.status].color}`}">
{{ tagstype[item.status].name }}
</view>
</view>
</view>
<view
style="position: fixed;left:0;top: 50%;transform: translateY(-50%);width: 100%;display: flex;flex-direction: column;justify-content: center;align-items: center;z-index: 999;"
v-if="!cardlist.length">
<image style="height: 220rpx;width: 350rpx;"
src="https://www.focusnu.com/media/directive/index/jigouyaoqing.png" />
<view style="color: #8E96AD;margin-top: 20rpx;">
暂无采购单
</view>
</view>
<view class="card-view-finally">
</view>
@ -68,101 +77,139 @@
<script setup lang="ts">
import { reactive, ref, nextTick } from 'vue';
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
import { getEmployeesOrgRela, getCgdListByGysId } from './api.js'
import { getEmployeesOrgRela, getCgdListByGysId, queryCgdList } from './api.js'
const gysId = ref("")
onLoad((options : Record<string, string | undefined>) => {
gysId.value = options?.id;
getChdList()
})
const pageNo = ref(1);
const status = ref<string | number>("");
const getChdList = () => {
stopget.value = false;
let data = {
gysId: gysId.value,
pageNo: pageNo.value,
status: status.value
}
queryCgdList(data).then((res : any) => {
if (res.success) {
res.result.records.forEach((element:any)=>{
if(element.status==9){
element.status = 3
}
})
cardlist.value = res.result.records
} else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
}
const tagstype = ref([
{
name: `采购中`,
name: `待确认`,
color: `#0074E1`
},
{
name: `挂账中`,
name: `拣货`,
color: `#F03232`
},
{
name: `已完成`,
color: `#222222`
}])
const cardlist = ref([
{
id: `101C20251121006`,
price: `126`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 0
},
{
id: `101C20251121007`,
price: `189`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 1
name: `已作废`,
color: `red`
},
{
id: ` 101C20251121011`,
price: `38`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 2
},
{
id: `101C20251121006`,
price: `126`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 0
},
{
id: `101C20251121007`,
price: `189`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 1
},
{
id: ` 101C20251121011`,
price: `38`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 2
},
{
id: `101C20251121006`,
price: `126`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 0
},
{
id: `101C20251121007`,
price: `189`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 1
},
{
id: ` 101C20251121011`,
price: `38`,
time: `2026.01.19`,
address: `吉林省久泰健康产业有限公司`,
type: 2
},
])
const tabarray = [`全部`, `采购中`, `挂账中`, `已完成`]
])
const cardlist = ref([])
const tabarray = [`全部`, `待确认`, `拣货中`, `已完成`,`已作废`]
//
const tabtargetindex = ref(0)
//
const changeTab = (index : number) => {
tabtargetindex.value = index
tabtargetindex.value = index;
changeArray()
}
onPullDownRefresh(() => {
try {
changeArray()
} finally {
uni.stopPullDownRefresh() // 👈
}
})
const stopget = ref(false)
onReachBottom(() => {
if (!stopget.value) {
pageNo.value++
let data = {
gysId: gysId.value,
pageNo: pageNo.value,
status: status.value
}
queryCgdList(data).then((res : any) => {
if (res.success) {
res.result.records.forEach((element:any)=>{
if(element.status==9){
element.status = 3
}
})
cardlist.value.push(...res.result.records)
if (res.result.records.length != 10) {
stopget.value = true
}
// cardlist.value = res.result.records
} else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
}
})
const changeArray = () => {
if(tabtargetindex.value==4){
status.value = 9
}else if (tabtargetindex.value) {
status.value = Number(tabtargetindex.value) - 1
} else {
status.value = ""
}
pageNo.value = 1;
getChdList()
}
const goBack = () => {
uni.navigateBack()
}
const gotoDeatil = (id:string) => {
const gotoDeatil = (item : any) => {
// item.gysId = gysId.value
const str = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/pages/yuangongindex/purchaseorderdetail?id=${id}`
url: `/pages/yuangongindex/purchaseorderdetail?item=${str}`
})
}
</script>
@ -212,7 +259,7 @@
z-index: 100;
.tab {
width: 25%;
width: 20%;
display: flex;
justify-content: center;
align-items: center;
@ -343,5 +390,6 @@
.card-view-finally {
height: 25rpx;
}
</style>

View File

@ -16,8 +16,9 @@
采购单
</view>
</view>
<view class="buylist-tags">
采购中
<view class="buylist-tags"
:style="{borderColor:`${tagstype[transobject?.status].color}`,color:`${tagstype[transobject?.status].color}`}">
{{ tagstype[transobject?.status].name }}
</view>
</view>
<view class="card-middle">
@ -30,7 +31,7 @@
<view class="buylist-number-text">
采购单号
<text>
101C20251121006
{{ transobject?.cgdNo }}
</text>
</view>
</view>
@ -39,7 +40,7 @@
<view class="buylist-number-text">
采购日期
<text>
2025-10-12
{{ transobject?.qgDate}}
</text>
</view>
</view>
@ -51,7 +52,7 @@
</text>
<text class="card-price">
25
{{ transobject?.totalPrice}}
</text>
</view>
@ -78,7 +79,7 @@
<view class="buylist-show">
机构名称
<text>
吉林省久泰健康产业有限公司
{{ transobject?.departName}}
</text>
</view>
</view>
@ -87,7 +88,8 @@
<view class="buylist-show-two">
收货地址
<view class="buylist-show-relative">
吉林省长春市朝阳区开运街41号吉 省长春市朝阳区开运街41号
{{ transobject?.comRegisterAddress}}
</view>
</view>
</view>
@ -99,7 +101,7 @@
</view>
<text>
张某
{{ transobject?.qgBy}}
</text>
</view>
</view>
@ -111,7 +113,8 @@
</view>
<text>
13845337753
{{ transobject?.qgTel}}
</text>
<image class="company-img" style="margin-left: 20rpx;"
src="https://www.focusnu.com/media/directive/index/buylisticon/takephone.png" />
@ -137,7 +140,7 @@
</view>
<text>
吉林天林商贸有限公司
{{ transobject?.gysName}}
</text>
</view>
</view>
@ -149,7 +152,7 @@
</view>
<text>
吕婧文
{{ transobject?.gysLxr}}
</text>
</view>
</view>
@ -161,16 +164,16 @@
</view>
<text>
13356856633
{{ transobject?.gysLxrdh}}
</text>
</view>
</view>
</view>
</view>
<view class="card-view" v-for="(item,index) in [0,0,0,0,0]" :key="index">
<view class="card-view" v-for="(item,index) in cardlist" :key="index">
<view class="card-text">
<view class="card-title">
纸尿裤-拉拉裤纸尿裤
{{ item.wlName }}
</view>
<view class="card-number">
@ -178,7 +181,7 @@
采购数量
</view>
<view class="number">
168
{{ item.purchaseQuantity }}
</view>
</view>
</view>
@ -189,7 +192,7 @@
<view class="buylist-show">
规格型号
<text>
800mm*680mm
{{ item.wlSpecificationModel }}
</text>
</view>
</view>
@ -197,7 +200,7 @@
<view class="buylist-show">
品牌型号
<text>
品牌型号名称
{{ item.brandType }}
</text>
</view>
</view>
@ -205,7 +208,7 @@
<view class="buylist-show-two">
生产厂家
<view class="buylist-show-relative" style="width: 440rpx;">
吉林省长春市朝阳区开运街41号吉 省长春市朝阳区开运街41号
{{ item.manufacturer }}
</view>
</view>
</view>
@ -220,7 +223,7 @@
</text>
<text class="one-up-money">
0.32
{{ item.procurementPrice }}
</text>
</view>
<view class="one-down">
@ -230,35 +233,35 @@
<view class="cardruler-one">
<view class="one-up">
<view class="one-up-pian">
{{ item.wlUnits }}
</view>
</view>
<view class="one-down">
采购单位
</view>
</view>
<view class="cardruler-one">
<view class="cardruler-one" @click="djflagclick(item)">
<view class="one-up">
<text class="one-up-mark">
</text>
<text class="one-up-money">
{{ djflagnumber }}
{{ item.arrivalPrice }}
</text>
<image class="phone-img" @click="djflagclick()"
<image class="phone-img"
src="https://www.focusnu.com/media/directive/index/buylisticon/edit.png" />
</view>
<view class="one-down">
销售价格
</view>
</view>
<view class="cardruler-one">
<view class="cardruler-one" @click="dwflagclick()">
<view class="one-up">
<view class="one-up-pian">
{{ relqita }}
{{ item.wlUnits }}
</view>
<image class="phone-img" @click=" dwflagclick()"
src="https://www.focusnu.com/media/directive/index/buylisticon/edit.png" />
<!-- <image class="phone-img"
src="https://www.focusnu.com/media/directive/index/buylisticon/edit.png" /> -->
</view>
<view class="one-down">
销售单位
@ -272,7 +275,7 @@
<view class="cardruler-one">
<view class="one-up">
<text class="one-up-number">
350
{{ item.rksl }}
</text>
</view>
<view class="one-down">
@ -282,7 +285,7 @@
<view class="cardruler-one">
<view class="one-up">
<text class="one-up-number">
10
{{ item.wrksl }}
</text>
</view>
<view class="one-down">
@ -292,7 +295,7 @@
<view class="cardruler-one">
<view class="one-up">
<text class="one-up-number">
40
{{ item.xzsl }}
</text>
</view>
<view class="one-down">
@ -305,7 +308,7 @@
</text>
<text class="one-up-money">
0.56
{{ (item.purchaseQuantity * item.arrivalPrice).toFixed(2) }}
</text>
</view>
<view class="one-down">
@ -322,7 +325,10 @@
<view class="button-back" @click="goBack">
返回
</view>
<view class="button-right" @click="listisok">
<view class="button-right" @click="listisok" v-if="transobject.izGysConfirmed==`N`&&transobject.cgdType==0" >
确认
</view>
<view class="button-bad" v-else >
确认
</view>
</view>
@ -349,7 +355,7 @@
</view>
<view class="botrn" style="position: relative;">
<view @click="dwflag = false">取消</view>
<view @click="queding('dw')">确定</view>
<view class="botrn-right" @click="queding('dw')">确定</view>
</view>
</view>
<view class="tanchuc guodu" :style="{height:djflag?'962rpx !important':'0 !important'}">
@ -380,7 +386,7 @@
</view>
</view>
</view>
<tanchuang :show="tanchuangopne" @back="tanchuangopne=false" @right="tanchuangopne=false">
<tanchuang :show="tanchuangopne" @back="tanchuangopne=false" @right="clickright">
<template #font>
<view class="right-font">请仔细确认随货同行单内容一经确认将无法更改届时平台将自动发送随货同行单至护理机构确认生成随货同行单吗</view>
</template>
@ -390,13 +396,41 @@
<script setup lang="ts">
import { reactive, ref, nextTick } from 'vue';
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
import { getDictItems } from './api.js'
import { getDictItems, queryCgdInfoList,editArrivalPrice,cgdQueren } from './api.js'
import tanchuang from '@/compontent/public/tanchuang.vue'
onLoad((options : Record<string, string | undefined>) => {
const id = options?.id
console.log('接收到的id', id)
const item = JSON.parse(decodeURIComponent(options.item))
// console.log(item)
transobject.value = item;
gettimearr()
getDetailList()
})
const tagstype = ref([
{
name: `待确认`,
color: `#0074E1`
},
{
name: `采购中`,
color: `#F03232`
},
{
name: `已完成`,
color: `#222222`
},
{
name: `已作废`,
color: `red`
},
])
const transobject = ref({
status: 0,
cgdNo: "",
qgDate: "",
totalPrice: ""
})
const list = ref([])
const dwflag = ref(false);
@ -406,7 +440,63 @@
const gettimearr = () => {
getDictItems({ dictCode: 'xcx_gys_wldw' }).then(res => {
list.value = res
// console.log("", list.value)
})
}
const pageNo = ref(1);
const cardlist = ref([])
onPullDownRefresh(() => {
try {
getDetailList()
} finally {
uni.stopPullDownRefresh() // 👈
}
})
const stopget = ref(false)
onReachBottom(() => {
if (!stopget.value) {
pageNo.value++
let data = {
cgdId: transobject.value?.id,
pageNo: pageNo.value,
}
queryCgdInfoList(data).then((res : any) => {
if (res.success) {
cardlist.value.push(...res.result.records)
if (res.result.records.length != 10) {
stopget.value = true
}
// cardlist.value = res.result.records
} else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
}
})
const getDetailList = () => {
pageNo.value = 1
stopget.value = false;
let data = {
cgdId: transobject.value?.id,
pageNo: pageNo.value,
}
queryCgdInfoList(data).then((res : any) => {
if (res.success) {
cardlist.value = res.result.records
} else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
}
@ -425,16 +515,34 @@
}
const relqita = ref("片")
const qita = ref("片");
const djflagnumber = ref(`0.56`)
const queding = (e) => {
console.log("e", e)
if(e===`dw`){
if (e === `dw`) {
relqita.value = qita.value;
dwflag.value = false
}else{
djflagnumber.value = stringShow.value
djflag.value = false
} else {
let data = {
id:saveid.value,
arrivalPrice:stringShow.value
}
editArrivalPrice(data).then((res:any)=>{
if(res.success){
getDetailList()
djflag.value = false
}else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
// // djflagnumber.value = stringShow.value
// djflag.value = false
}
}
const stringShow = ref("");
@ -472,23 +580,49 @@
}
return val
}
const djflagclick = () => {
stringShow.value = djflagnumber.value
djflag.value=true
const saveid = ref("")
const djflagclick = (item:any) => {
saveid.value = item.id
stringShow.value = item.arrivalPrice.toString();
djflag.value = true
}
const dwflagclick = () => {
qita.value = relqita.value;
dwact.value = -1
dwflag.value=true
//
// qita.value = relqita.value;
// dwact.value = -1
// dwflag.value = true
}
const goBack = () => {
uni.navigateBack()
}
const tanchuangopne = ref(false)
const tanchuangopne = ref(false)
const listisok = () => {
tanchuangopne.value = true
}
const clickright = () => {
let data = {
id:transobject.value.id,
izGysConfirmed:'Y'
}
cgdQueren(data).then((res:any)=>{
if(res.success){
// console.log("",res)
uni.navigateBack()
}else {
cardlist.value = [];
uni.showToast({
title: res.message,
icon: 'none', // none
duration: 2000
})
}
})
}
</script>
<style scoped lang="less">
@ -682,7 +816,7 @@
}
.card-view-finally {
height: 150rpx;
height: 180rpx;
}
.card-text {
@ -759,6 +893,19 @@
color: #fff;
background-color: #57A8FA;
}
.button-bad {
margin-top: -30rpx;
margin-left: 30rpx;
height: 53%;
width: 200rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 30rpx;
background: #f5f5f5;
color: #999999;
border: 1px solid #e5e5e5;
}
}
.special-middle {
@ -786,6 +933,8 @@
.one-up {
height: 53rpx;
position: relative;
overflow: visible;
white-space: nowrap;
.one-up-mark {
font-size: 30rpx;
@ -981,20 +1130,19 @@
border: 1px solid rgba(36, 155, 251, 0.51);
color: #222222;
}
&:nth-child(2) {
background: linear-gradient(-90deg, #288DFD, #21A4FA);
color: #FFFFFF;
}
}
}
.botrn-right{
background: linear-gradient(-90deg, #288DFD, #21A4FA);
color: #FFFFFF;
}
.guodu {
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.right-font{
.right-font {
line-height: 40rpx;
text-indent: 2em;
}