<template>
    <div class="app-container">
        <!-- 预报废审核 -->
        <TableModel
            :tableProps="config.tableProps"
            :sendApi="getForecastWasteListApi"
            :formLabel="config.formLabel"
            :exportShow="true"
            :pageShow="true"
            :isSelShow="true"
            @getTableSelectionChange="getTableSelChangeOuter"
        >
            <!-- 报废来源 -->
            <template slot-scope="{ data }" slot="source">
                <template v-if="data.scrapSource === 1">退料</template>
                <template v-if="data.scrapSource === 2">维修审核</template>
                <template v-if="data.scrapSource === 3">盘点</template>
            </template>
            <!-- 单号  1、退料单号 2、维修单号 3、盘点单号 -->
            <template slot-scope="{ data }" slot="code">
                <template v-if="data.scrapSource === 1">{{
                    data.repairCode
                }}</template>
                <template v-if="data.scrapSource === 2">{{
                    data.scrapNum
                }}</template>
            </template>
            <!--审核状态 -->
            <template slot-scope="{ data }" slot="type">
                <el-tag v-if="data.taskStatus === 120" size="mini"
                    >待审核</el-tag
                >
            </template>
            <template slot-scope="{ data }">
                <el-button type="text" size="mini" @click="handlePreview(data)"
                    >查看</el-button
                >
                <el-button type="text" size="mini" @click="handleAuditing(data)"
                    >审核</el-button
                >
            </template>
        </TableModel>

        <DialogModel
            :title="title"
            :innerTitle="innerTitle"
            :dialogVisible="dialogVisible"
            :innerDialogVisible="innerDialogVisible"
            :width="dialogWidth"
            :innerWidth="`50%`"
            @closeDialog="closeDialog"
            @closeDialogInner="closeDialogInner"
        >
            <template slot="preview">
                <TableModel
                    :tableProps="config.previewTableProps"
                    :sendApi="getDialogListApi"
                    :sendParams="sendParams"
                    :handleColShow="false"
                    :formLabel="config.previewFormLabel"
                    :isSelShow="isSelShow"
                    ref="auditingTableRef"
                    @getTableSelectionChange="getTableSelChangeInner"
                >
                    <!--审核状态 -->
                    <template slot-scope="{ data }" slot="t_type">
                        <el-tag v-if="data.status == 0" size="mini"
                            >待审核</el-tag
                        >
                        <el-tag
                            type="success"
                            v-if="data.status == 1"
                            size="mini"
                            >通过</el-tag
                        >
                        <el-tag
                            type="warning"
                            v-if="data.status == 2"
                            size="mini"
                            >驳回</el-tag
                        > </template
                    >s
                </TableModel>
            </template>
            <template slot="handleBtn" v-if="handleBtn">
                <el-row class="handle-btn">
                    <el-button size="mini" type="primary" @click="auditingPass"
                        >通 过</el-button
                    >
                    <el-button
                        size="mini"
                        type="warning"
                        @click="auditingReject"
                        >驳 回</el-button
                    >
                </el-row>
            </template>
            <template slot="innerContent">
                <el-row>
                    <el-col :span="4">请输入驳回原因</el-col>
                    <el-col :span="20">
                        <el-input
                            v-model="rejectReason"
                            type="textarea"
                            :rows="6"
                            ref="rejectReasonRef"
                        />
                    </el-col>
                </el-row>
            </template>

            <template slot="innerHandleBtn">
                <el-row class="handle-btn">
                    <el-button size="mini" plain @click="handleCancelInner"
                        >取 消</el-button
                    >
                    <el-button
                        size="mini"
                        type="warning"
                        @click="handleSubmitInner"
                        >保 存</el-button
                    >
                </el-row>
            </template>
        </DialogModel>
    </div>
</template>

<script>
    import TableModel from '../component/tableModel.vue'
    import DialogModel from '../component/dialogModel.vue'
    import { getSelList } from './index.js'
    import config from './index'
    import {
        getForecastWasteListApi,
        getDialogListApi,
        auditingScrapApi,
    } from '@/api/scrap/forecastWaste.js'
    export default {
        name: 'scrapAuditing',
        components: {
            TableModel,
            DialogModel,
        },

        data() {
            return {
                config,
                /* 主页列表接口 */
                getForecastWasteListApi,
                /* 弹框内列表接口 */
                getDialogListApi,
                /* 弹框标题 */
                title: '查看',
                /* 内层弹框标题 */
                innerTitle: '',
                /* 弹框显示隐藏 */
                dialogVisible: false,
                /* 内层弹框显示隐藏 */
                innerDialogVisible: false,
                /* 弹框宽度 */
                dialogWidth: '70%',
                /* 弹框内查询条件 */
                typeName: '',
                /* 审核通过与驳回按钮的控制显示 */
                handleBtn: false,
                /* 驳回原因 */
                rejectReason: '',
                /* 表格是否需要复选框 */
                isSelShow: true,
                /* 选中的审核数据 */
                selAuditingList: [],
                /* 请求参数 */
                sendParams: {},
                getSelList,
                /* 审核参数 */
                auditingParams: {},
            }
        },
        created() {
            /* 获取表单的下拉数据 */
            this.getSelList()
        },
        methods: {
            /* 查看 */
            async handlePreview(val) {
                this.sendParams.taskId = val.taskId
                this.title = '查看'
                this.isSelShow = false
                this.dialogVisible = true
                this.$refs.auditingTableRef.getList()
            },
            /* 审核 */
            handleAuditing(val) {
                this.sendParams.taskId = val.taskId
                this.title = '审核'
                this.isSelShow = true
                this.handleBtn = true
                this.dialogVisible = true
                this.$refs.auditingTableRef.getList()
            },
            /* 自定义事件关闭弹框 (外层) */
            closeDialog(val) {
                this.dialogVisible = val
            },
            /* 自定义事件关闭弹框 (内层) */
            closeDialogInner(val) {
                this.innerDialogVisible = val
            },
            /* 审核通过 */
            async auditingPass() {
                if (this.selAuditingList.length < 1) {
                    this.$message.error('请勾选审核设备')
                    return
                }
                const res = await auditingScrapApi(this.auditingParams)
                console.log(res, '审核结果')
                this.dialogVisible = false
            },
            /* 审核驳回 */
            auditingReject() {
                if (this.selAuditingList.length < 1) {
                    this.$message.error('请勾选审核设备')
                    return
                }
                console.log('审核驳回')
                this.innerTitle = '驳回原因'
                this.innerDialogVisible = true
            },

            /* 驳回原因弹框内取消按钮 */
            handleCancelInner() {
                /* 关闭内弹框 */
                this.innerDialogVisible = false
            },
            /* 驳回弹框内保存按钮 */
            handleSubmitInner() {
                if (!this.rejectReason) {
                    this.$message.error('驳回原因不能为空！')
                    this.$refs.rejectReasonRef.focus()
                    return
                } else {
                    this.innerDialogVisible = false
                }
            },
            /* 主页列表复选框勾选事件 */
            getTableSelChangeOuter(list) {
                console.log(list, '主页列表勾选数据')
            },
            /* 审核时列表复选框勾选事件 */
            getTableSelChangeInner(list) {
                console.log(list, '审核列表勾选数据')
                this.selAuditingList = list
            },
        },
        watch: {
            /* 监听驳回原因弹框关闭 清空驳回原因内容 */
            innerDialogVisible: {
                handler(newVal) {
                    if (!newVal) {
                        this.rejectReason = ''
                    }
                },
            },
            /* 监听审核弹框关闭 清空列表的复选框选中状态 */
            dialogVisible: {
                handler(newVal) {
                    if (!newVal) {
                        this.$refs.auditingTableRef.clearSelType()
                        this.handleBtn = false
                    }
                },
            },
        },
    }
</script>

<style scoped>
    .handle-btn {
        margin-top: 15px;
        padding-top: 8px;
        text-align: right;
        border-top: 1px solid #393737;
    }
</style>
