<template>
    <view class="page-box">
        <view class="title row bothSide verCenter">
            <text class="t1">当前入仓号</text>
            <text class="t2">{{ erp_order_sn }}</text>
        </view>
        <view class="select-split">
            <view class="box">
                <view class="label row verCenter">
                    <text class="t1">*</text>
                    <text class="t2">请选择需要合箱的子箱号</text>
                </view>
                <view class="pick-list row bothSide verCenter">
                    <view class="uni-text" @click="open()">请选择</view>
                    <text class="iconfont icon-sanjiaoxing1"></text>
                </view>
                <view class="boxed_result row" v-if="filter_list.length > 0">
                    <text class="t1">合箱结果:</text>
                    <view class="row verCenter" style="flex-wrap: wrap;">
                        <block v-for="(item, index) in filter_list" :key="index">
                            <text class="t2">{{ item }}</text>
                            <text v-if="index < filter_list.length - 1" class="t3">+</text>
                        </block>
                    </view>
                </view>
            </view>
        </view>
        <view class="btn row rowCenter verCenter" @click="submit()">确 认</view>
        <view class="btn-reset row rowCenter verCenter" @click="reset()">重 置</view>
        <!-- 选择箱号 -->
        <uni-popup ref="popup" background-color="#F1F4F6">
            <view class="popup-content">
                <view class="selected-items row">
                    <view class="box row verCenter" v-for="(item, index) in filter_list" :key="index">
                        <text class="text">{{ item }}</text>
                        <text class="close" @click="deleteChange(item)">×</text>
                    </view>
                </view>
                <view class="search-baar row verCenter">
                    <text class="iconfont icon-a-riqi11"></text>
                    <input type="text" class="uni-input" placeholder="请输入箱号" placeholder-style="font-size:26rpx;color:#6E767A;" @input="onInput" v-model="searchParams.erp_order_sn" />
                </view>
                <view class="data-list">
                    <view class="box row bothSide verCenter" v-for="(item, index) in list" :key="index" :class="{ curr: filter_status[index] }" @click="filterChange(index)">
                        <text class="text">{{ item.name }}</text>
                        <view class="check-ico"></view>
                    </view>
                </view>
                <view class="pop-btn row rowCenter verCenter" @click="confirmChange">确 认</view>
            </view>
        </uni-popup>
    </view>
</template>

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

export default {
    data() {
        return {
            erp_order_sn: '',
            list: [],
            fix_erp_order_sn: '', //已选择的合箱数据
            filter_list: [], //过滤处理的数据
            filter_status: [], //控制状态
            searchParams: {
                erp_order_sn: ''
            }
        };
    },
    onLoad(options) {
        this.erp_order_sn = options.erp_order_sn || '';
        //携带的子箱号数据
        this.fix_erp_order_sn = options.fix_erp_order_sn || '';
        if (this.fix_erp_order_sn) {
            this.filter_list = this.fix_erp_order_sn.split(',');
        }
    },
    onShow() {
        this.getData();
    },
    methods: {
        open() {
            this.$refs.popup.open('bottom');
        },
        onInput() {
            // 清除之前的定时器
            clearTimeout(this.timer);
            this.timer = setTimeout(() => {
                this.list = []; //数组清空
                this.getData();
            }, 800);
        },
        /**
         * 找出false对应的下标
         * @param {Object} arr
         * @param {Object} target
         */
        findIndex(arr, target) {
            const result = [];
            arr.map((item, index) => {
                if (item === target) {
                    result.push(index);
                }
            });
            return result;
        },
        /**
         *筛选过滤出选中的元素
         */
        filterChange(index) {
            this.$set(this.filter_status, index, (this.filter_status[index] = !this.filter_status[index]));
            let filter_arr = this.findIndex(this.filter_status, true);
            this.filter_list = filter_arr.map(i => this.list[i].name);
        },
        getData() {
            this.request(API.getFixErpOrderSn, 'POST', { erp_order_sn: this.searchParams.erp_order_sn }, true).then(res => {
                if (res.err_code === 0) {
                    this.list = res.data;
                    this.filter_status = createArray(this.list.length, false);

                    //携带的数据转化
                    if (this.fix_erp_order_sn) {
                        const fixSnArray = this.fix_erp_order_sn.split(',');
                        this.filter_status = this.list.map(item => fixSnArray.includes(item.name));
                    }
                } else {
                    uni.showToast({
                        title: res.err_msg,
                        icon: 'error'
                    });
                }
            });
        },
        confirmChange() {
            this.$refs.popup.close();
        },
        submit() {
            uni.$emit('updateData', this.filter_list);
            uni.navigateBack({
                delta: 1
            });
        },
        reset() {
            this.filter_list = [];
            this.filter_status.fill(false);
        },
        deleteChange(val) {
            const matchingIndex = this.list.findIndex(item => item.name === val);
            if (matchingIndex !== -1) {
                this.filter_status[matchingIndex] = false;
                this.filter_list = this.filter_list.filter(item => item !== val);
                this.$forceUpdate();
            }
        }
    }
};
</script>

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