286 lines
8.3 KiB
Vue
286 lines
8.3 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="container">
|
|||
|
|
<z-paging ref="pagingRef" class="containerBox" v-model="listData" :default-page-size="queryParams.pageSize" @query="queryList">
|
|||
|
|
<template #top>
|
|||
|
|
<view style="padding: 20rpx 32rpx 0;">
|
|||
|
|
<!-- 项目号/项目描述/物料号/物料描述/供应商编码/供应商名称/订单编号 -->
|
|||
|
|
<uv-search v-model="queryParams.keyword" placeholder="请输入" :showAction="true" actionText="搜索" @search="searchList" @custom="searchList"></uv-search>
|
|||
|
|
<uv-tabs :list="list" @click="click" lineColor="#199793"></uv-tabs>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<view class="box">
|
|||
|
|
<view v-for="item in listData" class="item">
|
|||
|
|
<view class="title">配送号:{{ item.orderNo }}</view>
|
|||
|
|
<view><text>发货人:</text>{{ item.shipperName }}</view>
|
|||
|
|
<view><text>发货地:</text>{{ item.originName }}</view>
|
|||
|
|
<view><text>接收人:</text>{{ item.receiverName }}</view>
|
|||
|
|
<view style="display: flex; align-items: center;">
|
|||
|
|
<view><text>目的地:</text>{{ item.destName }}</view>
|
|||
|
|
<image :src="openMap" mode="scaleToFill" v-show="item.orderStatus == 2" style="width: 30rpx; height: 30rpx;margin-left: 20rpx;" @tap="toMap(item, 'location')" />
|
|||
|
|
</view>
|
|||
|
|
<view><text>货物数量:</text>{{ item.items.length }}</view>
|
|||
|
|
<view><text>配送日期:</text>{{ item.deliveryDate }}</view>
|
|||
|
|
<view class="statusBtn">
|
|||
|
|
<!-- <uv-button :plain="true" shape="circle" text="查看详情" @tap="goDetail(item)" style="margin-right: 20rpx;"></uv-button> -->
|
|||
|
|
<uv-button type="primary" shape="circle" v-show="item.orderStatus == 1" text="开始配送" @tap="changeOrder(item, 'ORIGIN')"></uv-button>
|
|||
|
|
<uv-button type="primary" shape="circle" v-show="item.orderStatus == 2" text="完成配送" @tap="changeOrder(item, 'DEST')"></uv-button>
|
|||
|
|
<uv-button type="primary" shape="circle" v-show="item.orderStatus == 3" text="查看单据" style="margin-right: 20rpx;" @tap="changeOrder(item, 'COMPLETE')"></uv-button>
|
|||
|
|
<!-- <uv-button type="primary" shape="circle" v-show="item.orderStatus == 1" text="开始配送" @tap="change1(item, 'ORIGIN')"></uv-button>
|
|||
|
|
<uv-button type="primary" shape="circle" v-show="item.orderStatus == 2" text="完成配送" @tap="change1(item, 'DEST')"></uv-button> -->
|
|||
|
|
<uv-button type="primary" v-show="item.orderStatus == 3" :plain="true" shape="circle" text="历史轨迹" @tap="toMap(item, 'history')"></uv-button>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</z-paging>
|
|||
|
|
|
|||
|
|
<view class="btn">
|
|||
|
|
<uv-button type="primary" text="确定" size="large" style="width: 100%;" class="mainBtn" @tap="handleAdd">新 增 配 送 任 务</uv-button>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<uv-modal ref="modalRef" title="单据明细" class="modalInfo" confirmText="关闭" confirmColor="#606266"
|
|||
|
|
:closeOnClickOverlay="false">
|
|||
|
|
<view class="box">
|
|||
|
|
<view v-for="items in infoList" class="item">
|
|||
|
|
<view><text>订单编号:</text>{{ items.sapNo }}</view>
|
|||
|
|
<view><text>项目描述:</text>{{ items.xmMs }}</view>
|
|||
|
|
<view><text>项目号:</text>{{ items.xmNo }}</view>
|
|||
|
|
<view><text>物料号:</text>{{ items.wlNo }}</view>
|
|||
|
|
<view><text>物料描述:</text>{{ items.wlMs }}</view>
|
|||
|
|
<view><text>供应商名称:</text>{{ items.gysMc }}</view>
|
|||
|
|
<view><text>存放位置:</text>{{ items.pcode || "-" }}</view>
|
|||
|
|
<view><text>身份码:</text>{{ items.entityId || "-" }}</view>
|
|||
|
|
<view><text>备注:</text>{{ items.remark || '-' }}</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</uv-modal>
|
|||
|
|
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup>
|
|||
|
|
import { ref, computed } from "vue";
|
|||
|
|
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app";
|
|||
|
|
import { getOrder, getOrderDetail } from "@/api/index"
|
|||
|
|
import openMap from "@/static/openMap.png"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
const list = ref([{
|
|||
|
|
name: '待接单',
|
|||
|
|
value: '0',
|
|||
|
|
}, {
|
|||
|
|
name: '待配送',
|
|||
|
|
value: '1',
|
|||
|
|
}, {
|
|||
|
|
name: '配送中',
|
|||
|
|
value: '2',
|
|||
|
|
}, {
|
|||
|
|
name: '已完成',
|
|||
|
|
value: '3',
|
|||
|
|
}])
|
|||
|
|
const click = (item) => {
|
|||
|
|
queryParams.value.orderStatus = item.value
|
|||
|
|
pagingRef.value.reload()
|
|||
|
|
console.log('item', item);
|
|||
|
|
}
|
|||
|
|
const queryParams = ref({
|
|||
|
|
// keyword: "",
|
|||
|
|
orderStatus: 0,
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 10
|
|||
|
|
})
|
|||
|
|
const pagingRef = ref(null)
|
|||
|
|
const listData = ref([])
|
|||
|
|
// 获取列表
|
|||
|
|
const queryList = (pageNo, pageSize) => {
|
|||
|
|
queryParams.value.pageNum = pageNo
|
|||
|
|
console.log(pageNo, pageSize, queryParams.value)
|
|||
|
|
getOrder(queryParams.value).then(res => {
|
|||
|
|
console.log(res.rows)
|
|||
|
|
pagingRef.value.complete(res.rows)
|
|||
|
|
}).catch(res => {
|
|||
|
|
pagingRef.value.complete(false)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
const searchList = () => {
|
|||
|
|
pagingRef.value.reload()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onLoad(() => {
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
onShow(() => {
|
|||
|
|
pagingRef.value?.reload()
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 弹窗
|
|||
|
|
const modalRef = ref()
|
|||
|
|
const infoList = ref([])
|
|||
|
|
const goDetail = (item) => {
|
|||
|
|
if (item.infoList && item.infoList.length > 0) {
|
|||
|
|
infoList.value = item.infoList
|
|||
|
|
modalRef.value.open()
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
getOrderDetail({ orderNo: item.orderNo }).then(res => {
|
|||
|
|
infoList.value = res.data
|
|||
|
|
item.infoList = res.data
|
|||
|
|
modalRef.value.open()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 跳转地图
|
|||
|
|
const toMap = (item, type) => {
|
|||
|
|
if (type === 'location') {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: "/pages/index/map?orderNo=" + item.orderNo + "&plateNo=" + item.plateNo + "&type=" + type
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: "/pages/index/map?orderNo=" + item.orderNo + "&plateNo=" + item.plateNo + "&type=" + type
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
const changeOrder = (item, type) => {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: "/pages/index/deliveryBill?type=" + type + "&orderNo=" + item.orderNo + "&billNoCk=" + item.billNoCk
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const change1 = (item, type) => {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: "/pages/index/editDelivery?type=" + type + "&orderNo=" + item.orderNo + "&billNoCk=" + item.billNoCk
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const handleAdd = (item) => {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: "/pages/index/addDelivery"
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.container {
|
|||
|
|
position: relative;
|
|||
|
|
.containerBox{
|
|||
|
|
// padding: 32rpx;
|
|||
|
|
padding-bottom: 120rpx;
|
|||
|
|
min-height: calc(100vh - 196rpx - 120rpx);
|
|||
|
|
|
|||
|
|
::v-deep .uv-tabs__wrapper__nav{
|
|||
|
|
width: 100%;
|
|||
|
|
}
|
|||
|
|
::v-deep .uv-tabs__wrapper__nav__item{
|
|||
|
|
flex: 1;
|
|||
|
|
}
|
|||
|
|
.dropDown{
|
|||
|
|
padding: 0 30rpx;
|
|||
|
|
border-bottom: 1px solid #dadbde;
|
|||
|
|
.item_dropDown{
|
|||
|
|
padding: 20rpx;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
::v-deep .uv-text{
|
|||
|
|
width: unset !important;
|
|||
|
|
flex: unset !important;
|
|||
|
|
}
|
|||
|
|
::v-deep .item_text{
|
|||
|
|
max-width: 200rpx;
|
|||
|
|
margin-right: 10rpx !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
::v-deep .uv-search {
|
|||
|
|
flex: unset;
|
|||
|
|
}
|
|||
|
|
::v-deep .zp-scroll-view-super {
|
|||
|
|
background-color: #F3F4F8;
|
|||
|
|
}
|
|||
|
|
.box{
|
|||
|
|
// background-color: #ebebeb;
|
|||
|
|
// background-color: #f5f5f5;
|
|||
|
|
// padding-top: 20rpx;
|
|||
|
|
background-color: #F3F4F8;
|
|||
|
|
padding: 0 32rpx;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
padding-top: 20rpx;
|
|||
|
|
.item {
|
|||
|
|
background: white;
|
|||
|
|
padding: 20rpx;
|
|||
|
|
margin-bottom: 20rpx;
|
|||
|
|
line-height: 50rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
border-radius: 8rpx;
|
|||
|
|
color: #333;
|
|||
|
|
position: relative;
|
|||
|
|
.title {
|
|||
|
|
font-size: 32rpx;
|
|||
|
|
font-weight: bold;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
text{
|
|||
|
|
color: #666;
|
|||
|
|
}
|
|||
|
|
.statusBtn {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: flex-end;
|
|||
|
|
border-top: 1px solid #c7c7c7;
|
|||
|
|
padding-top: 10rpx;
|
|||
|
|
::v-deep .uv-button{
|
|||
|
|
height: 60rpx !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
::v-deep .uv-input__content{
|
|||
|
|
flex-direction: column;
|
|||
|
|
align-items: flex-start;
|
|||
|
|
}
|
|||
|
|
.btn {
|
|||
|
|
position: fixed;
|
|||
|
|
width: calc(100vw - 64rpx);
|
|||
|
|
bottom: 0;
|
|||
|
|
left: 32rpx;
|
|||
|
|
z-index: 99;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.modalInfo {
|
|||
|
|
.box {
|
|||
|
|
width: 100%;
|
|||
|
|
max-height: 60vh;
|
|||
|
|
overflow: auto;
|
|||
|
|
.item {
|
|||
|
|
background: #efefef;
|
|||
|
|
padding: 20rpx;
|
|||
|
|
margin-top: 20rpx;
|
|||
|
|
line-height: 50rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
border-radius: 8rpx;
|
|||
|
|
color: #333;
|
|||
|
|
border: unset;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
::v-deep .zp-paging-container-content{
|
|||
|
|
background-color: #F3F4F8;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
</style>
|