<template>
    <div style="padding: 10px;background: #E5EBF6;min-height: 830px;">
        <div style="background: #FFF;padding: 10px;border-radius: 10px;margin-bottom: 20px;">
            <el-form :model="baseInfo" ref="baseInfo" :rules="baseRules" size="medium" :inline="true" label-width="110px">
                <el-form-item label="验货单编号" prop="inspectGoodsCode">
                    <el-input v-model="baseInfo.inspectGoodsCode" placeholder="验货单编号自动生成" disabled maxlength="20" clearable style="width: 240px"/>
                </el-form-item>
                 <el-form-item label="送货日期" prop="deliveryDate">
                    <el-date-picker
                        v-model="baseInfo.deliveryDate"
                        type="date" align="right"
                        format="yyyy-MM-dd" style="width: 240px;"
                        :picker-options="pickerOptions" @change="baseInfo.deliveryDate=formatDate(baseInfo.deliveryDate)">
                    </el-date-picker>
                </el-form-item>
                <el-form-item label="所属区域" prop="areaId">
                    <el-cascader v-model="baseInfo.areaId"
                        :options="treeAreaOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
                        :disabled="materialList.length>0"
                        :props="{
                        emitPath: false,// 若设置 false，则只返回该节点的值，只返回最后选择的id
                        checkStrictly: false,//来设置父子节点取消选中关联，从而达到选择任意一级选项的目的
                        value:'id',label:'label'
                        }" @change="handleAreaChange">
                    </el-cascader>
                </el-form-item>
                <el-form-item label="送货仓库" prop="deliveryWarehouseId">
                    <el-select v-model="baseInfo.deliveryWarehouseId" placeholder="请选择送货仓库" :disabled="materialList.length>0" style="width: 100%;">
                        <el-option v-for="item in wareHouseOptions"
                            :key="item.warehouseId"
                            :label="item.warehouseName"
                            :value="item.warehouseId"
                        ></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="送货供应商" prop="deliverySupplierId">
                    <el-select v-model="baseInfo.deliverySupplierId" placeholder="请选择供应商" :disabled="materialList.length>0" style="width: 240px;">
                        <el-option v-for="item in supplierOptions"
                            :key="item.supplierId"
                            :label="item.supplierName"
                            :value="item.supplierId"
                        ></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="送货人" prop="deliveryMan">
                    <el-input v-model="baseInfo.deliveryMan" placeholder="请输入送货人" maxlength="20" clearable style="width: 240px"/>
                </el-form-item>
                <el-form-item label="送货人电话" prop="deliveryPhone">
                    <el-input v-model="baseInfo.deliveryPhone" placeholder="请输入送货人电话" maxlength="11" clearable style="width: 240px"/>
                </el-form-item>
                <el-form-item label="验货日期" prop="inspectDate">
                    <el-date-picker
                        v-model="baseInfo.inspectDate"
                        type="datetime" align="right"
                        format="yyyy-MM-dd HH:mm:ss" style="width: 240px;"
                        :picker-options="pickerOptions" @change="baseInfo.inspectDate=formatDateTime(baseInfo.inspectDate)">
                    </el-date-picker>
                </el-form-item>
                <!-- <el-form-item label="验货人" prop="inspector">
                    <el-input v-model="baseInfo.inspector" placeholder="请输入验货人" maxlength="20" clearable style="width: 240px"/>
                </el-form-item> -->
                  <el-form-item label="验货人" prop="inspector">
                    <el-select v-model="baseInfo.inspector" placeholder="请选择验货人" clearable style="width: 240px">
                      <el-option
                        v-for="option in contractPersonOptions"
                        :key="option.value"
                        :label="option.label"
                        :value="option.value"
                      />
                    </el-select>
                  </el-form-item>
                <el-form-item label="备注" prop="remark">
                    <el-input v-model="baseInfo.remark" placeholder="请输入备注" maxlength="30" clearable style="width: 240px"/>
                </el-form-item>
                <el-form-item label="查验附件" prop="inspectAttachmentList">
                    <el-upload
                        ref="upload"
                        :http-request="fileUpLoad"
                        action="#" :limit="5"
                        accept=".xlsx, .xls, .png, .jpg, .jpeg, .docx, .doc"
                        :show-file-list="true"
                        :file-list="attachmentList"
                        :on-remove="handleRemoveFile"
                    >
                        <el-button
                            :disabled="attachmentList.length==5"
                            type="primary"
                            size="mini"
                            >上传附件
                        </el-button>
                    </el-upload>
                </el-form-item>
            </el-form>
        </div>
        <div style="width: 100%;height: 450px;padding: 10px;border-radius: 10px;margin-bottom: 10px;background: #FFF;">
            <div style="width: 100%;display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;">
                <div>
                    货品信息
                </div>
                <div style="display: flex;align-items: center;">
                    <!-- <el-button type="primary" plain @click="addMaterial">添加货品</el-button> -->
                    <el-button type="primary" plain @click="importPurchaseOrder">导入采购订单</el-button>
                    <el-button type="danger" plain @click="delMaterial">删除</el-button>
                </div>
            </div>
            <div style="width: 100%;height: 400px;overflow-y: auto;">
                <el-table v-loading="loading" :data="materialList" ref="multipleTable" height="380" :row-key="(row)=>{return row.materialId}" @selection-change="handleSelectionChange">
                    <el-table-column type="selection" width="50" align="center" :reserve-selection="true"/>
                    <el-table-column label="序号" align="center" width="80" type="index"/>
                    <!-- <el-table-column label="图片" align="center" prop="" :show-overflow-tooltip="true" />  -->
                    <el-table-column label="货品编码" align="center" prop="materialCode" :show-overflow-tooltip="true"/>
                    <el-table-column label="货品名称" align="center" prop="materialName" :show-overflow-tooltip="true"/>
                    <el-table-column label="货品类别" align="center" prop="materialTypeName" :show-overflow-tooltip="true"/>
                    <el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true"/>
                    <el-table-column label="货品规格" align="center" prop="size" :show-overflow-tooltip="true">
                        <!-- <template slot-scope="scope">
                            <span v-if="scope.row.salesMode==1">按份</span>
                            <span v-if="scope.row.salesMode==2">称重</span>
                        </template> -->
                    </el-table-column>
                    <el-table-column label="单价（元）" align="center" prop="unitPrice" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <span>{{ (scope.row.unitPrice/100).toFixed(2) }}</span>
                            <!-- <el-input  v-model="scope.row.unitPrice" placeholder="请输入" maxlength="10" clearable @input="(v)=>(scope.row.unitPrice=v.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1'))"/> -->
                        </template>
                    </el-table-column>
                    <el-table-column label="订货数量" align="center" prop="orderNum" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <span>{{scope.row.orderNum}}</span>
                            <!-- <el-input  v-model.number="scope.row.orderNum" placeholder="请输入" maxlength="10" clearable @input="(v)=>(scope.row.orderNum=v.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1'))"/> -->
                        </template>
                    </el-table-column>
                    <el-table-column label="已验收数量" align="center" prop="totalQualifiedNum" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <span>{{scope.row.totalQualifiedNum}}</span>
                        </template>
                    </el-table-column>

                    <!-- <el-table-column label="总金额（元）" align="center" prop="" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <span>{{ (scope.row.orderNum*scope.row.unitPrice/100).toFixed(2) }}</span>
                        </template>
                    </el-table-column>  -->
                    <el-table-column label="送货数量" align="center" prop="deliveryNum" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <el-input  v-model="scope.row.deliveryNum" placeholder="请输入" maxlength="10" v-if="scope.row.deliveryNum>=0" clearable @change="patternValue(scope.row)"/>
                            <span v-else>{{ scope.row.deliveryNum }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="待入库数量" align="center" prop="qualifiedNum" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <el-input  v-model="scope.row.qualifiedNum" placeholder="请输入" maxlength="10" v-if="scope.row.deliveryNum>=0" clearable @change="patternValue2(scope.row)"/>
                            <span v-else>{{ scope.row.deliveryNum }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <el-input  v-model="scope.row.remark" placeholder="请输入" v-if="scope.row.deliveryNum>=0" maxlength="20" clearable/>
                            <span v-else>{{ scope.row.remark }}</span>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
        </div>
        <div style="width: 100%;height: 80px;padding: 10px;background: #FFF;border-radius: 10px;display: flex;align-items: center;justify-content: center;">
            <el-button type="primary" plain @click="confirmSave" :loading="loadingBtn">保存草稿</el-button>
            <el-button type="success" plain @click="confirmSubmit" :loading="loadingBtn">提交</el-button>
            <el-button @click="jumpList">返回</el-button>
        </div>

        <!-- 选择菜品 -->
        <el-dialog title="选择货品" :visible.sync="openDialog" width="65%" append-to-body >
            <div style="width: 100%;height:620px;">
                <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
                    <el-form-item label="货品类别" prop="materialTypeIds">
                        <el-cascader v-model="queryParams.materialTypeIds"
                            :options="materialTreeOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
                            :props="{
                            multiple: true,
                            emitPath: false,// 若设置 false，则只返回该节点的值，只返回最后选择的id
                            checkStrictly: false,//来设置父子节点取消选中关联，从而达到选择任意一级选项的目的
                            value:'id',label:'categoryName'
                            }" collapse-tags>
                        </el-cascader>
                    </el-form-item>
                    <el-form-item label="货品编码" prop="materialCode">
                        <el-input v-model="queryParams.materialCode" placeholder="请输入货品编码" maxlength="20" clearable style="width: 240px"/>
                    </el-form-item>
                    <el-form-item label="货品名称" prop="materialName">
                        <el-input v-model="queryParams.materialName" placeholder="请输入货品名称" maxlength="20" clearable style="width: 240px"/>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
                        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
                    </el-form-item>
                </el-form>
                <el-table v-loading="loading" :data="tableListData" ref="multipleTable1" height="520" :row-key="(row)=>{return row.materialId}" @selection-change="handleSelectionChange2">
                    <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
                    <el-table-column label="序号" align="center" width="80" type="index">
                        <template slot-scope="scope">
                        <span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
                        </template>
                    </el-table-column>
                    <!-- <el-table-column label="图片" align="center" prop="" :show-overflow-tooltip="true" />  -->
                    <el-table-column label="货品编码" align="center" prop="materialCode" :show-overflow-tooltip="true" />
                    <el-table-column label="货品名称" align="center" prop="materialName" :show-overflow-tooltip="true" />
                    <el-table-column label="货品类别" align="center" prop="materialTypeName" :show-overflow-tooltip="true" />
                    <el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
                    <el-table-column label="货品规格" align="center" prop="size" :show-overflow-tooltip="true">
                        <!-- <template slot-scope="scope">
                            <span v-if="scope.row.salesMode==1">按份</span>
                            <span v-if="scope.row.salesMode==2">称重</span>
                        </template> -->
                    </el-table-column>
                    <el-table-column label="单价（元）" align="center" prop="unitPrice" :show-overflow-tooltip="true">
                        <template slot-scope="scope">
                            <span>{{ (scope.row.unitPrice/100).toFixed(2)||"" }}</span>
                        </template>
                    </el-table-column>
                </el-table>
                <pagination
                    v-show="total>0"
                    :total="total"
                    :page.sync="queryParams.pageNum"
                    :limit.sync="queryParams.pageSize"
                    @pagination="getList"
                />
            </div>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="confirmChosen">确 定</el-button>
                <el-button @click="openDialog=false">取 消</el-button>
            </div>
        </el-dialog>

        <!-- 导入 -->
        <el-dialog title="导入采购订单" :visible.sync="openImportDialog" width="60%" append-to-body >
            <div style="width: 100%;height:600px;">
                <el-form :model="queryParams2" ref="queryForm2" size="small" :inline="true" label-width="100px">
                    <el-form-item label="采购单号" prop="orderGoodsCode">
                        <el-input v-model="queryParams2.orderGoodsCode" placeholder="请输入采购单号" maxlength="20" clearable style="width: 240px"/>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery2">搜索</el-button>
                        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery2">重置</el-button>
                    </el-form-item>
                </el-form>
                <!--  :row-key="(row)=>{return row.fetchMaterialId}" @selection-change="handleSelectionChange3" -->
                <el-table v-loading="loading2" :data="tableListData2" ref="multipleTable2" height="500">
                    <!-- <el-table-column type="selection" width="50" align="center" :reserve-selection="true" /> -->
                    <el-table-column label="序号" align="center" width="80" type="index">
                        <template slot-scope="scope">
                        <span>{{(queryParams2.pageNum - 1) * queryParams2.pageSize + scope.$index + 1}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="采购单号" align="center" prop="orderGoodsCode" :show-overflow-tooltip="true" />
                    <el-table-column label="采购订单标题" align="center" prop="orderTitle" :show-overflow-tooltip="true"/>
                    <el-table-column label="采购总金额（元" align="center" prop="orderAmount" :show-overflow-tooltip="true" width="120">
                        <template slot-scope="scope">
                        <span>{{ (scope.row.orderAmount/100).toFixed(2) }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="供应商" align="center" prop="supplierName" :show-overflow-tooltip="true" />
                    <el-table-column label="创建人" align="center" prop="createBy" :show-overflow-tooltip="true" />
                    <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                        <template slot-scope="scope">
                            <el-button size="mini" type="text"
                                @click="confirmImport(scope.row)"  v-if="scope.row.orderStatus==2||scope.row.orderStatus==3"
                            >导入</el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <pagination
                    v-show="total2>0"
                    :total="total2"
                    :page.sync="queryParams2.pageNum"
                    :limit.sync="queryParams2.pageSize"
                    @pagination="getList2"
                />
            </div>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="openImportDialog=false">确 定</el-button>
                <el-button @click="openImportDialog=false">取 消</el-button>
            </div>
        </el-dialog>
    </div>
</template>

<script>
import { fetchUsersApi } from "@/api/foodManage/purchaseManage";
import { imgUpLoadTwo } from '@/api/system/upload'
import { systemAreaTreeApi,getCanteenByAreaApi,getStallByCanteenApi } from "@/api/base/stall";
import { systemMaterialTreeApi,getMaterialListApi,supplierPageApi,drpWareHousePageApi } from "@/api/foodManage/purchaseManage";
import { getPurchaseInspectInfoApi,addPurchaseInspectApi,editPurchaseInspectApi } from "@/api/foodManage/purchaseManage";
import { purchaseOrderPageApi,getPurchaseOrderInfoApi } from "@/api/foodManage/purchaseManage";

export default {
    name: "InspectionEdit",
    dicts: [],
    data() {
      return {
        contractPersonOptions: [], // 下拉框选项
        contractPerson: '', // 绑定的值
        purchaseInspectionRowData:{},//页面传参
        loading:false,
        loadingBtn:false,
        baseInfo: {
            contractTitle:undefined,
            contractType:undefined,
            areaId:undefined,
            inspectAttachmentList:[],
        },
        // 表单校验
        baseRules: {
            deliveryDate: [
                { required: true, message: "送货日期不能为空", trigger: "change" }
            ],
            areaId: [
                { required: true, message: "所属区域不能为空", trigger: "change" }
            ],
            deliverySupplierId: [
                { required: true, message: "送货供应商不能为空", trigger: "change" }
            ],
            deliveryWarehouseId: [
                { required: true, message: "送货仓库不能为空", trigger: "change" }
            ],
            deliveryMan: [
                { required: true, message: "送货人不能为空", trigger: "blur" }
            ],
            deliveryPhone: [
                {
                    required: true,
                    message: '送货人电话不能为空',
                    trigger: 'blur',
                },
                {
                    pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                    message: '请输入正确的手机号码',
                    trigger: 'blur',
                }
            ],
            inspectDate: [
                { required: true, message: "验货日期不能为空", trigger: "change" }
            ],
            inspector: [
                { required: true, message: "验货人不能为空", trigger: "blur" }
            ],
            // inspectAttachmentList: [
            //     { required: true, message: "查验附件不能为空", trigger: "change" }
            // ],
        },
        treeAreaOptions:[],
        canteenOptions:[],
        supplierOptions:[],
        wareHouseOptions:[],
        stallOptions:[],
        pickerOptions: {
            disabledDate(v) {
                return v.getTime() < (new Date().getTime() - 86400000);//  - 86400000是否包括当天
            }
        },
        attachmentList:[],
        materialList:[],//货品信息-表格数据
        batchIds:[],//货品信息-表格数据-多选
        openDialog:false,
        materialTreeOptions:[],
        queryParams: { // 货品弹窗-货品表格-查询参数
            pageNum: 1,
            pageSize: 10,
        },
        total: 0, // 总条数
        tableListData: [],//货品弹窗-货品表格数据
        batchChosenMaterial:[],//货品弹窗-货品表格-选中的货品数组
        noMaterial:false,
        //导入功能
        openImportDialog:false,
        queryParams2: { // 货品弹窗-货品表格-查询参数
            pageNum: 1,
            pageSize: 10,
            orderGoodsCode:null
        },
        loading2:false,
        total2: 0, // 总条数
        tableListData2: [],//导入弹窗-表格数据
        importRow:{},//导入弹窗-表格数据-选中数据
        materialDetailsData: [],//导入弹窗-明细数据

      };
    },
    created() {

        if(this.$route.query.purchaseInspectionRowData){
            this.purchaseInspectionRowData = JSON.parse(this.$route.query.purchaseInspectionRowData)
            setTimeout(()=>{
                this.getContractInfo()
            },500)
        }
        this.fetchUsers();
        this.getAreaTreeData()
        this.getMaterialTree()
        this.attachmentList=[]
    },
    watch:{
        '$route.query.purchaseInspectionRowData':function(newId, oldId) {
            if(newId){
                this.purchaseInspectionRowData = JSON.parse(newId)
                this.getContractInfo()
            }else{
                this.baseInfo={}
                this.materialList=[]
                this.attachmentList=[]
            }
        },
    },
    methods: {
        fetchUsers() {
            let param = {
                pageNum:1,
                pageSize: 1000,
                roleId: 3
            }
            fetchUsersApi(param).then((response) => {
                console.log(response);
                if (response.rows) {
                    // 从接口返回的数据中提取用户选项
                    this.contractPersonOptions  = response.rows.map(user => ({
                      value: user.id, // 下拉框绑定的值
                      label: user.name, // 下拉框显示的文本
                    }));
                }
            });
        },
        // 返回列表页
        jumpList() {
            const obj = { path: "foodManage/purchaseManage/inspectionEdit" };
            this.$tab.closeOpenPage(obj);
            this.$router.replace({ path: "/foodManage/purchaseManage/purchaseInspection" }); // 要打开的页面
        },
        getContractInfo(){
            console.log(this.purchaseInspectionRowData)
            let param = {
                inspectGoodsId:this.purchaseInspectionRowData.inspectGoodsId
            }
            //查询查询食堂下拉结构
            getPurchaseInspectInfoApi(param).then((response) => {
                this.baseInfo = response.data;
                this.materialList = this.baseInfo.inspectGoodsDetails;
                if(this.baseInfo.inspectAttachmentList.length>0){
                    this.baseInfo.inspectAttachmentList.forEach(item=>{
                        this.attachmentList.push({name:item,url:item})
                    })
                }
                supplierPageApi({ isPaging:1,areaIdList:[this.baseInfo.areaId] }).then((response) => {
                    this.supplierOptions = response.rows||[];
                    this.$set(this.baseInfo,'deliverySupplierId',this.baseInfo.deliverySupplierId)
                });
                drpWareHousePageApi({ areaId:this.baseInfo.areaId }).then((response) => {
                    this.wareHouseOptions = response.rows||[];
                    this.$set(this.baseInfo,'deliveryWarehouseId',this.baseInfo.deliveryWarehouseId)
                });
            });
        },
        //区域树
        getAreaTreeData() {
            systemAreaTreeApi({}).then((response) => {
                this.treeAreaOptions = response.data;
                 if(this.treeAreaOptions.length>0){
                    this.$set(this.baseInfo,"areaId",this.getFirstChild(this.treeAreaOptions[0]).id)
                    this.handleAreaChange()
                }
            });
        },
        getFirstChild(node) {
            if (!node.children || node.children.length === 0) {
                return node; // 没有子节点或子节点为空，返回当前节点
            } else {
                return this.getFirstChild(node.children[0]); // 递归调用最后一个子节点
            }
        },
        //选中区域-查询食堂
        handleAreaChange(e){
            this.getSupplierData()
            this.getWareHouseData()
        },
        /** 查询供应商下拉结构 */
        getSupplierData() {
            supplierPageApi({ isPaging:1,areaIdList:[this.baseInfo.areaId] }).then((response) => {
                this.supplierOptions = response.rows||[];
                if(this.supplierOptions.length>0){
                    this.$set(this.baseInfo,"deliverySupplierId",this.supplierOptions[0].supplierId)
                }
            });
        },
        /** 查询供应商下拉结构 */
        getWareHouseData() {
            drpWareHousePageApi({ areaId:this.baseInfo.areaId }).then((response) => {
                this.wareHouseOptions = response.rows||[];
                if(this.wareHouseOptions.length>0){
                    this.$set(this.baseInfo,"deliveryWarehouseId",this.wareHouseOptions[0].warehouseId)
                }
            });
        },
        /** 查询货品类别下拉树结构 */
        getMaterialTree() {
           let param = {
                // goodsType:1
            }
            systemMaterialTreeApi(param).then((response) => {
                this.materialTreeOptions = response.data;
            });
        },
        //选择日期范围
        changeDateRange(e){
            //this.formatDate(e[0])
        },
         // 多选框选中数据
        handleSelectionChange(selection) {
            this.batchIds = selection.map(item => item.materialId)
        },
        //删除货品
        delMaterial(){
            this.batchIds.forEach(ID=>{
                let index = this.materialList.findIndex(v=>v.materialId==ID)
                if(index>-1){
                    this.materialList.splice(index,1)
                }
            })
            setTimeout(()=>{
                this.$refs.multipleTable.clearSelection()
            },300)
        },
        //添加货品
        addMaterial(){
            if(this.baseInfo.areaId!=undefined){
                 this.openDialog=true
                this.resetQuery()
                setTimeout(()=>{
                    this.$refs.multipleTable1.clearSelection()
                },300)
            }else{
                this.$modal.msgError("请先选择区域");
            }

        },
        /** 搜索按钮操作 */
        handleQuery() {
            this.queryParams.pageNum = 1;
            this.getList();
        },
        /** 重置按钮操作 */
        resetQuery() {
            this.queryParams = {
                pageNum: 1,
                pageSize: 10,
            }
            this.resetForm("queryForm");
            this.handleQuery();
        },
        /** 查询列表 */
        getList() {
            this.loading = true;
            let param = {
                "pageSize": this.queryParams.pageSize,
                "pageNum": this.queryParams.pageNum,
                "areaId": this.queryParams.areaId,
                "materialName": this.queryParams.materialName,
                "materialCode": this.queryParams.materialCode,
                "materialTypeIds": this.queryParams.materialTypeIds,
            }
            getMaterialListApi(param).then(response => {
                this.tableListData = response.rows;
                this.total = Number(response.total);
                this.loading = false;
            });
        },
        handleSelectionChange2(selection) {
            this.batchChosenMaterial = selection;
            this.batchChosenMaterial.forEach(item=>{
                this.$set(item,"orderNum",0)
                this.$set(item,"unitPrice",item.unitPrice)
            })
        },
        confirmChosen(){
            if(this.batchChosenMaterial.length>0){
                this.loading = true
                this.materialList = this.batchChosenMaterial
                // this.batchChosenMaterial.forEach(item=>{
                //     let obj = Object.assign({}, item)
                //     this.materialList.push(obj)
                // })
                setTimeout(()=>{
                    this.loading = false
                    this.openDialog=false
                },500)
            }
        },
        //保存草稿
        confirmSave(){
            this.$refs["baseInfo"].validate(valid => {
                if (valid) {
                    setTimeout(()=>{
                        let param = Object.assign({},this.baseInfo);
                        param.deliveryDate = this.formatDate(this.baseInfo.deliveryDate)
                        param.deliveryTotalNum = 0;//送货总数量
                        param.inspectQualifiedNum = 0;//验货合格总数量
                        param.status=1
                        param.inspectGoodsDetails = []
                        param.inspectAttachment = ""
                        if(this.attachmentList.length>0){
                            let arr = this.attachmentList.map(item=>item.url)
                            param.inspectAttachment = arr.join(',')
                            console.log(param)
                        }
                        this.noMaterial = false;
                        if(this.materialList.length>0){
                            this.materialList.forEach(item=>{
                                if(item.orderNum>item.totalQualifiedNum){
                                    if(Number(item.deliveryNum)==0 || Number(item.qualifiedNum)==0){
                                        this.noMaterial = true
                                    }else{
                                        let obj = Object.assign({}, item)
                                        param.deliveryTotalNum = param.deliveryTotalNum+Number(obj.deliveryNum)//送货总数量
                                        param.inspectQualifiedNum = param.inspectQualifiedNum+Number(obj.qualifiedNum)//验货合格总数量
                                        param.inspectGoodsDetails.push(obj)
                                    }
                                }
                            })
                        }
                        if(this.noMaterial){
                            this.$modal.msgError("请输入单价和数量！");
                        }else{
                            this.noMaterial = true;
                            if(this.materialList.length>0){
                                this.noMaterial = false;
                            }
                            console.log(param)
                            if(this.noMaterial){
                                this.$modal.msgError("请添加货品！");
                            }else{
                                this.loadingBtn=true;
                                if (this.baseInfo.inspectGoodsId != undefined) {
                                    editPurchaseInspectApi(param).then((response) => {
                                        this.$modal.msgSuccess("修改成功");
                                        this.loadingBtn=false
                                        this.jumpList()
                                    }).catch(() => {
                                        this.loadingBtn=false
                                    });
                                } else {
                                    addPurchaseInspectApi(param).then((response) => {
                                        this.$modal.msgSuccess("保存成功");
                                        this.loadingBtn=false
                                        this.jumpList()
                                    }).catch(() => {
                                        this.loadingBtn=false
                                    });
                                }

                            }
                        }
                    },500)
                }
            });
        },
        // 提交按钮
        confirmSubmit(){
            this.$refs["baseInfo"].validate(valid => {
                if (valid) {
                    setTimeout(()=>{
                        let param = Object.assign({},this.baseInfo);
                        param.deliveryDate = this.formatDate(this.baseInfo.deliveryDate)
                        param.deliveryTotalNum = 0;//送货总数量
                        param.inspectQualifiedNum = 0;//验货合格总数量
                        param.status=2
                        param.inspectGoodsDetails = []
                        param.inspectAttachment = ""
                        if(this.attachmentList.length>0){
                            let arr = this.attachmentList.map(item=>item.url)
                            param.inspectAttachment = arr.join(',')
                            console.log(param)
                        }
                        this.noMaterial = false;
                        if(this.materialList.length>0){
                            this.materialList.forEach(item=>{
                                if(item.orderNum>item.totalQualifiedNum){
                                    if(Number(item.deliveryNum)==0 || Number(item.qualifiedNum)==0){
                                        this.noMaterial = true
                                    }else{
                                        let obj = Object.assign({}, item)
                                        param.deliveryTotalNum = param.deliveryTotalNum+Number(obj.deliveryNum)//送货总数量
                                        param.inspectQualifiedNum = param.inspectQualifiedNum+Number(obj.qualifiedNum)//验货合格总数量
                                        param.inspectGoodsDetails.push(obj)
                                    }
                                }
                            })
                        }
                        if(this.noMaterial){
                            this.$modal.msgError("请输入表格数据！");
                        }else{
                            this.noMaterial = true;
                            if(this.materialList.length>0){
                                this.noMaterial = false;
                            }
                            console.log(param)
                            if(this.noMaterial){
                                this.$modal.msgError("请添加货品！");
                            }else{
                                this.loadingBtn=true;
                                if (this.baseInfo.inspectGoodsId != undefined) {
                                    editPurchaseInspectApi(param).then((response) => {
                                        this.$modal.msgSuccess("修改成功");
                                        this.loadingBtn=false
                                        this.jumpList()
                                    }).catch(() => {
                                        this.loadingBtn=false
                                    });
                                } else {
                                    addPurchaseInspectApi(param).then((response) => {
                                        this.$modal.msgSuccess("保存成功");
                                        this.loadingBtn=false
                                        this.jumpList()
                                    }).catch(() => {
                                        this.loadingBtn=false
                                    });
                                }

                            }
                        }
                    },500)
                }
            });
        },
        //导入
        importPurchaseOrder(){
            if(this.baseInfo.areaId!=undefined&&this.baseInfo.deliveryWarehouseId!=undefined&&this.baseInfo.deliverySupplierId!=undefined){
                this.openImportDialog=true
                this.resetQuery2()
                // setTimeout(()=>{
                //     this.$refs.multipleTable2.clearSelection()
                // },300)
            }else{
                this.$modal.msgError("请先选择区域，仓库，供应商");
            }
        },
        /** 搜索按钮操作 */
        handleQuery2() {
            this.queryParams2.pageNum = 1;
            this.getList2();
        },
        /** 重置按钮操作 */
        resetQuery2() {
            this.queryParams2 = {
                pageNum: 1,
                pageSize: 10,
            }
            this.resetForm("queryForm2");
            this.handleQuery2();
        },
        /** 查询列表 */
        getList2() {
            this.loading2 = true;
            let param = {
                "pageSize": this.queryParams2.pageSize,
                "pageNum": this.queryParams2.pageNum,
                "orderGoodsCode": this.queryParams2.orderGoodsCode,
                "orderStatus":2,
                "isInspect":2,
                "areaId": this.baseInfo.areaId,
                "warehouseId": this.baseInfo.deliveryWarehouseId,
                "supplierId": this.baseInfo.deliverySupplierId,
            }
            purchaseOrderPageApi(param).then(response => {
                this.tableListData2 = response.rows;
                this.total2 = Number(response.total);
                this.loading2 = false;
            });
        },
        confirmImport(row){
            console.log(row)
            this.importRow = row;
            let param = {
                orderGoodsId:this.importRow.orderGoodsId
            }
            getPurchaseOrderInfoApi(param).then((response) => {
                this.materialDetailsData = response.data.orderGoodsDetailList||[];
                this.$modal.confirm('是否确认导入采购订单?').then(()=>{
                    if(this.materialDetailsData.length>0){
                        this.materialList = this.materialDetailsData;
                        this.materialList.forEach(item=>{
                            this.$set(item,"unitPrice",Number(item.singlePrice))
                            this.$set(item,"orderNum",item.orderNum)
                            if(item.totalQualifiedNum&&item.totalQualifiedNum>0){
                                this.$set(item,"deliveryNum",(Number(item.orderNum)-Number(item.totalQualifiedNum)).toFixed(2))
                                this.$set(item,"qualifiedNum",(Number(item.orderNum)-Number(item.totalQualifiedNum)).toFixed(2))
                            }else{
                                this.$set(item,"deliveryNum",Number(item.orderNum).toFixed(2))
                                this.$set(item,"qualifiedNum",Number(item.orderNum).toFixed(2))
                            }
                        })
                        // this.materialList = [];
                        // this.materialDetailsData.forEach(item=>{
                        //     if(item.totalQualifiedNum<item.orderNum){
                        //         let obj = Object.assign({},item)
                        //         this.$set(obj,"unitPrice",Number(obj.singlePrice))
                        //         this.$set(obj,"orderNum",obj.orderNum)
                        //         if(obj.totalQualifiedNum&&obj.totalQualifiedNum>0){
                        //             this.$set(obj,"deliveryNum",obj.orderNum-obj.totalQualifiedNum)
                        //         }else{
                        //             this.$set(obj,"deliveryNum",obj.orderNum)
                        //         }
                        //         this.materialList.push(obj)
                        //     }
                        // })
                        this.baseInfo.relateOrderGoodsId = this.importRow.orderGoodsCode;
                        this.$set(this.baseInfo,"remark","导入采购订单")
                        setTimeout(()=>{
                            this.openImportDialog=false
                        },500)
                    }else{
                        this.$modal.msgError("采购订单明细无货品！");
                    }
                }).catch(() => {});
            });
        },
        //附件上传
        fileUpLoad(param){
            param.type = 'canteen'
            imgUpLoadTwo(param).then((res) => {
              if (res.code == 200) {
                console.log(this.attachmentList)
                console.log(this.baseInfo.inspectAttachmentList)
                this.attachmentList.push(res.data)
                if(!this.baseInfo.inspectAttachmentList){
                    this.baseInfo.inspectAttachmentList=[res.data.url]
                }else{
                    this.baseInfo.inspectAttachmentList.push(res.data.url)
                }
              } else {
                this.$modal.msgError(res.msg);
              }
          }).catch((error) => {
              this.$modal.msgError(error)
          })
        },
        handleRemoveFile(file, fileList){
            let sum = 0
            this.attachmentList.forEach((item, index) => {
                if (item.url == file.url) {
                    sum = index
                }
            })
            this.attachmentList.splice(sum, 1)
            this.baseInfo.inspectAttachmentList.splice(sum, 1)
        },
        patternValue(row){
            console.log(row)
            if(!row.deliveryNum||row.deliveryNum==""){
                row.deliveryNum=0
                row.qualifiedNum=0
            }else{
                row.deliveryNum = row.deliveryNum.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1')
                row.qualifiedNum = row.deliveryNum.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1')
            }
            if(row.totalQualifiedNum&&row.totalQualifiedNum>0){
                setTimeout(()=>{
                    if(Number(row.deliveryNum)>=(Number(row.orderNum)-Number(row.totalQualifiedNum))){
                        // row.deliveryNum = Number(row.orderNum)-Number(row.totalQualifiedNum)
                        row.deliveryNum = Number(row.deliveryNum)
                        row.qualifiedNum = Number(row.orderNum)-Number(row.totalQualifiedNum)
                    }
                },200)
            }else{
                setTimeout(()=>{
                    if(Number(row.deliveryNum)>=Number(row.orderNum)){
                        // row.deliveryNum = Number(row.orderNum)
                        row.deliveryNum = Number(row.deliveryNum)
                        row.qualifiedNum = Number(row.orderNum)
                    }else{
                        row.deliveryNum = Number(row.deliveryNum)
                        row.qualifiedNum = Number(row.deliveryNum)
                    }
                },200)
            }
        },
        patternValue2(row){
            if(!row.qualifiedNum||row.qualifiedNum==""){
                row.qualifiedNum=0
            }else{
                row.qualifiedNum = row.qualifiedNum.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1')
            }
            if(Number(row.deliveryNum)>(Number(row.orderNum)-Number(row.totalQualifiedNum))){
                if(Number(row.qualifiedNum)>(Number(row.orderNum)-Number(row.totalQualifiedNum))){
                    setTimeout(()=>{
                        row.qualifiedNum = Number(row.orderNum)-Number(row.totalQualifiedNum)
                    },200)
                }
            }else{
                if(Number(row.qualifiedNum)>Number(row.deliveryNum)){
                    setTimeout(()=>{
                        row.qualifiedNum = Number(row.deliveryNum)
                    },200)
                }
            }
            // if(Number(row.deliveryNum)<(Number(row.orderNum)-Number(row.totalQualifiedNum))){
            //      setTimeout(()=>{
            //         if(Number(row.qualifiedNum)>=Number(row.deliveryNum)){
            //             row.qualifiedNum = Number(row.deliveryNum)
            //         }
            //     },200)
            // }
        },
        //日期
        formatDate(date) {
            // 格式化为 YYYY-MM-DD
            date = new Date(date)
            const year = date.getFullYear();
            const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
            const day = String(date.getDate()).padStart(2, '0');
            return `${year}-${month}-${day}`;
        },
        //日期时间
        formatDateTime(date) {
            // 格式化为 YYYY-MM-DD
            date = new Date(date)
            const year = date.getFullYear();
            const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
            const day = String(date.getDate()).padStart(2, '0');
            const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
            const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
            const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
            return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
        }
    }
};
</script>
<style scoped>
    .dishes-card{
        width: 20%;
        height: 100%;
        margin-right: 15px;
        position: relative;
    }
    .body-card{
        width: 96%;
        margin: 10px auto;
        display: flex;
        flex-direction: column;
        height: 300px;
        overflow-y: auto;
    }

    .bottom-card{
        width: 100%;
        height: 60px;
        display: flex;
        align-items: center;
        justify-content: center;
        position: absolute;
        bottom: 0;
    }


    .dialog-left{
        width: 20%;
        height: 100%;
    }
    .dish-name{
        width: 100%;
        height: 32px;
        display: flex;
        align-items: center;
        cursor: pointer;
    }
    .dish-name:hover{
        background-color:rgba(0, 0, 0, 0.1);
        color: #4b80fd;
    }

    .dialog-center{
        width: 10%;
        height: 100%;
        /* background: #4b80fd; */
        border: 1px solid #ccc;
        border-radius: 5px;
        margin: 0 1%;
    }
    .dialog-center-header{
        width: 100%;display: flex;align-items: center;justify-content: center;height: 60px;font-weight: bold;border-bottom: 1px solid #ccc;
    }
    .dialog-right{
        width: 70%;
        height: 100%;
    }
    .primary{
        background: #1890ff!important;
        color: #fff!important;
    }
    .dateTable{
        width: 14%;
        height: 40px;
        color: #9a9da3;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 1px solid #e6ebf5;
    }
    .dateTable2{
        width: 14%;
        height: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: #fff;
        color:#000;
        border: 1px solid #e6ebf5;
        cursor: pointer;
    }
    .bgBlue{
        width: 14%;
        height: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: #0c6ccc;
        color:#fff !important;
        border: 1px solid #fff;
        cursor: pointer;
    }
</style>
