From 2faf4eee0eb42db65e7833004a44e187951e9b55 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期一, 09 九月 2024 00:58:29 +0800 Subject: [PATCH] update合伙人的质检3级页面变成了2级 --- sub_pages/partner/delivery/delivery-detail.vue | 1 sub_pages/partner/delivery/delivery.vue | 2 pages.json | 7 sub_pages/partner/order-manage/order-manage.vue | 10 sub_pages/partner/delivery/delivery-supplier-detail-list.vue | 785 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 799 insertions(+), 6 deletions(-) diff --git a/pages.json b/pages.json index 6cb6d79..a848abe 100644 --- a/pages.json +++ b/pages.json @@ -327,6 +327,13 @@ "navigationBarTitleText": "供应商质检详情", "enablePullDownRefresh": true } + }, + { + "path": "delivery/delivery-supplier-detail-list", + "style": { + "navigationBarTitleText": "供应商质检详情", + "enablePullDownRefresh": true + } }, { "path": "delivery/delivery-home", diff --git a/sub_pages/partner/delivery/delivery-detail.vue b/sub_pages/partner/delivery/delivery-detail.vue index c5aa2d6..77cf96a 100644 --- a/sub_pages/partner/delivery/delivery-detail.vue +++ b/sub_pages/partner/delivery/delivery-detail.vue @@ -370,6 +370,7 @@ <view class="button button-0 " @click="printDeliveryOrder(item)">打印</view> </view> </view> + </view> <uni-popup ref="popup_form" type="top" :mask-click="false"> diff --git a/sub_pages/partner/delivery/delivery-supplier-detail-list.vue b/sub_pages/partner/delivery/delivery-supplier-detail-list.vue new file mode 100644 index 0000000..80d3589 --- /dev/null +++ b/sub_pages/partner/delivery/delivery-supplier-detail-list.vue @@ -0,0 +1,785 @@ +<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: [], + form: { + id: '', + status: '', + pictureList: [], + remarks: '', + deductAmount: 0, + }, + check_status: [ + // { + // label: '退回', + // value: 'back' + // }, + { + label: '降级', + value: 'reduce' + }, + { + label: '缺货', + value: 'lack' + }, + { + label: '补货', + value: 'replace' + }, + { + label: '完成', + value: 'ok' + } + ], + target_levels: [], + } + }, + onLoad(options) { + this.query.supplierId = options.supplierId || '' + this.query.stationId = options.stationId || '' + if (options.warehouseLocationCode) { + this.query.warehouseLocationCode = options.warehouseLocationCode || '' + } + + 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) + }) + this.$http.request('get', '/api/code/value', { + params: { + type: 'FLOWER_LEVEL' + } + }).then(res => { + var data = res.data || [] + this.target_levels = data + }) + + }, + 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}` + }) + }, + printDeliveryOrder(item) { + // this.$message.showToast('敬请期待') + this.$storage.setItem('cache_delivery_order_print', JSON.stringify(item)) + uni.navigateTo({ + url: '/sub_pages/supplier/print/print-list' + }) + }, + deleteCheckImage(index) { + this.form.pictureList.splice(index, 1) + }, + uploadCheckImage() { + let that = this + uni.chooseImage({ + count: 1, // 最多可以选择的图片张数,默认9 + sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 + sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 + success: function(res) { + let errMsg = res.errMsg + let tempFiles = res.tempFiles + if (errMsg === 'chooseImage:ok') { + if (tempFiles[0].size > 1024 * 1024 * 5) { + that.$message.confirm('图片最多支持5M大小,超出大小限制') + return + } + that.$message.showLoading() + that.$http.upload(tempFiles[0].path).then(async res => { + console.log('res1', res) + var pic = res.data && res.data.length > 0 && res.data[ + 0] + .url || '' + that.$message.hideLoading() + that.form.pictureList.push(pic) + console.log('form', that.form) + that.$forceUpdate() + }).catch(res => { + that.$message.hideLoading() + console.error(res) + }) + } + } + }) + }, + closeCheckForm() { + this.$refs.popup_form.close() + + }, + async clickCheck(item, status) { + if (status === 'ok') { + //完成质检,不用上传东西 + await this.$message.confirm('确定完成此商品的质检') + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('get', '/api/delivery/check/info/' + status, { + params: { + orderItemId: item.id + } + }) + this.$message.hideLoading() + if (code === 0) { + await this.$message.showToast('操作成功') + this.init() + // setTimeout(() => { + // this.init() + // }, 500) + } + return + } + this.form = { + orderItemId: item.id || '', + + status: status, + statusStr: '', + num: 0, + remarks: '', + pictureList: [], + + + } + if (status === 'reduce') { + this.form = { + ...this.form, + deductAmount: 0, + targetLevel: '', + pictureList: [], + } + } + + + this.check_status.forEach(tmp => { + if (tmp.value === this.form.status) { + this.form.statusStr = tmp.label + } + }) + + //20240819更新一下操作情况 + //先获取详情,再设置参数 + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('get', '/api/delivery/check/info/' + status, { + params: { + orderItemId: item.id + } + }) + this.$message.hideLoading() + if (code === 0) { + this.form = { + ...this.form, + ...(data || {}) + } + if (!this.form.pictureList) { + this.form.pictureList = [] + } + //显示 + this.$refs.popup_form.open() + + } + + }, + async submitCheck() { + if (this.form.status == 'reduce') { + if (isNaN(parseFloat(this.form.deductAmount)) || this.form.deductAmount < 0) { + this.$message.showToast('扣款金额需要大于等于0') + return + } + if (this.form.deductAmount) { + if ((parseInt(this.form.deductAmount * 100) / 100) != this.form.deductAmount) { + this.$message.showToast('扣款金额最多2位小数字') + return + } + } + if (parseInt(this.form.deductAmount * 100) / 100 != this.form.deductAmount) { + + } + if (isNaN(parseInt(this.form.num)) || this.form.num < 0) { + this.$message.showToast('数量需要大于等于0') + return + } + if (!this.form.pictureList || this.form.pictureList.length < 1) { + this.$message.showToast('未上传图片') + return + } + if (!this.form.targetLevel) { + this.$message.showToast('未选择降级等级') + return + } + } + if (this.form.status == 'replace' || this.form.status == 'lack') { + if (isNaN(parseInt(this.form.num)) || this.form.num < 0) { + this.$message.showToast('数量需要大于等于0') + return + } + } + + + this.$message.showLoading() + const { + code + } = await this.$http.request('post', '/api/delivery/check/info/do/' + this.form.status, { + data: { + ...this.form + } + }) + this.$message.hideLoading() + if (code === 0) { + this.$refs.popup_form.close() + + await this.$message.showToast('操作成功') + this.refreshList() + + + } + }, + + } + } +</script> +<template> + <!-- 列表页面 --> + <view class="page-delivery"> + <view class="p15" style="min-height: calc(100vh - 260rpx);"> + <view class="search-container m-t-12 flex" v-if="!query.supplierId"> + <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> + <view class="flex"> + <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="m-t-12 flex" v-if="item.arriveImageList&&item.arriveImageList.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,vv) of item.arriveImageList" :key="vv"> + <image class="arrive-img" :src="timg" @click.stop="previewImg(timg)"> + </image> + </view> + </view> + <view v-for="(each,vv) of item.items" :key="vv" class="delivery-order-item m-t-12"> + <view class="flex"> + <image class="flower-img img100 m-r-6" :src="each.flowerCover" + @click="previewImg(each.flowerCover)"> + </image> + <view class="flex1"> + <view class=" flex"> + <view class="title">{{ each.flowerName }}<span + class="level">{{ each.flowerLevelStr || ''}}</span></view> + </view> + <view class="each-list"> + <view class="each-item"> + <view class="label">颜色</view> + <view class="value">{{ each.flowerColor || '-' }}</view> + + </view> + <view class="each-item"> + <view class="label">规格</view> + <view class="value">{{ each.flowerUnit || '-' }}</view> + </view> + <view class="each-item"> + <view class="label">数量</view> + <view class="value">{{ each.num || 0 }}</view> + + </view> + </view> + <view class="each-list"> + <view class="each-item"> + <view class="label">价格</view> + <view class="value">¥{{ each.price || '-' }}</view> + + </view> + <view class="each-item"> + <view class="label-color">降级</view> + <view class="value-color">{{ each.reduceNum || 0 }}</view> + </view> + <view class="each-item"> + <view class="label-color">缺货</view> + <view class="value-color">{{ each.lackNum || 0 }}</view> + + </view> + <view class="each-item"> + <view class="label-color">补货</view> + <view class="value-color">{{ each.replaceNum || 0 }}</view> + + </view> + </view> + </view> + </view> + <view class="line-gray" + v-if="each.status == 'ARRIVED'||each.status == 'PENDING'||!each.status||true"> + + </view> + <view class="buttons-each" + v-if="each.status == 'ARRIVED'||each.status == 'PENDING'||!each.status||true"> + <view class="button text-center" v-for="button of check_status" :key="button.value" + @click.stop="clickCheck(each,button.value)">{{ button.label }} + </view> + </view> + <view class="line-gray"> + + </view> + <view class="buttons-each m-r-0 m-l-a w-fit"> + <view class="button button-0 " @click="printDeliveryOrder(each)">打印</view> + </view> + </view> + + <!-- <view class="line-gray"></view> + + <view class="flex buttons"> + <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> + + <uni-popup ref="popup_form" type="top" :mask-click="false"> + <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'" style="height: unset;"> + <view class="form-item-label require" style="min-width: 140rpx;margin-right: 10rpx;"> + 降级等级 + </view> + <view class="form-item-value flex "> + <view class="value-item" @click="()=>{ + if(form.targetLevel!==query.value){ + form.targetLevel = each.value + } + }" :class="[form.targetLevel==each.value?'cur':'']" v-for="(each, j) in target_levels" :key="j"> + {{ each.label || '-' }} + </view> + + </view> + </view> + <view class="form-item" + v-if="form.status==='reduce' || form.status==='replace' || form.status==='lack'"> + <view class="form-item-label require"> + 数量 + </view> + <view class="form-item-value"> + <input v-model="form.num" placeholder="请输入数量" type="number" class="form-input"></input> + + </view> + </view> + <view class="form-item" v-if="form.status==='reduce'"> + <view class="form-item-label require"> + 扣款金额 + </view> + <view class="form-item-value"> + <input v-model="form.deductAmount" placeholder="请输入扣款金额" type="digit" + class="form-input"></input> + + </view> + </view> + <view class="form-item" + v-if="form.status==='reduce'||form.status==='replace' || form.status==='lack'"> + <view class="form-item-label"> + 质检备注 + </view> + <view class="form-item-value"> + <input v-model="form.remarks" placeholder="请输入质检备注" class="form-input"></input> + </view> + </view> + <view class="form-item" v-if="form.status==='reduce'"> + <view class="form-item-label require"> + 图片 + </view> + <view class="form-item-value m-l-a m-r-0"> + <view class="t-red" @click="uploadCheckImage()">上传</view> + </view> + </view> + <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> + </view> + </view> + </view> + + <view class="button-green m-t-15" @click="submitCheck">提交</view> + </view> + </uni-popup> + + </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; + } + } + + .arrive-img { + width: 96rpx; + height: 96rpx; + border-radius: 4rpx; + border: 2rpx dashed #CECECE; + } + + .delivery-order-item { + .title { + font-weight: 600; + font-size: 28rpx; + color: #000000; + line-height: 40rpx; + + .level { + font-weight: 400; + font-size: 28rpx; + color: #20613D; + line-height: 40rpx; + margin-left: 20rpx; + } + } + + .buttons-each { + display: flex; + + .button { + margin: 0 auto; + width: 98rpx; + line-height: 48rpx; + border-radius: 24rpx; + border: 2rpx solid #CECECE; + text-align: center; + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + } + + .button-0 { + color: #fff; + border: 2rpx solid #20613D; + background: #20613D; + } + } + + .flower-img { + width: 128rpx; + height: 118rpx; + min-width: 128rpx; + min-height: 118rpx; + } + + .each-list { + display: flex; + flex-wrap: wrap; + margin-top: 6rpx; + + .each-item { + min-width: 30%; + max-width: 40%; + text-align: center; + margin-left: 0rpx; + margin-right: auto; + display: flex; + + .label { + font-weight: 400; + font-size: 24rpx; + color: #666666; + text-align: left; + padding-right: 10rpx; + } + + .label::after { + content: ": " + } + + .value { + font-weight: 400; + font-size: 24rpx; + color: #666666; + } + + .label-color { + font-weight: 400; + font-size: 24rpx; + color: #FD191C; + text-align: left; + padding-right: 10rpx; + } + + .value-color { + font-weight: 400; + font-size: 24rpx; + color: #FD191C; + } + } + } + } + + + } + + .popup-check-form { + background: #FFFFFF; + border-radius: 16rpx; + // width: 690rpx; + height: 882rpx; + margin-top: 120rpx; + margin-left: 30rpx; + margin-right: 30rpx; + padding: 24rpx 36rpx; + + .check-img { + width: 96rpx; + height: 96rpx; + border-radius: 4rpx; + border: 2rpx dashed #CECECE; + } + + .submit { + margin-top: 30rpx; + + .form-input { + height: 36rpx; + line-height: 36rpx; + } + + .value-item { + min-width: 152rpx; + width: fit-content; + text-align: center; + height: 58rpx; + background: #F1F5F2; + border-radius: 36rpx; + margin-bottom: 18rpx; + font-weight: 400; + font-size: 28rpx; + line-height: 58rpx; + padding: 8rpx 24rpx; + color: #33a868; + margin-left: 16rpx; + margin-right: 16rpx; + border: 2rpx solid #F1F5F2; + } + + .value-item.cur { + background: #E1F0E7; + border-radius: 36rpx; + border: 2rpx solid #20613D; + color: #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 0cf2ab0..e59e10a 100644 --- a/sub_pages/partner/delivery/delivery.vue +++ b/sub_pages/partner/delivery/delivery.vue @@ -92,7 +92,7 @@ }, toDetail(item) { uni.navigateTo({ - url: `/sub_pages/partner/delivery/delivery-supplier-detail?warehouseLocationCode=${this.query.warehouseLocationCode||''}&supplierId=${item.id}&range=` + + url: `/sub_pages/partner/delivery/delivery-supplier-detail-list?warehouseLocationCode=${this.query.warehouseLocationCode||''}&stationId=${this.query.stationId||''}&supplierId=${item.id}&range=` + (this .selecttoday ? 'today' : '') }) diff --git a/sub_pages/partner/order-manage/order-manage.vue b/sub_pages/partner/order-manage/order-manage.vue index af4fbd6..8e9de6d 100644 --- a/sub_pages/partner/order-manage/order-manage.vue +++ b/sub_pages/partner/order-manage/order-manage.vue @@ -16,7 +16,7 @@ <view> 订单:{{ item.orderNo }} </view> - <view class="status t-red m-l-a m-r-0">{{ item.paymentAmount }}</view> + <view class="status t-red m-l-a m-r-0">{{ item.paymentAmount || '' }}</view> </view> <view class="flex"> <view class="desc flex flex1"> @@ -29,7 +29,7 @@ <view class="label"> 支付时间: </view> - <view class="value">{{ item.paymentTime }}</view> + <view class="value">{{ item.paymentTime||'-' }}</view> </view> </view> <ivew class="flex"> @@ -37,20 +37,20 @@ <view class="label"> 收货人: </view> - <view class="value">{{ item.customer }}</view> + <view class="value">{{ item.customer ||'-'}}</view> </view> <view class="desc flex flex1"> <view class="label"> 收货人手机号码: </view> - <view class="value">{{ item.customerTel }}</view> + <view class="value">{{ item.customerTel ||'-'}}</view> </view> </ivew> <view class="desc flex"> <view class="label"> 收货地址: </view> - <view class="value">{{ item.customerAddress }}</view> + <view class="value">{{ item.customerAddress ||'-'}}</view> </view> -- Gitblit v1.9.3