6.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <template>
  2. <div>
  3. <!--样式1-->
  4. <div class="searchInputBox" v-if="componentStyle == 1">
  5. <div class="searchInputBorder">
  6. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput"/>
  7. </div>
  8. <div class="searchBtn" @click="goSearch">
  9. 搜索
  10. </div>
  11. </div>
  12. <!--样式2-->
  13. <div class="searchInputBox searchInputStyle2" v-if="componentStyle == 2">
  14. <div class="searchInputBorder">
  15. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput"/>
  16. </div>
  17. <div class="searchBtn" @click="goSearch">
  18. 搜索
  19. </div>
  20. </div>
  21. <!--样式3-->
  22. <div class="searchInputBox searchInputStyle3" v-if="componentStyle == 3">
  23. <div class="searchInputBorder">
  24. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  25. </div>
  26. <div class="searchBtn" @click="goSearch">
  27. 搜索
  28. </div>
  29. </div>
  30. <!--样式4-->
  31. <div class="searchInputBox searchInputStyle4" v-if="componentStyle == 4">
  32. <div class="searchInputBorder">
  33. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  34. </div>
  35. <div class="searchBtn" @click="goSearch">
  36. 搜索
  37. </div>
  38. </div>
  39. <!--样式5-->
  40. <div class="searchInputBox searchInputStyle5" v-if="componentStyle == 5">
  41. <div class="searchInputBorder">
  42. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  43. </div>
  44. <div class="searchBtn" @click="goSearch">
  45. 搜索
  46. </div>
  47. </div>
  48. <!--样式6-->
  49. <div class="searchInputBox searchInputStyle6" v-if="componentStyle == 6">
  50. <div class="searchInputBorder">
  51. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  52. </div>
  53. <div class="searchBtn" @click="goSearch">
  54. <img src="http://192.168.1.234:19000/pre/image/png/20251219/1766107674897914.png">
  55. </div>
  56. </div>
  57. <!--样式7-->
  58. <div class="searchInputBox searchInputStyle7" v-if="componentStyle == 7">
  59. <div class="searchInputBorder">
  60. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  61. <img src="http://192.168.1.234:19000/pre/image/png/20251219/1766107691269626.png" @click="goSearch">
  62. </div>
  63. </div>
  64. <!--样式8-->
  65. <div class="searchInputBox searchInputStyle7" v-if="componentStyle == 8">
  66. <div class="searchInputBorder">
  67. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  68. <img src="http://192.168.1.234:19000/pre/image/png/20251219/1766107703516752.png" @click="goSearch">
  69. </div>
  70. </div>
  71. <!--样式9-->
  72. <div class="searchInputBox searchInputStyle9" v-if="componentStyle == 9">
  73. <div class="searchInputBorder">
  74. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  75. </div>
  76. <div class="searchBtn" @click="goSearch">
  77. <span>搜索</span>
  78. <img src="http://192.168.1.234:19000/pre/image/png/20251219/1766107715193843.png" >
  79. </div>
  80. </div>
  81. <!--样式10-->
  82. <div class="searchInputBox searchInputStyle10" v-if="componentStyle == 10">
  83. <div class="searchInputBorder">
  84. <input type="text" placeholder="请输入搜索内容" v-model="keywordInput" />
  85. </div>
  86. <div class="searchBtn" @click="goSearch">
  87. <img src="http://192.168.1.234:19000/pre/image/png/20251219/1766107715193843.png">
  88. <span>搜索</span>
  89. </div>
  90. </div>
  91. </div>
  92. </template>
  93. <script setup lang="ts">
  94. //把搜索获得的值保存起来
  95. import type { IListData } from '@/utils/dataInterface';
  96. import { useState } from '#app'
  97. //搜索的值
  98. const keywordInput = useState<string>('keywordInput', () => '')
  99. //搜索结果
  100. const newsList = useState<IListData[]>('searchResults', () => [])
  101. //搜索总数
  102. const total = useState<number>('searchTotal', () => 0)
  103. //第几页
  104. const page = useState<number>('page', () => 1)
  105. //一页几个
  106. const pageSize = useState<number>('pageSize', () => 20)
  107. const props = defineProps({
  108. componentStyle:Number,//样式编号
  109. });
  110. //搜索栏 start---------------------------------------->
  111. //关键词
  112. //let total = ref<number>(0)
  113. //let page = ref<number>(1)
  114. //let pageSize = ref<number>(20)
  115. //格式化跳转链接
  116. const getLinkPathDetail = (item:any) => {
  117. if (item.islink == 1) {
  118. return `${item.linkurl}`;
  119. } else {
  120. return `/${item.pinyin}/${item.id}.html`;
  121. }
  122. }
  123. //搜索栏 end---------------------------------------->
  124. //新闻列表 start---------------------------------------->
  125. //新闻列表
  126. //const newsList = ref<IListData[]>([]);
  127. //let keywordInput = ref("");
  128. //搜索
  129. let goSearch = async () => {
  130. console.log(page.value)
  131. console.log(pageSize.value)
  132. console.log(keywordInput.value)
  133. const listData = await requestDataPromise('/web/selectWebsiteCategory', {
  134. method: 'GET',
  135. query: {
  136. 'page': page.value,
  137. 'pageSize': pageSize.value,
  138. 'keyword': keywordInput.value,
  139. },
  140. });
  141. console.log(listData)
  142. if (listData.data.rows) {
  143. // console.log(listData)
  144. // newsList.value = listData.data.rows;
  145. // total.value = listData.data.count;
  146. // 获得搜索结果
  147. newsList.value = listData.data.rows;
  148. total.value = listData.data.count;
  149. } else {
  150. // newsList.value = [];
  151. // total.value = 0;
  152. newsList.value = [];
  153. total.value = 0;
  154. }
  155. }
  156. goSearch();
  157. //分页事件
  158. let changePage = (value:any) => {
  159. console.log("当前页码", value);
  160. page.value = value
  161. console.log(page.value);
  162. goSearch()
  163. }
  164. //新闻列表 end---------------------------------------->
  165. </script>
  166. <style scoped lang="less">
  167. //基本样式 start ---------------------------------------->
  168. .searchInputBox {
  169. display: flex;
  170. align-items: center;
  171. justify-content: center;
  172. .searchInputBorder {
  173. width: 582px;
  174. height: 46px;
  175. input {
  176. width: 582px;
  177. height: 46px;
  178. font-size:16px;
  179. color:#333333;
  180. border:1px solid #E6E6E6;
  181. outline: none;
  182. box-sizing: border-box;
  183. padding:20px 13px;
  184. }
  185. }
  186. .searchBtn {
  187. width: 120px;
  188. height: 46px;
  189. text-align: center;
  190. line-height: 46px;
  191. color:#fff;
  192. background: #154079;
  193. cursor: pointer;
  194. }
  195. }
  196. //基本样式 end ---------------------------------------->
  197. //样式2 start ---------------------------------------->
  198. .searchInputStyle2 {
  199. // .searchInputBorder {
  200. // box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.1);
  201. // }
  202. .searchBtn {
  203. color:#333333;
  204. border:1px solid #E6E6E6;
  205. box-sizing: border-box;
  206. border-left: none;
  207. // box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.1);
  208. background: #fff;
  209. }
  210. }
  211. //样式2 end ---------------------------------------->
  212. //样式3
  213. .searchInputStyle3 {
  214. .searchBtn{
  215. background-color: #333333;
  216. }
  217. }
  218. //样式4
  219. .searchInputStyle4 {
  220. // .searchInputBorder {
  221. // box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.1);
  222. // }
  223. .searchBtn {
  224. margin-left: 5px;
  225. color:#fff;
  226. border:1px solid #E6E6E6;
  227. box-sizing: border-box;
  228. border-left: none;
  229. // box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.1);
  230. background: #154079;
  231. }
  232. }
  233. //样式5
  234. .searchInputStyle5 {
  235. .searchBtn {
  236. margin-left: 5px;
  237. color:#fff;
  238. background: #333333;
  239. }
  240. }
  241. //样式6
  242. .searchInputStyle6 {
  243. .searchBtn {
  244. background: #154079;
  245. img {
  246. margin-top: 11px;
  247. width: 24px;
  248. height: 24px;
  249. }
  250. }
  251. }
  252. //样式7
  253. .searchInputStyle7 {
  254. .searchInputBorder {
  255. width: 702px;
  256. height: 44px;
  257. position: relative;
  258. border: 1px solid #E6E6E6;
  259. input{
  260. height: 44px;;
  261. border: none;
  262. }
  263. img{
  264. position: absolute;
  265. right: 20px;
  266. top: 11px;
  267. width: 24px;
  268. height: 24px;
  269. }
  270. }
  271. }
  272. //样式9
  273. .searchInputStyle9 {
  274. .searchBtn {
  275. img{
  276. width: 16px;
  277. height: 16px;
  278. margin-left: 5px;
  279. margin-top: 16px;
  280. vertical-align: -4px;
  281. }
  282. }
  283. }
  284. //样式10
  285. .searchInputStyle10 {
  286. .searchBtn {
  287. img{
  288. width: 16px;
  289. height: 16px;
  290. margin-right: 5px;
  291. margin-top: 16px;
  292. vertical-align: -4px;
  293. }
  294. }
  295. }
  296. </style>