footprint.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="sld_look_log clearfix">
  3. <!-- 路径导航 -->
  4. <div class="log_banner clearfix">
  5. <MemberTitle :memberTitle="L['我的足迹']"></MemberTitle>
  6. <button class="log_option" @click=" centerDialogVisible = true" v-show="looklog.log.length">
  7. {{L['清空']}}
  8. </button>
  9. </div>
  10. <!-- 足迹 -->
  11. <div class="sld_footprint">
  12. <div class="block">
  13. <el-timeline>
  14. <el-timeline-item
  15. :timestamp="time"
  16. placement="top"
  17. color="#00985e"
  18. v-for="({ productLookLogInfoList, time }, index) in looklog.log"
  19. :key="index"
  20. >
  21. <ul class="sld_foot_goods clearfix">
  22. <li
  23. v-for="(
  24. { goodsImage, productPrice, productId, isFollowProduct,goodsMoney,goodsName },
  25. index
  26. ) in productLookLogInfoList"
  27. :key="index"
  28. >
  29. <div class="img">
  30. <router-link
  31. target="_blank"
  32. :to="'/goods/detail/'+ calcProductName(goodsName) +'_'+ productId"
  33. >
  34. <img :src="goodsImage" alt=""
  35. /></router-link>
  36. </div>
  37. <p class="sld_foot_price">
  38. <!-- <span class="fl">{{goodsMoney == null ? '面议' : goodsMoney}}</span>-->
  39. <a style="cursor: pointer">
  40. <span
  41. class="fr"
  42. @click="follow(productId, true)"
  43. v-if="!isFollowProduct"
  44. >{{ L["收藏"] }}</span
  45. >
  46. <span class="fr" @click="follow(productId, false)" v-else>{{
  47. L["已收藏"]
  48. }}</span>
  49. </a>
  50. </p>
  51. </li>
  52. </ul>
  53. </el-timeline-item>
  54. </el-timeline>
  55. </div>
  56. <SldCommonEmpty
  57. v-show="!looklog.log.length"
  58. totalWidth="1000"
  59. :tip="L['暂无足迹']"
  60. totalHeight="680"
  61. paddingTop="250"
  62. />
  63. <!-- 分页 -->
  64. <div class="flex_row_center_center sld_pagination">
  65. <el-pagination
  66. @current-change="handleCurrentChange"
  67. v-model:currentPage="looklog.page.current"
  68. :page-size="looklog.page.pageSize"
  69. layout="prev, pager, next, jumper"
  70. :total="looklog.page.total"
  71. :hide-on-single-page="true"
  72. >
  73. </el-pagination>
  74. </div>
  75. <el-dialog v-model="centerDialogVisible" width="30%" center>
  76. <p style="text-align: center;"> {{ L["确定要清空吗?"]}}</p>
  77. <template #footer>
  78. <span class="dialog-footer">
  79. <el-button type="primary" @click="logClear">{{ L["确定"]}}</el-button>
  80. <el-button @click="centerDialogVisible = false">
  81. {{ L["取消"]}}
  82. </el-button>
  83. </span>
  84. </template>
  85. </el-dialog>
  86. </div>
  87. </div>
  88. </template>
  89. <script setup>
  90. import { ElTimeline, ElTimelineItem, ElMessage,ElMessageBox,ElPagination,ElDialog,ElButton } from "element-plus";
  91. import { getCurrentInstance, onMounted, reactive } from "vue";
  92. // import { lang_zn } from "@/assets/language/zh";
  93. import { getCurLanguage } from '@/composables/common.js';
  94. // const L = lang_zn;
  95. const L = getCurLanguage();
  96. definePageMeta({
  97. layout: "member",
  98. middleware: ["auth"],
  99. });
  100. const centerDialogVisible = ref(false)
  101. const { proxy } = getCurrentInstance();
  102. const looklog = reactive({ log: [], page: {} });
  103. const page = reactive({
  104. current: 1,
  105. pageSize: 5,
  106. });
  107. const getInitData = () => {
  108. get("v3/member/front/productLookLog/list", page).then((res) => {
  109. if (res.state == 200) {
  110. looklog.log = res.data.list;
  111. looklog.page = res.data.pagination;
  112. }
  113. });
  114. };
  115. const follow = (productId, logic) => {
  116. //关注商品
  117. let params = {
  118. isCollect: logic,
  119. productIds: productId,
  120. };
  121. post("v3/member/front/followProduct/edit", params)
  122. .then((res) => {
  123. if (res.state == 200) {
  124. getInitData();
  125. } else {
  126. ElMessage.error(res.msg);
  127. }
  128. })
  129. .catch((err) => {
  130. ElMessage.error(err);
  131. });
  132. };
  133. const handlePrevCilickChange = (e) => {
  134. //分页前一页操作
  135. page.current = e;
  136. getInitData();
  137. };
  138. const handleNextCilickChange = (e) => {
  139. //分页前一页操作
  140. page.current = e;
  141. getInitData();
  142. };
  143. const handleCurrentChange = (e) => {
  144. //分页点击操作
  145. page.current = e;
  146. getInitData();
  147. };
  148. const logClear = () => {
  149. get("v3/member/front/productLookLog/empty").then((res) => {
  150. if (res.state == 200) {
  151. getInitData();
  152. ElMessage(res.msg);
  153. }
  154. });
  155. };
  156. onMounted(() => {
  157. getInitData();
  158. });
  159. </script>
  160. <style lang="scss">
  161. .confirm-button-class {
  162. color: #fff;
  163. background-color: #e2231a !important;
  164. border-color: #e2231a !important;
  165. }
  166. @use "@/assets/style/member/footprint.scss" as *;
  167. @use "@/assets/style/base.scss" as *;
  168. </style>