<template>
    <!-- 新购工机具入库 -->
    <div class="app-container">
        <el-form
            :model="queryParams"
            ref="queryForm"
            size="small"
            :inline="true"
            v-show="showSearch"
            label-width="100px"
        >
            <el-form-item label="关键字" prop="keyWord">
                <el-input
                    v-model="queryParams.keyWord"
                    placeholder="请输入关键字"
                    clearable
                    maxlength="50"
                    style="width: 240px"
                    @keyup.enter.native="handleQuery"
                />
            </el-form-item>
            <el-form-item label="设备类型" prop="typeId">
                <el-select
                    v-model="queryParams.typeId"
                    placeholder="请选择设备类型"
                    clearable
                    filterable
                    style="width: 240px"
                >
                    <el-option
                        v-for="typeItem in typesList"
                        :key="typeItem.typeId"
                        :label="typeItem.typeName"
                        :value="typeItem.typeId"
                    />
                </el-select>
            </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-row :gutter="10" class="mb8">
            <el-col :span="1.5">
                <el-button
                    type="warning"
                    plain
                    icon="el-icon-download"
                    size="mini"
                    @click="handleExport"
                    v-hasPermi="['warehousing:newTools:export']"
                    >导出</el-button
                >
            </el-col>
            <right-toolbar
                :showSearch.sync="showSearch"
                @queryTable="getList"
            ></right-toolbar>
        </el-row>

        <el-table v-loading="loading" :data="tableList" border>
            <!-- <el-table-column type="selection" width="55" align="center" /> -->
            <el-table-column
                align="center"
                label="序号"
                type="index"
                :index="
                    indexContinuation(queryParams.pageNum, queryParams.pageSize)
                "
            />
            <el-table-column
                label="采购单号"
                align="center"
                prop="code"
                show-overflow-tooltip
            />
            <el-table-column
                label="采购日期"
                align="center"
                prop="purchaseTime"
                show-overflow-tooltip
            />
            <el-table-column
                label="到货日期"
                align="center"
                prop="arrivalTime"
                show-overflow-tooltip
            />
            <el-table-column
                label="采购机具设备"
                align="center"
                prop="purchasingTypeName"
                show-overflow-tooltip
            />
            <el-table-column
                label="采购员"
                align="center"
                prop="purchaserName"
                show-overflow-tooltip
            />
            <el-table-column
                label="入库人员"
                align="center"
                prop="updateBy"
                show-overflow-tooltip
            />
            <el-table-column
                label="入库时间"
                align="center"
                prop="updateTime"
                show-overflow-tooltip
            />
            <el-table-column
                label="发布时间"
                align="center"
                prop="createTime"
                show-overflow-tooltip
            />
            <el-table-column
                label="备注"
                align="center"
                prop="remark"
                show-overflow-tooltip
            />
            <el-table-column label="状态" align="center" prop="taskStatus">
                <template slot-scope="scope">
                    <el-tag
                        size="mini"
                        type="success"
                        v-if="scope.row.taskStatus == '26'"
                        >已验收合格</el-tag
                    >
                    <el-tag
                        size="mini"
                        type="primary"
                        v-if="scope.row.taskStatus == '28'"
                        >已审核</el-tag
                    >
                    <el-tag
                        size="mini"
                        type="warning"
                        v-if="scope.row.taskStatus == '105'"
                        >待审核</el-tag
                    >
                    <el-tag
                        size="mini"
                        type="danger"
                        v-if="scope.row.taskStatus == '107'"
                        >已驳回</el-tag
                    >
                </template>
            </el-table-column>

            <el-table-column label="操作" align="center" width="180">
                <template slot-scope="scope">
                    <el-button
                        size="mini"
                        type="text"
                        icon="el-icon-zoom-in"
                        @click="handleView(scope.row)"
                        v-hasPermi="['warehousing:newTools:view']"
                        >查看</el-button
                    >

                    <el-button
                        size="mini"
                        type="text"
                        icon="el-icon-edit"
                        v-if="
                            scope.row.taskStatus == '26' ||
                            scope.row.taskStatus == '105'
                        "
                        @click="handleUpdate(scope.row)"
                        v-hasPermi="['warehousing:newTools:auditing']"
                        >审核</el-button
                    >
                    <el-button
                        size="mini"
                        type="text"
                        icon="el-icon-edit"
                        v-if="scope.row.taskStatus == '28'"
                        @click="handlePrint(scope.row)"
                        v-hasPermi="['warehousing:newTools:list']"
                        >入库单</el-button
                    >
                </template>
            </el-table-column>
        </el-table>

        <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
        />

        <!--审批对话框 -->
        <el-dialog
            :title="title"
            :visible.sync="open"
            width="1000px"
            append-to-body
        >
            <el-form
                :model="query"
                ref="query"
                size="small"
                :inline="true"
                v-show="showSearch"
                label-width="68px"
            >
                <el-form-item label="关键字" prop="dictName">
                    <el-input
                        v-model="query.dictName"
                        placeholder="请输入关键字"
                        clearable
                        maxlength="50"
                        style="width: 240px"
                        @keyup.enter.native="handleQuery"
                    />
                </el-form-item>

                <el-form-item>
                    <el-button
                        type="primary"
                        icon="el-icon-search"
                        size="mini"
                        @click="handleDialogQuery"
                        >查询</el-button
                    >
                    <!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> -->
                </el-form-item>
            </el-form>
            <el-row :gutter="10" class="mb8" v-if="showHandle">
                <el-col :span="1.5">
                    <el-button
                        type="primary"
                        plain
                        size="mini"
                        :disabled="multiple"
                        @click="passAll"
                        >批量通过</el-button
                    >
                </el-col>
                <el-col :span="1.5">
                    <el-button
                        type="danger"
                        plain
                        size="mini"
                        @click="refusedAll"
                        :disabled="multiple"
                        >批量不通过</el-button
                    >
                </el-col>
                <!--        <el-col :span="1.5">-->
                <!--          <el-button-->
                <!--            type="warning"-->
                <!--            plain-->
                <!--            icon="el-icon-download"-->
                <!--            size="mini"-->
                <!--            @click="handleExport"-->
                <!--            v-hasPermi="['system:dict:export']"-->
                <!--          >导出</el-button>-->
                <!--        </el-col>-->
            </el-row>
            <el-table
                v-loading="loading"
                :data="detailTableList"
                @selection-change="handleSelectionChange"
                border
            >
                <el-table-column
                    type="selection"
                    width="55"
                    align="center"
                    :selectable="selectable"
                />
                <el-table-column
                    label="序号"
                    align="center"
                    width="80"
                    type="index"
                    :index="indexContinuation(query.pageNum, query.pageSize)"
                >
                    <!-- <template slot-scope="scope">
                        <span>{{
                            (query.pageNum - 1) * 10 + scope.$index + 1
                        }}</span>
                    </template> -->
                </el-table-column>
                <el-table-column
                    label="机具类型"
                    align="center"
                    prop="typeName"
                    show-overflow-tooltip
                />
                <el-table-column
                    label="规格型号"
                    align="center"
                    prop="specificationType"
                    show-overflow-tooltip
                />
                <el-table-column
                    label="数量"
                    align="center"
                    prop="checkNum"
                    show-overflow-tooltip
                />
                <el-table-column
                    label="编号"
                    align="center"
                    prop="maCode"
                    show-overflow-tooltip
                    width="200"
                />
                <el-table-column
                    label="管理模式"
                    align="center"
                    prop="manageType"
                >
                    <template slot-scope="scope">
                        <span v-if="scope.row.manageType == '0'">编码管理</span>
                        <span v-if="scope.row.manageType == '1'">数量管理</span>
                    </template>
                </el-table-column>
                <!-- <el-table-column label="不通过原因" align="center" prop="remark" show-overflow-tooltip /> -->
                <el-table-column label="状态" align="center" prop="status">
                    <template slot-scope="scope">
                        <span v-if="scope.row.status == '0'">未入库</span>
                        <span v-if="scope.row.status == '1'">已入库</span>
                        <span v-if="scope.row.status == '2'">已驳回</span>
                    </template>
                </el-table-column>

                <el-table-column
                    label="操作"
                    align="center"
                    class-name="small-padding fixed-width"
                    v-if="showHandle"
                    width="150"
                >
                    <template
                        slot-scope="scope"
                        v-if="
                            scope.row.manageType == '1' ||
                            scope.row.manageType == '2' ||
                            (scope.row.manageType == '0' && scope.row.maCode)
                        "
                    >
                        <el-button
                            size="mini"
                            type="text"
                            v-if="scope.row.status == '0'"
                            @click="pass(scope.row)"
                            >通过</el-button
                        >
                        <el-button
                            size="mini"
                            type="text"
                            v-if="scope.row.status == '0'"
                            @click="refused(scope.row)"
                            >不通过</el-button
                        >
                    </template>
                </el-table-column>
            </el-table>

            <pagination
                v-show="dialogTotal > 0"
                :total="dialogTotal"
                :page.sync="query.pageNum"
                :limit.sync="query.pageSize"
                @pagination="getDialogTable"
            />
        </el-dialog>

        <!-- 入库单弹窗 -->
        <el-dialog :visible.sync="openPrint" width="900px" append-to-body>
            <div style="height: 600px; overflow-y: scroll">
                <vue-easy-print tableShow ref="remarksPrintRef" class="print">
                    <div
                        class="title"
                        style="
                            text-align: center;
                            font-weight: 600;
                            font-size: 16px;
                        "
                        >入库单</div
                    >
                    <div
                        class="info"
                        style="margin-top: 10px; display: flex; flex-wrap: wrap"
                    >
                        <!-- <div
              class="item"
              style="
                                width: 50%;
                                flex-shrink: 0;
                                margin-bottom: 5px;
                                font-size: 14px;
                            "
            >
              <span>工程名称：</span>
            </div> -->
                        <div
                            class="item"
                            style="
                                width: 50%;
                                flex-shrink: 0;
                                margin-bottom: 5px;
                                font-size: 14px;
                            "
                        >
                            <span>日期：</span>
                        </div>
                        <!-- <div
              class="item"
              style="
                                width: 50%;
                                flex-shrink: 0;
                                margin-bottom: 5px;
                                font-size: 14px;
                            "
            >
              <span>领料单号</span>
            </div> -->
                        <!-- <div
              class="item"
              style="
                                width: 50%;
                                flex-shrink: 0;
                                margin-bottom: 5px;
                                font-size: 14px;
                            "
            >
              <span>车辆信息：</span>
            </div> -->
                    </div>
                    <el-table
                        :data="printTableData"
                        class="table"
                        style="
                            margin-top: 20px;
                            padding-bottom: 1px;
                            padding-right: 1px;
                        "
                        border
                    >
                        <!--          <el-table-column type="selection" width="55" align="center" />-->
                        <el-table-column
                            label="序号"
                            align="center"
                            type="index"
                        />
                        <el-table-column
                            label="类型名称"
                            align="center"
                            prop="typeName"
                        />
                        <el-table-column
                            label="规格型号"
                            align="center"
                            prop="specificationType"
                        />
                        <el-table-column
                            label="计量单位"
                            align="center"
                            prop="unitName"
                        />
                        <el-table-column
                            label="数量"
                            align="center"
                            prop="checkNum"
                        />
                        <el-table-column
                            label="备注"
                            align="center"
                            prop="remark"
                        />
                        <!-- <el-table-column label="出库方式" align="center" prop="manageTypeName"  /> -->
                    </el-table>

                    <div
                        class="fillIn"
                        style="
                            margin-top: 20px;
                            display: flex;
                            justify-content: space-between;
                        "
                    >
                        <div class="item" style="width: 25%">
                            <span>审核：</span>
                        </div>

                        <div class="item" style="width: 25%">
                            <span>库管员：</span>
                        </div>
                        <div class="item" style="width: 25%">
                            <span>经办人：</span>
                        </div>
                        <div class="item" style="width: 25%">
                            <!-- <span>经办人：</span> -->
                        </div>
                    </div>
                </vue-easy-print>
            </div>

            <div slot="footer" class="dialog-footer" style="text-align: center">
                <el-button type="primary" @click="print">打 印</el-button>
                <el-button @click="openPrint = false">关 闭</el-button>
            </div>
        </el-dialog>
    </div>
</template>

<script>
import { getTypeList } from '@/api/store/warehousing'
import {
    getPutInList,
    getPutinDetailsList,
    changePutinStatus,
    warehousingEntry,
} from '@/api/store/newBuy'
import vueEasyPrint from 'vue-easy-print'
export default {
    // name: "NewDevicesWarehousing",
    // dicts: ['sys_normal_disable'],
    components: { vueEasyPrint },
    data() {
        return {
            // 遮罩层
            loading: true,
            // 选中数组
            ids: [],
            // 非单个禁用
            single: true,
            // 非多个禁用
            multiple: true,
            // 显示搜索条件
            showSearch: true,
            // 总条数
            total: 0,
            // 总条数
            dialogTotal: 0,
            //搜索下拉数据
            typesList: [],
            modelList: [],
            // 表格数据
            tableList: [],
            detailTableList: [],
            // 弹出层标题
            title: '',
            // 是否显示弹出层
            open: false,
            openPrint: false,
            printData: {},
            printTableData: [],
            showHandle: true,
            // 日期范围
            dateRange: [],
            // 查询参数
            queryParams: {
                pageNum: 1,
                pageSize: 10,
                dictName: undefined,
                dictType: undefined,
                status: undefined,
                keyWord: '',
                typeId: '',
            },
            query: {
                pageNum: 1,
                pageSize: 10,
                dictName: undefined,
            },
            // 表单参数
            form: {},
            // 表单校验
            rules: {
                dictName: [
                    {
                        required: true,
                        message: '字典名称不能为空',
                        trigger: 'blur',
                    },
                ],
                dictType: [
                    {
                        required: true,
                        message: '字典类型不能为空',
                        trigger: 'blur',
                    },
                ],
            },
            userId: sessionStorage.getItem('userId'),
        }
    },
    created() {
        this.getTypeList()
        this.getList()
    },
    methods: {
        getTypeList() {
            getTypeList({ level: '3' }).then((response) => {
                this.typesList = response.data
            })
        },
        /** 查询字典类型列表 */
        getList() {
            this.loading = true
            getPutInList(this.queryParams).then((response) => {
                this.tableList = response.rows
                this.total = response.total
                this.loading = false
            })
        },

        getDialogTable() {
            this.loading = true
            getPutinDetailsList(this.query).then((response) => {
                this.detailTableList = response.rows
                this.dialogTotal = response.total
                this.loading = false
            })
        },

        // 取消按钮
        cancel() {
            this.open = false
            this.reset()
        },
        // 表单重置
        reset() {
            this.form = {
                dictId: undefined,
                dictName: undefined,
                dictType: undefined,
                status: '0',
                remark: undefined,
            }
            this.resetForm('form')
        },
        /** 搜索按钮操作 */
        handleQuery() {
            this.queryParams.pageNum = 1
            this.getList()
        },
        /** 搜索按钮操作 */
        handleDialogQuery() {
            this.query.pageNum = 1
            this.getDialogTable()
        },
        /** 重置按钮操作 */
        resetQuery() {
            this.resetForm('queryForm')
            this.handleQuery()
        },
        //是否可用勾选框
        selectable(row) {
            console.log(row)
            if (row.status == '0') {
                if (
                    (row.manageType == '0' && row.maCode) ||
                    row.manageType == '1'
                ) {
                    return true
                } else {
                    return false
                }
            } else {
                return false
            }
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
            this.ids = selection.map((item) => item)
            this.single = selection.length != 1
            this.multiple = !selection.length
        },
        /** 修改按钮操作 */
        handleUpdate(row) {
            // this.reset();
            this.query.taskId = row.taskId
            this.query.dictName = undefined
            this.getDialogTable()
            this.open = true
            this.showHandle = true
            this.title = '审核'
        },

        //通过
        pass(row) {
            console.log(row)
            console.log(this.query.taskId)
            row.taskId = this.query.taskId
            let obj = {
                taskId: this.query.taskId,
                maId: row.maId,
                inputNum: row.checkNum,
                maCode: row.maCode,
                typeId: row.typeId,
                num: row.num,
                manageType: row.manageType,
            }

            let param = {
                taskId: this.query.taskId,
                checkResult: '1',
                inputRecordList: [obj],
            }
            changePutinStatus(param).then((response) => {
                if (response.code == 200) {
                    this.$modal.msgSuccess('审批成功')
                    this.getDialogTable()
                    this.getList()
                } else {
                    this.$modal.msgSuccess('审批失败')
                }
            })
        },
        passAll() {
            console.log(this.query.taskId)
            console.log(this.ids)
            this.ids.forEach((item) => {
                item.taskId = this.query.taskId
                item.typeId = item.typeId
                item.maId = item.maId
                item.inputNum = item.checkNum
                item.maCode = item.maCode
            })
            let param = {
                taskId: this.query.taskId,
                checkResult: '1',
                inputRecordList: this.ids,
            }
            changePutinStatus(param).then((response) => {
                if (response.code == 200) {
                    this.$modal.msgSuccess('审批成功')
                    this.getDialogTable()
                    this.getList()
                } else {
                    this.$modal.msgSuccess('审批失败')
                }
            })
        },
        //拒绝
        refused(row) {
            console.log(row)
            console.log(this.query.taskId)
            row.taskId = this.query.taskId
            let obj = {
                taskId: this.query.taskId,
                maId: row.maId,
                maCode: row.maCode,
                inputNum: row.checkNum,
                typeId: row.typeId,
                manageType: row.manageType,
            }

            let param = {
                taskId: this.query.taskId,
                checkResult: '2',
                inputRecordList: [obj],
            }
            changePutinStatus(param).then((response) => {
                if (response.code == 200) {
                    this.$modal.msgSuccess('审批成功')
                    this.getDialogTable()
                    this.getList()
                } else {
                    this.$modal.msgSuccess('审批失败')
                }
            })
        },
        refusedAll() {
            console.log(this.query.taskId)
            console.log(this.ids)
            this.ids.forEach((item) => {
                item.taskId = this.query.taskId
                item.typeId = item.typeId
                item.maId = item.maId
                item.inputNum = item.checkNum
                item.maCode = item.maCode
            })
            let param = {
                taskId: this.query.taskId,
                checkResult: '2',
                inputRecordList: this.ids,
            }

            changePutinStatus(param).then((response) => {
                if (response.code == 200) {
                    this.$modal.msgSuccess('审批成功')
                    this.getDialogTable()
                    this.getList()
                } else {
                    this.$modal.msgSuccess('审批失败')
                }
            })
        },
        //查看操作
        handleView(row) {
            this.query.taskId = row.taskId
            this.getDialogTable()
            this.open = true
            this.showHandle = false
            this.title = '查看'
        },
        //获取入库单数据
        getPrintTable(taskId) {
            warehousingEntry({ taskId: taskId }).then((response) => {
                this.printTableData = response.data
                // this.dialogTotal = response.total;
            })
        },
        //查看入库单
        handlePrint(row) {
            this.query.taskId = row.taskId
            this.getPrintTable(row.taskId)
            this.openPrint = true
            this.title = '入库单'
        },
        //打印
        print() {
            this.$refs.remarksPrintRef.print()
        },
        /** 导出按钮操作 */
        handleExport() {
            this.download(
                'material/purchaseCheckInfo/putInExport',
                {
                    ...this.queryParams,
                },
                `新购工机具入库_${new Date().getTime()}.xlsx`,
            )
        },
    },
}
</script>
<style lang="scss" scoped>
.print {
    width: 90%;
    padding-left: 5%;
    padding-right: 1%;

    .title {
        text-align: center;
        font-weight: 600;
        font-size: 16px;
    }

    .info {
        margin-top: 10px;
        display: flex;
        flex-wrap: wrap;

        .item {
            width: 50%;
            flex-shrink: 0;
            margin-bottom: 5px;
            font-size: 14px;
        }
    }

    .fillIn {
        margin-top: 15px;
        display: flex;
        justify-content: space-between;
    }
}

::v-deep.el-table .fixed-width .el-button--mini {
    width: 60px !important;
    margin-bottom: 10px;
}
</style>
