el-search.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!-- @2022 -6-13 @dalaoyang -->
  2. <!-- 搜索栏组件,后期可加判断 -->
  3. <!-- 支持input select 按钮显示-->
  4. <template>
  5. <div class="flex-count">
  6. <div class="flex-container">
  7. <template v-if="list.elinput">
  8. <div
  9. class="flex-title"
  10. v-for="item in list.elinput"
  11. :key="'input'+item.key"
  12. >
  13. <div>{{ item.name }}</div>:
  14. <el-input
  15. v-model="seachList[item.key]"
  16. :placeholder="item.name"
  17. :style="{ width: item.width ? item.width + 'px' : '400px' }"
  18. class="filter-item"
  19. clearable
  20. />
  21. </div>
  22. </template>
  23. <template v-if="list.date">
  24. <div
  25. class="flex-title"
  26. v-for="(item, index) in list.date"
  27. :key="'input'+index"
  28. >
  29. <div>{{ item.name }}</div>:
  30. <div >
  31. <el-date-picker
  32. :key="'date'+index"
  33. v-model="seachList[item.key]"
  34. type="daterange"
  35. :style="{ width: item.width ? item.width + '%' : '400px' }"
  36. range-separator="至"
  37. start-placeholder="开始日期"
  38. end-placeholder="结束日期"
  39. >
  40. </el-date-picker>
  41. </div>
  42. </div>
  43. </template>
  44. <template v-if="list.elselect">
  45. <div
  46. class="flex-title"
  47. v-for="(item, index) in list.elselect"
  48. :key="'select'+index"
  49. >
  50. {{ item.name }}:
  51. </div>
  52. <el-select
  53. v-for="item in list.elselect"
  54. :key="'select'+item.key"
  55. v-model="seachList[item.key]"
  56. :placeholder="item.name"
  57. clearable
  58. :style="{ width: item.width ? item.width + 'px' : '90px' }"
  59. class="filter-item"
  60. >
  61. <el-option
  62. v-for="i in item.option"
  63. :key="i.key"
  64. :label="i.value"
  65. :value="i.value"
  66. />
  67. </el-select>
  68. </template>
  69. </div>
  70. <div class="btn">
  71. <el-button
  72. v-if="list.sreach"
  73. class="filter-item"
  74. type="primary"
  75. @click="handleSearch"
  76. >
  77. 搜索
  78. </el-button>
  79. <el-button
  80. v-if="list.reset"
  81. class="filter-item"
  82. type="warning"
  83. @click="handleRest"
  84. >
  85. 重置
  86. </el-button>
  87. </div>
  88. </div>
  89. </template>
  90. <script>
  91. export default {
  92. props: {
  93. list: {
  94. type: Object,
  95. default: () => {},
  96. },
  97. },
  98. data() {
  99. return {
  100. seachList: {},
  101. };
  102. },
  103. methods: {
  104. //搜索事件
  105. handleSearch() {
  106. this.$emit("seachList", this.seachList);
  107. },
  108. //重置事件
  109. handleRest() {},
  110. },
  111. };
  112. </script>
  113. <style lang="scss" scoped>
  114. .flex-count {
  115. display: flex;
  116. justify-content: space-between;
  117. align-items: center;
  118. }
  119. .flex-container {
  120. display: -webkit-box;
  121. }
  122. .flex-title {
  123. height: 40px;
  124. line-height: 40px;
  125. margin-left: 40px;
  126. margin-right: 15px;
  127. display: flex;
  128. }
  129. .filter-item {
  130. width: 9rem;
  131. }
  132. </style>