<template>
    <div>
        <el-form :inline="true" :model="filterQuery" class="query-form" size="mini">
            <el-row>
                <el-form-item class="query-form-item">
                    <el-input v-model="filterQuery.id" placeholder="单号"></el-input>
                </el-form-item>

                <el-form-item class="query-form-item">
                    <el-select v-model="filterQuery.mainAction" placeholder="出入库类型">
                        <el-option label="全部" value=""></el-option>
                        <el-option label="入库" value="WareHouseIn"></el-option>
                        <el-option label="出库" value="WareHouseOut"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item class="query-form-item">
                    <el-select v-model="filterQuery.action" placeholder="业务类型">
                        <el-option label="全部" value=""></el-option>
                        <el-option label="生产入库" value="ProduceWareHouseIn"></el-option>
                        <el-option label="采购入库" value="PurchaseWareHouseIn"></el-option>
                        <el-option label="退货入库" value="ReturnWareHouseIn"></el-option>
                        <el-option label="调拨入库" value="AllocateWareHouseIn"></el-option>
                        <el-option label="销售出库" value="SalesWareHouseOut"></el-option>
                        <el-option label="退货出库" value="ReturnWareHouseOut"></el-option>
                        <el-option label="抽检出库" value="CheckWareHouseOut"></el-option>
                        <el-option label="销毁出库" value="DestoryWareHouseOut"></el-option>
                        <el-option
                            label="调拨出库"
                            value="AllocateWareHouseOut"
                        ></el-option>
                        <el-option label="返工出库" value="ReworkWareHouseOut"></el-option>
                        <el-option
                            label="直调出库"
                            value="DirectAllocateWareHouseOut"
                        ></el-option>
                        <el-option label="盘点" value="StockCheck"></el-option>
                        <el-option label="码替换" value="CodeReplace"></el-option>
                        <el-option label="码注销" value="CodeDestory"></el-option>
                        <!-- <el-option v-for="item in roles" :key="item.id" :label="item.name" :value="item.id"></el-option> -->
                    </el-select>
                </el-form-item>
                <el-form-item>
                    <el-button-group>
                        <el-button
                            type="primary"
                            icon="el-icon-refresh"
                            @click="onReset"
                        ></el-button>
                        <el-button type="primary" icon="search" @click="onSubmit"
                        >查询
                        </el-button
                        >
                    </el-button-group>
                </el-form-item>
            </el-row>
        </el-form>

        <el-table v-loading="loading" :data="list" style="width: 100%">
            <el-table-column label="序号" type="index"></el-table-column>
            <el-table-column label="业务类型" prop="action">
                <template slot-scope="scope">
                    <span>{{ wareHouseMap[scope.row.action] }}</span>
                </template>
            </el-table-column>
            <el-table-column label="订单号" prop="id"></el-table-column>
            <el-table-column label="来源订单号" prop="corpOrderId" show-overflow-tooltip></el-table-column>
            <el-table-column label="来源" prop="fromType"></el-table-column>
            <el-table-column label="往来单位" prop="fromCorp" width="220">
                <template slot-scope="scope">
                    <p v-if="scope.row.fromCorp == null">
                        <el-button
                            type="primary"
                            size="mini"
                            @click.native.stop="handleUnitClick(scope.row)"
                        >选择往来单位
                        </el-button
                        >
                    </p>
                    <p v-if="scope.row.fromCorp != null">
                        <el-button
                            type="primary"
                            size="mini"
                            @click.native.stop="handleUnitClick(scope.row)"
                        >{{ scope.row.fromCorp }}
                        </el-button
                        >
                    </p>
                </template>
            </el-table-column>
            <el-table-column label="创建时间" prop="actDate" show-overflow-tooltip>
                <template slot-scope="scope">
                    <i class="el-icon-time"></i>
                    <span>{{ scope.row.actDate }}</span>
                </template>
            </el-table-column>
            <el-table-column label="状态" prop="status" width="100">
                <template slot-scope="scope">
                    <el-tag :type="(scope.row.status == 3) | statusFilterType">{{
                        checkStatus[scope.row.status]
                        }}
                    </el-tag>
                </template>
            </el-table-column>
            <el-table-column label="操作" width="300" fixed="right">
                <template slot-scope="scope">
                    <el-button
                        type="text"
                        size="small"
                        @click.native.stop="intentDetail(scope.row)"
                    >详情
                    </el-button
                    >
                    <el-button
                        type="text"
                        size="small"
                        @click.native.stop="deleteDialog(scope.row.id)"
                    >删除
                    </el-button
                    >
                    <el-button
                        type="text"
                        size="small"
                        @click.native.stop="repeatCheckClick(scope.row)"
                    >立即校验
                    </el-button
                    >
                </template>
            </el-table-column>
        </el-table>

        <el-dialog title="错误信息" :visible.sync="dialogVisible" width="30%">
            <span>{{ errorDetail }}</span>
            <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="dialogVisible = false"
        >关 闭</el-button
        >
      </span>
        </el-dialog>
        <el-dialog
            title="选择往来单位"
            :visible.sync="dialogTableVisible"
            width="70%"
        >
            <el-form :inline="true" :model="unitquery" class="query-form" size="mini">
                <el-form-item class="query-form-item">
                    <el-input v-model="unitquery.key" placeholder="搜索"></el-input>
                </el-form-item>
                <el-form-item>
                    <el-button
                        type="primary"
                        icon="search"
                        @click.native.stop="getUnitList()"
                    >查询
                    </el-button
                    >
                </el-form-item>
            </el-form>

            <el-table
                v-loading="loading"
                :data="unitlist"
                style="width: 100%"
                @row-click="selectUnit"
            >
                <el-table-column label="序号" type="index"></el-table-column>
                <el-table-column
                    label="往来单位ID"
                    prop="erpId"
                    show-overflow-tooltip
                ></el-table-column>
                <el-table-column
                    label="往来单位名称"
                    prop="name"
                    show-overflow-tooltip
                ></el-table-column>
                <el-table-column
                    label="往来单位简写"
                    prop="spell"
                    show-overflow-tooltip
                ></el-table-column>
                <el-table-column
                    label="地址"
                    prop="addr"
                    show-overflow-tooltip
                ></el-table-column>

            </el-table>
        </el-dialog>

        <el-dialog
            title="单号详情"
            :visible.sync="codeDetailVisible"
            width="80%"
            v-if="codeDetailVisible"
        >
            <codeDetail
                :idQuery="idQuery"
                v-on:closeDetailDialog="closeDetailDialog"
            ></codeDetail>
        </el-dialog>
        <el-pagination
            :page-size="filterQuery.limit"
            @current-change="handleCurrentChange"
            layout="prev, pager, next"
            :total="total"
        ></el-pagination>
    </div>
</template>

<script>
    import {
        orderListByStatus,
        deleteByOrderId,
        commitOrder,
        updateUnit,
    } from "../../api/inout/order";
    import { repeatCheck } from "../../api/inout/erpOrder";
    import {getBasicUnitMaintains} from "../../api/basic/basicUnitMaintain"
    import draggable from "vuedraggable";
    import codeDetail from "./IOFinishCode";

    const formJson = {
        site_id: "",
        site_name: "",
        describe: "",
        ads: [],
    };

    export default {
        data() {
            return {
                filterQuery: {
                    id: "",
                    mainAction: null,
                    action: null,
                    page: 1,
                    limit: 20,
                    status: 2
                },
                checkStatus: {
                    1: "等待处理",
                    2: "等待校验",
                    3: "处理异常",
                    4: "已完成"
                },
                curIndex: "",
                unitquery: {key: "", page: 1, limit: 20},
                unitlist: [],
                unitUpdateQuery: {
                    id: "",
                    fromCorpId: "",
                    fromCorp: "",
                },
                idQuery: {
                    id: "",
                },
                list: [],
                adId: [],
                adSelectList: [],
                adList: {},
                adListNoDataText: "无数据",
                queryAdIdAsyncLoading: false,
                codeDetailVisible: false,
                total: 0,
                loading: true,
                index: null,
                formName: null,
                errorDetail: "1111111111111",
                formMap: {
                    add: "新增",
                    edit: "编辑",
                },
                deleteData: {
                    id: "",
                },
                dialogTableVisible: false,
                wareHouseMap: {
                    ProduceWareHouseIn: "生产入库",
                    SalesWareHouseOut: "销售出库",
                    AllocateWareHouseIn: "调拨入库",
                    PurchaseWareHouseIn: "采购入库",
                    ReturnWareHouseIn: "退货入库",
                    ProduceWareHouseOut: "销售出库",
                    ReturnWareHouseOut: "退货出库",
                    AllocateWareHouseOut: "调拨出库",
                    ReworkWareHouseOut: "返工出库",
                    DestoryWareHouseOut: "销毁出库",
                    CheckWareHouseOut: "抽检出库",
                    DirectAllocateWareHouseOut: "直调出库",
                    CodeReplace: "码替换",
                    CodeDestory: "码注销",
                    StockCheck: "盘点",
                },
                formLoading: false,
                dialogVisible: false,
                formData: formJson,
                deleteLoading: false,
            };
        },
        components: {
            draggable,
            codeDetail,
        },
        methods: {
            onReset() {
                this.$router.push({
                    path: "",
                });
                this.filterQuery = {
                    mainAction: null,
                    action: null,
                    page: 1,
                    limit: 20,
                    status: 2
                };
                this.getList();
            },
            onSubmit() {
                this.loading = true;
                this.getList();
            },
            handleSizeChange(val) {
                this.filterQuery.limit = val;
                this.getList();
            },
            handleCurrentChange(val) {
                this.filterQuery.page = val;
                this.getList();
            },
            handleUnitClick(row) {
                this.curIndex = row.id;
                this.dialogTableVisible = true;
            },
            closeDetailDialog() {
                this.codeDetailVisible = false;
            },
            getUnitList() {
                this.loading = true;
                getBasicUnitMaintains(this.unitquery)
                    .then((response) => {
                        this.loading = false;
                        this.unitlist = response.data.page.list || [];
                    })
                    .catch(() => {
                        this.loading = false;
                    });
            },

            selectUnit(row) {
                console.log(row.id);
                this.unitUpdateQuery.id = this.curIndex;
                this.unitUpdateQuery.fromCorp = row.name;
                this.unitUpdateQuery.fromCorpId = row.unitid;
                updateUnit(this.unitUpdateQuery)
                    .then((response) => {
                        if (response.code == 20000) {
                            this.dialogTableVisible = false;
                            this.getList();
                        } else {
                            this.$message.error(response.message);
                        }

                    })
                    .catch(() => {
                        this.dialogTableVisible = false;
                    });
            },
            //获取订单列表
            getList() {
                this.loading = true;
                orderListByStatus(this.filterQuery)
                    .then((response) => {
                        this.loading = false;
                        this.list = response.data.list || [];
                        this.total = response.data.total || 0;
                    })
                    .catch(() => {
                        this.loading = false;
                        this.list = [];
                        this.total = 0;
                    });
            },

            deleteOrders(data) {
                this.loading = true;
                this.deleteData.id = data;
                deleteByOrderId(this.deleteData)
                    .then((response) => {
                        this.getList();
                        this.$message({
                            type: "success",
                            message: "删除成功！",
                        });
                    })
                    .catch(() => {
                    });
            },

            deleteDialog(rowId) {
                this.$confirm("此操作将永久删除该订单, 是否继续?", "提示", {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                })
                    .then(() => {
                        this.deleteOrders(rowId);
                    })
                    .catch(() => {
                    });
            },

            onUpload(data) {
                this.loading = true;
                var idQuery = {
                    orderId: "",
                };
                idQuery.orderId = data;
                commitOrder(idQuery)
                    .then((response) => {
                        if (response.code == 20000) {
                            this.$message.success(response.data);
                            this.getList();
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                    });
            },

            repeatCheckClick(row) {
                let tQuery = {
                    orderId: row.id,
                };
                this.loading = true;
                repeatCheck(tQuery)
                    .then((response) => {
                        this.loading = false;
                        if (response.code == 20000) {
                            this.$message.success(response.data);
                            this.getList();
                            this.detailQuery = {
                                orderId: row.id,
                            };
                            this.refresgOrderDetail();
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.loading = false;
                        this.getList();

                    });
            },

            handleErrorDetail(poistion) {
                var mOrder = this.list[poistion];
                var corpOrderId = mOrder.remark;

                this.errorDetail = mOrder.remark;
                console.log(corpOrderId + "  " + mOrder + "  " + mOrder.remark);
                this.dialogVisible = true;
            },

            intentDetail(row) {
                this.codeDetailVisible = true;
                this.idQuery.id = row.id;
            },
        },
        filters: {
            statusFilterType(status) {
                const statusMap = {
                    false: "success",
                    true: "danger",
                };
                return statusMap[status];
            },
        },
        mounted() {
            document.body.ondrop = function (event) {
                event.preventDefault();
                event.stopPropagation();
            };
        },
        created() {
            // 将参数拷贝进查询对象
            let query = this.$route.query;
            this.filterQuery = Object.assign(this.filterQuery, query);
            this.filterQuery.limit = parseInt(this.filterQuery.limit);
            // 加载表格数据
            this.getList();
        },
    };
</script>

<style type="text/scss" lang="scss">
</style>
