<template>
    <div>
    <el-dialog
        :visible.sync="showDialog"
        :title="title"
        :modal-append-to-body="true"
        style="text-align: left"
        width="600px"
        @close="closeDialog"
        :close-on-click-modal="false"
        append-to-body
    >
        <el-row class="button-group">
        <el-button
            type="primary"
            size="small"
            plain
            icon="el-icon-circle-plus"
            @click="handleAdd"
            >新增</el-button
        >
        <el-button
            type="primary"
            size="small"
            plain
            icon="el-icon-remove"
            :disabled="multipleSelection.length == 0"
            @click="handleBatchDelete"
            >删除选中项</el-button
        >
        </el-row>
        <el-table
        ref="formTable"
        :data="tableData"
        v-loading="loading"
        stripe
        :height="tableHeight"
        @sort-change="sortChange"
        @selection-change="handleSelectionChange"
        >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column
            prop="sort"
            label="序号"
            width="100"
        ></el-table-column>
        <el-table-column
            prop="startTime"
            label="发车时间"
        ></el-table-column>
        <el-table-column label="操作">
            <template slot-scope="{ row }">
            <el-button size="mini" type="warning" @click="handleEdit(row)"
                >编辑</el-button
            >
            <el-button size="mini" type="danger" @click="handleDelete(row)"
                >删除</el-button
            >
            </template>
        </el-table-column>
        </el-table>
        <el-pagination
        :current-page.sync="pageIndex"
        :total="totalElements"
        :page-sizes="pageSizeList"
        @current-change="changePage"
        @size-change="pageSizeChange"
        layout="total, sizes, prev, pager, next, jumper"
        ></el-pagination>
        <routeTimeTable-detail
        v-if="showModal"
        :businessKey="businessKey"
        :routeId="routeId"
        :title="modalTitle"
        @close="onDetailModalClose"
        ></routeTimeTable-detail>
    </el-dialog>
    </div>
</template>
<script>
import routeTimeTableApi from "@/api/bus/routeTimeTable";
import routeTimeTableDetail from "./routeTimeTable-detail";
export default {
    props: ["routeId","title"],
    name: "routeTimeTableList",
    data(){
        return{
            queryModel:{},
            showDialog: true,
            loading: false,
            tableData: [],
            pageIndex: 1,
            pageSize: 10,
            totalPages: 0,
            totalElements: 0,
            field: "",
            direction: "",
            pageSizeList: [10, 20, 30],
            multipleSelection: [],
            tableHeight: 300,
            showModal: false,
            modalTitle: "",
        }
    },
    created() {
        this.changePage(1);
    },
    methods:{
        closeDialog() {
            this.$emit("close", false);
        },
        changePage(pageIndex) {
        var self = this;

        self.loading = true;

        self.pageIndex = pageIndex;
        var formData = new FormData();

        formData.append("pageIndex", self.pageIndex);
        formData.append("pageSize", self.pageSize);

        formData.append("routeId", self.routeId);

        routeTimeTableApi
            .pageList(formData)
            .then(function (response) {
            self.loading = false;

            var jsonData = response.data;

            self.tableData = jsonData.data;
            self.totalPages = jsonData.totalPages;
            self.totalElements = jsonData.recordsTotal;
            //45为分页栏的高度
            //页面高度-列表上面的高度-分页栏高度
            self.tableHeight =
                window.innerHeight - self.$refs.formTable.$el.offsetTop - 100;
            })
            .catch((error) => {
            self.loading = false;
            // self.$message.error(error + "");
            });
        },
        pageSizeChange(pageSize) {
            this.pageSize = pageSize;
        },
        sortChange(data) {
            this.field = data.column.field;
            this.direction = data.order == "ascending" ? "asc" : "desc";

            this.changePage(this.pageIndex);
        },
        handleSelectionChange(val) {
            this.multipleSelection = val;
        },
            handleReset(name) {
            this.$refs[name].resetFields();
            this.queryModel.companyId = "";
        },
        handleAdd() {
            this.modalTitle = "新增";
            this.businessKey = "";
            this.routeId=this.routeId;
            this.showModal = true;
        },
        handleEdit(record) {
            this.modalTitle = "编辑";
            this.businessKey = record.id;
            this.routeId = this.routeId;
            this.showModal = true;
        },
        handleDelete(record) {
        var self = this;

        self
            .$confirm("是否确认删除?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
            })
            .then(() => {
            routeTimeTableApi.remove(record.id).then(function (response) {
                var jsonData = response.data;

                if (jsonData.result) {
                // var index = self.tableData.indexOf(record);
                // self.tableData.splice(index, 1);
                self.changePage(self.pageIndex);

                self.$message({
                    type: "success",
                    message: "删除成功!",
                });
                }
            });
            });
        },
        handleBatchDelete() {
            var self = this;

            var idList = this.multipleSelection.map((record) => {
                return record.id;
            });

            this.$confirm("是否确认删除选中项？", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                routeTimeTableApi.batchRemove(idList).then(function (response) {
                var jsonData = response.data;

                if (jsonData.result) {
                    self.changePage(self.pageIndex);

                    self.$message({
                    type: "success",
                    message: "删除成功!",
                    });
                }
                });
            });
        },
        onDetailModalClose(refreshed) {

            //保存成功后回调
            this.showModal = false;

            if (refreshed) {
                this.changePage(this.pageIndex);
            }
        },
    },
    components: {
        "routeTimeTable-detail": routeTimeTableDetail,
    },
}
</script>
<style lang="scss" scoped>
.el-breadcrumb {
  margin: 10px;
  line-height: 20px;
}

.el-divider {
  margin: 5px 0;
}

.demo-form-inline {
  margin-left: 10px;
  text-align: left;
}

.button-group {
  margin-left: 10px;
  text-align: left;
}
</style>
