{"id":1319,"date":"2024-07-01T10:18:36","date_gmt":"2024-07-01T02:18:36","guid":{"rendered":"http:\/\/ericw.top\/?p=1319"},"modified":"2024-07-01T10:18:48","modified_gmt":"2024-07-01T02:18:48","slug":"%e5%b0%8f%e5%85%94%e9%b2%9c-home%e9%a1%b5","status":"publish","type":"post","link":"http:\/\/ericw.top\/?p=1319","title":{"rendered":"\u5c0f\u5154\u9c9c Home\u9875"},"content":{"rendered":"\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-b55bab3e3d19e262e3c65e6f0b2fa7b6\"><strong>\u4e3b\u9875\u539f\u578b\u56fe<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"846\" src=\"http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3-1024x846.png\" alt=\"\" class=\"wp-image-1323\" srcset=\"http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3-1024x846.png 1024w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3-300x248.png 300w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3-768x634.png 768w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3-1536x1268.png 1536w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-3.png 2014w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-65ec03f245849b96ef27a4758ba6ef81\"><strong>\u4e3b\u9875\u6587\u4ef6\u5939<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"987\" height=\"434\" src=\"http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-2.png\" alt=\"\" class=\"wp-image-1322\" srcset=\"http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-2.png 987w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-2-300x132.png 300w, http:\/\/ericw.top\/wp-content\/uploads\/2024\/07\/image-2-768x338.png 768w\" sizes=\"(max-width: 987px) 100vw, 987px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-0\"><strong>\u7f16\u7a0b\u601d\u8def<\/strong><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-1\">\u4e00\u3001\u5206\u6790\u7ed3\u6784<\/h2>\n\n\n\n<p>1\u3001\u65b0\u5efa\u4e3b\u6587\u4ef6\u5939   \u91cc\u9762\u521b\u5efa\u5165\u53e3\u6587\u4ef6  \u7ec4\u4ef6\u6587\u4ef6  <strong>\u5206\u6a21\u5757<\/strong><\/p>\n\n\n\n<p>2\u3001\u65b0\u5efa\u6a21\u5757\u6587\u4ef6  \u5728\u5165\u53e3\u6587\u4ef6\u5f15\u5165\u7ec4\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >&lt;script setup&gt;\r\nimport HomeBanner from &#039;.\/components\/HomeBanner.vue&#039;;\r\nimport HomeCategory from &#039;.\/components\/HomeCategory.vue&#039;;\r\nimport HomeProduct from &#039;.\/components\/HomeProduct.vue&#039;;\r\nimport HomeNew from &#039;.\/components\/HomeNew.vue&#039;;\r\nimport HomeHot from &#039;.\/components\/HomeHot.vue&#039;;\r\n&lt;\/script&gt;\r\n&lt;template&gt;\r\n    &lt;div class=&quot;container&quot;&gt;\r\n        &lt;HomeCategory \/&gt;\r\n        &lt;HomeBanner \/&gt;\r\n    &lt;\/div&gt;\r\n    &lt;HomeNew \/&gt;\r\n    &lt;HomeHot \/&gt;\r\n    &lt;HomeProduct \/&gt;\r\n&lt;\/template&gt;\r\n&lt;style&gt;&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-2\">\u4e8c\u3001\u51c6\u5907\u6a21\u677f<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-3\">\u4e09\u3001\u7f16\u5199\u7ec4\u4ef6<\/h2>\n\n\n\n<p>\u4e00\u4e2abanner\u7ec4\u4ef6  \u4e00\u4e2a\u5546\u54c1\u63a8\u8350\u9875\u7ec4\u4ef6<\/p>\n\n\n\n<p>banner\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >&lt;script setup&gt;\r\nimport { getBannerAPI } from &#039;@\/apis\/home.js&#039;\r\nimport { onMounted, ref } from &#039;vue&#039;;\r\nconst bannerList = ref(&#091;])\r\nconst getBanner = async () =&gt; {\r\n  const res = await getBannerAPI()\r\n  if (res.code !== &#039;1&#039;) {\r\n    return\r\n  }\r\n  bannerList.value = res.result\r\n}\r\nonMounted(() =&gt; getBanner())\r\n&lt;\/script&gt;\r\n\r\n\r\n\r\n&lt;template&gt;\r\n  &lt;div class=&quot;home-banner&quot;&gt;\r\n    &lt;el-carousel height=&quot;500px&quot;&gt;\r\n      &lt;el-carousel-item v-for=&quot;item in bannerList&quot; :key=&quot;item.id&quot;&gt;\r\n        &lt;img :src=item.imgUrl&gt;\r\n      &lt;\/el-carousel-item&gt;\r\n    &lt;\/el-carousel&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/template&gt;\r\n\r\n\r\n\r\n&lt;style scoped lang=&#039;scss&#039;&gt;\r\n.home-banner {\r\n  width: 1240px;\r\n  height: 500px;\r\n  position: absolute;\r\n  left: 0;\r\n  top: 0;\r\n  z-index: 98;\r\n\r\n  img {\r\n    width: 100%;\r\n    height: 500px;\r\n  }\r\n}\r\n&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<p>\u5546\u54c1\u63a8\u8350\u9875\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >&lt;script setup&gt;\r\ndefineProps({\r\n    title: {\r\n    type: String,\r\n    default: &#039;&#039;\r\n  },\r\n  subTitle: {\r\n    type: String,\r\n    default: &#039;&#039;\r\n  }\r\n})\r\n&lt;\/script&gt;\r\n\r\n\r\n&lt;template&gt;\r\n  &lt;div class=&quot;home-panel&quot;&gt;\r\n    &lt;div class=&quot;container&quot;&gt;\r\n      &lt;div class=&quot;head&quot;&gt;\r\n         &lt;!-- \u4e3b\u6807\u9898\u548c\u526f\u6807\u9898 --&gt;\r\n        &lt;h3&gt;\r\n          {{title}}&lt;small&gt;{{subTitle}}&lt;\/small&gt;\r\n        &lt;\/h3&gt;\r\n      &lt;\/div&gt;\r\n      &lt;!-- \u4e3b\u4f53\u5185\u5bb9\u533a\u57df --&gt;\r\n      &lt;slot&gt;&lt;\/slot&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/template&gt;\r\n\r\n&lt;style scoped lang=&#039;scss&#039;&gt;\r\n.home-panel {\r\n  background-color: #fff;\r\n\r\n  .head {\r\n    padding: 40px 0;\r\n    display: flex;\r\n    align-items: flex-end;\r\n\r\n    h3 {\r\n      flex: 1;\r\n      font-size: 32px;\r\n      font-weight: normal;\r\n      margin-left: 6px;\r\n      height: 35px;\r\n      line-height: 35px;\r\n\r\n      small {\r\n        font-size: 16px;\r\n        color: #999;\r\n        margin-left: 20px;\r\n      }\r\n    }\r\n  }\r\n}\r\n&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<p>\u5546\u54c1\u63a8\u8350\u9875\u7684\u63d2\u69fd\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >&lt;script setup&gt;\r\nimport { onMounted, ref } from &#039;vue&#039;;\r\nimport HomePanel from &#039;.\/HomePanel.vue&#039;;\r\nimport { findNewAPI } from &#039;@\/apis\/home&#039;\r\n\r\nconst newList = ref(&#091;])\r\n\r\nasync function getNewList() {\r\n  const res = await findNewAPI();\r\n  if (res.code !== &#039;1&#039;) {\r\n    return\r\n  }\r\n  newList.value = res.result\r\n}\r\n\r\nonMounted(() =&gt; {\r\n  getNewList()\r\n})\r\n&lt;\/script&gt;\r\n\r\n&lt;template&gt;\r\n  &lt;HomePanel title=&quot;\u65b0\u9c9c\u597d\u7269&quot; sub-title=&quot;\u65b0\u9c9c\u51fa\u7089 \u54c1\u8d28\u9760\u8c31&quot;&gt;\r\n    &lt;ul class=&quot;goods-list&quot;&gt;\r\n      &lt;li v-for=&quot;item in newList&quot; :key=&quot;item.id&quot;&gt;\r\n        &lt;RouterLink :to=&quot;`\/detail\/${item.id}`&quot;&gt;\r\n          &lt;img :src=&quot;item.picture&quot; alt=&quot;&quot; \/&gt;\r\n          &lt;p class=&quot;name&quot;&gt;{{ item.name }}&lt;\/p&gt;\r\n          &lt;p class=&quot;price&quot;&gt;&amp;yen;{{ item.price }}&lt;\/p&gt;\r\n        &lt;\/RouterLink&gt;\r\n      &lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n  &lt;\/HomePanel&gt;\r\n&lt;\/template&gt;\r\n\r\n\r\n&lt;style scoped lang=&#039;scss&#039;&gt;\r\n.goods-list {\r\n  display: flex;\r\n  justify-content: space-between;\r\n  height: 406px;\r\n\r\n  li {\r\n    width: 306px;\r\n    height: 406px;\r\n\r\n    background: #f0f9f4;\r\n    transition: all .5s;\r\n\r\n    &amp;:hover {\r\n      transform: translate3d(0, -3px, 0);\r\n      box-shadow: 0 3px 8px rgb(0 0 0 \/ 20%);\r\n    }\r\n\r\n    img {\r\n      width: 306px;\r\n      height: 306px;\r\n    }\r\n\r\n    p {\r\n      font-size: 22px;\r\n      padding-top: 12px;\r\n      text-align: center;\r\n      text-overflow: ellipsis;\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .price {\r\n      color: $priceColor;\r\n    }\r\n  }\r\n}\r\n&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-4\">\u56db\u3001\u63a5\u53e3\u8c03\u7528<\/h2>\n\n\n\n<p>\u7f16\u5199\u62e6\u622a\u5668\uff08\u4e00\u822c\u4f7f\u7528\u6a21\u677f\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >\/\/ axios\u57fa\u7840\u5c01\u88c5\r\nimport axios from &#039;axios&#039;\r\n\r\nimport { useUserStore } from &#039;@\/stores\/userStore.js&#039;\r\nimport { ElMessage } from &#039;element-plus&#039;\r\nimport &#039;element-plus\/theme-chalk\/el-message.css&#039;\r\nimport router from &#039;@\/router&#039;\r\n\r\n\r\n\/\/ \u521b\u5efaaxios\u5b9e\u4f8b\r\nconst httpInstance = axios.create({\r\n    baseURL: &#039;http:\/\/pcapi-xiaotuxian-front-devtest.itheima.net&#039;,\r\n    timeout: 5000,\r\n})\r\n\r\n\/\/ axios\u8bf7\u6c42\u62e6\u622a\u5668\r\nhttpInstance.interceptors.request.use(config =&gt; {\r\n    \/\/ 1. \u4ecepinia\u83b7\u53d6token\u6570\u636e\r\n    const userStore = useUserStore()\r\n    \/\/ 2. \u6309\u7167\u540e\u7aef\u7684\u8981\u6c42\u62fc\u63a5token\u6570\u636e\r\n    const token = userStore.userInfo.token\r\n    if (token) {\r\n        config.headers.Authorization = `Bearer ${token}`\r\n    }\r\n    return config\r\n}, e =&gt; Promise.reject(e))\r\n\r\n\/\/ axios\u54cd\u5e94\u5f0f\u62e6\u622a\u5668\r\nhttpInstance.interceptors.response.use(res =&gt; res.data, e =&gt; {\r\n    \/\/ \u5904\u7406\u54cd\u5e94\u5931\u8d25 \u7edf\u4e00\u9519\u8bef\u63d0\u793a\r\n    ElMessage({ type: &#039;warning&#039;, message: e.response.data.message || &#039;\u7cfb\u7edf\u9519\u8bef&#039; })\r\n    \/\/ 401 token \u9519\u8bef\u5904\u7406\r\n    if (e.response.status === 401) {\r\n        const userStore = useUserStore()\r\n        userStore.clearUserInfo()\r\n        router.push(&#039;\/login&#039;)\r\n    }\r\n    return Promise.reject(e)\r\n})\r\n\r\nexport default httpInstance<\/code><\/pre>\n\n\n\n<p>\u63a5\u53e3\u7f16\u5199\u6a21\u677f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >import http from &quot;@\/utils\/http&quot;;\n\r\nexport function getXXX( ) {\r\n\r\r\n    return http({\r\n        url: &#039;\/home\/home&#039;,\r\n    })\r\n}<\/code><\/pre>\n\n\n\n<p>1\u3001\u8f6e\u64ad\u56fe\u6570\u636e\u63a5\u53e3<\/p>\n\n\n\n<p>2\u3001\u83b7\u53d6\u65b0\u9c9c\u597d\u7269\u63a5\u53e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"prettyprint\" >import httpInstance from &quot;@\/utils\/http&quot;;\n\n\/\/ \u83b7\u53d6 \u8f6e\u64ad\u56fe \u6570\u636e\r\nexport function getBannerAPI(params = {}) {\r\n    \/\/ \u9ed8\u8ba4\u4e3a1 \u5546\u54c1\u4e3a2\r\n    const { distributionSite = &#039;1&#039; } = params\r\n    return httpInstance({\r\n        url: &#039;\/home\/banner&#039;,\r\n        params: {\r\n            distributionSite\r\n        }\r\n    })\r\n}\n\n\/**\n * @description: \u83b7\u53d6\u65b0\u9c9c\u597d\u7269\n * @param {*}\n * @return {*}\n *\/\nexport const findNewAPI = () =&gt; {\n    return httpInstance({\n        url: &#039;\/home\/new&#039;\n    })\n}\n\n\/**\n * @description: \u83b7\u53d6\u6240\u6709\u5546\u54c1\u6a21\u5757\n * @param {*}\n * @return {*}\n *\/\nexport const getGoodsAPI = () =&gt; {\n    return httpInstance({\n        url: &#039;\/home\/goods&#039;\n    })\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc-5\">\u4e94\u3001\u8fd0\u884c\u6d4b\u8bd5<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>\u4e3b\u9875\u539f\u578b\u56fe \u4e3b\u9875\u6587\u4ef6\u5939 \u7f16\u7a0b\u601d\u8def \u4e00\u3001\u5206\u6790\u7ed3\u6784 1\u3001\u65b0\u5efa\u4e3b\u6587\u4ef6\u5939 \u91cc\u9762\u521b\u5efa\u5165\u53e3\u6587\u4ef6 \u7ec4\u4ef6\u6587\u4ef6 \u5206\u6a21\u5757 2\u3001\u65b0\u5efa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"_links":{"self":[{"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/posts\/1319"}],"collection":[{"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ericw.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1319"}],"version-history":[{"count":5,"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/posts\/1319\/revisions"}],"predecessor-version":[{"id":1328,"href":"http:\/\/ericw.top\/index.php?rest_route=\/wp\/v2\/posts\/1319\/revisions\/1328"}],"wp:attachment":[{"href":"http:\/\/ericw.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ericw.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1319"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ericw.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}