ComTextArea.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div class="comArea">
  3. <textarea @input="changeVal"
  4. :style="{width:width,height:height}"
  5. v-model="txt"
  6. placeholder="请输入"
  7. @blur="blur"></textarea>
  8. </div>
  9. </template>
  10. <script type="text/javascript">
  11. export default {
  12. name:'ComTextArea',
  13. props: {
  14. width: {
  15. default: '100%',
  16. type: String
  17. },
  18. height: {
  19. default: '2rem',
  20. type: String
  21. },
  22. item:{
  23. type:Object,
  24. require: true
  25. }
  26. },
  27. data() {
  28. return {
  29. txt:this.item.value || '' //回读用
  30. // txt:''
  31. }
  32. },
  33. methods:{
  34. changeVal(){
  35. this.$emit('changeAreaVal',this.txt)
  36. },
  37. blur(){
  38. const newData = Object.assign({},this.item,{value:this.txt,valueP:this.txt});
  39. this.$emit("updata",newData);
  40. }
  41. },
  42. watch:{
  43. item:{//清空时更新数据
  44. handler(newVal,oldVal){
  45. this.txt = newVal.value;
  46. },
  47. deep:true
  48. }
  49. }
  50. }
  51. </script>
  52. <style lang="less" scoped>
  53. .comArea {
  54. textarea {
  55. color: #4F50FF;
  56. resize: none;
  57. box-shadow: none;
  58. font-size: 0.3rem;
  59. box-sizing: border-box;
  60. border: 1px solid #DFE0E4;
  61. border-radius: .08rem /* 8/100 */;
  62. -webkit-appearance: none;
  63. padding: .16rem /* 16/100 */ .3rem /* 30/100 */;
  64. margin-bottom: .3rem;
  65. }
  66. }
  67. </style>