<!-- * @description: 时间线 --> <template> <el-dialog title="历史操作" :visible.sync="dialogVisible" width="50%" :modal="true" :modal-append-to-body="false" :appen-to-body="true" class="bs-dialog-wrap bs-el-dialog" > <div class="layer-list-wrap"> <!-- el-table 三列,动作,时间,操作。操作栏中是回退 --> <el-table :data="chartList" border style="width: 100%" class="bs-el-table" :row-class-name="tableRowClassName" > <el-table-column prop="timelineTitle" label="动作" class-name="bs-el-table-column" /> <el-table-column prop="updateTime" label="时间" width="180" class-name="bs-el-table-column" /> <el-table-column prop="operation" label="操作" width="100" class-name="bs-el-table-column" > <template slot-scope="scope"> <el-button type="text" size="small" @click="rollback(scope.$index)" > 回退 </el-button> </template> </el-table-column> </el-table> </div> <span slot="footer" class="dialog-footer" > <el-button class="bs-el-button-default" @click="dialogVisible = false" > 取消 </el-button> <el-button type="primary" @click="clearTimeline" > 清除历史 </el-button> </span> </el-dialog> </template> <script> import { mapState, mapMutations } from 'vuex' export default { name: 'HistoryList', props: {}, data () { return { dialogVisible: false } }, computed: { ...mapState({ chartList: state => state.bigScreen.timelineStore, currentTimeLine: state => state.bigScreen.currentTimeLine }) }, mounted () {}, methods: { ...mapMutations({ clearTimeline: 'bigScreen/clearTimeline', rollbackTimeline: 'bigScreen/rollbackTimeline' }), init () { this.dialogVisible = true }, rollback (index) { this.rollbackTimeline(index) this.dialogVisible = false }, tableRowClassName ({ row, rowIndex }) { if (rowIndex === this.currentTimeLine - 1) { return 'choosed-row' } return '' } } } </script> <style lang="scss" scoped> @import '../../BigScreenDesign/fonts/iconfont.css'; @import '../../assets/style/bsTheme.scss'; .layer-list-wrap { ::v-deep .choosed-row { .bs-el-table-column { border-color: var(--bs-el-border) !important; background: var(--bs-background-2) !important; background-color: var(--bs-background-2) !important; opacity: 0.7; } } } </style>