From ccf8a9e7e53ce1516960cbd101e0afc7ac8ea2c2 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期二, 20 八月 2024 17:42:13 +0800 Subject: [PATCH] update 质检功能 --- sub_pages/partner/delivery/delivery-supplier-detail.vue | 265 +++++++++++++++++++++++++++++++++++++ common/global.scss | 1 sub_pages/partner/delivery/delivery-detail.vue | 34 ++-- sub_pages/partner/delivery/delivery.vue | 57 ++++--- pages.json | 35 ++-- 5 files changed, 337 insertions(+), 55 deletions(-) diff --git a/common/global.scss b/common/global.scss index 33c1f02..13ee8b7 100644 --- a/common/global.scss +++ b/common/global.scss @@ -147,6 +147,7 @@ display: flex; margin-left: 0rpx; margin-right: auto; + font-size: 30rpx; flex: 1; padding-left: 0rpx; padding-right: 0rpx; diff --git a/pages.json b/pages.json index 060f515..8748ac2 100644 --- a/pages.json +++ b/pages.json @@ -222,20 +222,18 @@ "navigationBarTitleText": "送货单", "enablePullDownRefresh": true } - }, - { - "path" : "order-manage/order-manage-settlement", - "style" : - { - "navigationBarTitleText" : "送货单结算明细" - } - }, - { - "path" : "order-manage/order-manage-flower", - "style" : - { - "navigationBarTitleText" : "送货单" - } + }, + { + "path": "order-manage/order-manage-settlement", + "style": { + "navigationBarTitleText": "送货单结算明细" + } + }, + { + "path": "order-manage/order-manage-flower", + "style": { + "navigationBarTitleText": "送货单" + } } // #endif // #ifdef PUB_PARTNER @@ -318,6 +316,13 @@ } }, { + "path": "delivery/delivery-supplier-detail", + "style": { + "navigationBarTitleText": "供应商质检详情", + "enablePullDownRefresh": true + } + }, + { "path": "delivery/delivery-home", "style": { "navigationBarTitleText": "", @@ -381,7 +386,7 @@ { "path": "shop/shop", "style": { - "navigationBarTitleText": "商家主页", + "navigationBarTitleText": "商家主页", "enablePullDownRefresh": true } }, diff --git a/sub_pages/partner/delivery/delivery-detail.vue b/sub_pages/partner/delivery/delivery-detail.vue index cae20ce..e148c37 100644 --- a/sub_pages/partner/delivery/delivery-detail.vue +++ b/sub_pages/partner/delivery/delivery-detail.vue @@ -15,7 +15,7 @@ form: { id: '', status: '', - checkImageList: [], + pictureList: [], checkRemarks: '', deductAmount: 0, }, @@ -103,16 +103,16 @@ statusStr: '', num: 0, remarks: '', + pictureList: [], } if (status === 'reduce') { this.form = { ...this.form, - pictureList: [item.id], deductAmount: 0, targetLevel: '', - checkImageList: [], + pictureList: [], } } @@ -136,10 +136,12 @@ }) this.$message.hideLoading() if (code === 0) { - this.$message.showToast('操作成功') this.form = { ...this.form, ...(data || {}) + } + if (!this.form.pictureList) { + this.form.pictureList = [] } //显示 this.$refs.popup_form.open() @@ -209,7 +211,7 @@ } }, deleteCheckImage(index) { - this.form.checkImageList.splice(index, 1) + this.form.pictureList.splice(index, 1) }, uploadCheckImage() { let that = this @@ -232,7 +234,7 @@ 0] .url || '' that.$message.hideLoading() - that.form.checkImageList.push(pic) + that.form.pictureList.push(pic) console.log('form', that.form) that.$forceUpdate() }).catch(res => { @@ -307,10 +309,10 @@ </view> </view> </view> - <view class="line-gray" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status"> + <view class="line-gray" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status||true"> </view> - <view class="buttons" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status"> + <view class="buttons" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status||true"> <view class="button text-center" v-for="button of check_status" :key="button.value" @click.stop="clickCheck(item,button.value)">{{ button.label }} </view> @@ -325,17 +327,17 @@ </view> <uni-popup ref="popup_form" type="top" :mask-click="false"> - <view class="popup-check-form"> + <view class="popup-check-form" style="min-height: 880rpx;height: unset;"> <view class="close-parent"> 质检操作-{{ form.statusStr || '-' }} <uni-icons class="close" type="closeempty" @click="closeCheckForm"></uni-icons> </view> <view class="submit form"> - <view class="form-item" v-if="form.status==='reduce'"> - <view class="form-item-label require"> + <view class="form-item" v-if="form.status==='reduce'" style="height: unset;"> + <view class="form-item-label require" style="min-width: 120rpx;margin-right: 10rpx;"> 降级等级 </view> - <view class="form-item-value"> + <view class="form-item-value flex"> <view class="value-item" @click="()=>{ if(form.targetLevel!==query.value){ form.targetLevel = each.value @@ -383,8 +385,8 @@ <view class="t-red" @click="uploadCheckImage()">上传</view> </view> </view> - <view class="flex p20" v-if="form.checkImageList&&form.checkImageList.length>0"> - <view class="m-t-12 m-r-10 " v-for="(timg,index) of form.checkImageList" :key="index"> + <view class="flex p20" v-if="form.pictureList&&form.pictureList.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,index) of form.pictureList" :key="index"> <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> </image> <view class="t-red text-center" @click.stop="deleteCheckImage(index)">删除</view> @@ -524,8 +526,8 @@ line-height: 58rpx; padding: 8rpx 24rpx; color: #33a868; - margin-left: 6rpx; - margin-right: 6rpx; + margin-left: 16rpx; + margin-right: 16rpx; border: 2rpx solid #F1F5F2; } diff --git a/sub_pages/partner/delivery/delivery-supplier-detail.vue b/sub_pages/partner/delivery/delivery-supplier-detail.vue new file mode 100644 index 0000000..b6a4488 --- /dev/null +++ b/sub_pages/partner/delivery/delivery-supplier-detail.vue @@ -0,0 +1,265 @@ +<script> + export default { + data() { + return { + query: { + supplierName: '', + stationId: '', + stationName: '', + statusStr: '', + status: '', + warehouseLocationCode: '', + }, + show_select_station: false, + show_select_status: false, + selecttoday: true, + columns_station: [], + status_columns: [], + } + }, + onLoad(options) { + this.query.supplierId = options.supplierId || '' + + this.listApi = '/api/delivery/check/info/list' + + if (options.range == 'today') { + this.listApi += '/today' + } + + this.getList() + + this.$http.request('get', '/api/code/value', { + params: { + type: 'DELIVERY_ORDER_STATUS' + } + }).then(res => { + var data = res.data || [] + this.status_columns = [data || []] + this.status_columns[0].unshift({ + label: '全部', + value: '' + }) + console.log('status_columns', this.status_columns) + }) + + }, + onReachBottom() { + this.getMore() + }, + async onPullDownRefresh() { + this.page.current = 1 + await this.getList() + uni.stopPullDownRefresh() + }, + methods: { + + callTel(tel) { + if (tel) { + uni.makePhoneCall({ + phoneNumber: tel + }) + } + }, + buttonSearchFlow() { + this.refreshList() + }, + select_station(e) { + this.show_select_station = false + this.query.stationName = e.value[0].name + this.query.stationId = e.value[0].id + this.refreshList() + }, + select_status(e) { + this.show_select_status = false + this.query.statusStr = e.value[0].label + this.query.status = e.value[0].value + this.refreshList() + }, + toDetail(item) { + uni.navigateTo({ + url: `/sub_pages/partner/delivery/delivery-detail?id=${item.id}` + }) + }, + + } + } +</script> +<template> + <!-- 列表页面 --> + <view class="page-delivery"> + <view class="p15" style="min-height: calc(100vh - 260rpx);"> + <view class="search-container m-t-12 flex"> + <view class="flex1 input"> + <u-input placeholder="请输入供应商名称" v-model="query.supplierName"> + <template slot="suffix"> + <uni-icons color="#20613D" type="search" size="24" @tap="buttonSearchFlow"></uni-icons> + </template> + </u-input> + </view> + </view> + + <view class="search-container m-t-12 flex"> + <view class="flex1 input"> + <u-input placeholder="请输入货位号" v-model="query.warehouseLocationCode"> + <template slot="suffix"> + <uni-icons color="#20613D" type="search" size="24" @tap="buttonSearchFlow"></uni-icons> + </template> + </u-input> + </view> + <view class="component-filter-container p10 bg-white m-l-10"> + <view class="flex1" @click="show_select_status=true"> + 配送单状态:{{ query.statusStr || '全部' }} + <image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> + </view> + </view> + </view> + + + <no-data v-if="!list||list.length===0" style="width: 100%;"></no-data> + <view v-for="(item,index) in list" :key="index" class="m-b-24"> + <view class="delivery-item bg-white br-4 p10"> + <view class="title flex"> + <view>供应商:{{ item.supplierName }}</view> + <view class="w-fit m-l-a m-r-0 text-right" v-if="item.supplierTel" + @click="callTel(item.supplierTel)">{{ item.supplierTel }}</view> + + </view> + <view class="line-gray"></view> + <view class="form-item"> + <view class="form-item-label">订单单号</view> + <view class="form-item-value">{{ item.orderNo || '-' }}</view> + </view> + <view class="flex"> + <view class="form-item flex1"> + <view class="form-item-label">集货站</view> + <view class="form-item-value">{{ item.stationName || '-' }}</view> + </view> + <view class="form-item flex1"> + <view class="form-item-label">货位号</view> + <view class="form-item-value">{{ item.warehouseLocationCode || '-' }}</view> + </view> + + </view> + <view class="flex"> + <view class="form-item flex1"> + <view class="form-item-label">状态</view> + <view class="form-item-value">{{ item.statusStr || '-' }}</view> + </view> + + <view class="form-item flex1"> + <view class="form-item-label">送达时间</view> + <view class="form-item-value">{{ item.arriveTime || '-' }}</view> + </view> + </view> + + + <view class="line-gray"></view> + <view class="flex buttons"> + <!-- v-if="item.status==='ARRIVED'||item.status==='PENDING'" --> + <!-- <view class="button button-1 m-l-a m-r-15" @click="compelete(item)">一键质检</view> --> + <view class="button button-0 m-l-a m-r-0" @click="toDetail(item)"> + {{(item.status==='ARRIVED'||item.status==='PENDING')?'前往质检':'查看详情'}} + <!-- 查看详情 --> + </view> + + </view> + </view> + </view> + </view> + + <!-- 判断是否到底了,自动吧 --> + <footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg> + <u-picker @confirm="select_station" keyName="name" @cancel="show_select_station=false" + :show="show_select_station" :columns="columns_station"></u-picker> + <u-picker @confirm="select_status" keyName="label" @cancel="show_select_status=false" :show="show_select_status" + :columns="status_columns"></u-picker> + + + </view> +</template> + +<style lang="scss" scoped> + .page-delivery { + .delivery-item { + .title { + font-weight: 600; + font-size: 32rpx; + color: #000000; + line-height: 40rpx; + } + + .form-item { + line-height: 40rpx; + font-size: 28rpx; + color: #666; + display: flex; + + .form-item-label { + min-width: 120rpx; + } + + .form-item-label::after { + content: ":"; + margin-right: 20rpx; + } + } + + .buttons { + display: flex; + margin-left: auto; + width: fit-content; + + .button { + // width: 216rpx; + padding: 10rpx 20rpx; + line-height: 34rpx; + font-size: 24rpx; + height: 34rpx; + background: #20613D; + text-align: center; + border-radius: 30rpx; + + } + + .button-1 { + background: #fff; + color: #333; + border: 2rpx solid #333; + + } + + .button-0 { + color: #fff; + border: 2rpx solid #20613D; + } + } + } + + .search-container { + display: flex; + margin: 12rpx 0rpx 20rpx 0rpx; + position: relative; + z-index: 1; + + .input { + // flex: 1; + // max-width: 400rpx; + background-color: #fff !important; + // line-height: 58rpx; + // height: 58rpx; + border-radius: 8rpx; + } + + .button { + min-width: 120rpx; + max-width: 120rpx; + margin-left: auto; + margin-right: 0rpx; + text-align: right; + line-height: 70rpx !important; + // height: 58rpx !important; + // display: flex; + } + } + } +</style> \ No newline at end of file diff --git a/sub_pages/partner/delivery/delivery.vue b/sub_pages/partner/delivery/delivery.vue index b57b313..8471586 100644 --- a/sub_pages/partner/delivery/delivery.vue +++ b/sub_pages/partner/delivery/delivery.vue @@ -23,6 +23,8 @@ // this.listApi = '/api/delivery/list/today' this.listApi = '/api/delivery/check/list/today' + // this.listApi = '/api/delivery/check/list' + this.getList() // this.$http.request('get', '/api/station/list', { // params: {} @@ -59,9 +61,9 @@ this.$nextTick(() => { if (this.selecttoday) { - this.listApi = '/api/supplier/delivery/list/today' + this.listApi = '/api/delivery/check/list/today' } else { - this.listApi = '/api/supplier/delivery/list' + this.listApi = '/api/delivery/check/list' } this.refreshList() }) @@ -90,7 +92,8 @@ }, toDetail(item) { uni.navigateTo({ - url: `/sub_pages/partner/delivery/delivery-detail?id=${item.id}` + url: `/sub_pages/partner/delivery/delivery-supplier-detail?supplierId=${item.id}&range=` + (this + .selecttoday ? 'today' : '') }) }, async compelete(item) { @@ -106,11 +109,11 @@ }) if (code === 0) { this.$message.showToast('完成成功') - let tmp = this - setTimeout(async () => { - await tmp.refreshList() - tmp.$forceUpdate() - }, 500) + // let tmp = this + // setTimeout(async () => { + // await tmp.refreshList() + // tmp.$forceUpdate() + // }, 500) } } } @@ -129,12 +132,7 @@ </u-input> </view> </view> - <!-- <view class="m-t-12"> - <view class="m-l-a m-r-20 w-fit flex"> - <radio :checked="selecttoday" @click="changeSelecrRange"></radio> - <view>只查看今日</view> - </view> - </view> --> + <view class="search-container m-t-12 flex"> <view class="flex1 input"> <u-input placeholder="请输入货位号" v-model="query.warehouseLocationCode"> @@ -148,6 +146,12 @@ 配送单状态:{{ query.statusStr || '全部' }} <image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> </view> + </view> + </view> + <view class="m-t-12 m-b-12"> + <view class="m-l-a m-r-20 w-fit flex"> + <radio :checked="selecttoday" @click="changeSelecrRange"></radio> + <view>只查看今日</view> </view> </view> @@ -172,43 +176,48 @@ </view> <view class="line-gray"></view> - <view class="form-item"> + <!-- <view class="form-item"> <view class="form-item-label">订单单号</view> <view class="form-item-value">{{ item.orderNo || '-' }}</view> - </view> + </view> --> <view class="flex"> <view class="form-item flex1"> <view class="form-item-label">集货站</view> <view class="form-item-value">{{ item.stationName || '-' }}</view> </view> - <view class="form-item flex1"> + <!-- <view class="form-item flex1"> <view class="form-item-label">货位号</view> <view class="form-item-value">{{ item.warehouseLocationCode || '-' }}</view> - </view> + </view> --> </view> <view class="flex"> - <view class="form-item flex1"> + <!-- <view class="form-item flex1"> <view class="form-item-label">状态</view> <view class="form-item-value">{{ item.statusStr || '-' }}</view> + </view> --> + <view class="form-item flex1"> + <view class="form-item-label">交易金额</view> + <view class="form-item-value">¥{{ item.totalAmount || '0.00' }}</view> </view> <view class="form-item flex1"> <view class="form-item-label">供货总数</view> <view class="form-item-value">{{ item.totalNum || '-' }}</view> </view> </view> - <view class="form-item flex1"> + <!-- <view class="form-item flex1"> <view class="form-item-label">送达时间</view> <view class="form-item-value">{{ item.arriveTime || '-' }}</view> - </view> + </view> --> <view class="line-gray"></view> <view class="flex buttons"> - <view class="button button-1 m-l-a m-r-15" - v-if="item.status==='ARRIVED'||item.status==='PENDING'" @click="compelete(item)">一键质检</view> + <!-- v-if="item.status==='ARRIVED'||item.status==='PENDING'" --> + <view class="button button-1 m-l-a m-r-15" @click="compelete(item)">一键质检</view> <view class="button button-0 m-l-a m-r-0" @click="toDetail(item)"> - {{(item.status==='ARRIVED'||item.status==='PENDING')?'前往质检':'查看详情'}} + <!-- {{(item.status==='ARRIVED'||item.status==='PENDING')?'前往质检':'查看详情'}} --> + 前往质检 </view> </view> -- Gitblit v1.9.3