<template>
    <view class="stockRecheck-print">
        <view class="search-box row bothSide verCenter">
            <view class="sn row rowCenter verCenter">
                <picker :value="index" :range="array">
                    <view class="row verCenter">
                        <view class="uni-input">{{ array[index] }}</view>
                        <view class="uni-arrow"></view>
                    </view>
                </picker>
            </view>
            <view class="search-bar row bothSide verCenter">
                <view class="row verCenter">
                    <text class="iconfont icon-juxing1"></text>
                    <input class="uni-input" placeholder="请扫描或输入号码" placeholder-style="color:#919399" v-model="searchParams.stock_out_sn" @input="handleInput" />
                </view>
                <text class="iconfont icon-a-juxing11" @click="clearInput()" v-if="input_flag"></text>
            </view>
        </view>
        <view class="list" v-if="list.length > 0">
            <view class="box row" v-for="(item, index) in list" :key="index">
                <view class="input-box row verCenter">
                    <text class="label">出库单号:</text>
                    <text class="tt">{{ item.stock_out_sn }}</text>
                </view>
                <view class="input-box row verCenter">
                    <text class="label">状态:</text>
                    <text class="tt">{{ item.stock_out_status_val }}</text>
                </view>
                <view class="bor" style="flex: 0 0 100%;"></view>
                <view class="input-box row verCenter">
                    <text class="label">总 数 量:</text>
                    <text class="text">{{ item.total_qty }}</text>
                </view>
                <view class="input-box row verCenter">
                    <text class="label">打包箱数:</text>
                    <text class="text">{{ item.box_num }}</text>
                </view>
                <view class="input-box row verCenter" style="flex: 0 0 100%;">
                    <text class="label">上游备注:</text>
                    <text class="text">{{ item.upstream_remark }}</text>
                </view>
                <view class="input-box row verCenter">
                    <text class="label">销 售 员:</text>
                    <text class="text">{{ item.sale_name }}</text>
                </view>
                <view class="input-box row verCenter">
                    <text class="label">采 购 员:</text>
                    <text class="text">{{ item.pur_user_name }}</text>
                </view>
                <view class="input-box row verCenter" style="flex: 0 0 100%;">
                    <text class="label">收货客户:</text>
                    <text class="text">{{ item.customer_name }}</text>
                </view>
                <view class="input-box row verCenter" style="flex: 0 0 100%;">
                    <text class="label">操 作 人:</text>
                    <text class="text">{{ item.create_name }}</text>
                </view>
                <view class="input-box row verCenter" style="flex: 0 0 100%;">
                    <text class="label">完成时间:</text>
                    <text class="text">{{ item.finish_time }}</text>
                </view>
                <view class="btn row rowCenter verCenter" @click="showDrawer(item.stock_out_sn)">选择</view>
            </view>
        </view>
        <!-- 无数据展示 -->
        <view class="no-date column rowCenter verCenter" v-else>
            <text class="iconfont icon-a-juxing21"></text>
            <text class="text">查不到当前数据</text>
        </view>
        <!-- 打快递单弹窗 -->
        <uni-drawer ref="showRight" mode="right">
            <view class="uni-drawer-picking" v-if="detail.stock_out_info">
                <view class="title row rowCenter verCenter">
                    <text class="iconfont icon-juxing2" @click="closeDrawer(1)"></text>
                    <text class="text">打快递单</text>
                </view>
                <view class="field-item  row" style="margin-top: 39rpx;">
                    <view class="item row verCenter">
                        <text class="label">出库单号:</text>
                        <text class="text">{{ detail.stock_out_info.stock_out_sn }}</text>
                    </view>
                    <view class="item row verCenter">
                        <text class="label">状态:</text>
                        <text class="text">{{ detail.stock_out_info.stock_out_status_val }}:</text>
                    </view>
                </view>
                <view class="bor"></view>
                <view class="field-item  row">
                    <view class="item row verCenter" style="flex: 0 0 100%;">
                        <text class="label">上游备注:</text>
                        <text class="tt" style="max-width: 100%;">{{ detail.upstream_remark }}</text>
                    </view>
                    <view class="item row verCenter" style="flex: 0 0 100%;">
                        <text class="label">收货客户:</text>
                        <text class="tt">{{ detail.stock_out_info.customer_name }}</text>
                    </view>
                    <view class="item row verCenter">
                        <text class="label">操 作 人:</text>
                        <text class="tt">{{ detail.stock_out_info.create_name }}</text>
                    </view>
                </view>
                <view class="bor"></view>
                <view class="item-tit row verCenter bothSide">
                    <text>交货信息</text>
                    <view class="text">
                        <text class="label">包 裹 数:</text>
                        <text class="tt">{{ detail.stock_out_info.box_num }}</text>
                    </view>
                </view>
                <view class="form-input">
                    <view class="input-title">
                        <text class="input-title-t1">*</text>
                        <text class="input-title-t2">交货方式:</text>
                    </view>
                    <view class="select-box row">
                        <picker @change="bindPickerChange(1, $event)" :value="real_shipping_type_index" :range="real_shipping_type_data" :range-key="'name'" style="width: 100%;">
                            <view class="row verCenter bothSide wrap">
                                <view class="uni-input">{{ real_shipping_type_data[real_shipping_type_index].name }}</view>
                                <view class="uni-arrow"></view>
                            </view>
                        </picker>
                    </view>
                </view>
                <view class="form-input">
                    <view class="input-title">
                        <text class="input-title-t1">*</text>
                        <text class="input-title-t2">物流公司:</text>
                    </view>
                    <view class="select-box row">
                        <picker @change="bindPickerChange(2, $event)" :value="real_shipping_id_index" :range="real_shipping_id_data" :range-key="'name'" style="width: 100%;">
                            <view class="row verCenter bothSide wrap">
                                <view class="uni-input">{{ real_shipping_id_data[real_shipping_id_index].name || '请选择' }}</view>
                                <view class="uni-arrow"></view>
                            </view>
                        </picker>
                    </view>
                </view>
                <view class="form-input">
                    <view class="input-title">
                        <text class="input-title-t1">*</text>
                        <text class="input-title-t2">物流模式:</text>
                    </view>
                    <view class="select-box row">
                        <picker @change="bindPickerChange(3, $event)" :value="real_shipping_mode_index" :range="real_shipping_mode_data" :range-key="'name'" style="width: 100%;">
                            <view class="row verCenter bothSide wrap">
                                <view class="uni-input">{{ real_shipping_mode_data[real_shipping_mode_index].name }}</view>
                                <view class="uni-arrow"></view>
                            </view>
                        </picker>
                    </view>
                </view>
                <template v-if="formParams.real_shipping_type == 1 && formParams.real_shipping_id == 1"></template>
                <template v-else>
                    <view class="form-input">
                        <view class="input-title">
                            <text class="input-title-t1">*</text>
                            <text class="input-title-t2">物流单号:</text>
                        </view>
                        <view class="input-box"><input type="text" class="uni-input" placeholder-style="color:#919399" placeholder="请输入" v-model="formParams.shipping_code" /></view>
                    </view>
                </template>
                <view class="print row verCenter" @click="toggel()">
                    <text class="check-box-icon" :class="{ curr: flag }"></text>
                    <text class="tt">签回单</text>
                </view>
                <view class="bor"></view>
                <view class="item-tit">地址信息</view>
                <view class="field-item  row">
                    <view class="item row verCenter" style="flex: 0 0 100%;">
                        <text class="label">收货公司:</text>
                        <text class="tt">{{ detail.stock_out_info.customer_name }}</text>
                    </view>
                    <view class="item row verCenter">
                        <text class="label">收 货 人:</text>
                        <text class="tt">{{ detail.stock_out_address.consignee }}</text>
                    </view>
                    <view class="item row verCenter">
                        <text class="label">联系电话:</text>
                        <text class="tt">{{ detail.stock_out_address.mobile }}</text>
                    </view>
                    <view class="item row verCenter" style="flex: 0 0 100%;">
                        <text class="label">收货地址:</text>
                        <text class="tt" style="max-width: 100%;">{{ detail.stock_out_address.province }}{{ detail.stock_out_address.city }}{{ detail.stock_out_address.district }}{{ detail.stock_out_address.address }}</text>
                    </view>
                </view>
                <view class="btn row verCenter bothSide">
                    <template v-if="formParams.real_shipping_type == 1 && formParams.real_shipping_id == 1">
                        <view class="btn2 row rowCenter verCenter" style="width: 50%;" @click="updateDeliveryInfo(detail.stock_out_info.stock_out_id)">保存</view>
                        <view class="btn1 row rowCenter verCenter" style="width: 50%;" @click="printExpress(detail.stock_out_info.stock_out_id)">打 印</view>
                    </template>
                    <template v-else>
                        <view class="btn2 row rowCenter verCenter" style="width: 100%;" @click="updateDeliveryInfo(detail.stock_out_info.stock_out_id)">保存</view>
                    </template>
                </view>
            </view>
        </uni-drawer>
    </view>
</template>

<script>
import { API } from '@/util/api.js';
import debounce from 'lodash/debounce';

export default {
    data() {
        return {
            input_flag: false,
            flag: false,
            page: 1,
            limit: 10000,
            list: [],
            index: 0,
            real_shipping_type_index: 0,
            real_shipping_id_index: 0,
            real_shipping_mode_index: 0,
            array: ['出库单号'],
            detail: {},
            real_shipping_id_data: [], //物流公司数据
            real_shipping_mode_data: [{ name: '空运', value: 1 }, { name: '陆运', value: 2 }, { name: '重货快运', value: 3 }, { name: '物流普运', value: 4 }], //物流模式数据
            searchParams: {
                stock_out_sn: ''
            },
            formParams: {
                real_shipping_type: '', //交货方式
                real_shipping_id: '', //物流公司
                real_shipping_mode: '', //物流模式
                shipping_code: '', //物流单号
                is_receipt: '' //是否签回单
            }
        };
    },
    onShow() {
        this.getData();
    },
    computed: {
        //交货方式数据
        real_shipping_type_data() {
            const company_id = Number(uni.getStorageSync('company_id'));
            if (company_id == 1) {
                return [{ name: '快递', value: 1 }, { name: '自送', value: 2 }, { name: '客户自取', value: 3 }, { name: '同城物流', value: 4 }];
            } else if (company_id == 2) {
                return [{ name: '快递', value: 1 }];
            } else {
                return [];
            }
        }
    },
    methods: {
        toggel() {
            this.flag = !this.flag;
            if (this.flag) {
                this.formParams.is_receipt = 1;
            } else {
                this.formParams.is_receipt = -1;
            }
        },
        bindPickerChange: function(type, e) {
            if (type == 1) {
                this.real_shipping_type_index = e.detail.value;
                this.formParams.real_shipping_type = this.real_shipping_type_data[e.detail.value].value;
                this.realShippChage();
            } else if (type == 2) {
                this.real_shipping_id_index = e.detail.value;
                this.formParams.real_shipping_id = this.real_shipping_id_data[e.detail.value].value;
            } else if (type == 3) {
                this.real_shipping_mode_index = e.detail.value;
                this.formParams.real_shipping_mode = this.real_shipping_mode_data[e.detail.value].value;
            }
            console.log('picker发送选择改变,携带值为', e.detail.value);
        },
        /**
         * 根据所选的交货方式,显示对应的物流公司
         * @param {Object} value
         */
        realShippChage() {
            const company_id = Number(uni.getStorageSync('company_id'));
            let value = this.formParams.real_shipping_type;

            if (company_id == 1) {
                this.real_shipping_id_data = [];
                if (value == 1) {
                    this.real_shipping_id_data.push({ name: '顺丰', value: 1 }, { name: '京东', value: 11 }, { name: '中通', value: 18 }, { name: '韵达', value: 5 });
                } else if (value == 2) {
                    this.real_shipping_id_data = [];
                } else if (value == 3) {
                    this.real_shipping_id_data.push({ name: '自提', value: 10 });
                } else if (value == 4) {
                    this.real_shipping_id_data.push({ name: '顺丰同城', value: 19 }, { name: '货拉拉', value: 20 }, { name: '跨越速运', value: 21 });
                }
            } else if (company_id == 2) {
                if (value == 1) {
                    this.real_shipping_id_data.push({ name: '顺丰', value: 1 }, { name: 'UPS', value: 17 }, { name: 'Fedex', value: 13 }, { name: 'TNT', value: 9 }, { name: 'DHL', value: 12 });
                }
            }
        },
        showDrawer(stock_out_sn) {
            this.$refs.showRight.open();
            this.getStockOutDetail(stock_out_sn);
        },
        closeDrawer() {
            this.$refs.showRight.close();
        },
        /**
         * 清空数据
         */
        clearInput() {
            this.input_flag = false;
            this.searchParams.stock_out_sn = '';
            this.getData();
        },
        /**
         * 单号搜索
         * @param {Object} event
         */
        handleInput: debounce(function(event) {
            var val = event.target.value;
            if (val) {
                this.input_flag = true;
            } else {
                this.input_flag = false;
            }
            this.getData();
        }, 500),
        /**
         * 获取列表数据
         */
        getData() {
            this.request(API.getToPrintList, 'POST', { page: this.page, limit: this.limit, ...this.searchParams }, false).then(res => {
                if (res.code === 0) {
                    this.list = res.data.list;
                } else {
                    uni.showToast({
                        title: res.msg,
                        icon: 'error'
                    });
                }
            });
        },
        /**
         * 详情
         */
        getStockOutDetail(stock_out_sn) {
            this.request(API.getStockOutDetail, 'POST', { stock_out_sn: stock_out_sn }, true).then(res => {
                if (res.code === 0) {
                    this.detail = res.data;
                    this.formParams.real_shipping_type = 1; //设置默认
                    this.formParams.real_shipping_id = 1;
                    this.formParams.shipping_code = res.data.stock_out_address.shipping_code;
                    this.realShippChage(1);
                } else {
                    uni.showToast({
                        title: res.msg,
                        icon: 'error'
                    });
                }
            });
        },
        /**
         * 更新交货信息
         */
        updateDeliveryInfo(stock_out_id) {
            this.request(
                API.updateDeliveryInfo,
                'POST',
                {
                    stock_out_id: stock_out_id,
                    real_shipping_type: this.formParams.real_shipping_type,
                    real_shipping_id: this.formParams.real_shipping_id,
                    real_shipping_mode: this.formParams.real_shipping_mode,
                    shipping_code: this.formParams.shipping_code,
                    is_receipt: 1
                },
                true
            ).then(res => {
                if (res.code === 0) {
                    uni.showToast({
                        title: '保存成功',
                        icon: 'success'
                    });
                } else {
                    uni.showModal({
                        itle: '提示',
                        content: res.msg,
                        showCancel: false
                    });
                }
            });
        },
        /**
         * 打印快递单
         */
        printExpress(stock_out_id) {
            this.request(API.printExpress, 'POST', { stock_out_id: stock_out_id }, true).then(res => {
                if (res.code === 0) {
                    uni.showLoading({
                        title: '正在打印中,请查看打印机'
                    });
                } else {
                    uni.showModal({
                        title: '提示',
                        content: res.msg,
                        showCancel: false
                    });
                }
            });
        }
    }
};
</script>

<style scoped lang="scss">
@import '@/assets/css/stockRecheck/print.scss';
</style>