search.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div class="search-box">
  3. <div class="box-l">
  4. <div v-for="(item, index) in searchList" :key="index" class="box-info" :style="'width:' + item.width">
  5. <el-input v-model="item.value" v-if="item.type === 'input'" size="medium" :placeholder="item.tit">
  6. </el-input>
  7. <el-select :popper-append-to-body="false" clearable v-if="item.type === 'sel'" v-model="item.value"
  8. :placeholder="item.tit" size="medium">
  9. <el-option v-for="items in item.options" :key="items.dataCode" :label="items.dataName"
  10. :value="items.dataCode">
  11. </el-option>
  12. </el-select>
  13. <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'date'" size="medium"
  14. type="date" :placeholder="item.tit">
  15. </el-date-picker>
  16. <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
  17. size="medium" type="datetime" :placeholder="item.tit">
  18. </el-date-picker>
  19. <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
  20. size="medium" type="month" :placeholder="item.tit">
  21. </el-date-picker>
  22. <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
  23. size="medium" type="year" :placeholder="item.tit">
  24. </el-date-picker>
  25. </div>
  26. </div>
  27. <el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
  28. </el-button>
  29. </div>
  30. </template>
  31. <script>
  32. export default {
  33. props: ["searchList"],
  34. data() {
  35. return {
  36. infoList: [],
  37. };
  38. },
  39. methods: {
  40. searchInfo() {
  41. this.infoList = [];
  42. for (let i = 0; i < this.searchList.length; i++) {
  43. if (this.searchList[i].type === "date" && this.searchList[i].value) {
  44. this.infoList.push(Date.parse(this.searchList[i].value));
  45. } else {
  46. this.infoList.push(this.searchList[i].value);
  47. }
  48. }
  49. this.$emit("searchInfo", this.infoList);
  50. },
  51. },
  52. mounted() {},
  53. created() {},
  54. };
  55. </script>
  56. <style scoped lang="scss">
  57. .search-box {
  58. display: flex;
  59. justify-content: space-between;
  60. .box-l {
  61. display: flex;
  62. justify-content: space-between;
  63. .box-info {
  64. display: inline-block;
  65. // min-width: 100px;
  66. }
  67. }
  68. .btn-check {}
  69. .el-date-editor.el-input,
  70. .el-date-editor.el-input__inner {
  71. width: 100%;
  72. }
  73. .el-select-dropdown {
  74. z-index: 100000 !important;
  75. }
  76. }
  77. </style>