¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |