发货记录

version/0412
fanfan 1 year ago
parent e987554927
commit 2bfc3bcec9
  1. 10
      api/newFun.js
  2. 176
      pages/news3/ManualEntry.vue
  3. 233
      pages/news3/seasoningCondimentsRecord.vue
  4. 111
      pages/news3/setOutRecords.vue

@ -173,5 +173,13 @@ export const expressSearch = (param) => {
}
// 发货记录---店长
export const deliveryList = (param) => {
return request.get('order/deliveryList', param)
return request.get('order/transferList', param)
}
// 手动录入---店长
export const addTransfer = (param) => {
return request.post('order/addTransfer', param)
}
// 记录编辑---店长
export const editTransfer = (param) => {
return request.post('order/editTransfer', param)
}

@ -1,9 +1,13 @@
<template>
<view>
<view style="padding-bottom: 60upx;">
<view class="section">
<u-field v-model="form.shopModel" label="商品型号" placeholder="请输入商品型号">
<u-field v-model="form.goods_name" label="商品名称" placeholder="请输入商品名称">
</u-field>
<u-field v-model="form.shopNum" label="商品数量" placeholder="请输入商品数量">
<u-field v-model="form.goods_sn" label="商品型号" placeholder="请输入商品型号">
</u-field>
<u-field v-model="form.goods_price" label="商品价格" placeholder="请输入商品价格">
</u-field>
<u-field v-model="form.goods_num" type="number" label="商品数量" placeholder="请输入商品数量">
</u-field>
</view>
<view class="section">
@ -18,9 +22,9 @@
<view class="section">
<u-field v-model="form.receiver" label="收货人" placeholder="请输入收货人姓名">
</u-field>
<u-field v-model="form.receiver_phone" label="手机号" placeholder="请输入收货人手机号">
<u-field v-model="form.receiver_phone" label="手机号" maxlength="11" type="number" placeholder="请输入收货人手机号">
</u-field>
<u-field @click="cityShow=true" v-model="form.city" :disabled="true" label="所属城市" placeholder="请选择所属城市"
<u-field @click="cityShow=true" v-model="city" :disabled="true" label="所属城市" placeholder="请选择所属城市"
right-icon="arrow-right">
</u-field>
<u-picker mode="region" v-model="cityShow" @confirm="regionChage">{{form.city}}</u-picker>
@ -33,16 +37,15 @@
</view>
<view class="section">
<picker @change="changeMode" mode="selector" range-key="text" :value="index" :range="modeList">
<u-field v-model="form.send_type" :disabled="true" label="发货模式" placeholder="请选择发货模式"
<u-field v-model="send_name" :disabled="true" label="发货模式" placeholder="请选择发货模式"
right-icon="arrow-right">
</u-field>
</picker>
<u-action-sheet :list="modeList" v-model="modeShow"></u-action-sheet>
<u-field v-model="form.send_company" label="发货公司" placeholder="请输入发货公司">
</u-field>
<u-field v-model="form.sender" label="发货人" placeholder="请输入发货人">
</u-field>
<u-field v-model="form.send_phone" label="发货人电话" placeholder="请输入发货人电话">
<u-field v-model="form.send_phone" label="发货人电话" type="number" maxlength="11" placeholder="请输入发货人电话">
</u-field>
<picker @change="changeOption" mode="selector" range-key="express_name" :value="index" :range="expressList">
<u-field v-model="form.express_name" :disabled="true" label="物流公司" placeholder="请选择物流公司"
@ -85,8 +88,6 @@
<view class="footerBtn" @click="onSubmit">
提交
</view>
</view>
</template>
@ -97,27 +98,36 @@
export default {
data() {
return {
city: null,
send_name: null,
express_name: null,
form: {
shopModel: '',
shopNum: null,
auto: '',
goods_sn: '',
goods_num: null,
goods_price: '',
receiver: '',
receiver_phone: '',
city: null,
detail: '',
send_type: null,
send_company: '',
sender: '',
send_phone: '',
express_name: '',
express_id:'',
express_id: '',
express_no: '',
transfer_image_id: '',
chat_image_id: ''
chat_image_id: '',
goods_name: '',
province_id: '',
city_id: '',
region_id: ''
},
content: '',
modeList: [{
text: '店内现货',
id: 0,
}, {
text: '仓库发货',
id: 1,
}],
cityShow: false,
transferList: [],
@ -151,7 +161,6 @@
this.form.receiver = data.name
this.form.receiver_phone = data.phone
this.form.detail = data.detail
console.log(data)
uni.showToast({
title: '识别成功',
icon: 'none',
@ -168,12 +177,18 @@
.finally()
},
//
onSubmit() {
async onSubmit() {
const that = this;
if (!that.form.shopModel) {
if (!that.form.goods_name) {
return that.$toast('请选择商品名称')
}
if (!that.form.shopNum) {
if (!that.form.goods_sn) {
return that.$toast('请选择商品型号')
}
if (!that.form.goods_price) {
return that.$toast('请输入商品价格')
}
if (!that.form.goods_num) {
return that.$toast('请输入商品数量')
}
if (!that.form.receiver) {
@ -182,13 +197,13 @@
if (!that.form.receiver_phone) {
return that.$toast('请输入收货人手机号')
}
if (!that.form.city) {
if (!that.city) {
return that.$toast('请选择所属城市')
}
if (!that.form.detail) {
return that.$toast('请输入详细地址')
}
if (!that.form.send_type) {
if (!that.send_name) {
return that.$toast('请选择发货模式')
}
if (!that.form.send_company) {
@ -198,9 +213,9 @@
return that.$toast('请输入发货人')
}
if (!that.form.send_phone) {
return that.$toast('请输入发货电话号')
return that.$toast('请输入发货手机号')
}
if (!that.form.express_name) {
if (!that.express_name) {
return that.$toast('请选择物流公司')
}
if (!that.form.express_no) {
@ -209,16 +224,29 @@
if (!that.form.transfer_image_id) {
return that.$toast('请上传转账记录')
}
let params = {
let {
status,
message,
data
} = await newFunApi.addTransfer(that.form);
if (status == 200) {
uni.showToast({
title: "录入成功"
})
return
uni.$emit('refreshData');
uni.navigateBack({
delta: 1
})
}
},
changeMode(e) {
this.form.send_type = this.modeList[e.detail.value].text;
this.send_name = this.modeList[e.detail.value].text;
this.form.send_type = this.modeList[e.detail.value].id;
},
//
changeOption(e) {
this.form.express_name = this.expressList[e.detail.value].express_name;
this.express_name = this.expressList[e.detail.value].express_name;
this.form.express_id = this.expressList[e.detail.value].express_id
},
/**
@ -235,10 +263,15 @@
}
},
regionChage(e) {
this.form.city = e.province.name + e.city.name + e.area.name;
console.log(e)
this.city = e.province.name + e.city.name + e.area.name;
this.form.province_id = e.province.code;
this.form.city_id = e.city.code
this.form.region_id = e.area.code
},
//
transferSuccess(list) {
console.log(list)
if (list.length > 0) {
const {
response
@ -247,7 +280,11 @@
uni.showToast({
title: "上传成功"
})
this.form.transfer_image_id = response.data.fileInfo.file_id
let idList = []
list.forEach(item => {
idList.push(item.response.data.fileInfo.file_id)
});
this.form.transfer_image_id = idList.join(',');
}
}
},
@ -261,8 +298,11 @@
uni.showToast({
title: "上传成功"
})
console.log(response.data.fileInfo.file_id)
this.form.chat_image_id = response.data.fileInfo.file_id
let idList = []
list.forEach(item => {
idList.push(item.response.data.fileInfo.file_id)
});
this.form.chat_image_id = idList.join(',');
}
}
},
@ -279,7 +319,7 @@
.section {
background-color: #fff;
padding: 0 26upx;
padding: 0 24upx;
margin-top: 16upx;
.realAddr {
@ -337,7 +377,7 @@
}
::v-deep .u-field {
padding: 30upx 10upx;
padding: 20upx 10upx !important;
}
::v-deep .uni-input-wrapper {
@ -348,6 +388,16 @@
flex: auto !important
}
::v-deep .u-flex-1 {
width: 400upx;
}
::v-deep .u-flex-1,
::v-deep .fild-body {
text-align: right;
margin: 0 !important;
}
.recordList {
padding: 30upx;
background-color: #fff;
@ -402,7 +452,7 @@
color: #FFFFFF;
line-height: 88upx;
text-align: center;
margin: 96upx auto 0 auto;
margin: 96upx auto;
}
@ -434,58 +484,4 @@
}
}
}
.photo {
display: flex;
justify-content: flex-start;
padding: 20rpx 0;
overflow: hidden;
.slot-btn {
width: 80px;
height: 80px;
background: #FFFFFF;
border-radius: 10rpx;
border: 1px solid #C0C0C0;
text-align: center;
font-size: 24rpx;
font-weight: 500;
color: #D1D1D1;
image {
width: 50rpx;
height: 50rpx;
margin-top: 20rpx;
}
}
}
.file_img {
overflow: hidden;
position: relative;
margin-right: 10rpx;
image {
width: 80px;
height: 80px;
}
.image-delete {
position: absolute;
top: -10rpx;
right: -10rpx;
height: 42rpx;
width: 42rpx;
background: rgba(0, 0, 0, 0.64);
border-radius: 50%;
color: #fff;
font-weight: bolder;
font-size: 22rpx;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>

@ -2,56 +2,61 @@
<view>
<view class="selectContent" style="border:none;background-color: #fff;">
<picker @change="changeMode" mode="selector" range-key="text" :value="index" :range="modeList">
<u-field v-model="form.setGoodsMode" :disabled="true" label="发货模式" placeholder="请选择"
<u-field v-model="send_name" :disabled="true" label="发货模式" placeholder="请选择发货模式"
right-icon="arrow-right">
</u-field>
</picker>
<u-field v-model="form.company" label="发货公司" placeholder="请输入">
<u-field v-model="form.send_company" label="发货公司" placeholder="请输入发货公司">
</u-field>
<u-field v-model="form.name" label="发货人" placeholder="请输入">
<u-field v-model="form.receiver" label="发货人" placeholder="请输入发货人名称">
</u-field>
<u-field v-model="form.phone" label="发货人电话" placeholder="请输入">
<u-field v-model="form.receiver_phone" type="number" maxlength="13" label="发货人电话" placeholder="请输入发货人手机号">
</u-field>
<picker @change="changeOption" mode="selector" range-key="express_name" :value="index" :range="expressList">
<u-field v-model="form.logisticsName" :disabled="true" label="物流公司" placeholder="请选择物流公司"
<u-field v-model="express_name" :disabled="true" label="物流公司" placeholder="请选择物流公司"
right-icon="arrow-right">
</u-field>
</picker>
<u-action-sheet :list="kuaidiList" v-model="goodsShow"></u-action-sheet>
<view class="wuliu">
<u-field style="flex: 1;padding:30upx 0 30upx 30upx" v-model="form.logisticsNo" label="物流单号"
placeholder="请填写物流单号">
<u-field class='fanfan' style="flex: 1;padding:30upx 0 30upx 30upx" v-model="form.express_no"
label="物流单号" placeholder="请填写物流单号">
</u-field>
<view class="getWuliu" @click="onLogistics">
查看物流
</view>
</view>
<view class="recordList">
<view class="recordItem">
<view class="recordItem c">
<view class="recordTitle">
转账记录
</view>
<view class="picList">
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
转账记录<text class="intro">最多上传6张</text>
</view>
<u-upload :action="action" :header="header" @on-uploaded="transferSuccess" name="file_path"
width="180" height="180" :file-list="transferList" :custom-btn="true" max-count="6">
<template v-slot:addBtn>
<view class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<image src="/static/news/icon-upload.png"></image>
<view class="1">上传图片</view>
</view>
</template>
</u-upload>
</view>
<view class="recordItem">
<view class="recordItem c">
<view class="recordTitle">
聊天记录
</view>
<view class="picList">
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFit"></image>
聊天记录<text class="intro">最多上传6张</text>
</view>
<u-upload :action="action" :header="header" @on-uploaded="chatSuccess" name="file_path" width="180"
height="180" :file-list="chatList" :custom-btn="true" max-count="6">
<template v-slot:addBtn>
<view class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<image src="/static/news/icon-upload.png"></image>
<view class="1">上传图片</view>
</view>
</template>
</u-upload>
</view>
</view>
<view class="footerBtn">
<view class="footerBtn" @click="onSubmit">
保存
</view>
</view>
@ -62,38 +67,107 @@
<script>
import * as newFunApi from '@/api/newFun'
import Config from '@/core/config'
export default {
data() {
return {
form: {
setGoodsMode: '',
company: '',
name: '',
phone: '',
kuaidi: '',
logisticsName: '',
logisticsNo: '',
logisticsId:'',
},
send_name: '',
express_name: '',
form: {},
modeList: [{
text: '店内现货',
id: 0,
}, {
text: '仓库发货',
id: 1,
}],
expressList: [],
modeShow: false,
goodsShow: false,
action: '',
action: '',
transferList: [],
chatList: [],
}
},
onLoad(o) {
this.form = JSON.parse(o.item)
this.send_name = this.modeList[this.form.send_type].text;
this.transferList = this.form.transfer_image_ids;
this.chatList = this.form.chat_image_ids;
console.log(this.form)
if (this.form.transfer_image_ids) {
let list = this.form.transfer_image_ids
list.forEach(item => {
item.url = item.file_path
});
this.transferList = list
}
if (this.form.chat_image_ids) {
let list = this.form.chat_image_ids
list.forEach(item => {
item.url = item.file_path
});
this.chatList = list
}
console.log(this.chatList, this.transferList)
},
onReady() {
this.action = (Config.get('apiUrl') + 'upload/image').replace("index.php?s=/", "")
this.header = {
'Storeid': uni.getStorageSync('Store').storeInfo.store_id,
'Access-Token': uni.getStorageSync('AccessToken'),
'platform': "MP-WEIXIN",
}
this.getExpressAll()
},
methods: {
//
async onSubmit() {
const that = this;
console.log(that.form)
if (!that.send_name) {
return that.$toast('请选择发货模式')
}
if (!that.form.send_company) {
return that.$toast('请输入发货公司')
}
if (!that.form.sender) {
return that.$toast('请输入发货人')
}
if (!that.form.send_phone) {
return that.$toast('请输入发货手机号')
}
if (!that.express_name) {
return that.$toast('请选择物流公司')
}
if (!that.form.express_no) {
return that.$toast('请输入物流单号')
}
if (!that.form.transfer_image_id) {
return that.$toast('请上传转账记录')
}
let {
status,
message,
data
} = await newFunApi.editTransfer(that.form);
if (status == 200) {
uni.showToast({
title: "录入成功"
})
return
uni.$emit('refreshData');
uni.navigateBack({
delta: 1
})
}
},
changeMode(e) {
this.form.setGoodsMode = this.modeList[e.detail.value].text;
},
//
changeOption(e) {
this.form.logisticsName = this.expressList[e.detail.value].express_name;
this.form.logisticsId = this.expressList[e.detail.value].express_id
this.express_name = this.expressList[e.detail.value].express_name;
this.form.express_id = this.expressList[e.detail.value].express_id
},
/**
* 物流
@ -106,14 +180,49 @@
} = await newFunApi.expressAll();
if (status == 200) {
this.expressList = data.list;
this.express_name = this.findNameById(this.expressList, this.form.express_id)
}
},
// ID
findNameById(array, express_id) {
const result = array.find((item) => item.express_id === express_id);
return result.express_name;
},
onLogistics() {
uni.navigateTo({
url: "/pages/news3/LogisticsDetails?logisticsNum=" + this.form.logisticsNo
url: "/pages/news3/LogisticsDetails?logisticsNum=" + this.form.express_no
})
},
//
transferSuccess(list) {
console.log(list)
if (list.length > 0) {
uni.showToast({
title: "上传成功"
})
let idList = []
list.forEach(item => {
idList.push(item.response.data.fileInfo.file_id)
});
this.form.transfer_image_id = idList.join(',');
}
},
//
chatSuccess(list) {
if (list.length > 0) {
if (response) {
uni.showToast({
title: "上传成功"
})
let idList = []
list.forEach(item => {
idList.push(item.response.data.fileInfo.file_id)
});
this.form.chat_image_id = idList.join(',');
}
}
},
}
}
</script>
@ -136,7 +245,7 @@
}
::v-deep .u-field {
padding: 30upx;
padding: 20upx 40upx !important;
}
::v-deep .uni-input-wrapper {
@ -147,10 +256,19 @@
flex: auto !important
}
::v-deep .u-flex-1 {
width: 360upx !important;
text-align: right !important;
}
.wuliu {
display: flex;
align-items: center;
.fanfan {
padding-right: 0 !important;
}
.getWuliu {
width: 130upx;
height: 56upx;
@ -175,7 +293,7 @@
.recordItem {
.recordTitle {
margin-bottom: 10upx;
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -215,4 +333,33 @@
margin: 96upx auto 0 auto;
}
.c {
padding-top: 20rpx;
overflow: hidden;
.slot-btn {
width: 180rpx;
height: 180rpx;
background: #F6F6F6;
border-radius: 10rpx;
border: 1px solid #C0C0C0;
text-align: center;
font-size: 28rpx;
font-weight: 500;
color: #6D6D6D;
.l {
line-height: 30rpx;
}
image {
width: 50rpx;
height: 50rpx;
display: block;
margin: 0 auto;
margin-top: 30rpx;
}
}
}
</style>

@ -1,9 +1,10 @@
<template>
<view class="updatePrice" style="padding-bottom: 120upx;">
<view class="updatePrice" style="padding-bottom: 120rpx;">
<view class="head-info">
<!-- 搜索 -->
<view class="searchContent">
<u-input v-model="searchText" confirm-type="search" @confirm="getOrderList(1)" placeholder="商品名称/编码" />
<u-input v-model="searchText" style="width:400upx" confirm-type="search" @confirm="getOrderList(1)"
placeholder="商品名称/编码" />
<u-icon name="search" class="search" @click="getOrderList(1)"></u-icon>
</view>
</view>
@ -13,42 +14,43 @@
只属于非商城订单
</view>
</view>
<view class="dispatchContent" v-for="(item, index) in goodsList" :key="index">
<view class="orderNum">
订单号{{item.express_no}}
</view>
<view class="dispatchItem" v-for="(item1, index) in item.goods">
<image :src="item1.goods.goods_image" mode="aspectFill"></image>
<view class="right">
<view class="title">
{{item1.goods.goods_name}}
</view>
<view style="display: flex;align-items: center;justify-content: space-between;">
<view class="num">
x{{item1.goods.total_num}}
<view style="padding-bottom: 120upx;">
<view class="dispatchContent" v-for="(item, index) in goodsList" :key="index">
<view class="orderNum">
订单号{{item.express_no}}
</view>
<view class="dispatchItem" v-for="(item1, index) in item.goods">
<image :src="item1.image" mode="aspectFill"></image>
<view class="right">
<view class="title">
{{item1.name}}
</view>
<view class="price">
<text style="font-size: 26upx;">¥</text>
<text>{{item1.goods.goods_price}}</text>
<view style="display: flex;align-items: center;justify-content: space-between;">
<view class="num">
x{{item1.num}}
</view>
<view class="price">
<text style="font-size: 26upx;">¥</text>
<text>{{item1.price}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="totalNum">
<text>含运费¥{{item.orderData.express_price}}</text>
<text>共计</text>
<text>¥{{item.orderData.total_price}}</text>
</view>
<view class="footerBtn">
<view class="wuliuBtn" @click="onCondiments">
调货记录
<view class="totalNum">
<text>共计</text>
<text>¥{{item.total_price}}</text>
</view>
<view class="footerBtn">
<view class="wuliuBtn" @click="onCondiments(item)">
调货记录
</view>
</view>
</view>
</view>
</view>
<view class="footerBtns" @click="manualEntry">
手动录入
<view class="footerBtns" @click="manualEntry">
手动录入
</view>
</view>
</template>
@ -65,6 +67,15 @@
},
onLoad(o) {
this.getOrderList(1)
uni.$on('refreshData', () => {
//
this.getOrderList(1)
})
},
//
onUnload() {
//
uni.$off('refreshData')
},
onShow() {},
onPullDownRefresh() {
@ -87,9 +98,9 @@
})
},
//
onCondiments() {
onCondiments(e) {
uni.navigateTo({
url: "/pages/news3/seasoningCondimentsRecord"
url: "/pages/news3/seasoningCondimentsRecord?item=" + JSON.stringify(e)
})
},
/**
@ -109,12 +120,12 @@
data
} = await newFunApi.deliveryList({
page: this.pageNum,
searchValue: this.searchText,
searchType: 10
search: this.searchText
});
if (status == 200) {
this.goodsList = this.goodsList.concat(data.list.data)
this.total = data.list.total
this.goodsList = this.goodsList.concat(data.data)
this.total = data.total
console.log(this.goodsList)
}
},
onClassify(index) {
@ -141,12 +152,15 @@
align-items: center;
justify-content: space-between;
position: relative;
background-color: #fff;
border-radius: 60upx;
width: 680upx;
margin-left: 15upx;
::v-deep .u-input {
background: #FFFFFF;
border-radius: 30px 30px 30px 30px;
opacity: 1;
width: 100%;
padding-left: 90upx !important;
}
@ -163,10 +177,15 @@
.bg {
position: relative;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
image {
width: 100%;
height: auto;
width: 690upx;
}
.text {
@ -193,24 +212,25 @@
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #707070;
margin: 10upx 30upx;
margin: 16upx 0;
}
.dispatchContent {
margin: 20upx 0;
padding: 20upx 40upx;
background: #FFF;
border-radius: 6px;
padding: 20upx 30upx 10upx 30upx;
margin: 20upx 14upx;
}
.dispatchItem {
display: flex;
align-items: center;
margin-bottom: 18upx;
image {
width: 194upx;
height: 194upx;
width: 158upx;
height: 170upx;
}
.right {
@ -227,6 +247,7 @@
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #3B3B3B;
margin-bottom: 18upx;
}
@ -264,7 +285,7 @@
.totalNum {
text-align: right;
margin-top: 40upx;
margin-top: 26upx;
text:first-child {
font-size: 24upx;

Loading…
Cancel
Save