test2.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <view class="appWrapper">
  3. <!-- 输入下拉查询 start -->
  4. <form action="">
  5. <view class="form-item">
  6. <view class="title " style="vertical-align:top">
  7. <text class="necessary">*</text>
  8. 站点:
  9. </view>
  10. <view style="position:relative" class="innerZd">
  11. <input name="siteName" v-model="formMess.siteName" @click="toggleShow" @focus="focusfns" @input="handleInput()"
  12. placeholder="请输入或选择"></input>
  13. <view class="siteItems" v-if="isShow" style="max-height:60vh;overflow:auto">
  14. <view class=" site-item" v-if="!siteItemData.length">暂无结果</view>
  15. <view class="site-item" v-for="(item,index) in siteItemData" @click="changeModel(item,index)" :key="index">{{item.siteName}}</view>
  16. </view>
  17. </view>
  18. </view>
  19. </form>
  20. <!-- 输入下拉查询 end -->
  21. </view>
  22. </template>
  23. <script>
  24. export default {
  25. data() {
  26. return {
  27. isShow: false,
  28. formMess: {
  29. "siteName": "",
  30. },
  31. siteItemDataOrigin: [],
  32. siteItemData: [],
  33. }
  34. },
  35. mounted() {
  36. // 点击空白隐藏弹框
  37. document.addEventListener('click', (e) => {
  38. if (e.target.className != 'uni-input-input') {
  39. this.isShow = false;
  40. }
  41. });
  42. },
  43. onLoad: function(option) {
  44. this.getSiteList();
  45. },
  46. methods: {
  47. //站点下拉请求数据
  48. async getSiteList() {
  49. const res = await this.$myRequest({
  50. url: 'SiteManagement/getSiteList',
  51. })
  52. this.siteItemData = res.data.data;
  53. this.siteItemDataOrigin = res.data.data;
  54. this.siteItemData = this.siteItemDataOrigin;
  55. },
  56. //选中下拉选项,隐藏框,赋值
  57. changeModel: function(item, index) {
  58. this.isShow = false;
  59. this.formMess.siteName = item.siteName;
  60. },
  61. // 输入框点击 显示隐藏下拉框
  62. toggleShow: function() {
  63. this.isShow = !this.isShow;
  64. },
  65. //点击下拉筛选
  66. handleInput() {
  67. //将元素根据搜索内容过滤出来 这里改变了siteItemData
  68. this.siteItemData = this.siteItemDataOrigin;
  69. this.siteItemData = this.siteItemData.filter(item => item.siteName.indexOf(this.formMess.siteName) > -1);
  70. },
  71. focusfns: function(e) {
  72. //将元素根据搜索内容过滤出来 这里改变了siteItemData
  73. this.siteItemData = this.siteItemDataOrigin;
  74. this.siteItemData = this.siteItemData.filter(item => item.siteName.indexOf(this.formMess.siteName) > -1);
  75. },
  76. }
  77. }
  78. </script>