12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <template>
- <div class="table-query">
- <div>
- <el-button type="primary" @click="openCodeDialog">查看代码</el-button>
- <el-button type="primary" @click="handleClipboard(srcTableCode, $event)">
- 复制代码
- </el-button>
- </div>
- <el-dialog destroy-on-close title="查看代码" :visible.sync="dialogVisible">
- <textarea v-show="false" ref="code" v-model="srcTableCode"></textarea>
- <span slot="footer" class="dialog-footer">
- <el-button @click="dialogVisible = false">取 消</el-button>
- <el-button
- type="primary"
- @click="closeCodeDialog(srcTableCode, $event)"
- >
- 复制代码
- </el-button>
- </span>
- </el-dialog>
- </div>
- </template>
- <script>
- import { mapGetters } from "vuex";
- import clipboard from "@/utils/clipboard";
- import CodeMirror from "codemirror";
- export default {
- props: {
- headers: {
- type: Array,
- required: true,
- },
- },
- data() {
- return {
- dialogVisible: false,
- };
- },
- computed: {
- ...mapGetters({ srcTableCode: "table/srcTableCode" }),
- },
- methods: {
- handleClipboard(text, event) {
- clipboard(text, event);
- },
- openCodeDialog() {
- this.dialogVisible = true;
- setTimeout(() => {
- CodeMirror.fromTextArea(this.$refs.code, {
- lineNumbers: true,
- gutters: ["CodeMirror-lint-markers"],
- theme: "rubyblue",
- autoRefresh: true,
- lint: true,
- });
- }, 0);
- },
- closeCodeDialog(text, event) {
- this.handleClipboard(text, event);
- this.dialogVisible = false;
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .table-query {
- display: flex;
- justify-content: flex-end;
- height: 45px;
- ::v-deep {
- .CodeMirror {
- height: auto;
- min-height: calc(100vh - 420px);
- }
- }
- }
- </style>
|