xuxueyang
2024-08-20 ccf8a9e7e53ce1516960cbd101e0afc7ac8ea2c2
update 质检功能
已修改4个文件
已添加1个文件
392 ■■■■ 文件已修改
common/global.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery-detail.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery-supplier-detail.vue 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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
                    }
                },
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;
                }
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>
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>