index.html.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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">
  106. <a class="shop_hot_door_a" href="javascript:void(0)" title="乡村商城热门产品">
  107. <img class="shop_hot_door_img" src="@/public/img/13.png" title="" alt="">
  108. <div class="shop_hot_door_left">
  109. <h4 class="shop_hot_door_h4">乡村商城热门产品</h4>
  110. <div class="shop_hot_door_title">性价比高</div>
  111. <div class="shop_hot_door_btn">点击查看</div>
  112. </div>
  113. </a>
  114. </section>
  115. <div class="shop_li_img_3" v-for="(per_obj, per_index) in 2" :key="per_obj" v-show="false">
  116. <!--占位-->
  117. </div>
  118. <div class="shop_li_img_3" v-for="item in boxData5">
  119. <NuxtLink
  120. :to="getShopPathDetail1(item)"
  121. class="shop_alert_img_li_a"
  122. :title="item.name"
  123. >
  124. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  125. <div class="shop_li_img_3_dot2 dot2">
  126. {{ item.name }}
  127. </div>
  128. </NuxtLink>
  129. </div>
  130. </div>
  131. </section>
  132. <section class="shop_4_box clearfix">
  133. <div class="shop_name_box">
  134. <div class="shop_name">
  135. <span class="shop_name_box_a">热搜商品</span>
  136. </div>
  137. <div class="shop_name_right"> </div>
  138. </div>
  139. <div class="shop_ul_img_3 clearfix">
  140. <div class="shop_li_img_3" v-for="item in boxData6">
  141. <NuxtLink
  142. :to="getShopPathDetail1(item)"
  143. class="shop_li_img_3_a"
  144. :title="item.name"
  145. >
  146. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  147. <div class="shop_li_img_3_dot2 dot2">
  148. {{ item.name}}
  149. </div>
  150. </NuxtLink>
  151. </div>
  152. </div>
  153. </section>
  154. <!-- 最新发布 -->
  155. <!-- 热搜商品 -->
  156. <section class="shop_5_box clearfix">
  157. <div class="shop_name_box">
  158. <div class="shop_name"><a class="shop_name_box_a" href="" title="">最新发布</a></div>
  159. <div class="shop_name_right"> </div>
  160. </div>
  161. <!--热搜商品-->
  162. <div class="shop_ul_img_3 clearfix">
  163. <div class="shop_li_img_3" v-for="item in boxData7" :key="per_obj">
  164. <NuxtLink
  165. :to="getShopPathDetail1(item)"
  166. class="shop_li_img_3_a"
  167. :title="item.name"
  168. >
  169. <img class="shop_li_img_3_img" :src="item.imgurl" alt="item.name">
  170. <div class="shop_li_img_3_dot2 dot2">
  171. {{ item.name }}
  172. </div>
  173. </NuxtLink>
  174. </div>
  175. </div>
  176. <!--热搜商品-->
  177. </section>
  178. <!-- 热搜商品 -->
  179. </main>
  180. <!-- 页面底部 -->
  181. <HomeFoot></HomeFoot>
  182. <!--公告弹出框-->
  183. <el-dialog
  184. v-model="ShowDialog"
  185. :title="DialogData.title"
  186. width="50%"
  187. :before-close="handleClose"
  188. center
  189. >
  190. <div v-html="DialogData.content" class="shop_notice_content"></div>
  191. </el-dialog>
  192. </template>
  193. <script setup>
  194. //1.页面必备方法 start ---------------------------------------->
  195. import { ref, onMounted } from 'vue'
  196. import { ElRadio, ElRadioGroup, ElMessage, ElDialog} from 'element-plus'
  197. const radio1 = ref('1')
  198. // vue选项卡
  199. const choice_1_num = ref(1)
  200. //1.页面必备方法 end ---------------------------------------->
  201. //2.获得所有数据 start ---------------------------------------->
  202. //模块1 最新数据 轮埠图
  203. const boxData1_data1 = ref([])
  204. const boxData1_data2 = ref([])
  205. const boxData1_data3 = ref([])
  206. //模块2 供应商品
  207. const boxData2 = ref([])
  208. //模块3 求购商品
  209. const boxData3 = ref([])
  210. //模块4 为你精选
  211. const boxData4 = ref([])
  212. //模块5 热门产品
  213. const boxData5 = ref([])
  214. //模块6 热搜商品
  215. const boxData6 = ref([])
  216. //模块7 最新发布 图文
  217. const boxData7 = ref([])
  218. //公告
  219. const DialogData = ref("")
  220. const ShowDialog = ref(false)
  221. //创建请求数据json
  222. let getJson = [
  223. {"level":"4,0,24"},//最新数据
  224. {"level":"5,0,6"},//供应商品
  225. {"level":"6,0,6"},//求购商品
  226. {"level":"1,0,6"},//为你精选
  227. {"level":"2,0,10"},//热门产品
  228. {"level":"3,0,6"},//热搜商品
  229. ]
  230. let jsonString = JSON.stringify(getJson)
  231. //获取所有数据
  232. async function getPageAllData() {
  233. const mkdata = await requestDataPromise('/web/getWebsiteshop', {
  234. method: 'GET',
  235. query: {
  236. 'catid': 346,
  237. 'id': jsonString,
  238. },
  239. });
  240. if (mkdata.code == 200) {
  241. console.log(mkdata)
  242. //最新数据1
  243. for(let index in mkdata.data.goods[0]){
  244. //取出前面15个放到boxData1中
  245. if(index < 5){
  246. boxData1_data1.value.push(mkdata.data.goods[0][index])
  247. }else if(index >= 5 && index < 10){
  248. boxData1_data2.value.push(mkdata.data.goods[0][index])
  249. }else if(index >= 10 && index < 15){
  250. boxData1_data3.value.push(mkdata.data.goods[0][index])
  251. }
  252. }
  253. //最新数据2
  254. boxData7.value = mkdata.data.goods[0];
  255. //供应商品
  256. boxData2.value = mkdata.data.goods[1];
  257. //求购商品
  258. boxData3.value = mkdata.data.goods[2];
  259. //为你精选
  260. boxData4.value = mkdata.data.goods[3];
  261. //热门产品
  262. boxData5.value = mkdata.data.goods[4];
  263. //热搜商品
  264. boxData6.value = mkdata.data.goods[5];
  265. //通知公告
  266. DialogData.value = mkdata.data.article;
  267. } else {
  268. ElMessage.error(mkdata.message)
  269. }
  270. }
  271. getPageAllData();
  272. //2.获得所有数据 end ---------------------------------------->
  273. //3.广告 start ---------------------------------------->
  274. //获得所有广告
  275. let adImg1 = ref({})
  276. onMounted(async () => {
  277. const { $webUrl, $CwebUrl } = useNuxtApp();
  278. //从客户端启动广告
  279. //广告1
  280. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_shopcategory_0001`
  281. const responseAd1 = await fetch(url, {
  282. headers: {
  283. 'Content-Type': 'application/json',
  284. 'Userurl': $CwebUrl,
  285. 'Origin': $CwebUrl
  286. }
  287. });
  288. const resultAd1 = await responseAd1.json();
  289. adImg1.value = resultAd1.data[0];
  290. })
  291. //3.广告 end ---------------------------------------->
  292. </script>
  293. <style lang="less" scoped>
  294. @import '@/assets/css/shop/index.less';
  295. </style>