document.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <div class="image-dialog" id="ImageDialog">
  2. <div class="image-dialog-head">
  3. <div class="pull-left flex">
  4. <input class="layui-input margin-right-5" v-model="keys" style="height:30px;line-height:30px" placeholder="请输入搜索关键词">
  5. <a class="layui-btn layui-btn-sm layui-btn-normal" @click="search">搜 索</a>
  6. </div>
  7. <div class="pull-right">
  8. <a class="layui-btn layui-btn-sm" @click="uploadImage">上传图片</a>
  9. </div>
  10. </div>
  11. <div class="image-dialog-body">
  12. <div class="image-dialog-item" v-for="x in items" v-if="show">
  13. <div class="uploadimage" :style="x.style" @click="setValue(x.xurl)"></div>
  14. <p class="image-dialog-item-name layui-elip" v-text="x.name"></p>
  15. </div>
  16. </div>
  17. <div class="image-dialog-foot">
  18. <div id="ImageDialogPage" class="image-dialog-page"></div>
  19. </div>
  20. </div>
  21. <style>
  22. .image-dialog-head {
  23. clear: both;
  24. height: 30px;
  25. padding: 10px 12px;
  26. }
  27. .image-dialog-body {
  28. height: 470px;
  29. background: #efefef;
  30. padding-top: 12px;
  31. padding-left: 12px;
  32. display: flex;
  33. flex-wrap: wrap;
  34. align-content: flex-start;
  35. }
  36. .image-dialog-item {
  37. position: relative;
  38. margin-right: 12px;
  39. margin-bottom: 12px;
  40. }
  41. .image-dialog-item-name {
  42. left: 0;
  43. right: 0;
  44. bottom: 0;
  45. color: #fff;
  46. padding: 3px 10px;
  47. position: absolute;
  48. text-align: center;
  49. line-height: 1.5em;
  50. white-space: nowrap;
  51. background: rgba(0, 0, 0, 0.6);
  52. }
  53. .image-dialog-item .uploadimage {
  54. margin: 0;
  55. width: 145px;
  56. height: 145px;
  57. }
  58. .image-dialog-foot {
  59. padding: 0 12px;
  60. }
  61. .image-dialog-page {
  62. height: 50px;
  63. text-align: center;
  64. }
  65. .image-dialog-page .layui-laypage a,
  66. .image-dialog-page .layui-laypage span {
  67. margin-bottom: 0;
  68. }
  69. </style>
  70. <script>
  71. require(['vue'], function (vue) {
  72. var app = new vue({
  73. el: '#ImageDialog',
  74. data: {
  75. page: 1,
  76. limit: 15,
  77. show: false,
  78. $btn: null,
  79. keys: '',
  80. items: [],
  81. },
  82. created: function () {
  83. this.$btn = $('#{$get.id|default=""}');
  84. this.loadPage();
  85. },
  86. methods: {
  87. // 创建分页工具条
  88. addPage: function (count) {
  89. var that = this;
  90. this.show = true;
  91. layui.laypage.render({
  92. curr: this.page, count: count, limit: that.limit,
  93. layout: ['count', 'prev', 'page', 'next', 'refresh'],
  94. elem: 'ImageDialogPage', jump: function (obj, first) {
  95. if (!first) that.loadPage(that.page = obj.curr);
  96. },
  97. });
  98. },
  99. // 搜索刷新数据
  100. search: function () {
  101. this.page = 1;
  102. this.loadPage();
  103. },
  104. // 设置选择数据
  105. setValue: function (url) {
  106. this.$btn.trigger('choose', url);
  107. if (this.$btn.data('input')) $(this.$btn.data('input')).val(url).trigger('change', url);
  108. $('#ImageDialog').parents('.layui-layer-content').next().find('.layui-layer-close').trigger('click');
  109. },
  110. // 加载页面数据
  111. loadPage: function () {
  112. var that = this;
  113. this.params = {page: this.page, limit: this.limit, output: 'layui.table', name: this.keys || ''};
  114. $.form.load('{:url("image")}', this.params, 'get', function (ret) {
  115. that.addPage(ret.count);
  116. that.items = ret.data;
  117. that.items.forEach(function (item) {
  118. item.style = 'background-image:url(' + item.xurl + ')';
  119. });
  120. return false;
  121. });
  122. },
  123. // 上传图片文件
  124. uploadImage: function () {
  125. $('[data-field="image-dialog-upload-input"]').click();
  126. $('[name="image-dialog-upload-input"]').one('change', function (e) {
  127. app.setValue(e.currentTarget.value);
  128. // e.currentTarget.value 取上传后的值
  129. // app.page = 1;
  130. // app.loadPage();
  131. });
  132. },
  133. }
  134. });
  135. });
  136. </script>
  137. <label class="layui-hide">
  138. <!-- 图片上传组件 开始 -->
  139. <input class="layui-input" name="image-dialog-upload-input">
  140. <button class="layui-btn" data-file data-type="png,jpg,jpeg,gif" data-field="image-dialog-upload-input"></button>
  141. <!-- 图片上传组件 结束 -->
  142. </label>