华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.0 KiB

  1. <template>
  2. <HandleWrapper v-on="$listeners">
  3. <el-input
  4. :maxlength="item.maxlength || 30"
  5. :disabled="item.disabled"
  6. :class="item.borderType | getBorderType"
  7. :placeholder="item.placeholder ? item.placeholder : ('请输入' + item.label)"
  8. :value = "value"
  9. @input = "onInput"
  10. />
  11. </HandleWrapper>
  12. </template>
  13. <script>
  14. import HandleWrapper from './HandleFormItem.vue'
  15. export default {
  16. components:{
  17. HandleWrapper
  18. },
  19. props:{
  20. borderType: {
  21. type: String,
  22. default: ""
  23. },
  24. item:{
  25. type:Object,
  26. default:()=>{
  27. return{
  28. placeholder:"",
  29. maxlength:30,
  30. label:"",
  31. disabled:false,
  32. }
  33. }
  34. },
  35. value:{
  36. type:String,
  37. value:"",
  38. }
  39. },
  40. data(){
  41. return {
  42. inputValue: this.$attrs.modelValue
  43. }
  44. },
  45. filters: {
  46. getBorderType(type) {
  47. const typeObj = {
  48. orange: "orange-border",
  49. green: "green-border",
  50. blue: "blue-border",
  51. }
  52. return typeObj[type] || ""
  53. },
  54. },
  55. methods:{
  56. onInput(val){
  57. this.$emit("input",val)
  58. },
  59. }
  60. }
  61. </script>
  62. <style lang="scss">
  63. .orange-border {
  64. input {
  65. border-color: #f9c588;
  66. &:focus {
  67. border-color: #f9c588;
  68. }
  69. &:hover {
  70. border-color: #f9c588;
  71. }
  72. }
  73. }
  74. .green-border {
  75. input {
  76. border-color: green;
  77. &:focus {
  78. border-color: green;
  79. }
  80. &:hover {
  81. border-color: green;
  82. }
  83. }
  84. }
  85. .blue-border {
  86. input {
  87. border-color: #4ea2ff;
  88. &:focus {
  89. border-color: #4ea2ff;
  90. }
  91. &:hover {
  92. border-color: #4ea2ff;
  93. }
  94. }
  95. }
  96. </style>