xuxueyang
2024-09-09 2faf4eee0eb42db65e7833004a44e187951e9b55
update合伙人的质检3级页面变成了2级
已修改4个文件
已添加1个文件
805 ■■■■■ 文件已修改
pages.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery-detail.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery-supplier-detail-list.vue 785 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/order-manage/order-manage.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -327,6 +327,13 @@
                        "navigationBarTitleText": "供应商质检详情",
                        "enablePullDownRefresh": true
                    }
                },
                {
                    "path": "delivery/delivery-supplier-detail-list",
                    "style": {
                        "navigationBarTitleText": "供应商质检详情",
                        "enablePullDownRefresh": true
                    }
                },
                {
                    "path": "delivery/delivery-home",
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">
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>
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' : '')
                })
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>