index.html.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <template>
  2. <ShopPageHead></ShopPageHead>
  3. <main class="index_main" id="all_vue">
  4. <HomeAdvertising :imgurl="adImg1"></HomeAdvertising>
  5. <ShopSubMenu></ShopSubMenu>
  6. <section class="shop_1_box clearfix">
  7. <div class="shop_2_left clearfix">
  8. <div class="shop_2_left_name_box">
  9. <label class="shop_2_left_name">商城公告:</label>
  10. <span class="shop_2_left_name_box_a dot1" @click="ShowDialog = true">
  11. {{ DialogData.title }}
  12. </span>
  13. </div>
  14. <div class="shop_ul_img_1 clearfix">
  15. <ShopSwiperXcShop :data="boxData1_data1" :data2="boxData1_data2" :data3="boxData1_data3"></ShopSwiperXcShop>
  16. </div>
  17. </div>
  18. <div class="shop_3_right clearfix">
  19. <div class="choice_1_box clearfix">
  20. <div class="choice_1_btn_box clearfix">
  21. <div class="choice_1_btn"
  22. :class="{ choice_1_btn_only: choice_1_num == 1 }"
  23. @mouseover="choice_1_num = 1">
  24. <span class="choice_1_btn_a">供应商品</span>
  25. </div>
  26. <div class="choice_1_btn"
  27. :class="{ choice_1_btn_only: choice_1_num == 2 }"
  28. @mouseover="choice_1_num = 2">
  29. <span class="choice_1_btn_a">求购商品</span>
  30. </div>
  31. </div>
  32. <div class="choice_1_card_box">
  33. <div class="shop_ul_img_2 choice_1_card clearfix" v-show="choice_1_num == 1">
  34. <div class="shop_li_img_2" v-for="(item,index) in boxData2">
  35. <nuxtLink
  36. :to="getShopPathDetail1(item)"
  37. class="shop_li_img_2_a"
  38. >
  39. <div class="shop_li_img_2_num"> {{ index + 1 }} </div>
  40. <div class="shop_li_img_2_right clearfix">
  41. <img class="shop_li_img_2_img" :src="item.imgurl" :alt="item.name">
  42. <div class="shop_li_img_2_text">
  43. {{item.name}}
  44. </div>
  45. </div>
  46. </nuxtLink>
  47. </div>
  48. </div>
  49. <div class="shop_ul_img_2 choice_1_card clearfix" v-show="choice_1_num == 2">
  50. <div class="shop_li_img_2" v-for="(item,index) in boxData3">
  51. <nuxtLink
  52. :to="getShopPathDetail1(item)"
  53. class="shop_li_img_2_a"
  54. >
  55. <div class="shop_li_img_2_num"> {{ index + 1 }} </div>
  56. <div class="shop_li_img_2_right clearfix">
  57. <img class="shop_li_img_2_img" :src="item.imgurl" :alt="item.name">
  58. <div class="shop_li_img_2_text">
  59. {{item.name}}
  60. </div>
  61. </div>
  62. </nuxtLink>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. </section>
  69. <section class="shop_2_box clearfix">
  70. <div class="shop_name_box">
  71. <div class="shop_name">
  72. <span class="shop_name_box_a">为你精选</span>
  73. </div>
  74. <div class="shop_name_right">
  75. </div>
  76. </div>
  77. <div class="shop_ul_img_3 clearfix">
  78. <div class="shop_li_img_3" v-for="(item,index) in boxData4">
  79. <NuxtLink
  80. :to="getShopPathDetail1(item)"
  81. class="shop_li_img_3_a"
  82. :title="item.name"
  83. >
  84. <img class="shop_li_img_3_img" :src="item.imgurl" alt="">
  85. <div class="shop_li_img_3_dot2 dot2">
  86. {{ item.name }}
  87. </div>
  88. <div class="shop_li_img_3_hover" v-if="index == 0">
  89. <div class="shop_li_img_3_hover_dot1 dot1">
  90. {{ item.name }}
  91. </div>
  92. </div>
  93. </NuxtLink>
  94. </div>
  95. </div>
  96. </section>
  97. <section class="shop_3_box clearfix">
  98. <div class="shop_name_box">
  99. <div class="shop_name">
  100. <span class="shop_name_box_a">热门产品</span>
  101. </div>
  102. <div class="shop_name_right"></div>
  103. </div>
  104. <div class="shop_ul_img_3 clearfix">
  105. <section class="shop_hot_door_box clearfix" v-for="item in boxData5">
  106. <NuxtLink
  107. :to="getShopPathDetail1(item)"
  108. class="shop_hot_door_a"
  109. :title="item.name"
  110. >
  111. <img class="shop_hot_door_img" :src="item.imgurl" title="" alt="">
  112. <div class="shop_hot_door_left">
  113. <h4 class="shop_hot_door_h4">乡村商城热门产品</h4>
  114. <div class="shop_hot_door_title">性价比高</div>
  115. <div class="shop_hot_door_btn">点击查看</div>
  116. </div>
  117. </NuxtLink>
  118. </section>
  119. <div class="shop_li_img_3" v-for="(per_obj, per_index) in 2" :key="per_obj" v-show="false">
  120. <!--占位-->
  121. </div>
  122. <div class="shop_li_img_3" v-for="item in boxData5data2">
  123. <NuxtLink
  124. :to="getShopPathDetail1(item)"
  125. class="shop_alert_img_li_a"
  126. :title="item.name"
  127. >
  128. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  129. <div class="shop_li_img_3_dot2 dot2">
  130. {{ item.name }}
  131. </div>
  132. </NuxtLink>
  133. </div>
  134. </div>
  135. </section>
  136. <section class="shop_4_box clearfix">
  137. <div class="shop_name_box">
  138. <div class="shop_name">
  139. <span class="shop_name_box_a">热搜商品</span>
  140. </div>
  141. <div class="shop_name_right"> </div>
  142. </div>
  143. <div class="shop_ul_img_3 clearfix">
  144. <div class="shop_li_img_3" v-for="item in boxData6">
  145. <NuxtLink
  146. :to="getShopPathDetail1(item)"
  147. class="shop_li_img_3_a"
  148. :title="item.name"
  149. >
  150. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  151. <div class="shop_li_img_3_dot2 dot2">
  152. {{ item.name}}
  153. </div>
  154. </NuxtLink>
  155. </div>
  156. </div>
  157. </section>
  158. <!-- 最新发布 -->
  159. <!-- 热搜商品 -->
  160. <section class="shop_5_box clearfix">
  161. <div class="shop_name_box">
  162. <div class="shop_name"><a class="shop_name_box_a" href="" title="">最新发布</a></div>
  163. <div class="shop_name_right"> </div>
  164. </div>
  165. <!--热搜商品-->
  166. <div class="shop_ul_img_3 clearfix">
  167. <div class="shop_li_img_3" v-for="item in boxData7" :key="per_obj">
  168. <NuxtLink
  169. :to="getShopPathDetail1(item)"
  170. class="shop_li_img_3_a"
  171. :title="item.name"
  172. >
  173. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  174. <div class="shop_li_img_3_dot2 dot2">
  175. {{ item.name }}
  176. </div>
  177. </NuxtLink>
  178. </div>
  179. </div>
  180. <!--热搜商品-->
  181. </section>
  182. <!-- 热搜商品 -->
  183. </main>
  184. <!-- 页面底部 -->
  185. <HomeFoot></HomeFoot>
  186. <!--公告弹出框-->
  187. <el-dialog
  188. v-model="ShowDialog"
  189. :title="DialogData.title"
  190. width="50%"
  191. :before-close="handleClose"
  192. center
  193. >
  194. <div v-html="DialogData.content" class="shop_notice_content"></div>
  195. </el-dialog>
  196. </template>
  197. <script setup>
  198. //1.页面必备方法 start ---------------------------------------->
  199. import { ref, onMounted } from 'vue'
  200. import { ElRadio, ElRadioGroup, ElMessage, ElDialog} from 'element-plus'
  201. const radio1 = ref('1')
  202. // vue选项卡
  203. const choice_1_num = ref(1)
  204. //1.页面必备方法 end ---------------------------------------->
  205. //2.获得所有数据 start ---------------------------------------->
  206. //模块1 最新数据 轮埠图
  207. const boxData1_data1 = ref([])
  208. const boxData1_data2 = ref([])
  209. const boxData1_data3 = ref([])
  210. //模块2 供应商品
  211. const boxData2 = ref([])
  212. //模块3 求购商品
  213. const boxData3 = ref([])
  214. //模块4 为你精选
  215. const boxData4 = ref([])
  216. //模块5 热门产品
  217. const boxData5 = ref([])
  218. const boxData5data2 = ref([])
  219. //模块6 热搜商品
  220. const boxData6 = ref([])
  221. //模块7 最新发布 图文
  222. const boxData7 = ref([])
  223. //公告
  224. const DialogData = ref("")
  225. const ShowDialog = ref(false)
  226. //创建请求数据json
  227. let getJson = [
  228. {"level":"4,0,24"},//最新数据
  229. {"level":"5,0,6"},//供应商品
  230. {"level":"6,0,6"},//求购商品
  231. {"level":"1,0,6"},//为你精选
  232. {"level":"2,0,11"},//热门产品
  233. {"level":"3,0,6"},//热搜商品
  234. ]
  235. let jsonString = JSON.stringify(getJson)
  236. //获取所有数据
  237. async function getPageAllData() {
  238. const mkdata = await requestDataPromise('/web/getWebsiteshop', {
  239. method: 'GET',
  240. query: {
  241. 'catid': 346,
  242. 'id': jsonString,
  243. },
  244. });
  245. if (mkdata.code == 200) {
  246. console.log(mkdata)
  247. //最新数据1
  248. for(let index in mkdata.data.goods[0]){
  249. //取出前面15个放到boxData1中
  250. if(index < 5){
  251. boxData1_data1.value.push(mkdata.data.goods[0][index])
  252. }else if(index >= 5 && index < 10){
  253. boxData1_data2.value.push(mkdata.data.goods[0][index])
  254. }else if(index >= 10 && index < 15){
  255. boxData1_data3.value.push(mkdata.data.goods[0][index])
  256. }
  257. }
  258. //最新数据2
  259. boxData7.value = mkdata.data.goods[0];
  260. //供应商品
  261. boxData2.value = mkdata.data.goods[1];
  262. //求购商品
  263. boxData3.value = mkdata.data.goods[2];
  264. //为你精选
  265. boxData4.value = mkdata.data.goods[3];
  266. //热门产品
  267. for(let index in mkdata.data.goods[4]){
  268. if(index < 1){
  269. boxData5.value.push(mkdata.data.goods[4][index])
  270. }else{
  271. boxData5data2.value.push(mkdata.data.goods[4][index])
  272. }
  273. }
  274. //热搜商品
  275. boxData6.value = mkdata.data.goods[5];
  276. //通知公告
  277. DialogData.value = mkdata.data.article;
  278. } else {
  279. ElMessage.error(mkdata.message)
  280. }
  281. }
  282. getPageAllData();
  283. //2.获得所有数据 end ---------------------------------------->
  284. //3.广告 start ---------------------------------------->
  285. //获得所有广告
  286. let adImg1 = ref({})
  287. onMounted(async () => {
  288. const { $webUrl, $CwebUrl } = useNuxtApp();
  289. //从客户端启动广告
  290. //广告1
  291. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_shopcategory_0001`
  292. const responseAd1 = await fetch(url, {
  293. headers: {
  294. 'Content-Type': 'application/json',
  295. 'Userurl': $CwebUrl,
  296. 'Origin': $CwebUrl
  297. }
  298. });
  299. const resultAd1 = await responseAd1.json();
  300. adImg1.value = resultAd1.data[0];
  301. })
  302. //3.广告 end ---------------------------------------->
  303. </script>
  304. <style lang="less" scoped>
  305. @import '@/assets/css/shop/index.less';
  306. </style>