瀏覽代碼

修改甲方提出pc端全部bug

mabaoyi 11 月之前
父節點
當前提交
e13d839e9b
共有 100 個文件被更改,包括 1060 次插入328 次删除
  1. 4 0
      public/iframe/canvas-iframe.html
  2. 10 1
      public/pdf/web/viewer.html
  3. 21 0
      src/App.vue
  4. 二進制
      src/assets/icon/information_file/pdf-blue.png
  5. 二進制
      src/assets/img/index-qrcode.png
  6. 2 1
      src/common/config.js
  7. 15 4
      src/common/mixin.js
  8. 3 0
      src/common/request.js
  9. 5 1
      src/common/service.js
  10. 11 11
      src/common/util.js
  11. 13 8
      src/components/card/activity/my-application-card.vue
  12. 9 0
      src/components/card/activity/my-order-card.vue
  13. 1 1
      src/components/card/card-module/card-box.vue
  14. 15 1
      src/components/card/card-module/card-question-content.vue
  15. 6 1
      src/components/card/demand/my-collect-card.vue
  16. 1 1
      src/components/card/demand/my-release-card.vue
  17. 3 3
      src/components/card/forum/browse-history-card.vue
  18. 1 1
      src/components/card/forum/comment-my-card.vue
  19. 1 1
      src/components/card/forum/like-my-card.vue
  20. 1 1
      src/components/card/forum/my-follow-card.vue
  21. 1 1
      src/components/card/forum/my-follow-message-card.vue
  22. 5 5
      src/components/card/forum/my-like-card.vue
  23. 3 2
      src/components/card/forum/my-question-card.vue
  24. 1 1
      src/components/card/forum/my-reply-card.vue
  25. 1 1
      src/components/card/forum/reply-my-card.vue
  26. 8 13
      src/components/card/image-text/my-like-image-text-card.vue
  27. 3 12
      src/components/card/news/my-like-news-card.vue
  28. 8 1
      src/components/card/product/my-order-card.vue
  29. 3 1
      src/components/card/recruit/deliver-my-card.vue
  30. 9 6
      src/components/card/search/forum-card.vue
  31. 1 0
      src/components/card/search/information-card.vue
  32. 2 0
      src/components/card/search/video-card.vue
  33. 10 1
      src/components/card/supplier/my-collect-card.vue
  34. 4 16
      src/components/card/video/my-like-video-card.vue
  35. 6 3
      src/components/demand/demand-recommend-card.vue
  36. 5 0
      src/components/forum/forum-all-comment.vue
  37. 13 13
      src/components/forum/forum-list-module.vue
  38. 13 9
      src/components/forum/forum-question-card.vue
  39. 7 7
      src/components/image-text/image-text-all-card.vue
  40. 31 26
      src/components/image-text/image-text-detail-content new.vue
  41. 6 4
      src/components/image-text/image-text-recommend-card.vue
  42. 5 1
      src/components/layout/Header.vue
  43. 3 2
      src/components/module/comment.vue
  44. 8 5
      src/components/module/contact-dialog.vue
  45. 8 2
      src/components/module/detail-desc.vue
  46. 7 1
      src/components/module/detail-title.vue
  47. 5 3
      src/components/news/news-recommend-card.vue
  48. 1 1
      src/components/pdf/index.vue
  49. 2 1
      src/components/product/product-collection-card.vue
  50. 1 0
      src/components/recruit/recruit-all-card.vue
  51. 4 2
      src/components/supplier/supplier-recommend-card.vue
  52. 28 8
      src/components/video/video-interactive.vue
  53. 25 21
      src/components/video/video-sidebar.vue
  54. 1 0
      src/router/activity-routes.js
  55. 1 0
      src/router/demand-routes.js
  56. 2 0
      src/router/forum-routes.js
  57. 1 0
      src/router/image-text-routes.js
  58. 1 0
      src/router/information-routes.js
  59. 1 0
      src/router/news-routes.js
  60. 10 7
      src/router/product-routes.js
  61. 1 0
      src/router/recruit-routes.js
  62. 1 0
      src/router/supplier-routes.js
  63. 1 0
      src/router/video-routes.js
  64. 17 2
      src/views/activity/activity-detail.vue
  65. 12 4
      src/views/activity/activity-order-detail.vue
  66. 29 2
      src/views/activity/activity-pay.vue
  67. 4 2
      src/views/activity/children/my-message.vue
  68. 15 6
      src/views/activity/children/my-order.vue
  69. 112 0
      src/views/activity/components/codeAndPhone.vue
  70. 3 1
      src/views/activity/components/content.vue
  71. 3 0
      src/views/demand/children/my-collect.vue
  72. 5 1
      src/views/demand/children/my-like.vue
  73. 7 3
      src/views/demand/components/content.vue
  74. 7 1
      src/views/forum/children/comment-on-my.vue
  75. 13 0
      src/views/forum/children/my-follow.vue
  76. 14 1
      src/views/forum/forum-answer-item.vue
  77. 7 6
      src/views/forum/forum-contribute.vue
  78. 13 2
      src/views/forum/forum-question-details.vue
  79. 32 0
      src/views/image-text/children/my-chasingFun.vue
  80. 83 18
      src/views/image-text/components/content.vue
  81. 24 7
      src/views/image-text/image-text-details.vue
  82. 2 2
      src/views/image-text/index.vue
  83. 55 11
      src/views/index.vue
  84. 13 0
      src/views/information/children/my-chasingFun.vue
  85. 6 2
      src/views/information/components/content.vue
  86. 7 2
      src/views/information/information-details-content.vue
  87. 7 6
      src/views/information/information-details.vue
  88. 9 4
      src/views/news/components/content.vue
  89. 18 6
      src/views/news/news-details.vue
  90. 10 5
      src/views/product/children/my-collect.vue
  91. 68 16
      src/views/product/children/my-order.vue
  92. 3 0
      src/views/product/components/content.vue
  93. 2 1
      src/views/product/product-collection.vue
  94. 2 2
      src/views/product/product-confirm-order.vue
  95. 1 0
      src/views/product/product-details.vue
  96. 18 0
      src/views/product/product-refund-detail.vue
  97. 1 1
      src/views/product/product-shopping-cart.vue
  98. 33 1
      src/views/recruit/children/deliver-on-my.vue
  99. 12 0
      src/views/recruit/children/my-chasingFun.vue
  100. 14 1
      src/views/recruit/components/content.vue

+ 4 - 0
public/iframe/canvas-iframe.html

@@ -9,6 +9,10 @@
       body {
         width: 100% !important;
         overflow: hidden !important;
+        scrollbar-width: none;
+      }
+      body::-webkit-scrollbar {
+        display: none;
       }
       #wrap {
         position: relative;

+ 10 - 1
public/pdf/web/viewer.html

@@ -75,6 +75,14 @@ See https://github.com/adobe-type-tools/cmap-resources
               event.preventDefault();
               window.event.returnValue = false;
             }
+            //阻止浏览器 ctrl + f 搜索
+            if (event.ctrlKey && event.key == "f") {
+              // 阻止默认事件
+              event.preventDefault();
+              let findbar = document.getElementById("findbar");
+              findbar.classList.remove("hidden");
+              window.event.returnValue = false;
+            }
           };
 
       function disableContextMenu(e) {
@@ -160,6 +168,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                 role="radio"
                 aria-checked="true"
                 aria-controls="thumbnailView"
+                style="display: none"
               >
                 <span data-l10n-id="thumbs_label">Thumbnails</span>
               </button>
@@ -224,7 +233,7 @@ See https://github.com/adobe-type-tools/cmap-resources
           </div>
         </div>
         <div id="sidebarContent">
-          <div id="thumbnailView"></div>
+          <div id="thumbnailView" style="display: none"></div>
           <div id="outlineView" class="hidden"></div>
           <div id="attachmentsView" class="hidden"></div>
           <div id="layersView" class="hidden"></div>

+ 21 - 0
src/App.vue

@@ -53,6 +53,27 @@ export default {
       this.$resizeListenerList.forEach((fn) => fn());
     };
   },
+  watch: {
+    $route(to, from) {
+      if (to.fullPath != "/search") {
+        sessionStorage.removeItem("searchData");
+      }
+      if (
+        to.fullPath != "/forum/comment-on-my" &&
+        to.path != "/forum-answer-item" &&
+        to.path != "/forum-question-details"
+      ) {
+        sessionStorage.removeItem("typeValue");
+      }
+      if (
+        to.fullPath != "/product/my-order" &&
+        to.path != "/product-order-detail"
+      ) {
+        sessionStorage.removeItem("orderForm");
+      }
+    },
+  },
+
   methods: {
     setRem() {
       const html = document.querySelector("html"),

二進制
src/assets/icon/information_file/pdf-blue.png


二進制
src/assets/img/index-qrcode.png


+ 2 - 1
src/common/config.js

@@ -59,7 +59,7 @@ export const ICON = {
   ["folder_bg"]: require("../assets/icon/information_file/folder_bg.png"),
   ["doc_refer"]: require("../assets/icon/information_file/doc_refer.png"),
   ["ppt_refer"]: require("../assets/icon/information_file/ppt_refer.png"),
-  ["pdf_refer"]: require("../assets/icon/information_file/pdf_refer.png"),
+  ["pdf_refer"]: require("../assets/icon/information_file/pdf-blue.png"),
   ["xls_refer"]: require("../assets/icon/information_file/xlsx_refer.png"),
   ["zip_refer"]: require("../assets/icon/information_file/zip_refer.png"),
 };
@@ -97,4 +97,5 @@ export const INFORMATION_ICON = {
   ["zip_refer"]: ICON.zip_refer,
   // 文件夹
   ["folder_bg"]: ICON.folder_bg,
+  ["jpg_bg"]: ICON.folder_bg, //补丁
 };

+ 15 - 4
src/common/mixin.js

@@ -2,6 +2,7 @@ let mixin = {
   data() {
     return {
       TouchBottomLoading: false,
+      publicIndex: -1,
     };
   },
   methods: {
@@ -18,19 +19,28 @@ let mixin = {
     // 下一条未读
     toNext() {
       let current_index, next;
-      current_index = 0;
+      current_index = -1;
       this.list.forEach((item, index) => {
         let { top } = this.$refs["card-" + item.id][0].getBoundingClientRect();
-        if (top > -170 && top <= 100) {
+        console.log(top);
+        if (top > -170 && top <= 110) {
           current_index = index;
+          if (this.publicIndex != current_index) {
+            this.publicIndex = current_index;
+          } else {
+            current_index = -1;
+            this.publicIndex = -1;
+          }
           return;
         }
       });
+
       if (!this.list.length || !this.list.find((item) => !item.is_read))
         return this.$message.info("没有未读消息!");
       next = this.list.slice(current_index + 1).find((item) => !item.is_read);
       if (!next) next = this.list.find((item) => !item.is_read);
       // if (!next) return this.$message.info("没有下一条未读消息!");
+
       window.scrollTo(
         0,
         window.scrollY +
@@ -55,14 +65,15 @@ let mixin = {
       );
       if (
         this.TouchBottom &&
-        scrollTop + innerHeight >= scrollHeight &&
+        scrollTop + innerHeight >= scrollHeight - 150 &&
         path == this.$route.path &&
         !this.TouchBottomLoading
       ) {
         this.TouchBottomLoading = true;
         this.TouchBottom();
-        setTimeout(() => {
+        let timer = setTimeout(() => {
           this.TouchBottomLoading = false;
+          clearTimeout(timer);
         }, 500);
       }
     });

+ 3 - 0
src/common/request.js

@@ -22,6 +22,9 @@ instance.interceptors.request.use(
   (config) => {
     config.headers["source-type"] = 1;
     config.withCredentials = true;
+    if (config.url.includes("ElasticSearch")) {
+      config.headers["Authorization"] = `${localStorage.getItem("token")}`;
+    }
     if (
       !config.url.includes("/Expedite/") ||
       config.url.includes("globalSearch") ||

+ 5 - 1
src/common/service.js

@@ -211,6 +211,8 @@ export const VideoService = {
     request.get("/api/Video/getUserVideoDetail", data),
   // 用户提交或修改视频
   userReferVideo: (data) => request.post("/api/Video/userReferVideo", data),
+  //视频增加热搜量
+  addTopSearch: (data) => request.post("/api/Video/addTopSearch", data),
   // 获取用户提交视频详情
   userReferVideoDetail: (data) =>
     request.get("/api/Video/userReferVideoDetail", data),
@@ -715,7 +717,7 @@ export const ActivityService = {
   // 活动报名【生成订单】
   activityApply: (data) => request.post("/api/Activity/activityApply", data),
   // 获取供应商分类
-  activityApply: (data) => request.post("/api/Activity/activityApply", data),
+  // activityApply: (data) => request.post("/api/Activity/activityApply", data),
   // 活动报名订单支付
   payApplyOrder: (data) => request.post("/api/Activity/payApplyOrder", data),
   // 我的发布列表
@@ -746,6 +748,8 @@ export const ActivityService = {
   applyBill: (data) => request.post("/api/Activity/applyBill", data),
   // 获取发票详情
   getBillInfo: (data) => request.get("/api/Activity/getBillInfo", data),
+  //获取二维码,电话,邮箱信息
+  getServiceSet: () => request.get("/api/Expedite/getServiceSet"),
 };
 
 // Recruit 招聘

+ 11 - 11
src/common/util.js

@@ -305,18 +305,18 @@ export const setCopyFlag = (isNoCopy = false) => {
   document.oncontextmenu = function () {
     return isNoCopy;
   };
-  // 禁止文字选择
-  document.onselectstart = function () {
-    return isNoCopy;
-  };
+  // // 禁止文字选择
+  // document.onselectstart = function () {
+  //   return isNoCopy;
+  // };
   // 禁止复制
-  document.oncopy = function () {
-    return isNoCopy;
-  };
-  // 禁止剪切
-  document.oncut = function () {
-    return isNoCopy;
-  };
+  // document.oncopy = function () {
+  //   return isNoCopy;
+  // };
+  // // 禁止剪切
+  // document.oncut = function () {
+  //   return isNoCopy;
+  // };
 };
 // 获取富文本的纯文字内容
 export const getPlainText = (richCont) => {

+ 13 - 8
src/components/card/activity/my-application-card.vue

@@ -81,14 +81,19 @@ export default {
   methods: {
     createQRCode() {
       let width = 76 * window.$window_scale;
-      QRCode.toCanvas(this.$refs["qrcode"], this.qrcode_url, {
-        errorCorrectionLevel: "H", //容错级别
-        type: "image/png", //生成的二维码类型
-        quality: 0.3, //二维码质量
-        margin: 0, //二维码留白边距
-        width, //宽
-        height: width, //高
-      });
+      //this.qrcode_url 改成手机端邀请函的地址
+      QRCode.toCanvas(
+        this.$refs["qrcode"],
+        `${this.qrcode_url}/#/activity_ticket_info?id=${this.info.id}`,
+        {
+          errorCorrectionLevel: "H", //容错级别
+          type: "image/png", //生成的二维码类型
+          quality: 0.3, //二维码质量
+          margin: 0, //二维码留白边距
+          width, //宽
+          height: width, //高
+        }
+      );
     },
   },
 };

+ 9 - 0
src/components/card/activity/my-order-card.vue

@@ -207,6 +207,8 @@ export default {
         label.color = "rgba(42, 99, 243, 1)";
         label.btn_list = ["取消订单"];
       }
+      label.btn_list.unshift("查看活动详情");
+
       return label;
     },
     btn_list_all() {
@@ -268,6 +270,13 @@ export default {
             that.$emit("handleToDetail", that.info);
           },
         },
+        {
+          label: "查看活动详情",
+          type: "cancel",
+          click() {
+            that.$emit("handleToActivityDetail", that.info);
+          },
+        },
       ];
     },
   },

+ 1 - 1
src/components/card/card-module/card-box.vue

@@ -65,7 +65,7 @@ export default {
 <style lang="scss" scoped>
 .card-box {
   background: white;
-  border-radius: 12px;
+  border-radius: 10px;
   position: relative;
   box-sizing: border-box;
 

+ 15 - 1
src/components/card/card-module/card-question-content.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="card-question-content" @click="$emit('handleToDetail')">
     <img class="icon" src="@/assets/icon/question.png" alt="" />
-    <div class="title">{{ content }}</div>
+    <div id="title" class="title">{{ content1 }}</div>
+    <!-- <div class="title" v-html="content"></div> -->
   </div>
 </template>
 
@@ -14,6 +15,12 @@ export default {
       default: "",
     },
   },
+  computed: {
+    content1() {
+      const str = this.content.replace(/<[^>]+>/g, "").replace(/&nbsp;/g, "");
+      return str;
+    },
+  },
 };
 </script>
 
@@ -33,6 +40,13 @@ export default {
     font-size: 20px;
     font-weight: 500;
     color: #222222;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    text-align: center;
+    p {
+      margin: 0;
+    }
   }
 }
 </style>

+ 6 - 1
src/components/card/demand/my-collect-card.vue

@@ -40,7 +40,12 @@ export default {
   },
   computed: {
     btnList() {
-      let arr = [{ type: "del", value: "取消收藏" }];
+      let arr = [
+        {
+          type: "del",
+          value: this.likeOrCollect == "collect" ? "取消收藏" : "取消点赞",
+        },
+      ];
       return this.manageType ? [] : arr;
     },
     userInfo() {

+ 1 - 1
src/components/card/demand/my-release-card.vue

@@ -88,7 +88,7 @@ export default {
   user-select: none;
   .card-box {
     background: white;
-    border-radius: 12px;
+    border-radius: 10px;
     padding: 20px 20px;
     height: 160px;
     display: flex;

+ 3 - 3
src/components/card/forum/browse-history-card.vue

@@ -10,9 +10,9 @@
       </div>
       <div class="title">
         <img class="icon" src="@/assets/icon/question.png" alt="" />
-        {{ info.title }}
+        <div class="content" v-html="formatRichText(info.content) || ''"></div>
       </div>
-      <div class="content" v-html="formatRichText(info.content) || ''"></div>
+
       <div class="tag">
         <div class="tag-item" v-for="tag in info.label_name">{{ tag }}</div>
       </div>
@@ -97,6 +97,7 @@ export default {
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
+    display: flex;
     .icon {
       width: 20px;
       height: 20px;
@@ -108,7 +109,6 @@ export default {
     font-size: 16px;
     font-weight: 400;
     color: #333333;
-    margin-top: 10px;
     display: -webkit-box;
     -webkit-line-clamp: 2;
     overflow: hidden;

+ 1 - 1
src/components/card/forum/comment-my-card.vue

@@ -22,7 +22,7 @@
         />
         <CardAnswerContent
           v-else
-          :content="info.content"
+          :content="info.title"
           :showIcon="true"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"

+ 1 - 1
src/components/card/forum/like-my-card.vue

@@ -39,7 +39,7 @@
           v-if="
             cardType == 'answer' || (cardType == 'comment' && info.type == 2)
           "
-          :content="info.content"
+          :content="info.title"
           :showIcon="true"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"

+ 1 - 1
src/components/card/forum/my-follow-card.vue

@@ -59,7 +59,7 @@ export default {
   height: 100%;
   .card-box {
     background: white;
-    border-radius: 12px;
+    border-radius: 10px;
     padding: 25px 20px;
     display: flex;
     flex-direction: column;

+ 1 - 1
src/components/card/forum/my-follow-message-card.vue

@@ -51,7 +51,7 @@ export default {
   height: 100%;
   .card-box {
     background: white;
-    border-radius: 12px;
+    border-radius: 10px;
     padding: 15px 20px;
     height: 180px;
     display: flex;

+ 5 - 5
src/components/card/forum/my-like-card.vue

@@ -31,14 +31,14 @@
           :is_normal="info.is_normal"
           @handleToDetail="$emit('handleToDetail', 'question')"
         />
-        <div
+        <!-- <div
           class="content-question-content"
           @click="$emit('handleToDetail', 'question')"
-          v-html="formatRichText(info.content) || ''"
-        ></div>
+          v-html="formatRichText(info.title) || ''"
+        ></div> -->
         <CardAnswerContent
           v-if="cardType == 'answer'"
-          :content="info.content"
+          :content="info.title"
           :showIcon="true"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"
@@ -47,7 +47,7 @@
       </div>
       <div class="target" v-if="cardType == 'comment'">
         <CardAnswerContent
-          :content="info.content"
+          :content="info.title"
           :showIcon="true"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"

+ 3 - 2
src/components/card/forum/my-question-card.vue

@@ -5,7 +5,7 @@
         <img class="icon" src="@/assets/icon/question.png" alt="" />
         {{ info.title }}
       </div>
-      <div class="content" v-html="formatRichText(info.content) || ''"></div>
+      <!-- <div class="content" v-html="formatRichText(info.content) || ''"></div> -->
       <div class="tag">
         <div class="tag-item" v-for="tag in info.label_name">{{ tag }}</div>
       </div>
@@ -89,7 +89,8 @@ export default {
     align-items: center;
     height: 24px;
     overflow: hidden;
-    margin-top: 15px;
+    margin-top: 30px;
+    margin-left: 30px;
     .tag-item {
       height: 24px;
       background: #f0f4ff;

+ 1 - 1
src/components/card/forum/my-reply-card.vue

@@ -26,7 +26,7 @@
         />
         <CardAnswerContent
           v-else
-          :content="info.content"
+          :content="info.title"
           :showIcon="false"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"

+ 1 - 1
src/components/card/forum/reply-my-card.vue

@@ -26,7 +26,7 @@
         />
         <CardAnswerContent
           v-else
-          :content="info.content"
+          :content="info.title"
           :showIcon="false"
           :show-vip="showVip"
           @handleToDetail="$emit('handleToDetail', 'answer')"

+ 8 - 13
src/components/card/image-text/my-like-image-text-card.vue

@@ -1,19 +1,15 @@
 <template>
   <div class="card">
     <CardBox style="padding: 15px 20px" :btnList="btnList" v-on="$listeners">
-      <div class="header">
-        <CardHeader
-          :avatar="userInfo.headimg"
-          :name="userInfo.name"
-          :time="info.create_at"
-          :btnList="[]"
-        />
-      </div>
-      <div class="target" @click="$emit('handleToDetail')">
+      <div class="video" @click="$emit('handleToDetail')">
         <CardCoverDetail :info="info" />
       </div>
       <div class="footer">
-        <CardFooter :info="info" v-on="$listeners" />
+        <CardFooter
+          :info="info"
+          :dict="{ is_like: 'is_like', like_num: 'like_num' }"
+          v-on="$listeners"
+        />
       </div>
     </CardBox>
   </div>
@@ -21,13 +17,12 @@
 
 <script>
 import CardBox from "../card-module/card-box.vue";
-import CardHeader from "../card-module/card-header.vue";
 import CardCoverDetail from "../card-module/card-cover-detail.vue";
 import CardFooter from "../card-module/card-footer.vue";
 
 export default {
-  name: "MyLikeImageTextCard",
-  components: { CardBox, CardHeader, CardCoverDetail, CardFooter },
+  name: "MyCollectCard",
+  components: { CardBox, CardCoverDetail, CardFooter },
   props: {
     info: {
       type: Object,

+ 3 - 12
src/components/card/news/my-like-news-card.vue

@@ -1,15 +1,7 @@
 <template>
   <div class="card">
     <CardBox style="padding: 15px 20px" :btnList="btnList" v-on="$listeners">
-      <div class="header">
-        <CardHeader
-          :avatar="userInfo.headimg"
-          :name="userInfo.name"
-          :time="info.create_at"
-          :btnList="[]"
-        />
-      </div>
-      <div class="target" @click="$emit('handleToDetail')">
+      <div class="video" @click="$emit('handleToDetail')">
         <CardCoverDetail
           :info="info"
           :num_icon="require('@/assets/icon/eye.png')"
@@ -28,13 +20,12 @@
 
 <script>
 import CardBox from "../card-module/card-box.vue";
-import CardHeader from "../card-module/card-header.vue";
 import CardCoverDetail from "../card-module/card-cover-detail.vue";
 import CardFooter from "../card-module/card-footer.vue";
 
 export default {
-  name: "MyLikeNewsCard",
-  components: { CardBox, CardHeader, CardCoverDetail, CardFooter },
+  name: "MyCollectCard",
+  components: { CardBox, CardCoverDetail, CardFooter },
   props: {
     info: {
       type: Object,

+ 8 - 1
src/components/card/product/my-order-card.vue

@@ -111,7 +111,7 @@ export default {
         label.value = "已取消";
         label.btn_list = ["删除订单", "再次购买"];
       }
-
+      label.btn_list.unshift("查看商品详情");
       return label;
     },
     btn_list_all() {
@@ -174,6 +174,13 @@ export default {
           },
         },
         {
+          label: "查看商品详情",
+          type: "cancel",
+          click() {
+            that.$emit("checkCommodityDetail", that.info);
+          },
+        },
+        {
           label: "再次购买",
           type: "cancel",
           click() {

+ 3 - 1
src/components/card/recruit/deliver-my-card.vue

@@ -4,7 +4,9 @@
       <div class="left">
         <img
           class="file-type"
-          :src="require(`@/assets/icon/deliver_${info.type ? pdf : 'jpg'}.png`)"
+          :src="
+            require(`@/assets/icon/deliver_${info.type ? 'pdf' : 'jpg'}.png`)
+          "
         />
         <div class="info">
           <div class="name">

+ 9 - 6
src/components/card/search/forum-card.vue

@@ -9,9 +9,9 @@
     </div>
     <div class="title">
       <img class="icon" src="@/assets/icon/question.png" alt="" />
-      <span v-html="info.title"></span>
+      <div class="content" v-html="info.content || ''"></div>
     </div>
-    <div class="content" v-html="formatRichText(info.content) || ''"></div>
+    <!-- <div class="content" v-html="formatRichText(info.content) || ''"></div> -->
     <div class="tag">
       <div
         class="tag-item"
@@ -74,8 +74,8 @@ export default {
       display: flex;
       align-items: center;
       .avatar {
-        width: 30px;
-        height: 30px;
+        width: 20px;
+        height: 20px;
         border-radius: 50%;
       }
       .name {
@@ -92,6 +92,8 @@ export default {
   }
   .title {
     width: calc(100% - 40px);
+    display: flex;
+    align-items: center;
     margin-top: 15px;
     font-size: 20px;
     font-weight: 500;
@@ -110,7 +112,7 @@ export default {
     font-size: 16px;
     font-weight: 400;
     color: #333333;
-    margin-top: 10px;
+    margin-top: 5px;
     display: -webkit-box;
     -webkit-line-clamp: 2;
     overflow: hidden;
@@ -123,7 +125,8 @@ export default {
     align-items: center;
     height: 24px;
     overflow: hidden;
-    margin-top: 15px;
+    margin-top: 30px;
+    margin-left: 30px;
     .tag-item {
       height: 24px;
       background: #f0f4ff;

+ 1 - 0
src/components/card/search/information-card.vue

@@ -38,6 +38,7 @@ export default {
       return getFileType(this.info.url || "");
     },
     fileIcon() {
+      console.log(getFileIcon(`${this.fileType}_bg`));
       return getFileIcon(`${this.fileType}_bg`);
     },
   },

+ 2 - 0
src/components/card/search/video-card.vue

@@ -36,6 +36,8 @@ export default {
   },
   computed: {
     time() {
+      console.log(this.info);
+
       const time = this.info.duration;
       let m = Math.floor(time / 60),
         s = Math.floor(time - m * 60);

+ 10 - 1
src/components/card/supplier/my-collect-card.vue

@@ -39,13 +39,22 @@ export default {
       type: Boolean,
       default: false,
     },
+    likeOrCollect: {
+      type: String,
+      default: "",
+    },
   },
   data() {
     return {};
   },
   computed: {
     btnList() {
-      let arr = [{ type: "del", value: "取消收藏" }];
+      let arr = [
+        {
+          type: "del",
+          value: this.likeOrCollect == "collect" ? "取消收藏" : "取消点赞",
+        },
+      ];
       return this.manageType ? [] : arr;
     },
     userInfo() {

+ 4 - 16
src/components/card/video/my-like-video-card.vue

@@ -1,25 +1,14 @@
 <template>
   <div class="card">
     <CardBox style="padding: 15px 20px" :btnList="btnList" v-on="$listeners">
-      <div class="header">
-        <CardHeader
-          :avatar="userInfo.headimg"
-          :name="userInfo.name"
-          :time="info.create_at"
-          :btnList="[]"
-        />
-      </div>
-      <div class="target" @click="$emit('handleToDetail')">
+      <div class="video" @click="$emit('handleToDetail')">
         <CardCoverDetail :info="info" />
       </div>
       <div class="footer">
         <CardFooter
           :info="info"
+          :dict="{ is_like: 'is_praise', like_num: 'praise_num' }"
           v-on="$listeners"
-          :dict="{
-            is_like: 'is_praise',
-            like_num: 'praise_num',
-          }"
         />
       </div>
     </CardBox>
@@ -28,13 +17,12 @@
 
 <script>
 import CardBox from "../card-module/card-box.vue";
-import CardHeader from "../card-module/card-header.vue";
 import CardCoverDetail from "../card-module/card-cover-detail.vue";
 import CardFooter from "../card-module/card-footer.vue";
 
 export default {
-  name: "MyLikeVideoCard",
-  components: { CardBox, CardHeader, CardCoverDetail, CardFooter },
+  name: "MyCollectCard",
+  components: { CardBox, CardCoverDetail, CardFooter },
   props: {
     info: {
       type: Object,

+ 6 - 3
src/components/demand/demand-recommend-card.vue

@@ -67,6 +67,7 @@ export default {
 <style lang="scss" scoped>
 .demand-recommend-card {
   width: calc(100%);
+  height: 100%;
   min-width: 600px;
   display: flex;
   align-items: center;
@@ -75,13 +76,14 @@ export default {
   box-sizing: border-box;
   cursor: default;
   .cover-box {
-    width: 35%;
+    width: 28%;
+    height: 100%;
     aspect-ratio: 16/9;
     object-fit: cover;
     position: relative;
     .cover {
-      width: 100%;
-      height: 100%;
+      width: 330px;
+      height: 185px;
       object-fit: cover;
     }
     .type {
@@ -99,6 +101,7 @@ export default {
   }
   .info {
     width: calc(65% - 20px);
+    height: 100%;
     aspect-ratio: 7/2;
     margin-left: 20px;
     display: flex;

+ 5 - 0
src/components/forum/forum-all-comment.vue

@@ -118,6 +118,11 @@ export default {
   computed: {
     ...mapState(["userInfo"]),
   },
+  watch: {
+    $route(to, from) {
+      this.visible = false;
+    },
+  },
   methods: {
     // 打开全部评论窗口
     open(type, info) {

+ 13 - 13
src/components/forum/forum-list-module.vue

@@ -11,6 +11,7 @@
         </div>
       </div>
       <slot name="content"></slot>
+
       <div class="footer">
         <div class="btn-box">
           <div
@@ -30,14 +31,12 @@
           </div>
           <div
             class="tag-btn"
-            @click="
-              type == 'answer' && info.comment_num
-                ? $emit('openAllComment')
-                : ''
-            "
+            @click="type == 'answer' ? $emit('openAllComment') : ''"
           >
             <img class="icon" src="@/assets/icon/pinglun_fill_grey.png" />
-            <span v-if="type == 'question'">{{ info.replay_num }} 回答</span>
+            <span v-if="type == 'question'" @click="$emit('openAllComment')"
+              >{{ info.replay_num }} 回答</span
+            >
             <span v-if="type == 'answer'">{{ info.comment_num }} 评论</span>
           </div>
           <div class="tag-btn" @click="reportVisible = true">
@@ -68,7 +67,7 @@
     </div>
     <div class="line"></div>
     <div class="comment">
-      <div class="header">
+      <!-- <div class="header">
         <div class="comment-num">评论 {{ info.comment_num }}</div>
         <div class="right">
           <div class="sort">
@@ -100,8 +99,9 @@
             <div class="btn"></div>
           </div>
         </div>
-      </div>
-      <div class="edit">
+      </div> -->
+      <!-- 问一下怎么显示出输入框 -->
+      <div v-if="false" class="edit">
         <img class="avatar" :src="userInfo.headimg" alt="" />
         <div class="edit-box">
           <textarea
@@ -119,7 +119,7 @@
         </div>
       </div>
       <div class="list">
-        <div class="list-item" v-for="item in list">
+        <!-- <div class="list-item" v-for="item in list">
           <ForumCommentCard
             :comment="item"
             :option="option"
@@ -127,15 +127,15 @@
             @reply="() => getCommentList()"
             @delete="() => getCommentList()"
           />
-        </div>
+        </div> -->
       </div>
-      <div
+      <!-- <div
         class="all-comment"
         v-if="list.length == 2"
         @click="$emit('openAllComment')"
       >
         查看全部评论
-      </div>
+      </div> -->
     </div>
     <Report :type="option.reportType" :info="info" v-model="reportVisible" />
   </div>

+ 13 - 9
src/components/forum/forum-question-card.vue

@@ -9,9 +9,9 @@
     </div>
     <div class="title">
       <img class="icon" src="@/assets/icon/question.png" alt="" />
-      {{ info.title }}
+      <div class="content123" v-html="formatRichText(info.content) || ''"></div>
     </div>
-    <div class="content" v-html="formatRichText(info.content) || ''"></div>
+    <!-- <div class="content" v-html="formatRichText(info.content) || ''"></div> -->
     <div class="tag">
       <div class="tag-item" v-for="tag in info.label_name">{{ tag }}</div>
     </div>
@@ -65,8 +65,8 @@ export default {
       display: flex;
       align-items: center;
       .avatar {
-        width: 30px;
-        height: 30px;
+        width: 20px;
+        height: 20px;
         border-radius: 50%;
       }
       .name {
@@ -90,22 +90,25 @@ export default {
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
+    display: flex;
+    align-items: center;
     .icon {
       width: 20px;
       height: 20px;
       margin-right: 10px;
     }
   }
-  .content {
+  .content123 {
     width: calc(100% - 40px);
     font-size: 16px;
+    max-height: 50px;
     font-weight: 400;
     color: #333333;
-    margin-top: 10px;
-    display: -webkit-box;
-    -webkit-line-clamp: 2;
     overflow: hidden;
+    white-space: normal;
     text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2; // 控制多行的行数
     -webkit-box-orient: vertical;
   }
   .tag {
@@ -114,7 +117,8 @@ export default {
     align-items: center;
     height: 24px;
     overflow: hidden;
-    margin-top: 15px;
+    margin-top: 30px;
+    margin-left: 30px;
     .tag-item {
       height: 24px;
       background: #f0f4ff;

+ 7 - 7
src/components/image-text/image-text-all-card.vue

@@ -43,18 +43,17 @@ export default {
 <style lang="scss" scoped>
 .card-box {
   background: white;
-  border-radius: 12px;
-  padding: 20px 20px;
+  padding: 15px 20px;
   display: flex;
-  justify-content: space-between;
   align-items: center;
+  height: 70%;
   > .left {
-    width: 35%;
-    aspect-ratio: 18/11;
+    width: 30%;
+    aspect-ratio: 9/5;
     position: relative;
     .cover {
       width: 100%;
-      height: 100%;
+      aspect-ratio: 9/5;
       object-fit: cover;
     }
     .type {
@@ -72,7 +71,8 @@ export default {
     }
   }
   .right {
-    width: calc(65% - 20px);
+    width: 70%;
+    height: 100%;
     aspect-ratio: 3/1;
     margin-left: 20px;
     display: flex;

+ 31 - 26
src/components/image-text/image-text-detail-content new.vue

@@ -8,6 +8,7 @@
       :style="{
         height: iframe_style.height + 'px',
         width: iframe_style.width + 'px',
+        overflow: 'auto',
       }"
     ></iframe>
     <div ref="canvan-content"></div>
@@ -62,34 +63,38 @@ export default {
         iframe_window.postMessage({ content, cover });
       };
       window.addEventListener("message", () => {
-        const wrap = iframe_window.document.querySelector("#wrap");
-        that.iframe_style = {
-          height: wrap.scrollHeight,
-          width: wrap.scrollWidth,
-        };
-        const content_height = wrap.scrollHeight,
-          page_height = 10000,
-          page_num = Math.ceil(content_height / page_height);
-        let promise_list = [];
-        for (let i = 0; i < page_num; i++) {
-          let option = {
-            allowTaint: true,
-            scale: 2,
-            dpi: 96,
-            y: i * 10000,
-            height:
-              i == page_num - 1
-                ? content_height - (page_num - 1) * 10000
-                : 10000,
+        let timer = setTimeout(() => {
+          const wrap = iframe_window.document.querySelector("#wrap");
+          console.log(wrap.scrollHeight);
+          that.iframe_style = {
+            height: wrap.scrollHeight,
+            width: wrap.scrollWidth,
           };
-          promise_list.push(html2canvas(wrap, option));
-        }
-        Promise.all(promise_list).then((list) => {
-          list.forEach((item) => {
-            that.$refs["canvan-content"].appendChild(item);
+          const content_height = wrap.scrollHeight,
+            page_height = 10000,
+            page_num = Math.ceil(content_height / page_height);
+          let promise_list = [];
+          for (let i = 0; i < page_num; i++) {
+            let option = {
+              allowTaint: true,
+              scale: 2,
+              dpi: 96,
+              y: i * 10000,
+              height:
+                i == page_num - 1
+                  ? content_height - (page_num - 1) * 10000
+                  : 10000,
+            };
+            promise_list.push(html2canvas(wrap, option));
+          }
+          Promise.all(promise_list).then((list) => {
+            list.forEach((item) => {
+              that.$refs["canvan-content"].appendChild(item);
+            });
+            that.loading = false;
           });
-          that.loading = false;
-        });
+          clearTimeout(timer);
+        }, 1000);
       });
     },
   },

+ 6 - 4
src/components/image-text/image-text-recommend-card.vue

@@ -101,6 +101,7 @@ export default {
 <style lang="scss" scoped>
 .image-text-recommend-card {
   width: calc(100% - 40px);
+  height: 100%;
   min-width: 600px;
   aspect-ratio: 4/1;
   display: flex;
@@ -112,7 +113,7 @@ export default {
   cursor: default;
   .content {
     height: 100%;
-    width: 58%;
+    width: 65%;
     display: flex;
     flex-direction: column;
     justify-content: space-between;
@@ -143,7 +144,7 @@ export default {
       }
     }
     .title {
-      font-size: 22px;
+      font-size: 16px;
       font-weight: 400;
       color: #222222;
       text-overflow: ellipsis;
@@ -153,7 +154,7 @@ export default {
       min-height: 30px;
     }
     .desc {
-      height: 40px;
+      max-height: 50px;
       margin-top: 10px;
       font-size: 16px;
       font-weight: 400;
@@ -192,7 +193,8 @@ export default {
     }
   }
   .cover {
-    width: 40%;
+    width: 330px;
+    height: 185px;
     aspect-ratio: 9/5;
     object-fit: cover;
   }

+ 5 - 1
src/components/layout/Header.vue

@@ -281,10 +281,10 @@ export default {
       return num;
     },
   },
-  mounted() {},
   methods: {
     // 点击logo
     handleLogoClick() {
+      if (this.$route.path == "/index") return;
       let isChildren = this.$route.meta && this.$route.meta.children,
         pathList = [
           "/forum",
@@ -322,10 +322,14 @@ export default {
     },
     // 跳转个人中心
     handlePersonal() {
+      console.log(this.routePath);
       if (this.vipPath.includes(this.routePath))
         return this.$router.push("/vip");
+      console.log(this.handleFilter());
       if (!this.handleFilter()) return;
       // if (this.routePath == this.personalPath) return;
+      if (this.routePath == "/supplier-details")
+        return this.$router.push(this.personalPath);
       if (this.$route.meta.children && this.routePath !== "/vip")
         return this.$router.push("/vip");
       // this.$router.open(this.personalPath);

+ 3 - 2
src/components/module/comment.vue

@@ -129,6 +129,7 @@ export default {
     // 初始化
     init(option) {
       this.option = option;
+      this.params.page = 1;
       this.getList();
     },
     // 隐藏发送区域
@@ -148,8 +149,8 @@ export default {
     getList() {
       this.option.listApi(this.params).then(({ data }) => {
         this.total_num = data.total_num;
-        this.list =
-          this.params.page == 1 ? data.list : this.list.concat(data.list);
+        this.list = data.list;
+        // this.params.page == 1 ? data.list : this.list.concat(data.list);
         this.params.page++;
         this.finished = data.list.length < this.params.page_num;
       });

+ 8 - 5
src/components/module/contact-dialog.vue

@@ -79,20 +79,22 @@ export default {
 
 <style lang="scss" scoped>
 .contact {
+  width: 100%;
   display: flex;
   align-items: center;
   .qrcode {
-    width: 170px;
-    height: 170px;
+    width: 20%;
+    height: 100%;
   }
   .contact-info {
     margin-left: 30px;
+    width: 70%;
     .info-item {
-      width: 400px;
+      width: 90%;
       height: 70px;
       border-radius: 6px;
       border: 1px solid #dfdfdf;
-      font-size: 24px;
+      font-size: 1.5vw;
       color: #0054f7;
       display: flex;
       align-items: center;
@@ -110,13 +112,14 @@ export default {
   }
 }
 /deep/ .el-dialog {
-  width: 690px;
+  width: 45%;
   border-radius: 10px;
   .el-dialog__header {
     padding: 0;
   }
   .el-dialog__body {
     padding: 30px 35px;
+    width: 100%;
   }
 }
 </style>

+ 8 - 2
src/components/module/detail-desc.vue

@@ -2,11 +2,11 @@
   <el-dialog
     v-if="visible"
     :title="title"
-    width="30rem"
+    width="45rem"
     :visible.sync="visible"
     :before-close="(_) => $emit('visible', false)"
   >
-    <pre style="white-space: pre-wrap" v-if="type == 'value'">{{
+    <pre style="" class="brief-introduction" v-if="type == 'value'">{{
       content
     }}</pre>
     <div v-if="type == 'html'" v-html="content"></div>
@@ -43,4 +43,10 @@ export default {
 /deep/ .el-dialog__body {
   padding: 0 30px 20px;
 }
+.brief-introduction {
+  white-space: pre-wrap;
+  font-family: Microsoft YaHei;
+  font-size: 16px;
+  line-height: 24px;
+}
 </style>

+ 7 - 1
src/components/module/detail-title.vue

@@ -21,7 +21,7 @@
         </div>
         <div
           class="item"
-          v-if="info.goods_id"
+          v-if="info.supplier_id && info.type != 'supplier'"
           @click="$emit('toSupplierDetail')"
         >
           <img src="@/assets/icon/chanpin_fill_blue.png" alt="" />
@@ -101,11 +101,17 @@ export default {
       return !this.routePath.includes("information");
     },
   },
+  mounted() {
+    console.log(this.info);
+  },
 };
 </script>
 
 <style lang="scss" scoped>
 .detail-title {
+  // margin-left: 50px;
+  width: 92%;
+  margin: 0 auto;
   .title {
     font-size: 40px;
     font-weight: 500;

+ 5 - 3
src/components/news/news-recommend-card.vue

@@ -90,10 +90,11 @@ export default {
   background-color: white;
   padding: 20px;
   box-sizing: border-box;
+  height: 100%;
   cursor: default;
   .content {
     height: 100%;
-    width: 58%;
+    width: 65%;
     display: flex;
     flex-direction: column;
     justify-content: space-between;
@@ -124,7 +125,7 @@ export default {
       }
     }
     .title {
-      font-size: 22px;
+      font-size: 16px;
       font-weight: 400;
       color: #222222;
       text-overflow: ellipsis;
@@ -172,7 +173,8 @@ export default {
     }
   }
   .cover {
-    width: 40%;
+    width: 330px;
+    height: 185px;
     aspect-ratio: 9/5;
     object-fit: cover;
   }

+ 1 - 1
src/components/pdf/index.vue

@@ -25,7 +25,6 @@
 </template>
 <script>
 import { OSS_URL } from "@/common/config";
-
 export default {
   props: {
     pdfUrl: {
@@ -58,6 +57,7 @@ export default {
       if (this.is_encrypt) {
         return this.pdfUrl;
       }
+
       return this.pdfUrl.indexOf("http") > -1
         ? this.pdfUrl
         : OSS_URL + this.pdfUrl;

+ 2 - 1
src/components/product/product-collection-card.vue

@@ -32,7 +32,8 @@ export default {
   align-items: center;
   cursor: default;
   .cover {
-    height: 180px;
+    height: 90%;
+    width: 15%;
     object-fit: cover;
     aspect-ratio: 1/1;
   }

+ 1 - 0
src/components/recruit/recruit-all-card.vue

@@ -47,6 +47,7 @@ export default {
     display: flex;
     align-items: center;
     .logo {
+      width: 15%;
       height: 100%;
       aspect-ratio: 1/1;
       border-radius: 6px;

+ 4 - 2
src/components/supplier/supplier-recommend-card.vue

@@ -33,6 +33,7 @@ export default {
 <style lang="scss" scoped>
 .supplier-recommend-card {
   width: calc(100% - 40px);
+  height: 100%;
   min-width: 600px;
   aspect-ratio: 4/1;
   display: flex;
@@ -43,13 +44,14 @@ export default {
   box-sizing: border-box;
   cursor: default;
   .cover {
-    width: 40%;
+    width: 330px;
+    height: 185px;
     aspect-ratio: 9/5;
     object-fit: cover;
   }
   .content {
     height: 100%;
-    width: 58%;
+    width: 68%;
     display: flex;
     flex-direction: column;
     justify-content: space-between;

+ 28 - 8
src/components/video/video-interactive.vue

@@ -53,6 +53,7 @@
         <span class="sp2" v-if="currentVideo.switch_open == 0">通知关</span>
       </div>
     </div>
+    <IsVip v-model="vipVisible" />
     <div class="right">
       <div class="related" v-if="currentVideo.pdf_clear" @click="toPPT">
         <img src="@/assets/icon/ppt.png" alt="" />
@@ -68,7 +69,7 @@
       </div>
       <div
         class="related"
-        v-if="currentVideo.goods_id"
+        v-if="currentVideo.supplier_id"
         @click="toSupplierDetail"
       >
         <img src="@/assets/icon/chanpin.png" alt="" />
@@ -82,11 +83,12 @@
 <script>
 import { VideoService, GeneralService } from "@/common/service";
 import { OSS_URL } from "@/common/config";
+import IsVip from "@/components/module/is-vip.vue";
 import Report from "@/components/module/report.vue";
 
 export default {
   name: "VideoInteractive",
-  components: { Report },
+  components: { Report, IsVip },
   props: {
     info: {
       type: Object,
@@ -99,6 +101,7 @@ export default {
     return {
       forwardVisible: false,
       reportVisible: false,
+      vipVisible: false,
     };
   },
   computed: {
@@ -169,6 +172,13 @@ export default {
     toPPT() {
       // console.log(this.currentVideo);
       // return;
+      const user_info = JSON.parse(localStorage.getItem("user_info"));
+      console.log(user_info);
+      if (user_info.level_id == 0) {
+        this.vipVisible = true;
+        return;
+      }
+
       this.$router.open({
         path: "/pdf-view",
         query: {
@@ -227,12 +237,22 @@ export default {
     },
     // 跳转产品
     toSupplierDetail() {
-      this.$router.open({
-        path: "/supplier-details",
-        query: {
-          id: this.currentVideo.goods_id,
-        },
-      });
+      if (this.currentVideo.goods_id) {
+        this.$router.open({
+          path: "/supplier-details",
+          query: {
+            id: this.currentVideo.goods_id,
+          },
+        });
+      } else if (!this.currentVideo.goods_id && this.currentVideo.supplier_id) {
+        this.$router.open({
+          path: "/supplier-collection",
+          query: {
+            supplier_id: this.currentVideo.supplier_id,
+            // third_classify: this.currentVideo.supplier_id,
+          },
+        });
+      }
     },
   },
 };

+ 25 - 21
src/components/video/video-sidebar.vue

@@ -16,30 +16,32 @@
           <img
             class="show-btn"
             src="@/assets/icon/back.png"
-            v-if="title_width > 180"
+            v-if="title_width > 280"
             :style="{
               transform: show_title ? 'rotate(90deg)' : 'rotate(270deg)',
             }"
             @click="show_title = !show_title"
           />
-          <div
-            class="subscribe"
-            v-if="info.follow_switch == 0"
-            @click="switchSet"
-          >
-            <img src="@/assets/icon/dingyue_file_blue.png" alt="" />
-            <span>追番</span>
-          </div>
-          <div class="subscribe select" v-else @click="switchSet">
-            <img src="@/assets/icon/dingyue_file_white.png" alt="" />
-            <span>已追番</span>
+          <div class="bottom-btn">
+            <div class="bottom">
+              {{ info.read_num }}播放·{{
+                info.is_over ? "已完结" : "未完结"
+              }}·共{{ info.total_sequel }}期
+            </div>
+            <div
+              class="subscribe"
+              v-if="info.follow_switch == 0"
+              @click="switchSet"
+            >
+              <img src="@/assets/icon/dingyue_file_blue.png" alt="" />
+              <span>追番</span>
+            </div>
+            <div class="subscribe select" v-else @click="switchSet">
+              <img src="@/assets/icon/dingyue_file_white.png" alt="" />
+              <span>已追番</span>
+            </div>
           </div>
         </div>
-        <div class="bottom">
-          {{ info.read_num }}播放·{{ info.is_over ? "已完结" : "未完结" }}·共{{
-            info.total_sequel
-          }}期
-        </div>
       </div>
       <div class="switch">
         <span :class="{ select: type == 'list' }" @click="type = 'list'"
@@ -158,15 +160,12 @@ export default {
     .header {
       height: 60px;
       .top {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
         position: relative;
         .title {
           font-size: 20px;
           font-weight: 500;
           color: #222222;
-          max-width: 180px;
+          max-width: 280px;
           white-space: nowrap;
           text-overflow: ellipsis;
           overflow: hidden;
@@ -194,6 +193,11 @@ export default {
           width: 7px;
           height: 14px;
         }
+        .bottom-btn {
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+        }
         .subscribe {
           width: 80px;
           height: 30px;

+ 1 - 0
src/router/activity-routes.js

@@ -54,6 +54,7 @@ export const activityRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
   {

+ 1 - 0
src/router/demand-routes.js

@@ -82,6 +82,7 @@ export const demandRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
 ];

+ 2 - 0
src/router/forum-routes.js

@@ -17,6 +17,7 @@ export const forumRoutes = [
       },
       {
         path: "comment-on-my",
+        name: "comment-on-my",
         component: () => import("@/views/forum/children/comment-on-my.vue"),
         meta: {
           title: "问答-评论我的", // 页面标题title
@@ -92,6 +93,7 @@ export const forumRoutes = [
     meta: {
       title: "问答-问题详情", // 页面标题title
       keepAlive: true,
+      children: true,
     },
     component: () => import("@/views/forum/forum-question-details.vue"),
   },

+ 1 - 0
src/router/image-text-routes.js

@@ -108,6 +108,7 @@ export const imageTextRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
   {

+ 1 - 0
src/router/information-routes.js

@@ -101,6 +101,7 @@ export const informationRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
   {

+ 1 - 0
src/router/news-routes.js

@@ -82,6 +82,7 @@ export const newsRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
 ];

+ 10 - 7
src/router/product-routes.js

@@ -36,6 +36,15 @@ export const productRoutes = [
           title: "商品-浏览记录", // 页面标题title
         },
       },
+
+      {
+        path: "/product-shopping-cart",
+        component: () => import("@/views/product/product-shopping-cart.vue"),
+        meta: {
+          title: "商品-购物车", // 页面标题title
+          children: true,
+        },
+      },
     ],
   },
   {
@@ -47,6 +56,7 @@ export const productRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
   {
@@ -105,11 +115,4 @@ export const productRoutes = [
     },
     component: () => import("@/views/product/product-refund-detail.vue"),
   },
-  {
-    path: "/product-shopping-cart",
-    component: () => import("@/views/product/product-shopping-cart.vue"),
-    meta: {
-      title: "商品-购物车", // 页面标题title
-    },
-  },
 ];

+ 1 - 0
src/router/recruit-routes.js

@@ -77,6 +77,7 @@ export const recruitRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
 ];

+ 1 - 0
src/router/supplier-routes.js

@@ -98,6 +98,7 @@ export const supplierRoutes = [
       empty: ["Navbar"],
       fill: true,
       keepAlive: true,
+      children: true,
     },
   },
 ];

+ 1 - 0
src/router/video-routes.js

@@ -96,6 +96,7 @@ export const videoRoutes = [
       empty: ["Navbar"],
       keepAlive: true,
       fill: true,
+      children: true,
     },
   },
   {

+ 17 - 2
src/views/activity/activity-detail.vue

@@ -241,6 +241,7 @@
       v-model="desc_visible"
       :content="info.sponsor.content"
     />
+    <codeAndPhone v-model="visible" :info="serviceInfo" />
   </div>
 </template>
 
@@ -251,10 +252,12 @@ import { AMAP_KEY } from "@/common/config";
 import AMapLoader from "@amap/amap-jsapi-loader";
 import ContactDialog from "@/components/module/contact-dialog.vue";
 import DetailDesc from "@/components/module/detail-desc.vue";
+import codeAndPhone from "./components/codeAndPhone.vue";
 export default {
   components: {
     ContactDialog,
     DetailDesc,
+    codeAndPhone,
   },
   data() {
     return {
@@ -267,6 +270,8 @@ export default {
       contact_visible: false, // 联系主办方
       desc_visible: false, // 公司简介
       map: {}, // 地图实例
+      visible: false, //弹窗
+      serviceInfo: {}, //未登录状态电话信息
     };
   },
   computed: {
@@ -341,6 +346,10 @@ export default {
           });
         }
       );
+      ActivityService.getServiceSet().then((res) => {
+        console.log(res);
+        this.serviceInfo = res.data;
+      });
     },
     // 初始化地图
     initMap() {
@@ -422,7 +431,12 @@ export default {
     },
     // 联系客服
     handleContact() {
-      this.$store.commit("OPEN_CONTACT");
+      const userInfo = JSON.parse(localStorage.getItem("user_info"));
+      if (userInfo) {
+        this.$store.commit("OPEN_CONTACT");
+      } else {
+        this.visible = true;
+      }
     },
     // 报名
     handleConfirm() {
@@ -432,7 +446,8 @@ export default {
           a[b.id] = b.buyNum;
           return a;
         }, {});
-      if (JSON.stringify(ticket) == "{}") return;
+      if (JSON.stringify(ticket) == "{}")
+        return this.$message.error("请先选择门票");
       if (this.markType.value != "待开始") return;
       this.$router.push({
         path: "/activity-pay",

+ 12 - 4
src/views/activity/activity-order-detail.vue

@@ -59,7 +59,7 @@
         </div>
       </div>
       <div class="position-right">
-        <div class="activity-info card">
+        <div class="activity-info card" @click="jumpActivityDetail">
           <div class="card-title">活动信息</div>
           <div class="activity-title">{{ info.title }}</div>
           <div class="activity-time">
@@ -386,6 +386,7 @@ export default {
         },
       ];
     },
+
     leave_time() {
       return this.time > 1000
         ? `${((Math.floor(this.time / 1000 / 60 / 60) % 24) + "").padStart(
@@ -415,6 +416,13 @@ export default {
         this.setTime();
       });
     },
+    //跳转活动详情
+    jumpActivityDetail() {
+      this.$router.push({
+        path: "/activity-detail",
+        query: { id: this.info.act_id },
+      });
+    },
     // 设置剩余时间
     setTime() {
       setTimeout(() => {
@@ -551,11 +559,11 @@ export default {
 <style lang="scss" scoped>
 .wrap {
   width: calc((100% - 240px));
-  min-width: 1130px;
+  // min-width: 1130px;
   .wrap-content {
     width: 70%;
     margin: 0 auto;
-    min-width: 800px;
+    // min-width: 800px;
     .card {
       background-color: white;
       padding: 20px;
@@ -699,7 +707,7 @@ export default {
     position: fixed;
     top: 150px;
     right: calc((100% - #{$navbarWidth} - 240px) * 0.15 + 240px - 20px - 350px);
-    width: 350px;
+    width: 18%;
     .activity-info {
       width: 100%;
       .activity-title {

+ 29 - 2
src/views/activity/activity-pay.vue

@@ -115,12 +115,20 @@
                   v-if="template_item.type == 3"
                   v-model="template_item.value"
                 >
-                  <el-checkbox
+                  <el-radio
+                    v-model="template_item.value"
                     v-for="(extend_item, extend_index) in template_item.extend"
                     :label="extend_item.item_title"
                     :key="`${apply_index}_${template_index}_${extend_index}`"
+                    @input="
+                      applyValue(
+                        template_item.value,
+                        template_index,
+                        apply_item.template_list
+                      )
+                    "
                     >{{ extend_item.item_title }}
-                  </el-checkbox>
+                  </el-radio>
                 </el-checkbox-group>
               </div>
             </div>
@@ -397,6 +405,11 @@ export default {
         countdown(item);
       });
     },
+
+    //
+    applyValue(data, num, arr) {
+      console.log(data, num, arr);
+    },
     // 初始化参数
     initParams() {
       const apply_item = this.params.apply_data[0];
@@ -555,6 +568,20 @@ export default {
     },
     // 生成订单
     async createOrder() {
+      //更改选择题答案的提交方式
+      this.params.apply_data.forEach((item) => {
+        item.template_list.forEach((items) => {
+          if (items.type == 3) {
+            items.extend.forEach((itemes) => {
+              if (itemes.item_title == items.value) {
+                //将已选中的答案数值改为1
+                itemes.value = 1;
+                items.value = 1;
+              }
+            });
+          }
+        });
+      });
       return await ActivityService.activityApply({
         ...this.params,
         apply_data: JSON.stringify(this.params.apply_data),

+ 4 - 2
src/views/activity/children/my-message.vue

@@ -21,7 +21,7 @@
     <div class="wrap-content">
       <div class="list">
         <div class="list-item" v-for="item in list" :key="item.id">
-          <div class="card">
+          <div class="card" :ref="'card-' + item.id">
             <MyMessageCard
               :info="item"
               @handleDelete="handleDelete([item])"
@@ -36,6 +36,7 @@
         <el-empty v-if="finished" description="没有更多数据"></el-empty>
       </div>
     </div>
+    <ToNext @toNext="toNext" v-if="!manageType" />
   </div>
 </template>
 
@@ -43,8 +44,9 @@
 import MyMessageCard from "@/components/card/activity/my-message-card.vue";
 import TitleControl from "@/components/module/title-control.vue";
 import { ActivityService } from "@/common/service";
+import ToNext from "@/components/module/to-next.vue";
 export default {
-  components: { MyMessageCard, TitleControl },
+  components: { MyMessageCard, TitleControl, ToNext },
   data() {
     return {
       list: [],

+ 15 - 6
src/views/activity/children/my-order.vue

@@ -51,6 +51,7 @@
               @handleViewPayInfo="handleViewPayInfo"
               @handleApplyInvoice="handleApplyInvoice"
               @handleInvoiceDetail="handleInvoiceDetail"
+              @handleToActivityDetail="handleToActivityDetail"
             />
           </div>
         </div>
@@ -284,12 +285,10 @@ export default {
         confirmText: "确定退款",
       })
         .then(() => {
-          ActivityService.delApplyOrder({ order_id: item.id }).then(
-            ({ msg }) => {
-              that.$message.success(msg);
-              item.refund_state = 1;
-            }
-          );
+          ActivityService.applyRefund({ order_id: item.id }).then(({ msg }) => {
+            that.$message.success(msg);
+            item.refund_state = 1;
+          });
         })
         .catch((_) => {});
     },
@@ -316,6 +315,16 @@ export default {
         },
       });
     },
+    // 查看活动详情
+    handleToActivityDetail(item) {
+      console.log(item);
+      this.$router.push({
+        path: "/activity-detail",
+        query: {
+          id: item.act_id,
+        },
+      });
+    },
     // 筛选
     handleSearch(val) {
       if (!this.list_copy) this.list_copy = this.list;

+ 112 - 0
src/views/activity/components/codeAndPhone.vue

@@ -0,0 +1,112 @@
+<template>
+  <el-dialog
+    top="35vh"
+    append-to-body
+    v-if="visible"
+    :visible.sync="visible"
+    :before-close="(_) => $emit('visible', false)"
+  >
+    <div class="contact">
+      <img class="qrcode" :src="info.service_qr_code" alt="" />
+      <div class="contact-info">
+        <div class="info-item phone" @click="handleCopy(info[dict.phone])">
+          <img class="icon" src="@/assets/icon/phone.png" alt="" />
+          <span>{{ info.service_phone }}</span>
+        </div>
+        <div class="info-item email" @click="handleCopy(info[dict.email])">
+          <img class="icon" src="@/assets/icon/email.png" alt="" />
+          <span style="font-size: 20px">{{ info.service_email }}</span>
+        </div>
+      </div>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { copy } from "@/common/util";
+export default {
+  props: {
+    visible: {
+      type: Boolean,
+      default: false,
+    },
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  model: {
+    prop: "visible",
+    event: "visible",
+  },
+  data() {
+    return {
+      path: "",
+    };
+  },
+  watch: {
+    "$route.path": {
+      handler: function (val) {
+        if (val != this.path) this.$emit("visible", false);
+      },
+      deep: true,
+    },
+  },
+  mounted() {
+    this.path = this.$route.path;
+  },
+  methods: {
+    // 复制
+    handleCopy(value) {
+      copy(value);
+      this.$message.success("已复制");
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.contact {
+  display: flex;
+  align-items: center;
+  .qrcode {
+    width: 170px;
+    height: 170px;
+  }
+  .contact-info {
+    margin-left: 30px;
+    .info-item {
+      width: 400px;
+      height: 70px;
+      border-radius: 6px;
+      border: 1px solid #dfdfdf;
+      font-size: 24px;
+      color: #0054f7;
+      display: flex;
+      align-items: center;
+      cursor: pointer;
+      .icon {
+        width: 26px;
+        height: 26px;
+        margin-left: 30px;
+        margin-right: 10px;
+      }
+    }
+    .email {
+      margin-top: 20px;
+    }
+  }
+}
+/deep/ .el-dialog {
+  width: 690px;
+  border-radius: 10px;
+  .el-dialog__header {
+    padding: 0;
+  }
+  .el-dialog__body {
+    padding: 30px 35px;
+  }
+}
+</style>

+ 3 - 1
src/views/activity/components/content.vue

@@ -78,8 +78,9 @@ export default {
     };
   },
   mounted() {
+    this.current = JSON.parse(sessionStorage.getItem("activityCurrent")) || 0;
     window.scrollTo(0, 0);
-    this.getRecommendList();
+    this.current ? this.getAllList() : this.getRecommendList();
     this.setCardStyle();
     this.$resizeListenerList.push(this.setCardStyle);
     if (localStorage.getItem("user_info"))
@@ -120,6 +121,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.current = i;
+      sessionStorage.setItem("activityCurrent", this.current);
       if (!i) {
         this.recommendParams.page = 1;
         this.recommendList = [];

+ 3 - 0
src/views/demand/children/my-collect.vue

@@ -44,6 +44,7 @@
             <MyCollectCard
               :info="item"
               :manageType="manageType"
+              :likeOrCollect="likeOrCollect"
               :option="comment_option"
               @handleForward="handleForward(item)"
               @handleComment="handleComment(item)"
@@ -100,6 +101,8 @@ export default {
       info: {},
       // 搜索
       list_copy: "",
+      //控制点赞或收藏,两个参数 ‘Collect’ 或 ‘like’
+      likeOrCollect: "like",
     };
   },
   computed: {

+ 5 - 1
src/views/demand/children/my-like.vue

@@ -53,7 +53,7 @@
             class="card"
             :style="manageType ? { width: 'calc(100% - 60px)' } : ''"
           >
-            <MyLikeDemandCard
+            <MyCollectCard
               :info="item"
               :manageType="manageType"
               :option="comment_option"
@@ -111,6 +111,7 @@
 import MyLikeDemandCard from "@/components/card/demand/my-like-demand-card.vue";
 import MyLikeCommentCard from "@/components/card/demand/my-like-comment-card.vue";
 import TitleControl from "@/components/module/title-control.vue";
+import MyCollectCard from "@/components/card/demand/my-collect-card.vue";
 import CommentAll from "@/components/module/comment-all.vue";
 import Reply from "@/components/module/reply.vue";
 import { DemandService } from "@/common/service";
@@ -121,6 +122,7 @@ export default {
     TitleControl,
     CommentAll,
     Reply,
+    MyCollectCard,
   },
   data() {
     return {
@@ -147,6 +149,8 @@ export default {
       info: {},
       // 搜索
       list_copy: "",
+      //控制点赞或收藏,两个参数 ‘Collect’ 或 ‘like’
+      likeOrCollect: "like",
     };
   },
   computed: {

+ 7 - 3
src/views/demand/components/content.vue

@@ -10,7 +10,7 @@
     </div>
     <div class="list">
       <div class="card-item" v-for="item in list" @click="toDetail(item.id)">
-        <DemandRecommendCard :info="item" />
+        <DemandRecommendCard :info="item" style="width: 80%; margin: 0 auto" />
       </div>
     </div>
     <div class="loading" v-if="loading">
@@ -48,6 +48,7 @@ export default {
   },
   mounted() {
     window.scrollTo(0, 0);
+    this.params.is_over = sessionStorage.getItem("is_over") || 0;
     this.getList();
     if (localStorage.getItem("user_info"))
       this.$store.dispatch("getMarkNum", "demand");
@@ -56,6 +57,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.params.is_over = i;
+      sessionStorage.setItem("is_over", i);
       this.params.page = 1;
       this.loading = false;
       this.finished = false;
@@ -128,11 +130,13 @@ export default {
     padding: 15px 0;
     box-sizing: border-box;
     display: flex;
-    flex-direction: column;
+    // flex-direction: column;
+    flex-wrap: wrap;
     align-items: center;
-    justify-content: space-around;
+    justify-content: space-between;
     .card-item {
       width: 100%;
+      height: 226px;
       margin: 0 0 20px;
     }
   }

+ 7 - 1
src/views/forum/children/comment-on-my.vue

@@ -177,7 +177,12 @@ export default {
     },
   },
   mounted() {
-    this.getQuestionList();
+    console.log(JSON.stringify(sessionStorage.getItem("typeValue")));
+    if (sessionStorage.getItem("typeValue")) {
+      this.changeType(JSON.stringify(sessionStorage.getItem("typeValue")));
+    } else {
+      this.getQuestionList();
+    }
   },
   methods: {
     // 触底
@@ -271,6 +276,7 @@ export default {
     ) {
       if (Object.keys(item).includes("is_normal") && !item.is_normal)
         return this.$message.error("该问题已失效");
+      sessionStorage.setItem("typeValue", type == "question" ? 0 : 1);
       this.$router
         .push({
           path:

+ 13 - 0
src/views/forum/children/my-follow.vue

@@ -3,6 +3,19 @@
     <div class="wrap-title">
       <TitleControl title="我的关注" @handleChange="handleSearch">
         <div slot="control" class="control-btn">
+          <div
+            class="is-read"
+            v-if="!manageType"
+            @click="
+              (_) => {
+                $message.success('已将所有信息标为已读');
+                handleRead(list, 1);
+              }
+            "
+          >
+            <img src="@/assets/icon/read.png" alt="" />
+            <span>全部已读</span>
+          </div>
           <div class="manage" @click="manageType = true" v-if="!manageType">
             管理
           </div>

+ 14 - 1
src/views/forum/forum-answer-item.vue

@@ -7,7 +7,9 @@
     </div>
     <div class="content">
       <div class="info">
-        <div class="question-title">{{ info.forum_title }}</div>
+        <div class="question-title" @click="jumpDetail">
+          {{ info.forum_content }}
+        </div>
         <div class="header">
           <div class="user">
             <img class="avatar" :src="info.headimg" alt="" />
@@ -198,10 +200,20 @@ export default {
     getAnswerDetail() {
       ForumService.getReplyInfo({ id: this.info.id }).then(({ data }) => {
         this.info = data.detail;
+        console.log(this.info);
         this.loading = true;
         this.getCommentList();
       });
     },
+
+    jumpDetail() {
+      this.$router.push({
+        path: "/forum-question-details",
+        query: {
+          forum_id: this.info.forum_id,
+        },
+      });
+    },
     // 获取评论数据
     getCommentList() {
       this.loading = true;
@@ -315,6 +327,7 @@ export default {
         font-weight: 500;
         color: #222222;
         margin: 10px 0;
+        cursor: pointer;
       }
       .header {
         display: flex;

+ 7 - 6
src/views/forum/forum-contribute.vue

@@ -4,12 +4,12 @@
       <ChildNavbar :num="forumMarkNum" :menu="menu" />
     </div>
     <div class="content">
-      <input
+      <!-- <input
         type="text"
         class="title"
         placeholder="写下你的问题"
         v-model="params.title"
-      />
+      /> -->
       <div class="detail">
         <WangEditor v-model="params.content" :editorParams="editorParams" />
       </div>
@@ -133,9 +133,9 @@ export default {
         isDisabled: false, // 富文本是否禁用
       },
       params: {
-        title: "",
         content: "",
         label: "",
+        // title:""
       },
       tag_list: [],
       addTagVisible: false,
@@ -159,14 +159,15 @@ export default {
   methods: {
     initEdit() {
       ForumService.getForumInfo({ id: this.params.id }).then(({ data }) => {
-        const { title, content, label, id } = data.detail;
-        this.params = { title, content, label, id };
+        //title 没有暂时删掉,后期需要添加title
+        const { content, label, id } = data.detail;
+        this.params = { content, label, id };
         this.editorParams.content = content;
         this.tag_list = label.split(",");
       });
     },
     submit() {
-      if (!this.params.title) return this.$message.error("标题不能为空");
+      // if (!this.params.title) return this.$message.error("标题不能为空");
       if (!this.params.content) return this.$message.error("内容不能为空");
       if (!this.tag_list.length) return this.$message.error("标签不能为空");
       this.params.label = this.tag_list.join(",");

+ 13 - 2
src/views/forum/forum-question-details.vue

@@ -33,8 +33,8 @@
           @handleCollect="handleCollect"
         >
           <div class="question-content" slot="content">
-            <div class="title">{{ info.title }}</div>
-            <div class="detail" v-html="info.content"></div>
+            <!-- <div class="title">{{ info.title }}</div> -->
+            <div class="title" v-html="info.content"></div>
             <!-- <div
               class="detail"
               v-html="info.content"
@@ -105,6 +105,7 @@
       ref="forumAllComment"
       v-model="all_comment"
       :option="comment_option"
+      v-if="vision"
     />
   </div>
 </template>
@@ -188,6 +189,7 @@ export default {
       all_comment: false, // 所有评论
       forword_url: location.href, // 分享链接
       forward_visible: false, // 分享弹窗
+      vision: true, //销毁组件
     };
   },
   computed: {
@@ -380,7 +382,16 @@ export default {
           font-size: 24px;
           font-weight: 500;
           color: #222222;
+          font-size: 16px;
           margin-top: 10px;
+          /deep/li {
+            word-break: break-all;
+          }
+          >>> p {
+            word-wrap: break-word;
+            overflow-wrap: break-word;
+            white-space: normal;
+          }
         }
         .detail {
           margin-top: 10px;

+ 32 - 0
src/views/image-text/children/my-chasingFun.vue

@@ -3,6 +3,19 @@
     <div class="wrap-title">
       <TitleControl title="我的订阅" @handleChange="handleSearch">
         <div slot="control" class="control-btn">
+          <div
+            class="is-read"
+            v-if="!manageType"
+            @click="
+              (_) => {
+                $message.success('已将所有信息标为已读');
+                handleRead(list, 1);
+              }
+            "
+          >
+            <img src="@/assets/icon/read.png" alt="" />
+            <span>全部已读</span>
+          </div>
           <div class="manage" @click="manageType = true" v-if="!manageType">
             管理
           </div>
@@ -212,6 +225,25 @@ export default {
         }
       });
     },
+    // 更改阅读状态
+    handleRead(arr, is_read) {
+      let params = {
+        id: "",
+        type: 2,
+        is_read,
+      };
+      params.id = arr.map((item) => item.id).join(",");
+      if (!params.id) return;
+      ArticleService.unreadChange(params).then((res) => {
+        this.list.forEach((item) => {
+          params.id.split(",").includes(item.id + "")
+            ? (item.is_read = params.is_read)
+            : "";
+        });
+        this.manageType = false;
+        this.$store.dispatch("getMarkNum", "imageText");
+      });
+    },
     // 获取数据--我的订阅
     getFollowList() {
       ArticleService.getFollowUpList(this.params).then(({ data }) => {

+ 83 - 18
src/views/image-text/components/content.vue

@@ -20,15 +20,22 @@
       >
         <ImageTextRecommendCard
           :info="item"
-          style="width: 100%"
+          style="width: 80%; margin: 0 auto"
           v-if="item.images_arr && item.images_arr.length < 3"
           @handleLike="handleLike(item)"
           @handleCollect="handleCollect(item)"
           @handleForward="handleForward(item)"
         />
-        <ImageTextRecommendImageCard v-else :info="item" style="width: 100%" />
+        <ImageTextRecommendImageCard
+          v-else
+          :info="item"
+          style="width: 80%; margin: 0 auto"
+        />
       </div>
     </div>
+    <div class="loading-more" v-if="!finished" @click="TouchBottom">
+      加载更多
+    </div>
     <div class="loading" v-if="loading">
       <el-col :span="24" v-loading="loading"></el-col>
     </div>
@@ -54,12 +61,17 @@
         <Sort :current="listParams.sort_type" @changeSort="changeSort" />
       </div>
       <div class="all-list">
-        <div
-          class="card-item"
-          v-for="item in allList"
-          @click="toDetail(item.id)"
-        >
-          <ImageTextAllCard :info="item" />
+        <div v-for="items in allList">
+          <p style="font-size: 16px">{{ items.time }}</p>
+          <div class="card-item" @click="toDetail(item.id)">
+            <div
+              class="items-a"
+              v-for="item in items.list"
+              @click="toDetail(item.id)"
+            >
+              <ImageTextAllCard :info="item" />
+            </div>
+          </div>
         </div>
       </div>
     </div>
@@ -107,6 +119,7 @@ export default {
     };
   },
   mounted() {
+    this.current = JSON.parse(sessionStorage.getItem("imageCurrent")) || 0;
     window.scrollTo(0, 0);
     this.getRecommendList();
     this.getCateTree();
@@ -117,6 +130,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.current = i;
+      sessionStorage.setItem("imageCurrent", this.current);
       this.loading = false;
       this.finished = false;
       this.recommendParams.page = 1;
@@ -151,7 +165,7 @@ export default {
     },
     // 触底
     TouchBottom() {
-      if (!this.finished && !this.loading) {
+      if (!this.finished) {
         this.current == 0 ? this.getRecommendList() : this.getArticleList();
       }
     },
@@ -213,6 +227,47 @@ export default {
         loadingFullscreen ? loadingFullscreen.close() : "";
         this.allList =
           this.listParams.page === 1 ? list : [...this.allList, ...list];
+
+        //临时存放,分类好的数据
+        let arr = [];
+        //给返回的数据分类,将同一个标题下的分到一起
+        this.allList.forEach((item) => {
+          let obj = {};
+          if (arr.length == 0) {
+            obj.time = item.cate;
+            obj.list = [item];
+            arr.push(obj);
+          } else {
+            let bool = true;
+            arr.forEach((items) => {
+              if (items.time == item.cate) {
+                bool = false;
+                items.list.push(item);
+              }
+            });
+            if (bool) {
+              obj.time = item.cate;
+              obj.list = [item];
+              arr.push(obj);
+            }
+          }
+        });
+        //数据排序,根据二级分类顺序,排列展示数据顺序
+        let sortArr = [];
+        this.cateTree.forEach((item) => {
+          //找出是哪个一级分类下的
+          if (item.id == this.listParams.first_classify) {
+            item.children.forEach((items) => {
+              arr.forEach((itemes) => {
+                if (items.title == itemes.time) {
+                  sortArr.push(itemes);
+                }
+              });
+            });
+          }
+        });
+
+        this.allList = sortArr;
         if (list.length < this.listParams.page_num) {
           this.finished = true;
         } else {
@@ -270,10 +325,10 @@ export default {
 
 <style lang="scss" scoped>
 .content {
-  width: calc(100% - 3rem);
-  margin-left: 3rem;
-  min-width: 1000px;
-  padding-left: 10px;
+  width: calc(100% - 10vw);
+  margin: 0 5vw;
+  min-width: 46.875rem;
+  padding-left: 0.625rem;
   box-sizing: border-box;
   .tab {
     margin-bottom: 70px;
@@ -283,9 +338,10 @@ export default {
     padding-right: 0;
     box-sizing: border-box;
     display: flex;
-    flex-direction: column;
+    // flex-direction: column;
     align-items: center;
-    justify-content: space-around;
+    justify-content: space-between;
+    flex-wrap: wrap;
     .card-item {
       width: 100%;
       margin: 0 0 20px;
@@ -293,6 +349,7 @@ export default {
   }
   .all {
     padding: 15px;
+    padding-top: 25px;
     box-sizing: border-box;
     .screen {
     }
@@ -302,12 +359,20 @@ export default {
     .all-list {
       display: flex;
       flex-wrap: wrap;
+      justify-content: space-between;
       > :nth-child(2n) {
-        margin-left: 20px;
+        // margin-left: 20px;
       }
       .card-item {
-        width: calc((100% - 20px) / 2);
-        margin-bottom: 20px;
+        // width: calc((100% - 20px) / 2);
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: space-between;
+        .items-a {
+          margin-bottom: 10px;
+          width: 49%;
+          height: 148px;
+        }
       }
     }
   }

+ 24 - 7
src/views/image-text/image-text-details.vue

@@ -111,7 +111,7 @@ export default {
     const option = this.$route.query;
     this.article_info.id = option.id;
     this.info.id = option.item_id;
-    if (option.id) this.getSeriesDetail();
+    // if (option.id) this.getSeriesDetail();
     if (option.item_id) this.getDetail();
     if (localStorage.getItem("user_info"))
       this.$store.dispatch("getMarkNum", "imageText");
@@ -136,6 +136,7 @@ export default {
       ArticleService.getArticleItemInfo({ item_id: this.info.id }).then(
         ({ data }) => {
           this.info = data.detail;
+          this.article_info.title = data.detail.article_title;
           this.$nextTick((_) => {
             this.$refs["comment"].init(this.comment_option);
           });
@@ -191,12 +192,28 @@ export default {
     },
     // 跳转产品
     toSupplierDetail() {
-      this.$router.open({
-        path: "/supplier-details",
-        query: {
-          id: this.info.goods_id,
-        },
-      });
+      if (this.info.goods_id) {
+        this.$router.open({
+          path: "/supplier-details",
+          query: {
+            id: this.info.goods_id,
+          },
+        });
+      } else if (!this.info.goods_id && this.info.supplier_id) {
+        this.$router.open({
+          path: "/supplier-collection",
+          query: {
+            supplier_id: this.info.supplier_id,
+          },
+        });
+      }
+
+      // this.$router.open({
+      //   path: "/supplier-details",
+      //   query: {
+      //     id: this.info.supplier_id,
+      //   },
+      // });
     },
     // 评论
     handleComment() {

+ 2 - 2
src/views/image-text/index.vue

@@ -72,7 +72,7 @@ export default {
 <style lang="scss" scoped>
 .wrap {
   // width: calc(100% - #{$navbarWidth});
-  
-  width: calc(100% - 100px);
+
+  width: calc(100% - 6.25rem);
 }
 </style>

+ 55 - 11
src/views/index.vue

@@ -205,6 +205,7 @@ export default {
         video: {
           // 视频
           detail_link: "/video-details",
+          collection_link: "/video-details",
           first_id: "id",
           second_id: "videoArrId",
         },
@@ -249,20 +250,23 @@ export default {
         supplier: {
           // 供应商
           detail_link: "/supplier-details",
-          first_id: "id",
-          second_id: "",
+          collection_link: "/supplier-collection",
+          first_id: "supplier_id",
+          second_id: "id",
         },
         recruit: {
           // 招聘
           detail_link: "/recruit-details",
+          collection_link: "/recruit-collection",
           first_id: "id",
           second_id: "",
         },
         mall: {
           // 商品
           detail_link: "/product-details",
+          collection_link: "/product-collection",
           first_id: "id",
-          second_id: "",
+          second_id: "id",
         },
         service: {
           // 客服
@@ -429,20 +433,60 @@ export default {
     },
     // 轮播图跳转详情
     toDetail(item) {
+      console.log(item);
       let place = this.detailDict[item.place],
         query = {};
       if (!place || !item.is_normal) return;
       query[place.first_id] = item.first_id;
       query[place.second_id] = item.second_id;
+      //没有地址,跳转客服
       if (!place.detail_link) return this.$store.commit("OPEN_CONTACT");
-      this.$router.push({
-        path: place.second_id
-          ? item.second_id
-            ? place.detail_link
-            : place.collection_link
-          : place.detail_link,
-        query,
-      });
+      //招聘单独跳转页面
+      if (item.place == "recruit") {
+        if (item.first_id && !item.second_id) {
+          this.$router.push({
+            path: place.collection_link,
+            query: {
+              id: item.first_id,
+            },
+          });
+          return;
+        } else if (item.first_id && item.second_id) {
+          this.$router.push({
+            path: place.detail_link,
+            query: {
+              id: item.second_id,
+            },
+          });
+          return;
+        }
+      }
+
+      //有地址,正常跳转页面
+      if (place.second_id && item.second_id) {
+        this.$router.push({
+          path: place.detail_link,
+          query,
+        });
+      } else if (place.second_id && !item.second_id) {
+        this.$router.push({
+          path: place.collection_link,
+          query,
+        });
+      } else {
+        this.$router.push({
+          path: place.detail_link,
+          query,
+        });
+      }
+      // this.$router.push({
+      //   path: place.second_id
+      //     ? item.second_id
+      //       ? place.detail_link
+      //       : place.collection_link
+      //     : place.detail_link,
+      //   query,
+      // });
     },
     // 跳转搜索
     toSearch() {

+ 13 - 0
src/views/information/children/my-chasingFun.vue

@@ -3,6 +3,19 @@
     <div class="wrap-title">
       <TitleControl title="我的订阅" @handleChange="handleSearch">
         <div slot="control" class="control-btn">
+          <div
+            class="is-read"
+            v-if="!manageType"
+            @click="
+              (_) => {
+                $message.success('已将所有信息标为已读');
+                handleRead(list, 1);
+              }
+            "
+          >
+            <img src="@/assets/icon/read.png" alt="" />
+            <span>全部已读</span>
+          </div>
           <div class="manage" @click="manageType = true" v-if="!manageType">
             管理
           </div>

+ 6 - 2
src/views/information/components/content.vue

@@ -105,9 +105,12 @@ export default {
       allList: [], //全部数据
     };
   },
-  mounted() {
+  created() {
+    this.current =
+      JSON.parse(sessionStorage.getItem("informationCurrent")) || 0;
+    console.log(this.current);
     window.scrollTo(0, 0);
-    this.getRecommendList();
+    this.current == 0 ? this.getRecommendList() : this.getInformationList();
     this.getCateTree();
     if (localStorage.getItem("user_info"))
       this.$store.dispatch("getMarkNum", "information");
@@ -116,6 +119,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.current = i;
+      sessionStorage.setItem("informationCurrent", this.current);
       this.loading = false;
       this.finished = false;
       this.recommendParams.page = 1;

+ 7 - 2
src/views/information/information-details-content.vue

@@ -61,11 +61,16 @@ export default {
         this.$refs["iframeContent"].contentWindow.document.body.scrollHeight;
     },
   },
-  created() {
-    const option = this.$route.params;
+  mounted() {
+    const option = JSON.parse(sessionStorage.getItem("params"));
+    console.log(this.option);
     this.previewable = option.previewable;
     this.info = option.info;
     this.datum_info = option.datum_info;
+    console.log(this.previewable);
+    console.log(this.info.url);
+    console.log(this.info.fileType);
+    console.log(this.info.fileType);
   },
 };
 </script>

+ 7 - 6
src/views/information/information-details.vue

@@ -267,13 +267,14 @@ export default {
     // 预览
     handleView() {
       if (!this.previewable) return (this.viewerVisible = true);
+      let params = {
+        datum_info: this.datum_info,
+        previewable: this.previewable,
+        info: this.info,
+      };
+      sessionStorage.setItem("params", JSON.stringify(params));
       this.$router.push({
-        name: "information-details-content",
-        params: {
-          datum_info: this.datum_info,
-          previewable: this.previewable,
-          info: this.info,
-        },
+        path: "/information-details-content",
       });
     },
     // 下载---统计下载量

+ 9 - 4
src/views/news/components/content.vue

@@ -4,7 +4,7 @@
       <div class="card-item" v-for="item in list" @click="toDetail(item.id)">
         <NewsRecommendCard
           :info="item"
-          style="width: 100%"
+          style="width: 80%; margin: 0 auto"
           v-if="item.images_arr.length < 3"
           @handleLike="handleLike(item)"
           @handleCollect="handleCollect(item)"
@@ -14,7 +14,11 @@
             commentVisible = true;
           "
         />
-        <NewsRecommendImageCard v-else :info="item" style="width: 100%" />
+        <NewsRecommendImageCard
+          v-else
+          :info="item"
+          style="width: 80%; margin: 0 auto"
+        />
       </div>
     </div>
     <div class="loading" v-if="loading">
@@ -196,12 +200,13 @@ export default {
     padding-right: 0;
     box-sizing: border-box;
     display: flex;
-    flex-direction: column;
     align-items: center;
-    justify-content: space-around;
+    justify-content: space-between;
+    flex-wrap: wrap;
     .card-item {
       width: 100%;
       margin: 0 0 20px;
+      height: 226px;
     }
   }
   .all {

+ 18 - 6
src/views/news/news-details.vue

@@ -110,11 +110,14 @@ export default {
     getDetail() {
       PressService.getPressDetail({ id: this.info.id }).then(({ data }) => {
         this.info = data.detail;
+        console.log(this.info);
         this.$nextTick((_) => {
           this.$refs["comment"].init(this.comment_option);
         });
       });
+      PressService.pressRead({ id: this.info.id });
     },
+
     // 订阅
     handleSwitch() {
       GeneralService.switchSet({ id: this.info.id, type: 3 }).then(
@@ -174,12 +177,21 @@ export default {
     },
     // 跳转产品
     toSupplierDetail() {
-      this.$router.open({
-        path: "/supplier-details",
-        query: {
-          id: this.info.goods_id,
-        },
-      });
+      if (this.info.goods_id) {
+        this.$router.open({
+          path: "/supplier-details",
+          query: {
+            id: this.info.goods_id,
+          },
+        });
+      } else if (!this.info.goods_id && this.info.supplier_id) {
+        this.$router.open({
+          path: "/supplier-collection",
+          query: {
+            supplier_id: this.info.supplier_id,
+          },
+        });
+      }
     },
     // 评论
     handleComment() {

+ 10 - 5
src/views/product/children/my-collect.vue

@@ -125,14 +125,17 @@ export default {
         .then(() => {
           let params = {
             id: "",
-            type: 1,
+            status: 0, //0为取消收藏
           };
-          params.id = arr.map((item) => item.id).join(",");
+          params.id = arr.map((item) => item.goods_id).join(",");
           if (!params.id) return;
-          MallService.batchesDel(params).then(({ data }) => {
+          //取消收藏
+          MallService.goodsCollect(params).then(({ data }) => {
             let list = that.list
               .map((item) => {
-                return params.id.split(",").includes(item.id + "") ? "" : item;
+                return params.id.split(",").includes(item.goods_id + "")
+                  ? ""
+                  : item;
               })
               .filter((item) => item);
             that.list = list;
@@ -140,7 +143,9 @@ export default {
             that.manageType = false;
           });
         })
-        .catch((_) => {});
+        .catch((_) => {
+          console.log("报错");
+        });
     },
     // 跳转详情
     handleToDetail(item, key = { id: "id" }) {

+ 68 - 16
src/views/product/children/my-order.vue

@@ -1,11 +1,11 @@
 <template>
   <div class="wrap">
     <div class="wrap-title">
-      <TitleControl title="我的发布" @handleSearch="handleSearch">
+      <TitleControl title="我的订单" @handleSearch="handleSearch">
       </TitleControl>
     </div>
     <div class="wrap-status">
-      <div
+      <!-- <div
         class="status-item"
         v-for="status in status_list"
         :class="{
@@ -17,7 +17,26 @@
         @click="changeType(status.value, status.key)"
       >
         {{ status.label }}
-      </div>
+      </div> -->
+      <el-badge
+        class="status-item"
+        v-for="status in status_list"
+        :value="status.numValue"
+        :hidden="status.numValue == 0"
+        :key="status.value"
+      >
+        <el-button
+          @click="changeType(status.value, status.key)"
+          :class="{
+            'status-item-current':
+              status.value == -1
+                ? status.value == params[status.key] && params.apply_refund != 1
+                : status.value == params[status.key],
+          }"
+          size="small"
+          >{{ status.label }}</el-button
+        >
+      </el-badge>
     </div>
     <div class="wrap-content">
       <div class="list">
@@ -36,6 +55,7 @@
               @handleInvoiceDetail="handleInvoiceDetail"
               @handleViewLogistics="handleViewLogistics"
               @handleToRefundDetail="handleToRefundDetail"
+              @checkCommodityDetail="checkCommodityDetail"
             />
           </div>
         </div>
@@ -101,7 +121,7 @@ import MyOrderCard from "@/components/card/product/my-order-card.vue";
 import TitleControl from "@/components/module/title-control.vue";
 import PaymentWindowWX from "@/components/module/payment-window-wx.vue";
 import ProductLogisticsInfo from "@/components/product/product-logistics-info.vue";
-import { OrderService } from "@/common/service";
+import { OrderService, MallService } from "@/common/service";
 export default {
   components: {
     MyOrderCard,
@@ -121,13 +141,13 @@ export default {
       },
       finished: false, // 没有更多数据
       status_list: [
-        { value: -1, label: "全部", key: "status" },
-        { value: 0, label: "待付款", key: "status" },
-        { value: 1, label: "待发货", key: "status" },
-        { value: 2, label: "待收货", key: "status" },
-        { value: 3, label: "已完成", key: "status" },
-        { value: 9, label: "已取消", key: "status" },
-        { value: 1, label: "退款/售后", key: "apply_refund" },
+        { value: -1, label: "全部", key: "status", numValue: 0 },
+        { value: 0, label: "待付款", key: "status", numValue: 0 },
+        { value: 1, label: "待发货", key: "status", numValue: 0 },
+        { value: 2, label: "待收货", key: "status", numValue: 0 },
+        { value: 3, label: "已完成", key: "status", numValue: 0 },
+        { value: 9, label: "已取消", key: "status", numValue: 0 },
+        { value: 1, label: "退款/售后", key: "apply_refund", numValue: 0 },
       ],
       price: "", // 微信支付金额
       wx_code_url: "", // 微信支付二维码
@@ -143,7 +163,12 @@ export default {
     };
   },
   mounted() {
-    this.getList();
+    if (JSON.parse(sessionStorage.getItem("orderForm"))) {
+      this.params = JSON.parse(sessionStorage.getItem("orderForm"));
+      this.getList();
+    } else {
+      this.getList();
+    }
   },
   methods: {
     // 触底
@@ -188,6 +213,21 @@ export default {
         }
         loadingFullscreen ? loadingFullscreen.close() : "";
       });
+      MallService.getMarkNum().then((res) => {
+        this.status_list.forEach((item) => {
+          if (item.label == "待付款") {
+            item.numValue = res.data.no_pay_num;
+          } else if (item.label == "待发货") {
+            item.numValue = res.data.no_express_num;
+          } else if (item.label == "待收货") {
+            item.numValue = res.data.express_num;
+          } else if (item.label == "已完成") {
+            item.numValue = res.data.finish_num;
+          } else if (item.label == "退款/售后") {
+            item.numValue = res.data.refund_num;
+          }
+        });
+      });
     },
     // 监听订单状态
     watchOrderState(order_id) {
@@ -205,6 +245,17 @@ export default {
         }
       });
     },
+
+    //查看商品详情
+    checkCommodityDetail(data) {
+      this.$router.push({
+        path: "/product-details",
+        query: {
+          //goods_id 没有存放在最外层,存放在了数组里面,所以要用到[0]
+          id: data.order_item[0].goods_id,
+        },
+      });
+    },
     // 关闭微信弹窗
     wxClose() {
       clearTimeout(this.orderWatch);
@@ -323,6 +374,7 @@ export default {
     },
     // 查看详情
     handleToDetail(item) {
+      sessionStorage.setItem("orderForm", JSON.stringify(this.params));
       this.$router.push({
         path: "/product-order-detail",
         query: {
@@ -371,18 +423,18 @@ export default {
     align-items: center;
     .status-item {
       height: 30px;
-      padding: 0 15px;
+      // padding: 0 15px;
       background: #ffffff;
       font-size: 14px;
       font-weight: 400;
       color: #555555;
       line-height: 30px;
-      margin-right: 10px;
+      margin-right: 20px;
       cursor: pointer;
     }
     .status-item-current {
-      color: #2a63f3;
-      background: rgba(0, 84, 247, 0.1);
+      color: #2a63f3 !important;
+      background: rgba(0, 84, 247, 0.1) !important;
     }
   }
   .wrap-content {

+ 3 - 0
src/views/product/components/content.vue

@@ -134,6 +134,7 @@ export default {
     };
   },
   mounted() {
+    this.current = JSON.parse(sessionStorage.getItem("productCurrent")) || 0;
     window.scrollTo(0, 0);
     this.getRecommendList();
     this.getCateTree();
@@ -177,6 +178,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.current = i;
+      sessionStorage.setItem("productCurrent", this.current);
       this.loading = false;
       this.finished = false;
       this.recommendParams.page = 1;
@@ -329,6 +331,7 @@ export default {
     display: flex;
     flex-wrap: wrap;
     align-items: center;
+    justify-content: space-around;
   }
   .all {
     padding: 15px;

+ 2 - 1
src/views/product/product-collection.vue

@@ -60,7 +60,8 @@ export default {
   methods: {
     // 更改排序方式
     changeSort(type) {
-      this.sort_type = type;
+      console.log(0);
+      this.params.sort_type = type;
       this.getDetail();
     },
     // 获取系列详情

+ 2 - 2
src/views/product/product-confirm-order.vue

@@ -12,7 +12,7 @@
               class="address-item address-item-add"
               @click="$refs['ProductEditAddress'].open()"
             >
-              <img class="" src="@/assets/icon/add.png" alt="" />
+              <img class="add-img" src="@/assets/icon/add.png" alt="" />
             </div>
             <div
               class="address-item"
@@ -473,7 +473,7 @@ export default {
             display: flex;
             align-items: center;
             justify-content: center;
-            .icon {
+            .add-img {
               width: 70px;
               height: 70px;
             }

+ 1 - 0
src/views/product/product-details.vue

@@ -70,6 +70,7 @@ export default {
         spec_id: this.goods_spec.spec_id,
         num: this.goods_spec.num,
       }).then(({ msg }) => {
+        this.$store.dispatch("getMarkNum", "product");
         this.$message.success(msg);
       });
     },

+ 18 - 0
src/views/product/product-refund-detail.vue

@@ -144,6 +144,11 @@
         <div class="refund-item">
           <div class="label">退款编号</div>
           <div class="value">{{ refund_info.refund_no }}</div>
+          <img
+            class="icon"
+            src="@/assets/icon/copy.png"
+            @click="handleCopy(info.order_no)"
+          />
         </div>
         <div class="refund-item">
           <div class="label">退款金额</div>
@@ -191,6 +196,7 @@
 <script>
 import { OrderService } from "@/common/service.js";
 import { mapState } from "vuex";
+import { copy } from "@/common/util";
 export default {
   data() {
     return {
@@ -266,6 +272,11 @@ export default {
         this.edit_visible = false;
       });
     },
+    // 复制订单号
+    handleCopy(value) {
+      copy(value);
+      this.$message.success("复制成功");
+    },
   },
 };
 </script>
@@ -508,6 +519,13 @@ export default {
         font-size: 14px;
         color: #222222;
       }
+
+      .icon {
+        width: 15px;
+        height: 15px;
+        margin-left: 5px;
+        cursor: pointer;
+      }
     }
   }
   @media (max-width: 100rem) {

+ 1 - 1
src/views/product/product-shopping-cart.vue

@@ -245,7 +245,7 @@ export default {
 
 <style lang="scss" scoped>
 .wrap {
-  width: calc((100% - 240px));
+  width: calc((100% - 50px));
   min-width: 1000px;
   .wrap-content {
     width: 1000px;

+ 33 - 1
src/views/recruit/children/deliver-on-my.vue

@@ -7,6 +7,18 @@
         @handleChange="handleSearch"
       >
         <div slot="control" class="control-btn">
+          <div
+            class="is-read"
+            @click="
+              (_) => {
+                $message.success('已将所有信息标为已读');
+                handleRead(list, 1);
+              }
+            "
+          >
+            <img src="@/assets/icon/read.png" alt="" />
+            <span>全部已读</span>
+          </div>
           <div class="manage" @click="manageType = true" v-if="!manageType">
             管理
           </div>
@@ -86,6 +98,7 @@
           </div>
           <div
             class="card"
+            :ref="'card-' + item.id"
             :style="manageType ? { width: 'calc(100% - 60px)' } : ''"
           >
             <DeliverMyCard
@@ -99,15 +112,17 @@
         <el-empty v-if="finished" description="没有更多数据"></el-empty>
       </div>
     </div>
+    <ToNext @toNext="toNext" v-if="!manageType" />
   </div>
 </template>
 
 <script>
 import DeliverMyCard from "@/components/card/recruit/deliver-my-card.vue";
 import TitleControl from "@/components/module/title-control.vue";
+import ToNext from "@/components/module/to-next.vue";
 import { RecruitService } from "@/common/service";
 export default {
-  components: { DeliverMyCard, TitleControl },
+  components: { DeliverMyCard, TitleControl, ToNext },
   data() {
     return {
       // 管理
@@ -365,6 +380,23 @@ export default {
   align-items: center;
   justify-content: flex-end;
   user-select: none;
+  .is-read {
+    width: 100px;
+    height: 30px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background: #f4f4f4;
+    border-radius: 17px;
+    font-size: 13px;
+    font-weight: 400;
+    color: #1677ff;
+    img {
+      width: 15px;
+      height: 15px;
+      margin-right: 5px;
+    }
+  }
   .manage {
     width: 70px;
     height: 30px;

+ 12 - 0
src/views/recruit/children/my-chasingFun.vue

@@ -3,6 +3,18 @@
     <div class="wrap-title">
       <TitleControl title="我的订阅" @handleChange="handleSearch">
         <div slot="control" class="control-btn">
+          <div
+            class="is-read"
+            @click="
+              (_) => {
+                $message.success('已将所有信息标为已读');
+                handleRead(list, 1);
+              }
+            "
+          >
+            <img src="@/assets/icon/read.png" alt="" />
+            <span>全部已读</span>
+          </div>
           <div class="manage" @click="manageType = true" v-if="!manageType">
             管理
           </div>

+ 14 - 1
src/views/recruit/components/content.vue

@@ -191,6 +191,7 @@ export default {
     };
   },
   mounted() {
+    this.current = JSON.parse(sessionStorage.getItem("recruitCurrent")) || 0;
     window.scrollTo(0, 0);
     this.getRecommendList();
     this.getCateTree();
@@ -201,6 +202,7 @@ export default {
     // tab切换
     changeTab(i) {
       this.current = i;
+      sessionStorage.setItem("recruitCurrent", this.current);
       this.onRefresh();
     },
     // 修改推荐排序
@@ -212,7 +214,18 @@ export default {
     changeRecommendCity(city) {
       if (city == "其他城市") return (this.cityVisible = true);
       if (city == "全国") city = "";
-      this.recommendParams.city = city;
+      if (this.hot_cityList.indexOf(city) == -1) {
+        this.recommendParams.city = city;
+        if (this.hot_cityList.length == 13) {
+          this.hot_cityList.splice(this.hot_cityList.length - 1, 0, city);
+        } else {
+          //如果长度大于13,则代表已经添加了一个城市,需要把添加的城市删除,再重新添加新选择的城市
+          this.hot_cityList.splice(this.hot_cityList.length - 2, 1);
+          this.hot_cityList.splice(this.hot_cityList.length - 1, 0, city);
+        }
+      } else {
+        this.recommendParams.city = city;
+      }
       this.onRefresh();
     },
     // 修改推荐学历

Some files were not shown because too many files changed in this diff