<template> 
 | 
  <el-dialog 
 | 
      :title="title" 
 | 
      width="60%" 
 | 
      :withFooter="false" 
 | 
      :visible.sync="visible" 
 | 
      :confirm-working="isWorking" 
 | 
      append-to-body 
 | 
      @confirm="confirm" 
 | 
  > 
 | 
    <div class="codeEditBox"> 
 | 
      <json-viewer 
 | 
          :value="form.formatContent" 
 | 
          :expand-depth="5" 
 | 
          copyable 
 | 
          boxed 
 | 
          :expanded="false" 
 | 
          @copied="copyText" 
 | 
          sort 
 | 
          :show-array-index="false" 
 | 
          class="w-100%"> 
 | 
        <template slot="copy"> 
 | 
          <i class="el-icon-document-copy" title="复制">复制代码</i> 
 | 
        </template> 
 | 
      </json-viewer> 
 | 
    </div> 
 | 
  </el-dialog> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import JsonViewer from 'vue-json-viewer' 
 | 
  
 | 
export default { 
 | 
  name: 'OperaInterfaceLogWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { JsonViewer }, 
 | 
  data () { 
 | 
    return { 
 | 
      // 表单数据 
 | 
      form: { 
 | 
        content: '', 
 | 
        formatContent: {} 
 | 
      }, 
 | 
      // 验证规则 
 | 
      rules: { 
 | 
      }, 
 | 
      copyable: { copyText: 'copy', copiedText: 'copied' } 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    this.config({ 
 | 
      api: '/business/interfaceLog', 
 | 
      'field.id': 'id' 
 | 
    }) 
 | 
  }, 
 | 
  methods: { 
 | 
    copyText (val) { 
 | 
      this.$message.success('内容已成功复制到剪切板!') 
 | 
    }, 
 | 
    open (title, target) { 
 | 
      this.title = title 
 | 
      this.visible = true 
 | 
      // 新建 
 | 
      if (target == null) { 
 | 
        this.$nextTick(() => { 
 | 
          this.$refs.form.resetFields() 
 | 
          this.form[this.configData['field.id']] = null 
 | 
        }) 
 | 
        return 
 | 
      } 
 | 
      // 编辑 
 | 
      this.$nextTick(() => { 
 | 
        for (const key in this.form) { 
 | 
          this.form[key] = target[key] 
 | 
        } 
 | 
        try { 
 | 
          this.form.formatContent = JSON.parse(this.form.content) 
 | 
        } catch (e) { 
 | 
          this.form.formatContent = this.form.content 
 | 
        } 
 | 
      }) 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.codeEditBox { 
 | 
  width: 100%; 
 | 
  height: 90%; 
 | 
  overflow:auto; 
 | 
  display: block; 
 | 
  border: 1px solid #dcdee2; 
 | 
  overflow-y: auto; 
 | 
} 
 | 
::v-deep .el-dialog__body{height:70vh;overflow-y: auto} 
 | 
::v-deep .el-dialog{height:78vh;overflow: hidden} 
 | 
.jv-container { 
 | 
  //height: 60vh; 
 | 
} 
 | 
</style> 
 |