search.vue 2.9 KB

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