Filter.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <template>
  2. <div class="leo-filter">
  3. <div v-show="dateRangePickerDisplay" :class="`filter-item filter-date-range-picker ${dateRangePickerClass}`">
  4. <el-date-picker
  5. v-model="filterModel.dateRange"
  6. format="yyyy-MM-dd"
  7. type="daterange"
  8. :editable="false"
  9. range-separator="to"
  10. start-placeholder="Start date"
  11. end-placeholder="End date">
  12. </el-date-picker>
  13. </div>
  14. <div v-show="dateMonthPickerDisplay" :class="`filter-item filter-date-month-picker ${dateMonthPickerClass}`">
  15. <el-date-picker
  16. v-model="filterModel.yearMonth"
  17. format="yyyy-MM"
  18. value-format="yyyyMM"
  19. type="month"
  20. :editable="false"
  21. placeholder="Date"><!-- 选择结算月 -->
  22. </el-date-picker>
  23. </div>
  24. <div v-show="periodNumDisplay" :class="`filter-item filter-period-num ${periodNumClass}`">
  25. <el-input v-model="filterModel.periodNum" placeholder="请输入期数"></el-input>
  26. </div>
  27. <div v-show="adminNameDisplay" :class="`filter-item filter-admin-name ${adminNameClass}`">
  28. <el-input v-model="filterModel.adminName" placeholder="请输入管理员名"></el-input>
  29. </div>
  30. <div v-show="userNameDisplay" :class="`filter-item filter-user-name ${userNameClass}`">
  31. <el-input v-model="filterModel.userName" placeholder="请输入会员编号"></el-input>
  32. </div>
  33. <el-button class="filter-item filter-filter-btn" type="primary" @click="handleFilter">Select</el-button><!-- 筛选 -->
  34. </div>
  35. </template>
  36. <script>
  37. const hiddenClass = 'filter-hidden'
  38. export default {
  39. name: 'leo-filter',
  40. mounted () {
  41. this.filterModel.dateRange = this.dateRangePickerDefault
  42. this.filterModel.yearMonth = this.dateMonthPickerDefault
  43. this.filterModel.periodNum = this.periodNumDefault
  44. this.filterModel.adminName = this.adminNameDefault
  45. this.filterModel.userName = this.userNameDefault
  46. },
  47. props: {
  48. dateRangePickerDisplay: {
  49. type: Boolean,
  50. default: true
  51. },
  52. dateMonthPickerDisplay: {
  53. type: Boolean,
  54. default: false
  55. },
  56. periodNumDisplay: {
  57. type: Boolean,
  58. default: false
  59. },
  60. adminNameDisplay: {
  61. type: Boolean,
  62. default: false
  63. },
  64. userNameDisplay: {
  65. type: Boolean,
  66. default: false
  67. },
  68. dateRangePickerClass: {
  69. type: String,
  70. default: '',
  71. },
  72. dateMonthPickerClass: {
  73. type: String,
  74. default: '',
  75. },
  76. periodNumClass: {
  77. type: String,
  78. default: '',
  79. },
  80. adminNameClass: {
  81. type: String,
  82. default: '',
  83. },
  84. userNameClass: {
  85. type: String,
  86. default: '',
  87. },
  88. requestPath: {
  89. type: String,
  90. },
  91. dateRangePickerDefault: {
  92. type: String,
  93. default: '',
  94. },
  95. dateMonthPickerDefault: {
  96. type: String,
  97. default: '',
  98. },
  99. periodNumDefault: {
  100. type: String,
  101. default: '',
  102. },
  103. adminNameDefault: {
  104. type: String,
  105. default: '',
  106. },
  107. userNameDefault: {
  108. type: String,
  109. default: '',
  110. },
  111. filter: null,
  112. },
  113. data () {
  114. return {
  115. filterModel: {
  116. dateRange: '',
  117. yearMonth: '',
  118. periodNum: '',
  119. adminName: '',
  120. userName: '',
  121. },
  122. }
  123. },
  124. watch: {
  125. dateRangePickerDefault () {
  126. this.filterModel.dateRange = this.dateRangePickerDefault
  127. },
  128. dateMonthPickerDefault () {
  129. this.filterModel.yearMonth = this.dateMonthPickerDefault
  130. },
  131. periodNumDefault () {
  132. this.filterModel.periodNum = this.periodNumDefault
  133. },
  134. adminNameDefault () {
  135. this.filterModel.adminName = this.adminNameDefault
  136. },
  137. userNameDefault () {
  138. this.filterModel.userName = this.userNameDefault
  139. },
  140. },
  141. methods: {
  142. handleFilter: function () {
  143. this.filter(this.filterModel)
  144. }
  145. }
  146. }
  147. </script>
  148. <style scoped>
  149. .leo-filter {
  150. padding: 0 0 15px 0;
  151. }
  152. .leo-filter .filter-hidden {
  153. display: none;
  154. }
  155. .filter-item {
  156. margin-right: 10px;
  157. }
  158. @media (min-width: 768px) {
  159. .leo-filter {
  160. }
  161. .leo-filter .filter-item {
  162. display: inline-block;
  163. max-width: 200px;
  164. }
  165. .leo-filter .filter-item.filter-date-month-picker {
  166. display: inline-block;
  167. max-width: 220px;
  168. }
  169. .leo-filter .filter-item.filter-date-range-picker {
  170. display: inline-block;
  171. max-width: 380px;
  172. }
  173. .leo-filter .filter-item.filter-filter-btn {
  174. height: 38px;
  175. width: 80px;
  176. }
  177. .leo-filter .filter-hidden {
  178. display: none;
  179. }
  180. }
  181. </style>