<template>
    <div>

        <el-card>
            <div>
                <span style="color: red;">说明:&nbsp;此页面用于记录接收下游上传数据日志记录，上传数据至上游日志记录 </span>
            </div>

            <el-form :inline="true" :model="query" class="query-form" size="mini">
                <el-row>
                    <el-form-item class="query-form-item">
                        <el-input v-model="filterQuery.taskId" placeholder="记录ID" clearable></el-input>
                    </el-form-item>

                    <!-- <el-form-item class="query-form-item">
                        <el-select v-model="filterQuery.status" placeholder="处理状态">
                            <el-option label="全部" value=""></el-option>
                            <el-option label="等待处理" value="0"></el-option>
                            <el-option label="已处理" value="1"></el-option>
                            <el-option label="异常" value="2"></el-option>
                        </el-select>
                    </el-form-item> -->

                    <el-form-item>
                        <el-button-group style="display:flex;">
                            <el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>

                            <el-button type="primary" icon="search" @click="getList">查询</el-button>

                            <el-button type="primary" icon="search" @click="testConnect">测试上游连通性</el-button>
                        </el-button-group>
                    </el-form-item>
                </el-row>
            </el-form>

            <el-table v-loading="loading" :data="list" style="width: 100%">
                <el-table-column label="序号" type="index"></el-table-column>
                <el-table-column label="任务ID" prop="taskId" width="180" show-overflow-tooltip></el-table-column>

                <el-table-column label="任务类型" prop="idDatas" width="140" show-overflow-tooltip>
                    <template slot-scope="scope">
                        <span>{{ type[scope.row.idDatas] }}</span>
                    </template>
                </el-table-column>
                <!-- <el-table-column
                    label="状态"
                    prop="status"
                    width="140"
                    show-overflow-tooltip
                >
                    <template slot-scope="scope">
                        <el-tag
                            :type="statusFilterType(scope.row.status)"
                        >{{ status[scope.row.status] }}
                        </el-tag
                        >
                    </template>
                </el-table-column> -->
                <el-table-column label="开始时间" width="180" prop="startTime" show-overflow-tooltip></el-table-column>
                <!-- <el-table-column
                    label="结束时间"
                    width="180"
                    prop="endTime"
                    show-overflow-tooltip
                ></el-table-column> -->

                <el-table-column label="同步信息" prop="remark" show-overflow-tooltip></el-table-column>
                <el-table-column label="文件路径" prop="cacheFilePath" show-overflow-tooltip></el-table-column>
                <el-table-column label="操作" fixed="right" width="160">
                    <template slot-scope="scope">
                        <el-popconfirm @confirm="downFile(scope.row)" confirm-button-text='下载' cancel-button-text='不用了'
                            class="mr10" icon="el-icon-info" icon-color="blck" title="是否确认要下载文件？"
                            v-if="scope.row.cacheFilePath">
                            <el-button type="text" size="small" slot="reference">下载
                            </el-button>
                        </el-popconfirm>
                        <el-popconfirm  @confirm="deleteData(scope.row.id)" confirm-button-text='删除'
                            cancel-button-text='不用了' icon="el-icon-info" icon-color="red" title="是否确认要删除这条数据？">
                            <el-button type="text" size="small" slot="reference">删除
                            </el-button>
                        </el-popconfirm>
                    </template>
                </el-table-column>
            </el-table>
            <el-pagination :current-page="filterQuery.page" :page-size="filterQuery.limit" @current-change="handleCurrentChange"
                layout="prev, pager, next" :total="total"></el-pagination>
        </el-card>

        <el-dialog title="同步信息" width="25%" :close-on-click-modal="false" :close-on-press-escape="false"
            :visible.sync="syncVisible">
            <span v-text="syncInfo" style="white-space:pre-line;" class="syncInfo"></span>
        </el-dialog>

    </div>
</template>

<script>
    import {
        filterUploadStatus,
        deleteUploadStatus,
        updateConfig,
        connectUpper,
        uploadInfoByStatus
    } from "../../api/sync/dataSyncStatus";
    import store from "@/store";

    export default {
        data() {
            return {
                filterQuery: {
                    taskId: null,
                    id: null,
                    // status: "0",
                    page: 1,
                    limit: 10,
                    syncTime: null,
                },
                list: [],
                headers: {},
                detailList: [],
                thirdSys: [],
                thirdSysDetail: null,
                total: 0,
                currentRow: null,
                editQuery: null,
                type: {
                    "AutoDownloadOrder": "扫码单据",
                    "AutoDownloadBusType": "单据类型",
                    "AutoDownloadAllData": "基础信息",
                    "AutoDownloadDiProducts": "国家库DI数据"
                },
                status: {
                    0: "等待处理",
                    1: "处理完成",
                    2: "处理异常",
                },

                configQuery: {
                    id: null,
                    typeBus: null,
                    typeScan: null,
                    typeThird: null,
                    basicProducts: null,
                    basicCorp: null,
                    basicInv: null,
                    basicThirdProducts: null,
                    basicThirdCorp: null,
                    basicThirdInv: null,
                    basicThirdBusOrder: null,
                    orderScanFinish: null,
                    dbDiProducts: null,
                    downstreamEnable: null,

                },
                uploadFileUrl: null,
                uploadData: {
                    thirdSys: "thirdId",
                },
                templateDlUrl: null,
                checked: false,
                syncTime: null,
                syncInfo: null,
                syncVisible: false
            };
        },

        methods: {
            onReset() {
                this.$router.push({
                    path: "",
                });
                this.filterQuery = {
                    id: null,
                    page: 1,
                    limit: 10,
                };
                this.syncTime = null;
                this.getList();
            },
            getList() {
                this.loading = true;
                filterUploadStatus(this.filterQuery)
                    .then((response) => {
                        this.loading = false;
                        if (response.code == 20000) {
                            this.list = response.data.list || [];
                            this.total = response.data.total || 0;
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.loading = false;
                        this.list = [];
                        this.total = 0;
                    });
            },

            testConnect() {

                let query = {};
                connectUpper(query)
                    .then((response) => {
                        this.loading = false;
                        if (response.code == 20000) {
                            this.$message.success("连接成功！");
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.loading = false;
                    });

            },


            saveConfig() {
                updateConfig(this.configQuery)
                    .then((response) => {
                        this.loading = false;
                        if (response.code == 20000) {
                            this.$message.success("更新成功！");
                            // this.getConfig();
                        }
                    })
                    .catch(() => {
                        this.loading = false;
                    });
            },


            cancelDialog(val) {
                this.udiImportDetailVisible = false;
                this.thrCorpSelectVisible = false;
                if (val) {
                    this.getList();
                }
            },
            handleCurrentChange(val) {
                this.filterQuery.page = val;
                this.getList();
            },

            /* createScheduleDialog(type) {
                 if (this.$isNotBlank(this.syncTime)) {
                     this.$confirm("此操作将从" + this.syncTime + "开始同步最新数据，是否继续", "提示", {
                         confirmButtonText: "确定",
                         cancelButtonText: "取消",
                         type: "warning",
                     })
                         .then(() => {
                             this.createSchedule(type);
                         })
                         .catch(() => {
                         });
                 } else {
                     this.createSchedule(type);
                 }

             },

             createSchedule(type) {
                 let query = {
                     createType: type,
                     syncTime: this.syncTime,
                 }

                 createSchedule(query)
                     .then((response) => {
                         this.loading = false;
                         if (response.code == 20000) {
                             this.$message.success("创建成功！");
                         } else if (response.code == 501) {

                             this.$alert(response.message, '提示', {
                                 confirmButtonText: '确定',
                                 type: "warning",
                                 callback: action => {
                                 }
                             });

                         } else {
                             this.$message.error(response.message);
                         }
                         this.getList();
                     })
                     .catch(() => {
                         this.loading = false;
                     });
             },*/
            deleteDialog(rowId) {
                this.$confirm("此操作将删除该任务信息, 是否继续?", "提示", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                    })
                    .then(() => {
                        let dQuery = {
                            id: rowId,
                        };
                        deleteUploadStatus(dQuery)
                            .then((response) => {
                                this.loading = false;
                                if (response.code == 20000) {
                                    this.$message.success("删除成功");
                                } else {
                                    this.$message.error(response.message);
                                }
                                this.getList();
                            })
                            .catch(() => {
                                this.loading = false;
                            });
                    })
                    .catch(() => {});
            },
            handleChange(response, files, fileList) {
                console.log(response);
                if (response.code != 20000) {
                    this.$message.error(response.message);
                    this.getList();
                } else {
                    // console.log(files[0] + "\n" + this.fileList[0] + "\n" + fileList[0]);
                    this.$message.success(response.data);
                    this.getList();
                }
            },
            statusFilterType(status) {
                const statusMap = {
                    0: "warning",
                    1: "success",
                    2: "danger",
                };
                return statusMap[status];
            },
            detailDialog(id) {
                this.syncVisible = true;
                this.list.forEach(item => {
                    if (id === item.id) {
                        this.syncInfo = item.remark;
                    }
                })
            },

            downFile(rows) {
                infoByStatus({
                    'id': rows.id
                }).then(res => {
                    let blob = new Blob([res])
                    let fileName = rows.cacheFilePath.substring(rows.cacheFilePath.lastIndexOf('/'))
                    let link = document.createElement("a")
                    link.href = window.URL.createObjectURL(blob)
                    link.download = fileName
                    link.style.display = 'none'
                    document.body.appendChild(link)
                    link.click()
                    window.URL.revokeObjectURL(link.href)
                    document.body.removeChild(link)
                })
            },
            deleteData(id) {
                deleteUploadStatus({
                        id
                    }).then((response) => {
                        if (response.code == 20000) {
                            this.filterQuery.page = 1
                            this.$message.success("删除成功");
                        } else {
                            this.$message.error(response.message);
                        }
                        this.getList();
                    })
                    .catch(() => {});
            }
        },

        mounted() {},
        components: {},
        created() {
            this.headers = {
                ADMIN_ID: store.getters.adminId,
                ADMIN_TOKEN: store.getters.token,
            };
            this.getList();
            // this.getConfig();
        },
    };
</script>
<style>
    .itemTag {
        float: left;
        text-align: left;
        margin-top: 10px;
        width: 100px;
    }

    .text {
        font-size: 13px;
        font-family: "Microsoft YaHei";
    }

    .el-row {
        display: flex;
        flex-wrap: wrap;

    }

    .el-col {
        border-radius: 4px;
        flex-wrap: wrap;
    }

    .syncInfo {
        font-size: medium;
        font-family: "Microsoft YaHei";
        line-height: 25px;
    }
</style>
