<template>
    <div>
        <el-card class="el-card">
            <el-form
                :inline="true"
                :model="query"
                class="query-form"
                size="mini"
            >
                <el-row>
                    <el-form-item class="query-form-item">
                        <el-input v-model="query.billNo" placeholder="单据号" clearable></el-input>
                    </el-form-item>
                    <el-form-item class="query-form-item">
                        <el-select v-model="query.billType" placeholder="请选择业务类型" clearable="true" size="mini">
                            <el-option
                                v-for="item in busTypes"
                                :key="item.localName"
                                :label="item.localName"
                                :value="item.localAction">
                                <span style="float: left">{{ item.localName }}</span>
                            </el-option>
                        </el-select>
                    </el-form-item>

                    <el-form-item class="query-form-item" v-if="isSp ==110">
                        <el-input v-model="query.corpName" placeholder="往来单位" clearable></el-input>
                    </el-form-item>
                    <el-form-item class="query-form-item">
                        <el-select v-model="query.locStorageCode"
                                   @change="invChange"
                                   placeholder="请选择当前仓库" clearable="true" size="mini">
                            <el-option
                                v-for="item in storageList"
                                :key="item.name"
                                :label="item.name"
                                :value="item.code">
                                <span style="float: left">{{ item.name }}</span>
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <el-form-item class="query-form-item">
                        <el-select v-model="query.invWarehouseCode" placeholder="请选择当前分库" clearable="true"
                                   @change="subInvChange"
                                   size="mini">
                            <el-option
                                v-for="item in subInvList"
                                :key="item.name"
                                :label="item.name"
                                :value="item.code">
                                <span style="float: left">{{ item.name }}</span>
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <el-form-item class="query-form-item">
                        <span style="color: #000; margin-left: 10px; margin-right: 6px">单据日期:</span>
                        <el-date-picker
                            :picker-options="pickerOptions"
                            v-model="actDateRange"
                            type="daterange"
                            format="yyyy 年 MM 月 dd 日"
                            value-format="yyyy-MM-dd"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                        >
                        </el-date-picker>
                    </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 type="primary" icon="search" @click="selectThrOrderFunction()"
                                       :loading="loading">选入单据
                            </el-button>
                        </el-button-group>
                    </el-form-item>
                </el-row>
            </el-form>
            <el-table v-loading="loading"
                      :data="list"
                      style="width: 100%; "
                      @row-click="getStockOrderDetailList" ref="multipleTable">
                <el-table-column
                    type="selection"
                    width="55">
                </el-table-column>
                <el-table-column type="index" label="序号" width="50"></el-table-column>
                <el-table-column label="单据号" prop="billNo" show-overflow-tooltip></el-table-column>
                <el-table-column label="往来单位" prop="corpName" show-overflow-tooltip></el-table-column>
                <el-table-column label="单据来源" prop="sourceType" width="150">
                    <template slot-scope="scope">
                        <span>{{ sourceMap[scope.row.sourceType] }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="单据日期" prop="billdate" width="150"></el-table-column>
                <el-table-column label="单据状态">
                    <template slot-scope="scope">
                        {{ scope.row.status | statusFilterName }}
                    </template>
                </el-table-column>
                <el-table-column label="业务类型" prop="billTypeName" width="150">
                </el-table-column>
                <el-table-column label="当前仓库" prop="invName" width="150">
                </el-table-column>
                <el-table-column label="当前分库" prop="subInvName" width="120">
                </el-table-column>
                <el-table-column label="所属科室" prop="deptName" width="120">
                </el-table-column>
                <el-table-column label="操作" fixed="right" width="250">
                    <template slot-scope="scope">
                        <el-button
                            type="text"
                            size="small"
                            @click.native="distributionForm(scope.$index, scope.row)"
                            v-if="!haveDistributionVisible"
                        >编辑
                        </el-button
                        >
                        <el-button
                            type="text"
                            size="small"
                            @click.native="deleteStockOrder(scope.row)"
                        >删除
                        </el-button
                        >
                        <el-button
                            type="text"
                            size="small"
                            @click.native="printOrder(scope.row)"
                        >单据打印
                        </el-button
                        >


                    </template>
                </el-table-column>
            </el-table>
            <el-pagination
                :page-size="query.limit"
                @current-change="handleCurrentChange"
                layout="prev, pager, next"
                :total="total"
            >
            </el-pagination>
        </el-card>

        <el-card class="el-card">
            <el-table v-loading="detailLoading"
                      :data="detailList"
                      style="width: 100%">
                <el-table-column type="index" label="序号" width="50"></el-table-column>
                <el-table-column label="产品通用名" width="150" prop="productName"></el-table-column>
                <el-table-column label="规格型号" width="150" prop="spec"></el-table-column>
                <el-table-column label="批次号" width="150" prop="batchNo"></el-table-column>
                <el-table-column label="生产日期" width="150" prop="productDate"></el-table-column>
                <el-table-column label="失效日期" width="150" prop="expireDate"></el-table-column>
                <el-table-column label="实际数量" width="150" prop="reCount"></el-table-column>
                <el-table-column label="单据数量" width="150" prop="count"></el-table-column>
                <el-table-column label="价格" width="150" prop="price"></el-table-column>
                <el-table-column label="生产厂家" width="150" prop="ylqxzcrbarmc"></el-table-column>
                <el-table-column label="注册/备案凭证号" width="150" prop="zczbhhzbapzbh"></el-table-column>
                <el-table-column label="操作" fixed="right" width="250">
                    <template slot-scope="scope" v-if="!haveDistributionVisible">
                        <!--                        <el-button-->
                        <!--                            type="text"-->
                        <!--                            size="small"-->
                        <!--                            @click.native="handleDetailForm(scope.$index, scope.row)"-->
                        <!--                        >编辑-->
                        <!--                        </el-button-->
                        <!--                        >-->
                        <el-button
                            type="text"
                            size="small"
                            @click.native="copyDetail(scope.row)"
                        >复制
                        </el-button
                        >
                        <el-button
                            type="text"
                            size="small"
                            @click.native="deleteStockOrderDetail(scope.row)"
                        >删除
                        </el-button
                        >
                    </template>
                </el-table-column>
            </el-table>

            <el-pagination
                :page-size="detailQuery.limit"
                @current-change="detailHandleCurrentChange"
                layout="prev, pager, next"
                :total="detailTotal"
            >
            </el-pagination>
        </el-card>
        <el-dialog
            title="单据配货管理"
            :visible.sync="distributionVisible"
            width="80%"
            v-if="distributionVisible"
            @close='closeDialog'
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            :before-close="handleClose"
        >
            <stockOrderEditDistribution
                :closeDialog="closeDialog"
                :idQuery="idQuery"
                :detailCountMax="detailCountMax"

            ></stockOrderEditDistribution>
        </el-dialog>


        <el-dialog
            title="码管理"
            :visible.sync="qrcodeExportVisible"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            width="60%"
            v-if="qrcodeExportVisible"
            @close='closeQRCodeExportDialog'
        >
            <stockQRCodeExport
                :closeDialog="closeQRCodeExportDialog"
                :idQuery="idQuery"
            ></stockQRCodeExport>
        </el-dialog>


        <el-dialog
            title="编辑"
            :visible.sync="detailFormVisible"
            :before-close="hideDetailForm"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            width="85%"
            top="5vh"
        >

            <el-form :model="detailFormData" :rules="detailFormRules" ref="dataForm">

                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>单据号：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="billNo">
                            <el-input v-model="formData.billNo" auto-complete="off" :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>单据状态：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="status">
                            <el-input v-model="statusMap[formData.status]" auto-complete="off"
                                      :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>

                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>单据日期：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="billdate">
                            <el-input v-model="formData.billdate" auto-complete="off" :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>往来单位：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="corpName">
                            <el-input v-model="formData.corpName" auto-complete="off" :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>

                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>业务类型：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="billType">
                            <el-select v-model="formData.billType" placeholder="请选择业务类型" clearable="true"
                                       disabled="true">
                                <el-option
                                    v-for="item in busTypes"
                                    :key="item.localName"
                                    :label="item.localName"
                                    :value="item.localAction">
                                    <span style="float: left">{{ item.localName }}</span>
                                    <!--<span style="float: right; color: #8492a6; font-size: 13px">{{ item.action }}</span>-->
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>采购类型：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="type">
                            <el-input v-model="typeMap[formData.type]" auto-complete="off" :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>

                <el-divider></el-divider>

                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>产品通用名：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="productName">
                            <el-input v-model="detailFormData.productName" auto-complete="off"
                                      :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>包装规格：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="spec">
                            <el-input v-model="detailFormData.spec" auto-complete="off" :disabled="true"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>单据数量：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="count">
                            <el-input v-model="detailFormData.count" auto-complete="off" :disabled="true"
                                      type="number"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>实际数量：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="reCount">
                            <el-input v-model="detailFormData.reCount" auto-complete="off"
                                      oninput="value=value.replace(/[^\d]/g,'')"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>生产日期：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="productDate">
                            <!--              <el-input v-model="detailFormData.productDate" auto-complete="off"-->
                            <!--                        :disabled="false"></el-input>-->
                            <!--                            <el-date-picker-->
                            <!--                                type="date"-->
                            <!--                                size="small" v-model="detailFormData.productDate"-->
                            <!--                                placeholder="请选择生产日期" style="width: 80%"-->
                            <!--                                value-format="yyMMdd"-->
                            <!--                                format="yyyy-MM-dd"-->
                            <!--                            >-->
                            <!--                            </el-date-picker>-->
                            <el-input v-model="detailFormData.productDate" auto-complete="off"
                                      oninput="if(value.length>6)value=value.slice(0,6)"
                                      type="number"
                                      :disabled="false"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>失效日期：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="expireDate">
                            <!--              <el-input v-model="detailFormData.expireDate" auto-complete="off"-->
                            <!--                        :disabled="false"></el-input>-->
                            <el-input v-model="detailFormData.expireDate" auto-complete="off"
                                      oninput="if(value.length>6)value=value.slice(0,6)"
                                      type="number"
                                      :disabled="false"></el-input>


                            <!--                            <el-date-picker-->
                            <!--                                type="date"-->
                            <!--                                size="small" v-model="detailFormData.expireDate"-->
                            <!--                                placeholder="请选择失效日期" style="width: 80%"-->
                            <!--                                value-format="yyMMdd"-->
                            <!--                                format="yyyy-MM-dd"-->
                            <!--                            >-->
                            <!--                            </el-date-picker>-->
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>批次号：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="batchNo">
                            <el-input v-model="detailFormData.batchNo"
                                      clearable
                                      auto-complete="off" :disabled="false"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="3">
                        <div class="ao-text">
                            <span>价格：</span>
                        </div>
                    </el-col>
                    <el-col :span="7">
                        <el-form-item prop="price">
                            <el-input v-model="detailFormData.price"
                                      clearable
                                      type="number"
                                      auto-complete="off" :disabled="false"></el-input>
                        </el-form-item>
                    </el-col>
                    <!--                    <el-col :span="3">-->
                    <!--                        <div class="ao-text">-->
                    <!--                            <span>扫码数量：</span>-->
                    <!--                        </div>-->
                    <!--                    </el-col>-->
                    <!--                    <el-col :span="7">-->
                    <!--                        <el-form-item prop="sweepCount">-->
                    <!--                            <el-input v-model="detailFormData.sweepCount" auto-complete="off" :disabled="false"-->
                    <!--                                      oninput="value=value.replace(/[^\d]/g,'')" ></el-input>-->
                    <!--                        </el-form-item>-->
                    <!--                    </el-col>-->
                </el-row>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button @click.native="hideDetailForm">取消</el-button>
                <el-button
                    type="primary"
                    @click.native="submitUploadDetail()"
                    :loading="detailFormLoading"
                >提交
                </el-button
                >
            </div>
        </el-dialog>

        <el-dialog
            title="选入单据"
            :visible.sync="selectThrOrderVisible"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            width="85%"
            v-if="selectThrOrderVisible"
        >
            <selectThrOrder
                :closeDialog="closeDialog"
                :data="thisData"
            ></selectThrOrder>
        </el-dialog>
    </div>
</template>

<script>
import {
    stockOrderList, stockOrderDetail,
    deleteStockOrderById, deleteStockOrderDetailById,
    copyStockOrderDetail, submitStockOrder,
    uploadStockOrderDetail, uploadStockOrderDetailCount,
    generateStockOrderQRCodeText
} from "../../api/inout/stockOrder";
import {BASE_URL} from "../../config/app";
import stockOrderDistribution from "./stockOrderDistribution";
import stockOrderEditDistribution from "./stockOrderEditDistribution";
import stockQRCodeExport from "./stockQRCodeExport";
import selectThrOrder from "./selectThrOrderDialog";
import draggable from "vuedraggable";
import store from "../../store";
import {getLocalJoinBusType, getLocalJoinByUser} from "../../api/basic/busLocalType";
import {inspectionStockOrderPDFFromTemplateFile, stockOrderPDFFromTemplateFile} from "../../api/itextpdf/itextpdf";
import {selectSysParamByKey} from "@/api/param/systemParamConfig";
import {filterAll, filterAllByUser} from "@/api/basic/invWarehouse";
import {filterSubByInv} from "@/api/basic/invSubWarehouse";

export default {
    name: "stockOrderEditor",
    data() {
        return {
            query: {
                billType: null,
                corpName: null,
                locStorageCode: this.$store.getters.locInvCode,
                invWarehouseCode: this.$store.getters.locSubInvCode,
                billNo: "",
                status: "2",
                startTime: "",
                endTime: "",
                page: 1,
                limit: 10
            },
            detailQuery: {
                orderIdFk: "",
                page: 1,
                limit: 20
            },
            list: [],
            storageList: [],
            subInvList: [],
            isSp: store.getters.customerId,
            busTypes: [],
            detailList: [],
            total: 0,
            detailTotal: 0,
            loading: false,
            detailLoading: false,
            formData: {},
            detailCountMax: false,
            sourceMap: {
                "1": "web端新增单据",
                "2": "第三方系统",
                "3": "扫码单据转换",
                "4": "采购计划转换",
            },
            statusMap: {
                "1": "草稿",
                "2": "未配货",
                "3": "待校验",
            },
            typeMap: {
                1: "预入库",
                2: "普通采购",
            },
            idQuery: {
                id: "",
            },
            distributionVisible: false,
            detailFormRules: {
                // batchNo: [
                //     {required: true, message: "请输入批次号", trigger: "blur"}
                // ],
                // productDate: [
                //     {required: true, message: "请输入生产日期", trigger: "blur"}
                // ],
                // expireDate: [
                //     {required: true, message: "请输入失效日期", trigger: "blur"}
                // ],
                // sweepCount: [
                //     {required: true, message: "请输入扫码数量", trigger: "blur"}
                // ]
            },
            detailFormVisible: false,
            detailFormData: {},
            detailFormLoading: false,
            haveDistributionVisible: false,
            qrcodeExportVisible: false,
            filterUDIType: false,
            selectThrOrderVisible: false,
            thisData: {},
            actDateRange: [],
            pickerOptions: {
                shortcuts: [
                    {
                        text: "最近一周",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "最近一个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "最近三个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                ],
            },
        }
    },
    methods: {
        onReset() {
            this.$router.push({
                path: ""
            });
            this.query = {
                startTime: "",
                endTime: "",
                billNo: "",
                status: "2",
                page: 1,
                limit: 10
            };
            this.getList();
            this.detailList = [];
            this.detailTotal = 0;
            this.haveDistributionVisible = false;
            this.actDateRange = [];
        },
        onSubmit() {
            if (this.actDateRange !== null) {
                this.query.startTime = this.actDateRange[0];
                this.query.endTime = this.actDateRange[1];
            } else {
                this.query.startTime = null;
                this.query.endTime = null;
            }
            this.query.page=1
            this.getList();
            //清空详情数据
            this.detailQuery.page=1
            this.detailTotal=0
            if (this.query.status === "202") {
                this.haveDistributionVisible = true;
            } else {
                this.haveDistributionVisible = false;
            }
        },
        handleCurrentChange(val) {
            this.query.page = val;
            this.getList();
        },
        detailHandleCurrentChange(val) {
            this.detailQuery.page = val;
            this.getStockOrderDetailList();
        },
        // 刷新表单
        resetForm() {
            if (this.$refs["dataForm"]) {
                // 清空验证信息表单
                this.$refs["dataForm"].clearValidate();
                // 刷新表单
                this.$refs["dataForm"].resetFields();
                this.getList();
            }
        },
        getList() {
            this.loading = true;
            this.query.corpId = store.getters.customerId;
            stockOrderList(this.query)
                .then(response => {
                    this.loading = false;
                    if (response.code == 20000) {
                        this.list = response.data.list || [];
                        this.total = response.data.total || 0;
                        this.detailList = [];
                    } else {
                        this.$message.error(response.message);
                    }
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                    this.detailList = [];
                    this.total = 0;
                });
        },
        distributionForm(index, row) {
            this.idQuery.id = '';
            if (this.$isNotBlank(row.id)) {
                this.idQuery.id = row.id;
                this.idQuery.formData = row;
                this.distributionVisible = true;
            }
        },
        selectThrOrderFunction() {
            this.selectThrOrderVisible = true;
        },
        closeDialog(type) {
            this.distributionVisible = false;
            this.selectThrOrderVisible = false;
            this.getList();
            if (this.$isNotBlank(type)) {
                this.detailList = [];
            }
        },
        exportQRCodeText(row) {
            this.idQuery.id = '';
            if (this.$isNotBlank(row.id)) {
                this.idQuery.id = row.id;
                this.idQuery.formData = row;
                this.qrcodeExportVisible = true;
            }
        },
        printOrder(row) {
            let tQuery = {
                queryId: row.id,
                moduleId: 5,
            }
            this.loading = true;
            inspectionStockOrderPDFFromTemplateFile(tQuery).then((response) => {
                if (response.code === 20000) {
                    tQuery = {
                        id: row.id,
                        moduleId: 5,
                        orderName: "配货单",
                    }
                    stockOrderPDFFromTemplateFile(tQuery).then((response) => {
                        //将pdf文件转换为url。
                        const binaryData = [];
                        binaryData.push(response);
                        //获取blob链接。
                        let url = window.URL.createObjectURL(
                            new Blob(binaryData, {type: "application/pdf"})
                        );
                        this.loading = false;
                        window.open(url);//打开新标签页，预览pdf。
                    }).catch(() => {
                        this.loading = false;
                    });
                } else {
                    this.loading = false;
                    this.$message.error(response.message);
                }
            }).catch(() => {
                this.loading = false;
            });
        },
        closeQRCodeExportDialog() {
            this.qrcodeExportVisible = false;
            this.getList();
        },
        getStockOrderDetailList(row) {
            if (this.$isNotBlank(row)) {
                this.detailQuery.orderIdFk = row.id;
                this.formData = row;
            }
            this.detailLoading = true;
            stockOrderDetail(this.detailQuery)
                .then((response) => {
                    this.detailLoading = false;
                    this.detailList = response.data.list || [];
                    this.detailTotal = response.data.total;
                })
                .catch(() => {
                    this.detailLoading = false;
                    this.detailList = [];
                });
        },
        deleteStockOrder(row) {
            this.$confirm("此操作将永久删除该订单, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                this.loading = true;
                deleteStockOrderById({id: row.id})
                    .then(response => {
                        this.loading = false;
                        if (response.code === 20000) {
                            this.$message.success(response.data);
                            this.getList();
                            this.detailList = [];
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.loading = false;
                    })
            }).catch(() => {

            });
        },
        copyDetail(row) {
            this.$confirm("是否复制该记录?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                let tQuery = {
                    id: row.id
                }
                this.detailLoading = true;
                copyStockOrderDetail(tQuery)
                    .then((response) => {
                        this.detailLoading = false;
                        if (response.code === 20000) {
                            this.$message.success("复制成功");
                            this.getStockOrderDetailList();
                        } else {
                            this.$message.error(response.message);
                        }
                    });
            }).catch(() => {
            });
        },
        deleteStockOrderDetail(row) {
            this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                this.detailLoading = true;
                deleteStockOrderDetailById({id: row.id})
                    .then(response => {
                        this.detailLoading = false;
                        if (response.code === 20000) {
                            this.$message.success(response.data);
                            this.getStockOrderDetailList();
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.detailLoading = false;
                    })
            }).catch(() => {

            });
        },
        // 显示表单
        handleDetailForm(index, row) {
            this.detailFormVisible = true;
            this.detailFormData = {};
            if (row !== null) {
                this.detailFormData = Object.assign({}, row);
            }
        },
        hideDetailForm() {
            // 更改值
            this.detailFormVisible = !this.detailFormVisible;
            return true;
        },
        getActionName(action) {
            for (let i = 0; i < this.busTypes.length; i++) {
                if (this.busTypes[i].localAction === action) {
                    return this.busTypes[i].localName;
                }
            }
        },
        getBusType() {
            let query = {
                code: this.query.invWarehouseCode,
                enabled: true,
            };
            getLocalJoinByUser(query)
                .then((response) => {
                    this.busTypes = response.data.list || [];
                    this.filterQuery.billAction = this.busTypes[0].action;
                    // this.getList();
                })
                .catch(() => {
                });
        },
        submitUploadDetail() {
            this.$refs["dataForm"].validate(valid => {
                if (valid) {
                    this.detailLoading = true;
                    let tQuery = this.detailFormData;
                    if (this.detailCountMax) {
                        if (this.detailFormData.count < this.detailFormData.reCount) {
                            this.$message.error("实际数量不能高于订单数量");
                            return;
                        }
                    }
                    // if (this.$isBlank(tQuery.batchNo)) {
                    //     if (!tQuery.allowNoBatch) {
                    //         return this.$message.error('批次号不能为空');
                    //     }
                    // }
                    // if (this.$isBlank(tQuery.productDate) && this.$isBlank(tQuery.expireDate)) {
                    //     return this.$message.error('生产日期与失效日期不能全部为空');
                    // }
                    uploadStockOrderDetail(tQuery).then((response) => {
                        this.detailLoading = false;
                        if (response.code === 20000) {
                            this.$message.success("修改完成");
                            this.hideDetailForm();
                            this.getStockOrderDetailList();
                        } else {
                            this.$alert(response.message, '提示', {
                                confirmButtonText: '确定',
                                type: 'warning',
                                closeOnClickModal: true,
                                callback: action => {
                                    this.$refs.inputRef.focus();
                                }
                            });
                        }
                    });
                }
            });
        },
        getSysParm() {
            let query = {
                paramKey: "stock_order_detail_count_max",
            };
            selectSysParamByKey(query).then((response) => {
                if (response.code == 20000) {
                    if (response.data.paramValue == "1") {
                        this.detailCountMax = true;
                    } else
                        this.detailCountMax = false;
                }
            });
        },
        getStorageName(code) {
            for (let i = 0; i < this.storageList.length; i++) {
                if (this.storageList[i].code === code) {
                    return this.storageList[i].name;
                }
            }
        },

        getSubStorageName(code) {
            for (let i = 0; i < this.subInvList.length; i++) {
                if (this.subInvList[i].code === code) {
                    return this.subInvList[i].name;
                }
            }
        },
        getStorage() {
            this.storageList = [];
            filterAllByUser()
                .then((response) => {
                    this.storageList = response.data || [];
                    if (this.storageList.length > 0) {
                        this.getSubInvList();
                        this.getList();
                    }
                })
                .catch(() => {
                });
        },
        invChange() {
            this.subInvList = [];
            this.query.invWarehouseCode = "";
            let query = {
                pcode: this.query.locStorageCode
            };
            filterSubByInv(query)
                .then((response) => {
                    this.subInvList = response.data || [];
                })
                .catch(() => {
                });
        },

        getSubInvList() {
            let query = {
                pcode: this.query.locStorageCode
            };
            filterSubByInv(query)
                .then((response) => {
                    this.subInvList = response.data || [];
                })
                .catch(() => {
                });
        },

        subInvChange() {
            this.getBusType();
        },
    },
    components: {
        draggable,
        stockOrderDistribution,
        stockQRCodeExport,
        stockOrderEditDistribution,
        selectThrOrder,
    },
    filters: {
        statusFilterType(status) {
            const statusMap = {
                0: "gray",
                1: "success"
            };
            return statusMap[status];
        },
        statusFilterName(status) {
            const statusMap = {
                "1": "草稿",
                "2": "未配货",
                "3": "待校验",
            };
            return statusMap[status];
        },
        typeFilterName(type) {
            const typeMap = {
                1: "预入库",
                2: "普通采购",
            };
            return typeMap[type];
        }
    },
    created() {
        this.getStorage();
        this.getSysParm();
        this.getBusType();
        this.getList();
        let end = new Date();
        let start = new Date();
        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
        this.actDateRange = [start, end];
    }
}
</script>

<style scoped>

</style>
