| ¶Ô±ÈÐÂÎļþ | 
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <span v-if="content == null || content.length <= limit">{{content}}</span> | 
|---|
|  |  |  | <el-popover | 
|---|
|  |  |  | v-else | 
|---|
|  |  |  | v-model="visible" | 
|---|
|  |  |  | popper-class="eva-column-detail-popover" | 
|---|
|  |  |  | trigger="click" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <div class="eva-column-detail"> | 
|---|
|  |  |  | <pre class="eva-column-detail__main">{{formattedContent}}</pre> | 
|---|
|  |  |  | <div class="eva-column-detail__action"> | 
|---|
|  |  |  | <el-button size="mini" @click="cancel">å
³é</el-button> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | v-clipboard:copy="formattedContent" | 
|---|
|  |  |  | v-clipboard:success="copySuccess" | 
|---|
|  |  |  | v-clipboard:error="copyFailed" | 
|---|
|  |  |  | @click="confirm" | 
|---|
|  |  |  | >{{ confirmButtonText }}</el-button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <el-button slot="reference" :type="buttonType">æ¥ç</el-button> | 
|---|
|  |  |  | </el-popover> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'ColumnDetail', | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | // æé®ç±»å | 
|---|
|  |  |  | buttonType: { | 
|---|
|  |  |  | type: String | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // å
容 | 
|---|
|  |  |  | content: { | 
|---|
|  |  |  | type: String, | 
|---|
|  |  |  | default: '' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // éå¶ï¼å¤§äºéå¶æ¶å±ç¤ºæ¥çæé® | 
|---|
|  |  |  | limit: { | 
|---|
|  |  |  | type: Number, | 
|---|
|  |  |  | default: 12 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // èªå¨è¯å«æ°æ®ç±»åå¹¶æ ¼å¼å | 
|---|
|  |  |  | analyse: { | 
|---|
|  |  |  | type: Boolean, | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // æ¯å¦å
许å¤å¶ | 
|---|
|  |  |  | allowCopy: { | 
|---|
|  |  |  | type: Boolean, | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | visible: false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | // ç¡®è®¤æé®ææ¡ | 
|---|
|  |  |  | confirmButtonText () { | 
|---|
|  |  |  | return this.allowCopy ? 'å¤å¶' : 'ç¡®å®' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // æ ¼å¼ååçå
容 | 
|---|
|  |  |  | formattedContent () { | 
|---|
|  |  |  | let content = this.content | 
|---|
|  |  |  | if (this.analyse) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | content = JSON.stringify(JSON.parse(this.content), null, 2) | 
|---|
|  |  |  | } catch (e) { | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return content | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * ç¡®è®¤ | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | confirm () { | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | this.$emit('confirm') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * åæ¶ | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | cancel () { | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | this.$emit('cancel') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * å¤å¶æå | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | copySuccess () { | 
|---|
|  |  |  | this.$tip.success('å¤å¶æå') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * å¤å¶å¤±è´¥ | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | copyFailed () { | 
|---|
|  |  |  | this.$tip.error('å¤å¶å¤±è´¥') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss"> | 
|---|
|  |  |  | .eva-column-detail-popover { | 
|---|
|  |  |  | max-width: 80%; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | <style scoped lang="scss"> | 
|---|
|  |  |  | .eva-column-detail { | 
|---|
|  |  |  | .eva-column-detail__main { | 
|---|
|  |  |  | max-height: 500px; | 
|---|
|  |  |  | overflow: auto; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .eva-column-detail__action { | 
|---|
|  |  |  | text-align: right; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|