<template>
    <div>


        <el-card>
            <el-form :inline="true" :model="query" class="query-form" size="mini">
                <el-row>
                    <el-form-item class="query-form-item">
                        <el-input v-model="filterQuery.id" 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 class="query-form-item">
                        <el-date-picker
                            v-model="filterQuery.syncTime"
                            type="datetime"
                            format="yyyy-MM-dd HH:mm:ss"
                            value-format="yyyy-MM-dd HH:mm:ss"
                            placeholder="请选择同步时间">
                        </el-date-picker>
                    </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="createScheduleDialog(1)"
                                       :disabled="!configParms.orderScanFinish&& !configParms.orderUnReceive&& !configParms.orderUnCheck">
                                同步单据
                            </el-button>
                            <el-button type="primary" icon="search" @click="createScheduleDialog(2)"
                                       :disabled="!configParms.typeBus&& !configParms.typeScan&& !configParms.typeThird">
                                同步单据类型
                            </el-button>
                            <el-button type="primary" icon="search" @click="createScheduleDialog(3)"
                                       :disabled="!configParms.basicProducts&& !configParms.basicCorp&&
                                        !configParms.basicInv&&!configParms.basicThirdProducts&& !configParms.basicThirdCorp&& !configParms.basicThirdInv
                                && !configParms.basicThirdBusOrder&& !configParms.sysUser">同步基础信息
                            </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="id"
                    width="140"
                    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="操作" fixed="right" width="160">
                    <template slot-scope="scope">
                        <el-button
                            type="text"
                            size="small"
                            @click.native.stop="detailDialog(scope.row.id)"
                        >详情
                        </el-button
                        >
                        <el-button
                            type="text"
                            size="small"
                            @click.native.stop="deleteDialog(scope.row.id)"
                        >删除
                        </el-button
                        >
                    </template>
                </el-table-column>
            </el-table>
            <el-pagination
                :page-size="filterQuery.limit"
                @current-change="handleCurrentChange"
                layout="prev, pager, next"
                :total="total"
                :current-page="filterQuery.page"
            ></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 {filterLog, deleteLog, createSchedule, findConfig, updateConfig} from "../../api/thrsys/spsSyncStatus";
import store from "@/store";

export default {
    data() {
        return {
            filterQuery: {
                id: null,
                status: "1",
                page: 1,
                limit: 10,
                syncTime: null,
            },
            list: [],
            headers: {},
            detailList: [],
            thirdSys: [],
            thirdSysDetail: null,
            total: 0,
            currentRow: null,
            editQuery: null,
            type: {
                "AutoUploadOrder": "已完成单据",
                "AutoUploadBusType": "单据类型",
                "AutoUploadAllData": "基础信息",
                "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,
                syncTime: null,
            },
            uploadFileUrl: null,
            uploadData: {
                thirdSys: "thirdId",
            },
            templateDlUrl: null,
            checked: false,
            configParms: {},
            syncInfo: null,
            syncVisible: false
        };
    },

    methods: {
        onReset() {
            this.$router.push({
                path: "",
            });
            this.filterQuery = {
                syncTime: null,
                id: null,
                status: null,
                page: 1,
                limit: 20,
            };
            this.syncTime = null;
            this.getList();
        },
        getList() {
            this.loading = true;
            filterLog(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;
                });
        },

        getConfig() {
            findConfig()
                .then((response) => {
                    if (response.code == 20000) {
                        this.configQuery = response.data;
                    } else {
                        this.$message.error(response.message);
                    }
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                    this.total = 0;
                });
        },
        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.filterQuery.syncTime)) {
                this.$confirm("此操作将从" + this.filterQuery.syncTime + "开始同步最新数据，是否继续", "提示", {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                })
                    .then(() => {
                        this.createSchedule(type);
                    })
                    .catch(() => {
                    });
            } else {
                this.createSchedule(type);
            }

        },

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

            createSchedule(query)
                .then((response) => {
                    this.loading = false;
                    if (response.code == 20000) {
                        this.$message.success("创建成功！");
                    } else if (response.code == 501) {
                        this.$message.warning(response.message);
                    } 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,
                    };
                    deleteLog(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];
        }
        ,
        getSyncConfig() {
            findConfig()
                .then((response) => {
                    if (response.code == 20000) {
                        this.configParms = response.data;
                    }
                })
                .catch(() => {
                });
        },
        detailDialog(id) {
            this.syncVisible = true;
            this.list.forEach(item => {
                if (id === item.id) {
                    this.syncInfo = item.remark;
                }
            })
        }
    },

    mounted() {
    },
    components: {},
    created() {
        this.headers = {
            ADMIN_ID: store.getters.adminId,
            ADMIN_TOKEN: store.getters.token,
        };
        this.getSyncConfig();
        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>
