f0bdf13e96e4e61420dc1addeed64b00e4a133d6.svn-base 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <a-popover trigger="contextmenu" v-model="visible" :placement="position" overlayClassName="j-input-pop">
  3. <!--"(node) => node.parentNode.parentNode"-->
  4. <div slot="title">
  5. <span>{{ title }}</span>
  6. <span style="float: right" title="关闭">
  7. <a-icon type="close" @click="visible=false"/>
  8. </span>
  9. </div>
  10. <a-input :value="inputContent" :disabled="disabled" @change="handleInputChange">
  11. <a-icon slot="suffix" type="fullscreen" @click.stop="pop" />
  12. </a-input>
  13. <div slot="content">
  14. <a-textarea ref="textarea" :value="inputContent" :disabled="disabled" @input="handleInputChange" :style="{ height: height + 'px', width: width + 'px' }"/>
  15. </div>
  16. </a-popover>
  17. </template>
  18. <script>
  19. export default {
  20. name: 'JInputPop',
  21. props:{
  22. title:{
  23. type:String,
  24. default:'',
  25. required:false
  26. },
  27. position:{
  28. type:String,
  29. default:'right',
  30. required:false
  31. },
  32. height:{
  33. type:Number,
  34. default:200,
  35. required:false
  36. },
  37. width:{
  38. type:Number,
  39. default:150,
  40. required:false
  41. },
  42. value:{
  43. type:String,
  44. required:false
  45. },
  46. popContainer:{
  47. type:String,
  48. default:'',
  49. required:false
  50. },
  51. disabled: {
  52. type: Boolean,
  53. default: false,
  54. },
  55. },
  56. data(){
  57. return {
  58. visible:false,
  59. inputContent:''
  60. }
  61. },
  62. watch:{
  63. value:{
  64. immediate:true,
  65. handler:function(){
  66. if(this.value && this.value.length>0){
  67. this.inputContent = this.value;
  68. }
  69. }
  70. },
  71. },
  72. model: {
  73. prop: 'value',
  74. event: 'change'
  75. },
  76. methods:{
  77. handleInputChange(event){
  78. this.inputContent = event.target.value
  79. this.$emit('change',this.inputContent)
  80. },
  81. pop(){
  82. this.visible=true
  83. this.$nextTick(() => {
  84. this.$refs.textarea.focus()
  85. })
  86. },
  87. getPopupContainer(node){
  88. if(!this.popContainer){
  89. return node.parentNode
  90. }else{
  91. return document.getElementById(this.popContainer)
  92. }
  93. }
  94. }
  95. }
  96. </script>
  97. <style scoped>
  98. </style>