<template>
    <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.genKey" placeholder="记录ID"></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-select v-model="filterQuery.thirdSysFk" placeholder="请选择第三方系统" @change="sysChange">
                        <el-option
                            v-for="item in thirdSys"
                            :key="item.value"
                            :label="item.thirdName"
                            :value="item.thirdId">
                            <span style="float: left">{{ item.thirdName }}</span>
                            <span style="float: right; color: #8492a6; font-size: 13px">{{ item.thirdId }}</span>
                        </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-upload
                            v-if="this.thirdSysDetail.enabled && this.thirdSysDetail.fromType==1"
                            :action="uploadFileUrl"
                            multiple
                            :limit="1"
                            :data="uploadData"
                            :show-file-list="false"
                            :on-success="handleChange"
                            :file-list="fileList"
                        >
                            <el-button size="mini" type="primary">导入产品信息</el-button>
                        </el-upload>
<!--                        <el-button type="primary" icon="search" @click="jumpDl"-->
<!--                                   v-if="this.thirdSysDetail.enabled && this.thirdSysDetail.fromType==1">模板下载-->
<!--                        </el-button>-->
                        <el-button type="primary" icon="search" @click="downloadProducts"
                                   v-if="this.thirdSysDetail.enabled && this.thirdSysDetail.fromType==3">
                            下载产品信息
                        </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="genKey"
                show-overflow-tooltip
            ></el-table-column>

            <el-table-column
                label="来源"
                prop="fromType"
                show-overflow-tooltip
            >
            </el-table-column>
            <el-table-column
                label="更新日期"
                prop="updateTime"
                show-overflow-tooltip
            ></el-table-column>
            <el-table-column
                label="来源系统"
                prop="thirdSysFk"
                show-overflow-tooltip
                :formatter="formatterThirdSys"
            ></el-table-column>
            <el-table-column
                label="状态"
                prop="status"
                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="备注"
                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="handleDetailClick(scope.row)"
                    >详情
                    </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-dialog
            title="导入产品信息详情详情"
            :visible.sync="udiImportDetailVisible"
            width="85%"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            v-if="udiImportDetailVisible"
        >
            <thrProductsImportDetail
                :currentRow="currentRow"
            ></thrProductsImportDetail>
        </el-dialog>


        <el-dialog
            title="下载产品信息"
            :visible.sync="thrProductsSelectVisible"
            width="85%"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            v-if="thrProductsSelectVisible"
        >
            <thrProductsSelect :selectType="selectType" v-on:cancelDialog="cancelDialog" :isDownThrSys="true"
            ></thrProductsSelect>
        </el-dialog>
    </div>
</template>

<script>
import {filterLog, deleteLog} from "../../api/thrsys/thrProductsImport";
import {getBasicThirdSys, filterDetailByKey} from "../../api/basic/basicThirdSys";
import {downloadAll} from "../../api/thrsys/thrProducts";
import {selectIp} from "../../api/param/systemParamConfig";
import thrProductsImportDetail from "./ThrProductsImportDetail";
import thrProductsSelect from "./ThrProductsSelect";
import axios from "axios";

export default {
    data() {
        return {
            filterQuery: {
                genKey: null,
                status: null,
                fromType: null,
                page: 1,
                limit: 20,
                thirdSysFk: null,
            },
            udiImportDetailVisible: false,
            thrProductsSelectVisible: false,
            checked: false,
            list: [],
            detailList: [],
            fileList: [],
            thirdSys: [],
            thirdSysDetail: null,
            total: 0,
            currentRow: null,
            editQuery: null,
            fromStatus: {
                0: "产品信息",
                1: "库存信息",
                2: "异常第三方上传"
            },
            status: {
                0: "等待处理",
                1: "正在处理",
                2: "处理异常",
                3: "处理完成"
            },
            uploadFileUrl: null,
            templateDlUrl: null,
            uploadData: {
                thirdSys: "thirdId",
            },
        };
    },

    methods: {
        onReset() {
            this.$router.push({
                path: "",
            });
            this.filterQuery = {
                fromType: null,
                genKey: null,
                status: null,
                page: 1,
                limit: 20,
                thirdSysFk: null,
            };
            this.getList();
        },
        getList() {
            this.loading = true;
            filterLog(this.filterQuery)
                .then((response) => {
                    if (response.code == 20000) {
                        this.list = response.data.list || [];
                        this.total = response.data.total || 0;
                    } else {
                        this.$message.error(response.message);
                    }
                    this.loading = false;
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                    this.total = 0;
                });
        },
        jumpDl() {
            window.open(this.templateDlUrl, '_blank');
        },
        formatterThirdSys(key) {
            let data = null;
            this.thirdSys.forEach((item, index) => {
                if (key.thirdSysFk == item.thirdId) {
                    data = item.thirdName;
                }
            });
            return data;
        },
        handleDetailClick(row) {
            this.currentRow = row;
            console.log(this.currentRow.genKey)
            this.udiImportDetailVisible = true;

        },
        cancelDialog(val) {
            this.udiImportDetailVisible = false;
            this.thrProductsSelectVisible = false;
            if (val) {
                this.getList();
            }
        },
        sysChange() {
            this.getThirdSysDetail();
            // console.log( this.thirdSysDetail.thirdId+"\n"+ this.thirdSysDetail.fromType+"\n"+this.thirdSysDetail.enable);
        },

        handleCurrentChange(val) {
            this.filterQuery.page = val;
            this.getList();
        },
        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(() => {
                });
        },
        getBasicThirdSys() {
            let query = {
                enabled: true,
            };
            getBasicThirdSys(query)
                .then((response) => {
                    this.thirdSys = response.data.list || [];
                    this.filterQuery.thirdSysFk = this.thirdSys[0].thirdId;
                    this.uploadData.thirdSys = this.filterQuery.thirdSysFk;
                    this.getList();
                    this.getThirdSysDetail();
                    this.selectSysParam();
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                });
            axios.get("./config.json").then(res => {
                let response = res.data.SERVER_IP;
                this.templateDlUrl = response + "/第三方产品信息导入模板.xls";
                console.log(this.templateDlUrl);

            });

        },
        selectSysParam() {
            let query = {
                key: "thirdIpUrl",
                thirdSysFk: this.filterQuery.thirdSysFk
            };
            selectIp(query).then((response) => {
                if (response.code == 20000) {
                    this.uploadFileUrl = response.data.thridUrl + "/udiwms/erp/pi/upload";
                }
            });
        },
        handleChange(response, files, fileList) {
            console.log(response);
            if (response.code != 20000) {
                this.$message.error(response.message);
            } else {
                // console.log(files[0] + "\n" + this.fileList[0] + "\n" + fileList[0]);
                this.$message.success(response.data);
                this.getList();
            }
            this.fileList = [];
        },
        statusFilterType(status) {
            const statusMap = {
                0: "warning",
                1: "warning",
                2: "danger",
                3: "success",
            };
            return statusMap[status];
        },
        getThirdSysDetail() {
            let query = {
                thirdSysFk: this.filterQuery.thirdSysFk,
                key: "piQueryUrl",
            };
            filterDetailByKey(query)
                .then((response) => {
                    this.thirdSysDetail = response.data;
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                });
            this.uploadData.thirdSys = this.filterQuery.thirdSysFk;
        },
        downloadProducts() {
            this.selectType = 3;
            this.thrProductsSelectVisible = true;
        },
        downloadDatas() {
            this.$confirm("此操作从第三方系统下载全部信息, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                let query = {
                    thirdSysFk: this.filterQuery.thirdSysFk
                };
                downloadAll(query).then((response) => {
                    if (response.code == 20000) {
                        this.$message.success(response.data);
                        this.getList()
                    } else {
                        this.$message.error(response.message);
                    }
                });
            });
        },
    },

    mounted() {
    },
    components: {thrProductsImportDetail, thrProductsSelect},
    created() {
        this.getBasicThirdSys();
        // this.getList();
    },
};
</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;
}
</style>
