zhaogongxue 1 سال پیش
والد
کامیت
80494bd5ab
85فایلهای تغییر یافته به همراه650 افزوده شده و 154 حذف شده
  1. 0 0
      dist/assets/Footer.26d567b7.js
  2. 0 0
      dist/assets/Routers.50e6218c.js
  3. 0 0
      dist/assets/address.172ac040.js
  4. 0 1
      dist/assets/address.5c1bb108.js
  5. 0 1
      dist/assets/article.2b1a34b0.js
  6. 0 0
      dist/assets/chat.d325c8e5.js
  7. 0 1
      dist/assets/comment.e4d8106e.js
  8. 0 0
      dist/assets/commonProblem.7c4b8b47.js
  9. 0 0
      dist/assets/content.ff6a68ca.js
  10. 0 1
      dist/assets/conversion.085facc6.js
  11. 0 0
      dist/assets/debounce.61e70b3d.js
  12. 0 0
      dist/assets/details.44c726a6.js
  13. 0 0
      dist/assets/discount.2079f86a.js
  14. 0 0
      dist/assets/edit.73f089e0.js
  15. 0 0
      dist/assets/editor.25e7ebc9.js
  16. 0 1
      dist/assets/flatten.a3337bcf.js
  17. 0 0
      dist/assets/follow.b832c0a5.js
  18. 0 1
      dist/assets/foot.4a1bed88.js
  19. 0 0
      dist/assets/foot.d9416ca4.css
  20. 0 1
      dist/assets/forum.e736f0a8.js
  21. 0 0
      dist/assets/index.0beb85b7.js
  22. 0 0
      dist/assets/index.0dd8ce04.js
  23. 0 0
      dist/assets/index.15723585.js
  24. 0 0
      dist/assets/index.4459d354.js
  25. 0 1
      dist/assets/index.4c1654eb.js
  26. 0 0
      dist/assets/index.6659a9f2.js
  27. 0 0
      dist/assets/index.6891af9c.js
  28. 0 0
      dist/assets/index.778729e2.js
  29. 0 1
      dist/assets/index.7e2e9078.js
  30. 0 1
      dist/assets/index.870f2b38.js
  31. 0 1
      dist/assets/index.89fa1110.js
  32. 0 0
      dist/assets/index.93ec760b.js
  33. 0 1
      dist/assets/index.96a09abf.js
  34. 0 0
      dist/assets/index.a9248883.js
  35. 0 1
      dist/assets/index.b042f27a.js
  36. 0 1
      dist/assets/index.c0238b75.js
  37. 0 0
      dist/assets/index.d356e0b8.js
  38. 0 1
      dist/assets/index.e6a7472c.css
  39. 0 1
      dist/assets/index.f5edb3c5.js
  40. 0 1
      dist/assets/invite.b3d0b0df.js
  41. 0 0
      dist/assets/inviteinfo.298e66f1.js
  42. 0 1
      dist/assets/jifen.e96384e2.js
  43. 0 1
      dist/assets/join.ff5560db.js
  44. 0 0
      dist/assets/localeData.517e94c9.js
  45. 0 0
      dist/assets/make.227f5332.js
  46. 0 0
      dist/assets/more.00acdb7d.js
  47. 0 1
      dist/assets/news.09635ce7.js
  48. 0 1
      dist/assets/outshoping.17fde22e.js
  49. 0 0
      dist/assets/pagination.6dd4de10.js
  50. 0 0
      dist/assets/placeOrder.990675f2.js
  51. 0 0
      dist/assets/postDetail.37de1f37.js
  52. 0 0
      dist/assets/postDetail.5f6fb362.css
  53. 0 5
      dist/assets/progress.6f33c4d0.js
  54. 0 0
      dist/assets/qiandao.vue_vue_type_style_index_0_scoped_true_lang.808c3fe6.css
  55. 0 0
      dist/assets/radio.e15b8d9d.js
  56. 0 0
      dist/assets/setting.70efc0fb.css
  57. 0 0
      dist/assets/setting.c6dbdcb5.js
  58. 0 0
      dist/assets/sign.0cd5c31b.js
  59. 0 1
      dist/assets/throttle.2d532a59.js
  60. 0 1
      dist/assets/topic.94cd9d78.js
  61. 0 0
      dist/assets/topic.9c2a41c6.js
  62. 0 0
      dist/assets/usePost.bee8700b.js
  63. 0 1
      dist/assets/video.02b6b3c0.js
  64. 0 1
      dist/assets/video.26ad1026.js
  65. 0 0
      dist/assets/video.ceacf287.css
  66. 0 0
      dist/assets/wallect.94e0488c.js
  67. 0 0
      dist/assets/wallet.vue_vue_type_style_index_0_scoped_true_lang.6c8e4f48.css
  68. 0 1
      dist/assets/zixun.fa0675cc.js
  69. 1 1
      dist/index.html
  70. 6 0
      src/api/user.js
  71. 90 27
      src/components/Comments/index.vue
  72. 78 5
      src/components/Comments/row.vue
  73. 1 1
      src/components/IndexSection/index.vue
  74. 57 22
      src/components/layouts/Header.vue
  75. 5 3
      src/router/index.js
  76. 14 14
      src/utils/request.js
  77. 1 0
      src/views/forum/index.vue
  78. 23 13
      src/views/market/details.vue
  79. 5 2
      src/views/market/index.vue
  80. 0 1
      src/views/market/placeOrder.vue
  81. 7 1
      src/views/personal/components/ExperienceCard.vue
  82. 294 16
      src/views/personal/components/qiandao.vue
  83. 40 1
      src/views/personal/foot.vue
  84. 11 3
      src/views/personal/make.vue
  85. 17 13
      src/views/postDetail.vue

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/Footer.26d567b7.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/Routers.50e6218c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/address.172ac040.js


+ 0 - 1
dist/assets/address.5c1bb108.js

@@ -1 +0,0 @@
-import{R as d}from"./index.15723585.js";const e=s=>d({params:s,method:"GET",url:"area"}),o=s=>d({params:s,method:"GET",url:"address"}),t=s=>d({data:s,method:"GET",url:`address/${s.id}`}),a=s=>d({data:s,method:"POST",url:"address"}),l=s=>d({data:s,method:"PUT",url:`address/${s.id}`}),i=s=>d({data:s,method:"DELETE",url:`address/${s.id}`});export{e as a,i as d,t as i,o as l,a as m,l as p};

+ 0 - 1
dist/assets/article.2b1a34b0.js

@@ -1 +0,0 @@
-import{R as o}from"./index.15723585.js";const i=t=>o({params:t,method:"GET",url:"article"}),r=t=>o({data:t,method:"POST",url:"article"}),s=t=>o({params:t,method:"GET",url:`article/${t.id}`});export{s as i,i as l,r as p};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/chat.d325c8e5.js


+ 0 - 1
dist/assets/comment.e4d8106e.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const s=m=>t({params:m,method:"GET",url:"comment"}),e=m=>t({params:m,method:"GET",url:"comment/my-list"});export{s as l,e as m};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/commonProblem.7c4b8b47.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/content.ff6a68ca.js


+ 0 - 1
dist/assets/conversion.085facc6.js

@@ -1 +0,0 @@
-import{b as l}from"./jifen.e96384e2.js";import{_ as r,j as p,I as v,o as c,a as d,F as h,f,b as s,t as e,p as u,i as y}from"./index.15723585.js";const i=o=>(u("data-v-9899efc8"),o=o(),y(),o),x={class:"market-container"},g=i(()=>s("div",{class:"back"},[s("div",{style:{display:"flex","flex-direction":"column","align-items":"center",width:"72px"}},[s("div",null,"\u5151\u6362\u8BB0\u5F55"),s("div",{class:"back_backa"})])],-1)),m={class:"content_top",style:{display:"flex","justify-content":"space-between","padding-bottom":"16px"}},b={style:{display:"flex"}},k={class:"date"},w={class:"order"},I=i(()=>s("div",{class:"right"},"\u5DF2\u5151\u6362",-1)),j={style:{display:"flex","justify-content":"space-between","margin-top":"15px"}},S={style:{display:"flex"}},B=i(()=>s("div",null,[s("img",{src:"",alt:"",style:{width:"92px",height:"92px"}})],-1)),L={style:{"margin-left":"12px",display:"flex","flex-direction":"column","justify-content":"space-between",height:"92px"}},F={class:"title"},D={class:"info"},E={class:"button"},M={class:"money"},N=i(()=>s("div",{class:"ke"},"\u8054\u7CFB\u5BA2\u670D",-1)),V={__name:"conversion",setup(o){const n=p([]);return v(async()=>{try{const{data:a}=await l({is_page:0});n.value=a.list}catch{}}),(a,q)=>(c(),d("div",x,[g,(c(!0),d(h,null,f(n.value,(t,_)=>(c(),d("div",{class:"content",key:_},[s("div",m,[s("div",b,[s("div",k,e(t.updated_at),1),s("div",w,"\u8BA2\u5355\u53F7\uFF1A"+e(t.order_no),1)]),I]),s("div",j,[s("div",S,[B,s("div",L,[s("div",F,e(t.goods.name),1),s("div",D,e(t.foods.detail),1)])]),s("div",E,[s("div",M,e(t.goods.price)+"\u79EF\u5206",1),N])])]))),128))]))}};var C=r(V,[["__scopeId","data-v-9899efc8"]]);export{C as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/debounce.61e70b3d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/details.44c726a6.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/discount.2079f86a.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/edit.73f089e0.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/editor.25e7ebc9.js


+ 0 - 1
dist/assets/flatten.a3337bcf.js

@@ -1 +0,0 @@
-import{eo as t,dW as h,e0 as m,ep as r}from"./index.15723585.js";var b=t?t.isConcatSpreadable:void 0;function x(n){return h(n)||m(n)||!!(b&&n&&n[b])}function g(n,f,o,s,e){var a=-1,l=n.length;for(o||(o=x),e||(e=[]);++a<l;){var i=n[a];f>0&&o(i)?f>1?g(i,f-1,o,s,e):r(e,i):s||(e[e.length]=i)}return e}function F(n){var f=n==null?0:n.length;return f?g(n,1):[]}export{g as b,F as f};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/follow.b832c0a5.js


+ 0 - 1
dist/assets/foot.4a1bed88.js

@@ -1 +0,0 @@
-import{E as c,R as o}from"./Routers.50e6218c.js";import{_,j as d,I as v,o as l,a as r,b as e,l as s,P as p,ey as n,p as m,i as f}from"./index.15723585.js";/* empty css                                                            */const x=a=>(m("data-v-0d551c64"),a=a(),f(),a),y={class:"personal-container",style:{display:"flex"}},h=p('<div style="width:840px;" class="back" data-v-0d551c64><div data-v-0d551c64>\u6211\u7684\u8DB3\u8FF9</div><div data-v-0d551c64><div style="display:flex;align-items:center;margin-top:52px;" data-v-0d551c64><div class="left" data-v-0d551c64></div><div data-v-0d551c64>\u4ECA\u5929 10\u670817\u65E5</div></div><div style="margin-top:24px;" data-v-0d551c64><div data-v-0d551c64><img src="" style="width:230px;height:132px;" alt="" data-v-0d551c64><div style="margin-top:12px;" data-v-0d551c64> \u542B\u300A\u6781\u4E50\u8FEA\u65AF\u79D1 \u6700\u7EC8\u526A\u8F91\u7248\u300B\u53CA \u300A\u54E5\u8C2D\u9A91 </div></div></div></div></div>',1),u={style:{"margin-left":"16px"},class:"personal-main flex-row flex-jc-sb"},g={class:"pm-side"},w=x(()=>e("div",{class:"gap"},null,-1)),I={__name:"foot",setup(a){d("first");let i=d([]);return v(async()=>{try{const{data:t}=await n({});i.value=t}catch{}}),(t,b)=>(l(),r("div",y,[h,e("div",u,[e("div",g,[s(c),w,s(o)])])]))}};var N=_(I,[["__scopeId","data-v-0d551c64"]]);export{N as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/foot.d9416ca4.css


+ 0 - 1
dist/assets/forum.e736f0a8.js

@@ -1 +0,0 @@
-import{R as s}from"./index.15723585.js";const p=o=>s({params:o,method:"GET",url:"post"}),r=o=>s({data:o,method:"POST",url:"post"});export{p as l,r as p};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.0beb85b7.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.0dd8ce04.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.15723585.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.4459d354.js


+ 0 - 1
dist/assets/index.4c1654eb.js

@@ -1 +0,0 @@
-import{ao as r}from"./index.15723585.js";const u=100,v=600,m={beforeMount(l,s){const e=s.value,{interval:i=u,delay:c=v}=r(e)?{}:e;let t,n;const o=()=>r(e)?e():e.handler(),a=()=>{n&&(clearTimeout(n),n=void 0),t&&(clearInterval(t),t=void 0)};l.addEventListener("mousedown",d=>{d.button===0&&(a(),o(),document.addEventListener("mouseup",()=>a(),{once:!0}),n=setTimeout(()=>{t=setInterval(()=>{o()},i)},c))})}};export{m as v};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.6659a9f2.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.6891af9c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.778729e2.js


+ 0 - 1
dist/assets/index.7e2e9078.js

@@ -1 +0,0 @@
-import{E as t,R as c}from"./Routers.50e6218c.js";import{_,o as d,a as n,b as e,l as o,p as i,i as p}from"./index.15723585.js";/* empty css                                                            */const a=s=>(i("data-v-0c7490b2"),s=s(),p(),s),r={class:"personal-container"},l={class:"personal-main flex-row flex-jc-sb"},u=a(()=>e("div",{class:"pm-content"},null,-1)),v={class:"pm-side"},m=a(()=>e("div",{class:"gap"},null,-1)),x={__name:"index",setup(s){return(h,f)=>(d(),n("div",r,[e("div",null,[e("div",l,[u,e("div",v,[o(t),m,o(c)])])])]))}};var E=_(x,[["__scopeId","data-v-0c7490b2"]]);export{E as default};

+ 0 - 1
dist/assets/index.870f2b38.js

@@ -1 +0,0 @@
-import{_ as d,j as l,I as f,o as r,a as c,l as y,m as _,F as h,f as g,d as v,b as E,Q as k,E as x}from"./index.15723585.js";/* empty css                      *//* empty css                                                          */import{E as B,a as b}from"./index.0beb85b7.js";const C={class:"banner-container"},N=["src","alt","onClick"],j={__name:"index",props:{type:{type:String,require:!0},limit:{type:Number,default:5}},setup(i){const u=l(420),s=i,n=l([]);f(async()=>{try{const{msg:a,data:e}=await k({type:s.type,limit:s.limit});e&&Array.isArray(e)&&(n.value=e)}catch{}});const p=a=>{const{jump_type:e,jump_url:o}=a;e==="external"||e==="internal"||x.error("\u9519\u8BEF\u7684\u56FE\u7247")};return(a,e)=>{const o=B,m=b;return r(),c("div",C,[y(m,{height:`${u.value}px`},{default:_(()=>[(r(!0),c(h,null,g(n.value,t=>(r(),v(o,{key:t},{default:_(()=>[E("img",{src:t.image,alt:t.image,onClick:I=>t.is_jump?p(t):null},null,8,N)]),_:2},1024))),128))]),_:1},8,["height"])])}}};var M=d(j,[["__scopeId","data-v-d9749d44"]]);export{M as B};

+ 0 - 1
dist/assets/index.89fa1110.js

@@ -1 +0,0 @@
-import{_ as w,G as b,j as r,I as C,o as c,a as _,l as s,b as t,m as l,x as n,F as B,f as I,u as h,B as j,t as f,p as E,i as S}from"./index.15723585.js";import{E as z}from"./pagination.6dd4de10.js";import{B as N}from"./index.870f2b38.js";import{l as V}from"./jifen.e96384e2.js";/* empty css                      *//* empty css                                                          */import"./index.0beb85b7.js";import"./throttle.2d532a59.js";const F=a=>(E("data-v-42f6ca94"),a=a(),S(),a),L={class:"market-container"},q={class:"market-btns flex-row flex-aic flex-jc-sb"},D={class:"market-main"},G=["onClick"],M={class:"imgshow"},P=["src"],R={class:"market-itembox__desc ellipsis-two"},T={class:"market-itembox__footer flex-row flex-aic flex-jc-sb"},$={class:"counts"},A=F(()=>t("div",{class:"change"},"\u5151\u6362",-1)),H={class:"pagination-container"},J={__name:"index",setup(a){const p=b();let d=r([]),u=r();C(async()=>{try{const{data:e}=await V({limit:8,page:m||1});d.value=e.list,u.value=e.total}catch{}});const g=e=>{p.push({path:"/store/pointshoping/:id",query:{id:e}})};let m=r();const x=e=>{m=e},v=()=>{p.push({name:"conversion"})};return(e,O)=>{const i=j,y=z;return c(),_("div",L,[s(N,{type:"integral_shop"}),t("div",q,[s(i,{size:"large",type:"primary"},{default:l(()=>[n("\u9884\u7EA6\u62CD\u6444")]),_:1}),s(i,{size:"large",type:"primary"},{default:l(()=>[n("\u8BBE\u5907\u79DF\u8D41")]),_:1}),s(i,{size:"large",type:"",onClick:v},{default:l(()=>[n("\u5151\u6362\u8BB0\u5F55")]),_:1})]),t("div",D,[(c(!0),_(B,null,I(h(d),(o,k)=>(c(),_("div",{key:k,class:"market-itembox",onClick:Q=>g(o.id)},[t("div",M,[t("img",{src:o.image,alt:"",style:{width:"279px",height:"279px"}},null,8,P)]),t("p",R,f(o.name),1),t("div",T,[t("div",$,[t("span",null,f(o.price),1),n("\u79EF\u5206 ")]),A])],8,G))),128))]),t("div",H,[s(y,{onCurrentChange:x,background:"",layout:"prev, pager, next",total:h(u)},null,8,["total"])])])}}};var at=w(J,[["__scopeId","data-v-42f6ca94"]]);export{at as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.93ec760b.js


+ 0 - 1
dist/assets/index.96a09abf.js

@@ -1 +0,0 @@
-import{t as l}from"./Footer.26d567b7.js";import{_ as c,o as m,a as d,b as e,t as s,u as r,x as u}from"./index.15723585.js";const _={class:"imgbox"},x=["src","alt"],f={class:"content"},g={class:"title ellipsis-two"},p={class:"footer flex-row flex-aic flex-jc-sb"},v={__name:"index",props:{image:{type:String,default:"https://dummyimage.com/279x155/e3e3e3/fff"},title:{type:String},timeAgo:{type:String},likeCount:{type:Number},commentCount:{type:Number}},emits:["todetails"],setup(t,{emit:i}){const n=l,o=i,a=()=>{o("update")};return(y,h)=>(m(),d("div",{class:"index-news-container",style:{cursor:"pointer"},onClick:a},[e("div",_,[e("img",{src:t.image,alt:t.title},null,8,x)]),e("div",f,[e("div",g,s(t.title),1),e("div",p,[e("span",null,s(r(n)(t.timeAgo)),1),e("div",null,[e("span",null,s(t.likeCount)+"\u559C\u6B22",1),u("\xB7"),e("span",null,s(t.commentCount)+"\u8BC4\u8BBA",1)])])])]))}};var C=c(v,[["__scopeId","data-v-8f701448"]]);export{C as I};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.a9248883.js


+ 0 - 1
dist/assets/index.b042f27a.js

@@ -1 +0,0 @@
-import{bf as o,k as u,u as s,bn as i,bo as l}from"./index.15723585.js";function f(e){return i()?(l(e),!0):!1}function y(e){return typeof e=="function"?e():s(e)}function d(e){if(!o(e))return u(e);const a=new Proxy({},{get(n,t,r){return s(Reflect.get(e.value,t,r))},set(n,t,r){return o(e.value[t])&&!o(r)?e.value[t].value=r:e.value[t]=r,!0},deleteProperty(n,t){return Reflect.deleteProperty(e.value,t)},has(n,t){return Reflect.has(e.value,t)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return u(a)}const g=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const c=Object.prototype.toString,v=e=>c.call(e)==="[object Object]",S=()=>{};export{y as a,v as b,f as c,g as i,S as n,d as t};

+ 0 - 1
dist/assets/index.c0238b75.js

@@ -1 +0,0 @@
-import{_ as m,o as s,a as o,b as i,t as _,l as a,m as p,u as f,L as x,e as u,A as v,p as I,i as h}from"./index.15723585.js";import"./Footer.26d567b7.js";const w=e=>(I("data-v-3b883079"),e=e(),h(),e),S={class:"index-title-container flex-row flex-aic flex-jc-sb"},b={class:"title"},k=w(()=>i("span",null,"\u67E5\u770B\u66F4\u591A",-1)),g={__name:"index",props:{title:{type:String,default:"\u9ED8\u8BA4\u6807\u9898"}},emits:["seeMore"],setup(e,{emit:c}){const l=e,n=c,r=()=>{n("seeMore",l.title)};return(y,t)=>{const d=v;return s(),o("div",S,[i("div",b,_(e.title),1),e.title=="\u7CBE\u9009\u89C6\u9891"||e.title=="\u7CBE\u9009\u6587\u7AE0"||e.title=="\u7CBE\u9009\u8D44\u8BAF"?(s(),o("div",{key:0,class:"more flex-row flex-aic",onClick:t[0]||(t[0]=B=>r())},[k,a(d,{class:"icon",size:12},{default:p(()=>[a(f(x))]),_:1})])):u("",!0)])}}};var M=m(g,[["__scopeId","data-v-3b883079"]]);export{M as I};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.d356e0b8.js


+ 0 - 1
dist/assets/index.e6a7472c.css

@@ -1 +0,0 @@
-.market-btns[data-v-42f6ca94]{column-gap:20px}.market-btns .el-button[data-v-42f6ca94]:nth-child(-n+2){flex:1}.market-main[data-v-42f6ca94]{display:grid;grid-template-columns:repeat(4,auto);gap:20px;padding:30px 0}.market-itembox[data-v-42f6ca94]{background-color:#fff;border-radius:6px;overflow:hidden;width:280px;cursor:pointer}.market-itembox__desc[data-v-42f6ca94]{font-size:16px;padding:0 10px}.market-itembox__footer[data-v-42f6ca94]{padding:0 10px 20px}.market-itembox__footer .counts[data-v-42f6ca94]{font-size:14px}.market-itembox__footer .counts span[data-v-42f6ca94]{font-weight:400;color:#00b0b0;font-size:20px}.market-itembox__footer .change[data-v-42f6ca94]{padding:6px 12px;background:rgba(0,176,176,.4);border-radius:24px;font-weight:500;color:#00b0b0;cursor:pointer}

+ 0 - 1
dist/assets/index.f5edb3c5.js

@@ -1 +0,0 @@
-import{_,b0 as c,j as r,I as s,o as u,a as i,eJ as l}from"./index.15723585.js";const d=["innerHTML"],p={__name:"index",setup(m){const t=c();console.log("router",t.query);const n=r("");return s(async()=>{try{const{data:e}=await l({code:t.query.type});if(e){const{name:a="",content:o=""}=e;document.title=a,n.value=o}}catch{}}),(e,a)=>(u(),i("div",{class:"argument-container",innerHTML:n.value},null,8,d))}};var x=_(p,[["__scopeId","data-v-01fec042"]]);export{x as default};

+ 0 - 1
dist/assets/invite.b3d0b0df.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const e=o=>t({params:o,method:"GET",url:"job"}),r=o=>t({params:o,method:"GET",url:`job/${o.id}`});export{r as j,e as l};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/inviteinfo.298e66f1.js


+ 0 - 1
dist/assets/jifen.e96384e2.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const r=o=>t({params:o,method:"GET",url:"integral/goods"}),l=o=>t({params:o,method:"GET",url:`integral/goods/${o.id}`}),s=o=>t({data:o,method:"POST",url:`integral/goods/${o.id}/collect`}),d=o=>t({data:o,method:"POST",url:"integral/order/calculate"}),c=o=>t({data:o,method:"POST",url:"integral/order"}),a=o=>t({params:o,method:"GET",url:"integral/order"});export{d as a,a as b,s as c,l as d,r as l,c as o};

+ 0 - 1
dist/assets/join.ff5560db.js

@@ -1 +0,0 @@
-import{E as y,R as f}from"./Routers.50e6218c.js";import{l as x}from"./invite.b3d0b0df.js";import{_ as m,G as g,j as _,I as l,o as i,a as n,b as s,F as b,f as w,u as j,l as r,t,p as k,i as I}from"./index.15723585.js";/* empty css                                                            */const d=o=>(k("data-v-33c29a9e"),o=o(),I(),o),S={class:"personal-container",style:{display:"flex"}},B={style:{width:"842px"}},C={style:{display:"flex","flex-wrap":"wrap","justify-content":"space-between"}},E=["onClick"],R={style:{display:"flex","justify-content":"space-between"}},F={class:"title"},L={class:"money"},N={style:{"margin-top":"14px",display:"flex"}},V={class:"back"},q={class:"back"},D={class:"phone"},G=d(()=>s("div",null,null,-1)),K={style:{"margin-left":"16px"},class:"personal-main flex-row flex-jc-sb"},M={class:"pm-side"},$=d(()=>s("div",{class:"gap"},null,-1)),z={__name:"join",setup(o){const p=g();let u=_("1"),c=_([]);l(async()=>{try{const{data:a}=await x({is_page:1,page:u.value,limit:8});c.value=a.list}catch{}});const v=a=>{p.push({path:"/invite",query:{id:a}})};return l(()=>{}),(a,H)=>(i(),n("div",S,[s("div",B,[s("div",C,[(i(!0),n(b,null,w(j(c),(e,h)=>(i(),n("div",{class:"box",key:h,onClick:J=>v(e.id)},[s("div",R,[s("div",F,t(e.title),1),s("div",L,t(e.salary_min)+"-"+t(e.salary_max)+"K\xB7"+t(e.salary_month)+"\u85AA ",1)]),s("div",N,[s("div",V,t(e.education),1),s("div",q,t(e.experience_min)+"-"+t(e.experience_max)+"\u5E74 ",1)]),s("div",D,t(e.name)+" "+t(e.mobile),1)],8,E))),128))]),G]),s("div",K,[s("div",M,[r(y),$,r(f)])])]))}};var U=m(z,[["__scopeId","data-v-33c29a9e"]]);export{U as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/localeData.517e94c9.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/make.227f5332.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/more.00acdb7d.js


+ 0 - 1
dist/assets/news.09635ce7.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const s=o=>t({params:o,method:"GET",url:"info"}),n=o=>t({data:o,method:"POST",url:"info"}),e=o=>t({params:o,method:"GET",url:`info/${o.id}`});export{e as i,s as l,n as p};

+ 0 - 1
dist/assets/outshoping.17fde22e.js

@@ -1 +0,0 @@
-import{_ as i,j as p,I as d,o,a,b as e,F as u,f as l,u as h,l as g,m,x as v,dj as f,B as x,p as y,i as w}from"./index.15723585.js";const B=s=>(y("data-v-ceb15e2c"),s=s(),w(),s),I={class:"out-shop-container"},b=B(()=>e("div",{class:"out-shop__header"},[e("div",{class:"title"},"\u5373\u5C06\u524D\u5F80\u5916\u90E8\u94FE\u63A5"),e("div",{class:"tips"},"\u8BF7\u6CE8\u610F\u4E2A\u4EBA\u8D26\u53F7\u4E0E\u8D22\u4EA7\u5B89\u5168")],-1)),k={class:"out-shop__main"},C=["src"],N={class:"out-shop__footer"},S={__name:"outshoping",setup(s){let _=p([]);return d(async()=>{try{const{data:t}=await f({module:"shop"});_.value=t.shop_images}catch{}}),(t,j)=>{const c=x;return o(),a("div",I,[b,e("div",k,[(o(!0),a(u,null,l(h(_),(n,r)=>(o(),a("img",{key:r,src:n,style:{width:"140px",height:"140px"}},null,8,C))),128))]),e("div",N,[g(c,{type:"primary",size:"large"},{default:m(()=>[v("\u7EE7\u7EED\u8DF3\u8F6C")]),_:1})])])}}};var F=i(S,[["__scopeId","data-v-ceb15e2c"]]);export{F as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/pagination.6dd4de10.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/placeOrder.990675f2.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/postDetail.37de1f37.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/postDetail.5f6fb362.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 5
dist/assets/progress.6f33c4d0.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/qiandao.vue_vue_type_style_index_0_scoped_true_lang.808c3fe6.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/radio.e15b8d9d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/setting.70efc0fb.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/setting.c6dbdcb5.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/sign.0cd5c31b.js


+ 0 - 1
dist/assets/throttle.2d532a59.js

@@ -1 +0,0 @@
-import{aJ as n,aK as l}from"./index.15723585.js";var g="Expected a function";function f(i,t,r){var a=!0,e=!0;if(typeof i!="function")throw new TypeError(g);return n(r)&&(a="leading"in r?!!r.leading:a,e="trailing"in r?!!r.trailing:e),l(i,t,{leading:a,maxWait:t,trailing:e})}export{f as t};

+ 0 - 1
dist/assets/topic.94cd9d78.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const r=o=>t({params:o,method:"GET",url:"topic"}),e=o=>t({params:o,method:"GET",url:"topic/category"});export{e as c,r as l};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/topic.9c2a41c6.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/usePost.bee8700b.js


+ 0 - 1
dist/assets/video.02b6b3c0.js

@@ -1 +0,0 @@
-import{R as t}from"./index.15723585.js";const i=o=>t({params:o,method:"GET",url:"video"}),s=o=>t({data:o,method:"POST",url:"video"}),d=o=>t({params:o,method:"GET",url:`video/${o.id}`});export{d as i,i as l,s as p};

+ 0 - 1
dist/assets/video.26ad1026.js

@@ -1 +0,0 @@
-import{E as o,R as c}from"./Routers.50e6218c.js";import{_ as l,j as s,I as _,o as r,a as f,b as t,l as i,P as p,ey as v,p as n,i as m}from"./index.15723585.js";/* empty css                                                            */const x=e=>(n("data-v-fe11e6fa"),e=e(),m(),e),h={class:"personal-container",style:{display:"flex"}},u=p('<div style="width:840px;" data-v-fe11e6fa><div class="back" data-v-fe11e6fa>\u89C6\u9891\u7BA1\u7406</div><div class="video" style="display:flex;" data-v-fe11e6fa><img src="" style="width:120px;height:130px;" alt="" data-v-fe11e6fa><div style="margin-left:16px;height:130px;display:flex;flex-direction:column;justify-content:space-between;" data-v-fe11e6fa><div class="title" data-v-fe11e6fa>\u8FFD\u6C42\u5B8C\u7F8E\u7684\u73AF\u73AF\u76F8\u6263\uFF1A\u300A\u5F02\u5EA6\u4E4B\u52032\u300B\u6218\u6597\u7CFB</div><div class="time" data-v-fe11e6fa>2\u5C0F\u65F6\u524D\u521B\u5EFA 1\u4E2A\u5C0F\u65F6\u524D\u6709\u8FC7\u4FEE\u6539</div></div></div></div>',1),y={style:{"margin-left":"16px"},class:"personal-main flex-row flex-jc-sb"},g={class:"pm-side"},w=x(()=>t("div",{class:"gap"},null,-1)),I={__name:"video",setup(e){s("first");let d=s([]);return _(async()=>{try{const{data:a}=await v({});d.value=a}catch{}}),(a,S)=>(r(),f("div",h,[u,t("div",y,[t("div",g,[i(o),w,i(c)])])]))}};var E=l(I,[["__scopeId","data-v-fe11e6fa"]]);export{E as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/video.ceacf287.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/wallect.94e0488c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/wallet.vue_vue_type_style_index_0_scoped_true_lang.6c8e4f48.css


+ 0 - 1
dist/assets/zixun.fa0675cc.js

@@ -1 +0,0 @@
-import{_ as f,G as h,j as o,I as x,o as s,a as _,b as n,F as k,f as w,u as y,l as u,d as I,p as b,i as z}from"./index.15723585.js";import{E as B}from"./pagination.6dd4de10.js";/* empty css                      *//* empty css                                                          */import{Y as C}from"./Footer.26d567b7.js";import{I as E}from"./index.96a09abf.js";import{l as F}from"./news.09635ce7.js";const N=a=>(b("data-v-52734940"),a=a(),z(),a),S={class:"articles-container"},j=N(()=>n("div",{class:"title"},"\u7CBE\u9009\u8D44\u8BAF",-1)),q={class:"content-list flex-row flex-jc-sb"},L={class:"pagination-container"},U={__name:"zixun",setup(a){const p=h(),c=o(1),i=o(0),d=t=>{c.value=t,l()};let r=o([]);const l=async()=>{try{const{data:t}=await F({page:c.value,limit:12,is_page:1,is_boutique:1});r.value=t.list,i.value=t.total}catch{}};x(l);const m=t=>{p.push({name:"news",query:{id:t}})};return(t,V)=>{const g=B;return s(),_("div",S,[j,n("div",q,[(s(!0),_(k,null,w(y(r),(e,v)=>(s(),I(E,{key:v,onUpdate:Y=>m(e.id),title:e.title,"time-ago":e.published_at,"like-count":e.like_count,"comment-count":e.comment_count,image:e.image},null,8,["onUpdate","title","time-ago","like-count","comment-count","image"]))),128))]),n("div",L,[u(g,{background:"",layout:"prev, pager, next",total:i.value,"page-size":12,onCurrentChange:d},null,8,["total"])]),u(C)])}}};var D=f(U,[["__scopeId","data-v-52734940"]]);export{D as default};

+ 1 - 1
dist/index.html

@@ -6,7 +6,7 @@
   <link rel="icon" href="./favicon.ico" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title>Vite App</title>
-  <script type="module" crossorigin src="./assets/index.15723585.js"></script>
+  <script type="module" crossorigin src="./assets/index.c21938aa.js"></script>
   <link rel="stylesheet" href="./assets/index.d245aec5.css">
 </head>
 

+ 6 - 0
src/api/user.js

@@ -128,6 +128,12 @@ export const browse = data => request({
   method: 'GET',
   data
 })
+//勋章列表
+export const badge = data => request({
+  url: 'badge',
+  method: 'GET',
+  data
+})
 
 
 

+ 90 - 27
src/components/Comments/index.vue

@@ -23,33 +23,79 @@ const Props = defineProps({
     // article.文章, info.资讯, video.视频, post.帖子
     type: Number,
   },
+  comment_count: {
+    type: Number,
+  },
 });
+console.log("tupe", Props.type);
+const source_type = ref();
+if (Props.type == "articles") {
+  source_type.value = "article";
+} else if (Props.type == "video") {
+  source_type.value = "video";
+} else if (Props.type == "info") {
+  source_type.value = "info";
+} else if (Props.type == "post") {
+  source_type.value = "post";
+}
+//回复
+const textarea = ref();
+const replace1 = async () => {
+  try {
+    const { data } = await commentApi.collect({
+      source_type: source_type.value,
+      source_id: Props.id,
+      content: textarea.value,
+    });
+    textarea.value = "";
+  } catch (error) {}
+};
 
 //评论列表
 let commentList = ref([]);
 const __list__ = async () => {
   try {
     const { data } = await commentApi.list({
-      source_type: article,
-      source_id: 15,
+      source_type: source_type.value,
+      source_id: Props.id,
+      order_type: "desc",
+      order: currentCommentType.value == "hot" ? "like_count" : "id",
+    });
+    commentList.value = data.slice(0, 5);
+  } catch (error) {}
+};
+const showa = ref(true);
+const tomore = async () => {
+  try {
+    const { data } = await commentApi.list({
+      source_type: source_type.value,
+      source_id: Props.id,
       order_type: "desc",
       order: currentCommentType.value == "hot" ? "like_count" : "id",
     });
     commentList.value = data;
+    showa.value = false;
   } catch (error) {}
 };
 
 onMounted(__list__);
-
-// Listen currentCommentType
 watch(currentCommentType, () => {
-  console.log(
-    "%c current comment type >>>",
-    "background: blue; color: #fff",
-    currentCommentType.value
-  );
+  console.log(currentCommentType.value);
 });
 
+const end = ref(2);
+const childshow = ref(true);
+//更多
+const childmore = (num) => {
+  end.value = num;
+  childshow.value = ref(false);
+};
+
+const change = (type) => {
+  currentCommentType.value = type;
+  __list__();
+};
+
 //评论列表
 </script>
 
@@ -57,30 +103,33 @@ watch(currentCommentType, () => {
   <div class="comment-container">
     <div class="comment-header flex-row flex-aic flex-jc-sb">
       <!-- TODO: 标题位置根据类型更改 -->
-      <div class="total">{{ total }}条评论</div>
+      <div class="total">{{ Props.comment_count }}条评论</div>
       <div class="btns">
         <el-button
           :type="currentCommentType === 'hot' ? 'primary' : ''"
-          @click="currentCommentType = 'hot'"
+          @click="change('hot')"
           >最热</el-button
         >
         <el-button
           :type="currentCommentType === 'new' ? 'primary' : ''"
-          @click="currentCommentType = 'new'"
+          @click="change('new')"
           >最新</el-button
         >
       </div>
     </div>
     <!-- TODO: 书写评论与登录 -->
-    <div class="comment-wrapper flex-row flex-aic flex-jc-sb">
+    <div
+      style="margin-top: 10px"
+      class="comment-wrapper flex-row flex-aic flex-jc-sb"
+    >
       <div class="avatar">
         <!-- <img class="circle" :src="commentList.user.avatar" alt="" /> -->
       </div>
       <div class="comment-wrapper__main">
-        <el-input placeholder="发表一下你的想法吧" />
+        <el-input placeholder="发表一下你的想法吧" v-model="textarea" />
       </div>
       <div class="comment-wrapper__btn">
-        <el-button type="primary">评论</el-button>
+        <el-button type="primary" @click="replace1">评论</el-button>
       </div>
     </div>
     <!-- TODO: 评论列表 -->
@@ -88,22 +137,36 @@ watch(currentCommentType, () => {
       <dl v-for="(item, idx) in commentList" :key="idx">
         <dt>
           <CommentRow
+            :source_type="source_type"
             :name="item.user.username"
             reply=""
             :descs="item.content"
+            :like_count="item.like_count"
+            :comment_count="item.comment_count"
+            :parent_id="item.id"
+            :source_id="Props.id"
+            :crateTime="item.created_at"
+            @list="__list__"
           />
         </dt>
-        <dd v-for="(child, index) in item.children" :key="index">
-          <CommentRow :name="child.user.username" />
-        </dd>
-        <dd>
-          <CommentRow reply="" descs="顶贴顶贴顶贴顶贴顶贴" />
-        </dd>
-        <dd>
-          <CommentRow />
+        <dd v-for="(child, index) in item.children.slice(0, end)" :key="index">
+          <CommentRow
+            :source_type="source_type"
+            :crateTime="child.created_at"
+            :reply="child.parent_user.username"
+            :name="child.user.username"
+            :descs="child.content"
+            :like_count="child.like_count"
+            :comment_count="child.comment_count"
+            :parent_id="child.id"
+            :source_id="Props.id"
+          />
         </dd>
-        <dd v-if="item.children.length > 3">
-          <span class="comment-list-more">
+        <dd v-if="item.children.length > 3 && childshow == true">
+          <span
+            class="comment-list-more"
+            @click="childmore(item.children.length)"
+          >
             查看全部回复<el-icon>
               <ArrowDown></ArrowDown>
             </el-icon>
@@ -112,8 +175,8 @@ watch(currentCommentType, () => {
       </dl>
     </div>
     <!-- TODO: see more -->
-    <div v-if="commentList.length > 3" class="comment-morebox">
-      <span style="cursor: pointer">点击查看更多评论</span>
+    <div v-if="commentList.length > 4 && showa == true" class="comment-morebox">
+      <span style="cursor: pointer" @click="tomore">更多评论</span>
     </div>
   </div>
 </template>

+ 78 - 5
src/components/Comments/row.vue

@@ -1,7 +1,9 @@
 <script setup name="CommentRow">
-import { computed } from "vue";
+import { computed, ref } from "vue";
 
 import { placeholderPic } from "~/utils/util";
+//评论接口
+import * as commentApi from "~/api/comment";
 
 const Props = defineProps({
   name: {
@@ -14,16 +16,57 @@ const Props = defineProps({
   },
   crateTime: {
     type: String,
-    default: Date.now(),
   },
   descs: {
     type: String,
     default: "铁子们🥰可以互相点赞互关么,增加一下账号的活跃度,有关必回🖐",
   },
+  comment_count: {
+    type: Number,
+    default: 0,
+  },
+  like_count: {
+    type: Number,
+    default: 0,
+  },
+  parent_id: {
+    type: Number,
+    default: 0,
+  },
+  source_id: {
+    type: Number,
+    default: 0,
+  },
+  source_type: {
+    type: String,
+    default: "",
+  },
 });
 
 // 是否有回复
 const existReply = computed(() => !!Props.reply);
+const dialogVisible = ref(false);
+const replace = () => {
+  dialogVisible.value = true;
+};
+//回复
+const emit = defineEmits(["todetails"]);
+const todetails = () => {
+  emit("list");
+};
+const textarea = ref();
+const replace1 = async () => {
+  try {
+    const { data } = await commentApi.collect({
+      source_type: Props.source_type,
+      source_id: Props.source_id,
+      content: textarea.value,
+      parent_id: Props.parent_id,
+    });
+    dialogVisible.value = false;
+    todetails();
+  } catch (error) {}
+};
 </script>
 
 <template>
@@ -37,27 +80,57 @@ const existReply = computed(() => !!Props.reply);
           <a href="javascript:void(0);" class="crcuname">{{ name }}</a>
           <template v-if="existReply">
             <span>回复</span>
-            <a href="javascript:void(0);" class="crconame">@{{ reply }}</a>
+            <a href="javascript:void(0);" class="crconame">{{ reply }}</a>
           </template>
         </div>
-        <div class="timebox">· {{ crateTime }}</div>
+        <div class="timebox">· {{ Props.crateTime }}</div>
       </div>
       <p class="comment-row-main__descs">{{ descs }}</p>
       <ul class="comment-row-main__footer flex-row">
         <li>
           <SvgIcon name="like" :size="22" :rgap="2" color="#888888" />
           <span>赞</span>
+          <span>{{ Props.like_count }}</span>
         </li>
-        <li>
+        <li @click="replace">
           <SvgIcon name="message" :size="22" :rgap="2" color="#888888" />
           <span>回复</span>
+          <span>{{ Props.comment_count }}</span>
         </li>
       </ul>
     </div>
   </div>
+  <!-- 回复窗口 -->
+  <el-dialog v-model="dialogVisible" title="回复" width="500">
+    <div>
+      <el-input
+        v-model="textarea"
+        :rows="3"
+        type="textarea"
+        placeholder="请输入"
+      />
+    </div>
+    <div style="display: flex; justify-content: end; margin-top: 20px">
+      <div class="btn" @click="replace1">回复</div>
+    </div>
+  </el-dialog>
 </template>
 
 <style lang="scss" scoped>
+.btn {
+  width: 60px;
+  height: 46px;
+  background: #00b0b0;
+  border-radius: 4px;
+  font-family: PingFangSC, PingFang SC;
+  font-weight: 500;
+  font-size: 16px;
+  color: #ffffff;
+  line-height: 46px;
+  text-align: center;
+  font-style: normal;
+  cursor: pointer;
+}
 .comment-row {
   &-avatar {
     margin-right: 12px;

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

@@ -94,7 +94,7 @@ const shareLink = () => {};
 <style lang="scss" scoped>
 .index-section {
   &-container {
-    width: 279px;
+    width: 275px;
     height: 337px;
     background-color: #fff;
     border-radius: 6px;

+ 57 - 22
src/components/layouts/Header.vue

@@ -10,17 +10,18 @@ import * as qianApi from "~/api/qiandao";
 import { getPicUrl } from "~/utils/util";
 import * as taskApi from "~/api/task";
 import { useRouter } from "vue-router";
-const tosuccess = (type)=>{
-  if(type=='browse'){
+import * as userApi from "~/api/user";
+const tosuccess = (type) => {
+  if (type == "browse") {
     router.replace({
-      name:'Forum'
-    })
-  }else if(type=='share_post'){
+      name: "Forum",
+    });
+  } else if (type == "share_post") {
     router.replace({
-      name:'Articles'
-    })
+      name: "Articles",
+    });
   }
-}
+};
 
 const router = useRouter();
 // 弹出层
@@ -50,6 +51,14 @@ const __task__ = async () => {
   } catch (error) {}
 };
 onMounted(__task__);
+const imglist = ref();
+const __badge__ = async () => {
+  try {
+    const { data } = await userApi.badge({});
+    imglist.value = data;
+  } catch (error) {}
+};
+onMounted(__badge__);
 
 const User = useUser();
 console.log("user", User.name);
@@ -134,6 +143,25 @@ const toinform = (idx) => {
       path: "/conversion",
       query: {},
     });
+  } else if (idx == 2) {
+    router.push({
+      path: "/",
+    });
+  } else if (idx == 1) {
+    router.push({
+      path: "/make",
+      query: {
+        type: 1,
+      },
+    });
+  } else if (idx == 3) {
+    router.push({
+      path: "/sign",
+    });
+  } else if (idx == 4) {
+    router.push({
+      path: "/wallet",
+    });
   }
 };
 
@@ -282,17 +310,26 @@ const attention = (idx) => {
           <el-popover placement="bottom-start" :width="276" trigger="click">
             <template #reference>
               <div class="userinfo-avatar">
-                <img class="circle" :src="User.avatar" :alt="User.name" />
+                <img class="circle" :src="User.avatar" alt="" />
               </div>
             </template>
             <div class="userinfo-container uc">
-              <div class="uc__avatar" @click="topersonal">
-                <img class="circle" :src="User.avatar" :alt="User.name" />
-              </div>
-              <div class="uc__name">{{ User.name }}</div>
-              <!-- TODO: 用户徽章 -->
-              <div class="uc__flags">
-                <img src="" alt="" />
+              <div style="display: flex">
+                <div class="uc__avatar" @click="topersonal">
+                  <img class="circle" :src="User.avatar" alt="" />
+                </div>
+                <div style="margin-left: 10px">
+                  <div class="uc__name">{{ User.name }}</div>
+                  <!-- TODO: 用户徽章 -->
+                  <div class="uc__flags">
+                    <img
+                      v-for="(item, idx) in imglist"
+                      :key="idx"
+                      :src="item.image"
+                      alt=""
+                    />
+                  </div>
+                </div>
               </div>
               <div class="uc__integral flex-row flex-aic flex-jc-sb">
                 <span class="integral_text"
@@ -427,9 +464,9 @@ const attention = (idx) => {
                       alt=""
                     />
                   </div>
-                  <div class="label" @click="toinform(4)">签到奖励</div>
+                  <div class="label">签到奖励</div>
                 </div>
-                <div class="itembox">
+                <div class="itembox" @click="toinform(4)">
                   <div class="icon">
                     <img
                       src="../../assets/cicons/header-05.png"
@@ -727,7 +764,6 @@ const attention = (idx) => {
       &__avatar {
         width: 58px;
         height: 58px;
-        margin: auto;
         border-radius: 50%;
 
         img {
@@ -742,12 +778,11 @@ const attention = (idx) => {
         font-weight: 600;
         color: #222222;
         line-height: 17px;
-        text-align: center;
-        padding: 8px 0;
+        // padding: 8px 0;
       }
 
       &__flags {
-        text-align: center;
+        // text-align: center;
 
         img {
           width: 12px;

+ 5 - 3
src/router/index.js

@@ -137,11 +137,13 @@ const routes = [
       },
       {
         path: '/forum/topic/:id',
-        // meta: {
-        //   title: '【xxxx】话题'
-        // },
         name: 'ForumTopic',
         component: () => import('~/views/forum/topic.vue')
+      },
+      {
+        path: '/topic',
+        name: 'topic',
+        component: () => import('~/views/postDetail.vue')
       }
     ]
   },

+ 14 - 14
src/utils/request.js

@@ -14,7 +14,7 @@ const service = axios.create({
 service.interceptors.request.use(
   config => {
     console.log('%c config >>>', 'background: blue; color: #fff', config);
-    
+
     // NOTE: 上传接口 `content-type`有变化
     if (config.url === 'upload/upload') {
       config.headers['Content-Type'] = "multipart/form-data"
@@ -56,19 +56,19 @@ service.interceptors.response.use(
     if (res.code !== 10000) {
       // place relogin 20001
       if (res.code === 20001) {
-        ElMessageBox.confirm(
-          '登录已退出,请重新登录',
-          'Warning',
-          {
-            confirmButtonText: 'OK',
-            cancelButtonText: 'Cancel',
-            type: 'warning',
-          }
-        )
-          .then(() => {
-            const User = useUser()
-            User.resetLogin()
-          })
+        // ElMessageBox.confirm(
+        //   // '登录已退出,请重新登录',
+        //   // 'Warning',
+        //   // {
+        //   //   confirmButtonText: 'OK',
+        //   //   cancelButtonText: 'Cancel',
+        //   //   type: 'warning',
+        //   // }
+        // )
+        // .then(() => {
+        //   const User = useUser()
+        //   User.resetLogin()
+        // })
       } else {
         ElMessage({
           message: res.msg || 'Error',

+ 1 - 0
src/views/forum/index.vue

@@ -149,6 +149,7 @@ onMounted(() => {
             type="forum"
             :detail="item"
             @refresh="handleRefreshListData"
+            @click="todetail(item.id)"
           />
         </template>
       </div>

+ 23 - 13
src/views/market/details.vue

@@ -63,7 +63,7 @@ let count = ref(1);
 </script>
 
 <template>
-  <div class="goods-container">
+  <div class="goods-container" style="padding: 24px">
     <div class="goods-header flex-row">
       <div class="imgbox">
         <div>
@@ -82,19 +82,29 @@ let count = ref(1);
           </li>
         </ul>
       </div>
-      <div class="infobox">
-        <h3 class="title">{{ details.name }}</h3>
-        <div class="price flex-row flex-aic">
-          <span class="label">商品价格&nbsp;</span>
-          <div class="pir">
-            <span>{{ details.price }}</span
-            >价格
+      <div
+        class="infobox"
+        style="
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
+          height: 400px;
+        "
+      >
+        <div>
+          <h3 class="title">{{ details.name }}</h3>
+          <div class="price flex-row flex-aic">
+            <span class="label">商品价格&nbsp;</span>
+            <div class="pir">
+              <span>{{ details.price }}</span
+              >价格
+            </div>
           </div>
-        </div>
-        <div class="counts flex-row flex-aic">
-          <span class="label">数量</span>
-          <div class="counts__main">
-            <el-input-number v-model="count" :min="1" />
+          <div class="counts flex-row flex-aic">
+            <span class="label">数量</span>
+            <div class="counts__main">
+              <el-input-number v-model="count" :min="1" />
+            </div>
           </div>
         </div>
         <!-- <div class="category flex-row flex-aic">

+ 5 - 2
src/views/market/index.vue

@@ -6,8 +6,8 @@ import * as jifenApi from "~/api/jifen";
 import { useRouter } from "vue-router";
 const router = useRouter();
 //积分商城列表
-let jiList = ref([]);
-let total = ref();
+const jiList = ref([]);
+const total = ref(0);
 const __news__ = async () => {
   try {
     const { data } = await jifenApi.list({
@@ -16,6 +16,7 @@ const __news__ = async () => {
     });
     jiList.value = data.list;
     total.value = data.total;
+    console.log("total", data.total);
   } catch (error) {}
 };
 
@@ -35,6 +36,7 @@ const todetails = (id) => {
 let page = ref(1);
 const handleCurrentChange = (val) => {
   page.value = val;
+  __news__();
 };
 
 // let imgPath = placeholderPic(280, 280);
@@ -80,6 +82,7 @@ const conversion = () => {
 
     <div class="pagination-container">
       <el-pagination
+        :page-size="8"
         @current-change="handleCurrentChange"
         background
         layout="prev, pager, next"

+ 0 - 1
src/views/market/placeOrder.vue

@@ -167,7 +167,6 @@ const result = () => {
 const you = ref(0);
 const couponid = ref();
 const changeyou = (idx) => {
-  console.log("couponc", oupon.value[7]);
   couponid.value = coupon.value[idx].coupon.id;
   you.value = coupon.value[idx].coupon.amount;
 };

+ 7 - 1
src/views/personal/components/ExperienceCard.vue

@@ -38,6 +38,12 @@ const tosuccess = (type)=>{
     })
   }
 }
+//编辑信息
+const toinfo = ()=>{
+  router.push({
+    path:'/setting'
+  })
+}
 </script>
 
 <template>
@@ -128,7 +134,7 @@ const tosuccess = (type)=>{
       <el-button type="primary" @click="handleAboutMember">{{
         User.is_vip ? "会员续费" : "开通会员"
       }}</el-button>
-      <el-button>编辑信息</el-button>
+      <el-button @click="toinfo">编辑信息</el-button>
     </div>
   </div>
   <ActivateMembership :visiblePay="pan" />

+ 294 - 16
src/views/personal/components/qiandao.vue

@@ -101,8 +101,9 @@
     </div>
   </div>
   <!-- 地址选择 -->
+  <!-- 地址选择 -->
   <el-dialog title="地址选择" v-model="dialogVisible" width="652px">
-    <div style="">
+    <div style="" v-if="arrlist.length > 0">
       <div
         :class="ind == idx ? 'activeb' : 'active1'"
         style="
@@ -111,8 +112,9 @@
           margin-top: 16px;
           align-items: center;
         "
-        v-for="(item, idx) in addList"
+        v-for="(item, idx) in arrlist"
         :key="idx"
+        @click="change(idx, item.id)"
       >
         <div>
           <div>
@@ -123,50 +125,188 @@
           </div>
           <div class="address">{{ item.full_address }}</div>
         </div>
-        <div class="compile">编辑</div>
+        <div class="compile" style="cursor: pointer" @click="compile(item.id)">
+          编辑
+        </div>
       </div>
     </div>
+    <div style="text-align: center; margin: 10px 0" v-else>暂无数据</div>
     <div class="btn">
       <span style="color: rgba(0, 176, 176, 1); font-size: 20px">+</span>
-      <span style="margin-left: 3px; color: rgba(0, 176, 176, 1)">新增</span>
+      <span
+        style="margin-left: 3px; color: rgba(0, 176, 176, 1); cursor: pointer"
+        @click="dialogFormVisible = true"
+        >新增</span
+      >
     </div>
     <template #footer>
       <span class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false"
-          >确 定</el-button
-        >
+        <el-button type="primary" @click="info">确 定</el-button>
       </span>
     </template>
   </el-dialog>
+  <!-- 弹出框 -->
+  <el-dialog
+    style="width: 540px"
+    title="添加收货地址"
+    v-model="dialogFormVisible"
+  >
+    <el-form
+      :model="form"
+      :rules="rules"
+      label-position="right"
+      label-width="100px"
+    >
+      <el-form-item prop="name" label="收货人" :label-width="formLabelWidth">
+        <el-input
+          style="width: 378px"
+          v-model="form.name"
+          placeholder="请输入"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="所在地区" :label-width="formLabelWidth">
+        <el-select
+          style="width: 118px"
+          v-model="provincename"
+          prop="region"
+          placeholder="请选择"
+          @change="province"
+        >
+          <el-option
+            v-for="(item, idx) in arealistb"
+            :key="idx"
+            :label="item.name"
+            :value="item"
+          ></el-option>
+        </el-select>
+        <el-select
+          style="width: 118px; margin-left: 12px"
+          v-model="cityname"
+          placeholder="请选择"
+          @change="city"
+        >
+          <el-option
+            v-for="(item, idx) in arealistc"
+            :key="idx"
+            :label="item.name"
+            :value="item"
+          ></el-option>
+        </el-select>
+        <el-select
+          style="width: 118px; margin-left: 12px"
+          v-model="districtname"
+          placeholder="请选择"
+          @change="district"
+        >
+          <el-option
+            v-for="(item, idx) in citylist"
+            :key="idx"
+            :label="item.name"
+            :value="item"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="name" label="详细地址" :label-width="formLabelWidth">
+        <el-input
+          style="width: 378px"
+          v-model="form.address"
+          placeholder="请输入"
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="name" label="手机号码" :label-width="formLabelWidth">
+        <el-input
+          style="width: 378px"
+          v-model="form.mobile"
+          placeholder="请输入"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="设为默认地址" :label-width="formLabelWidth">
+        <!-- <el-radio-group > -->
+        <el-radio v-model="form.is_default" :label="1">是</el-radio>
+        <el-radio v-model="form.is_default" :label="0">否</el-radio>
+        <!-- </el-radio-group> -->
+      </el-form-item>
+    </el-form>
+    <div style="" class="saveadd" @click="saveadd">保存收货地址</div>
+  </el-dialog>
 </template>
     
 <script setup>
-import { onMounted, ref } from "vue";
+import { onMounted, ref, reactive } from "vue";
 import { QD_LIST } from "~/utils/constance";
 import debounce from "loadsh/debounce";
 import * as qdApi from "~/api/qiandao";
 import * as addressApi from "~/api/address";
+import * as addApi from "~/api/address";
 
 //地址列表
-const addList = ref([]);
-const __add__ = async () => {
+// const addList = ref([]);
+// const __add__ = async () => {
+//   try {
+//     const { data } = await addressApi.list({
+//       is_page: 0,
+//     });
+//     addList.value = data;
+//   } catch (error) {}
+// };
+// onMounted(__add__);
+//获取地址列表
+const arrlist = ref([]);
+//默认地址
+const defaultid = ref();
+const defaultadd = ref([]);
+const list = async () => {
   try {
-    const { data } = await addressApi.list({
+    const { data } = await addApi.list({
       is_page: 0,
     });
-    addList.value = data;
+    arrlist.value = data;
+    var defaultAddress = [];
+    data.forEach((item) => {
+      if (item.is_default == 1) {
+        defaultAddress.push(item);
+      }
+    });
+    defaultadd.value = defaultAddress;
+    defaultid.value = defaultAddress[0].id;
+  } catch (error) {}
+};
+onMounted(list);
+
+//打开模态框
+//地址更换
+const ind = ref(0);
+const change = (idx, id) => {
+  ind.value = idx;
+  defaultid.value = id;
+};
+//地址详情
+const info = () => {
+  if (defaultid.value) {
+    infoa();
+  } else {
+    ElMessage.warning({
+      message: "请选择地址",
+      type: "warning",
+    });
+  }
+};
+const infoa = async () => {
+  try {
+    const { data } = await addApi.info({
+      id: defaultid.value,
+    });
+    defaultadd.value[0] = data;
+    dialogVisible.value = false;
   } catch (error) {}
 };
-onMounted(__add__);
 
 const dialogVisible = ref(true);
 // const get = () => {
 //   dialogVisible.value = true;
 // };
-const get = () => {
-  console.log(1111);
-};
+const get = () => {};
 //领取商品
 // const get = async () => {
 //   console.log(1111);
@@ -178,6 +318,144 @@ const get = () => {
 //     });
 //   } catch (error) {}
 // };
+//弹出框
+const dialogFormVisible = ref(false);
+const form = reactive({
+  name: "",
+  mobile: "",
+  province_id: "",
+  city_id: "",
+  district_id: "",
+  address: "",
+  is_default: 0,
+});
+
+//编辑
+const compilevalue = ref(0);
+const compileid = ref();
+const compile = (id) => {
+  compilevalue.value = 1;
+  compileid.value = id;
+  dialogFormVisible.value = true;
+  __addinfo__(id);
+};
+//详情
+const __addinfo__ = async (id) => {
+  try {
+    const { data } = await addApi.info({
+      id: id,
+    });
+    form.name = data.name;
+    form.mobile = data.mobile;
+    form.province_id = data.province_id;
+    form.city_id = data.city_id;
+    form.district_id = data.district_id;
+    form.address = data.address;
+    form.is_default = data.is_default;
+    provincename.value = data.province_name;
+    cityname.value = data.city_name;
+    districtname.value = data.district_name;
+  } catch (error) {}
+};
+//省级切换
+const province = (value) => {
+  __errlist__(value.id);
+  provincename.value = value.name;
+  form.province_id = value.id;
+};
+const city = (value) => {
+  console.log(value);
+  __citylist__(value.id);
+  cityname.value = value.name;
+  form.city_id = value.id;
+};
+const districtname = ref();
+const district = (value) => {
+  districtname.value = value.name;
+  form.district_id = value.id;
+};
+//保存地址
+const saveadd = () => {
+  if (compilevalue.value == 1) {
+    __put__();
+  } else {
+    __multipart__();
+  }
+  list();
+};
+//添加
+const __multipart__ = async () => {
+  try {
+    const { data } = await addApi.multipart({
+      ...form,
+      is_default: 0,
+    });
+    dialogFormVisible.value = false;
+    ElMessage.success({
+      message: "添加成功",
+      type: "success",
+    });
+  } catch (error) {}
+};
+//更新
+const __put__ = async () => {
+  try {
+    const { data } = await addApi.put({
+      id: compileid.value,
+      ...form,
+    });
+    dialogFormVisible.value = false;
+    compilevalue.value = 0;
+    form.name = "";
+    form.mobile = "";
+    form.province_id = "";
+    form.city_id = "";
+    form.district_id = "";
+    form.address = "";
+    form.is_default = "";
+    provincename.value = "";
+    cityname.value = "";
+    districtname.value = "";
+    ElMessage.success({
+      message: "编辑成功",
+      type: "success",
+    });
+  } catch (error) {}
+};
+//地区列表
+const provincename = ref();
+const cityname = ref();
+const addlista = ref(0);
+const arealistb = ref([]);
+const __addlist__ = async () => {
+  try {
+    const { data } = await addApi.arealist({
+      parent_id: addlista.value,
+    });
+    arealistb.value = data;
+  } catch (error) {}
+};
+onMounted(__addlist__);
+// 地区
+const arealistc = ref([]);
+const __errlist__ = async (id) => {
+  try {
+    const { data } = await addApi.arealist({
+      parent_id: id,
+    });
+    arealistc.value = data;
+  } catch (error) {}
+};
+//区
+const citylist = ref([]);
+const __citylist__ = async (id) => {
+  try {
+    const { data } = await addApi.arealist({
+      parent_id: id,
+    });
+    citylist.value = data;
+  } catch (error) {}
+};
 
 //奖励列表
 const qdList = ref([]);

+ 40 - 1
src/views/personal/foot.vue

@@ -13,7 +13,8 @@
           <div
             v-for="(child, index) in item.list"
             :key="index"
-            style="margin-top: 24px; margin-right: 16px"
+            @click="todetail(child.source_id, child.source_type)"
+            style="margin-top: 24px; margin-right: 16px; cursor: pointer"
           >
             <div>
               <img
@@ -47,7 +48,45 @@ import Routers from "./components/Routers.vue";
 import * as commonApi from "~/api/common";
 const activeName = ref("first");
 import * as userApi from "~/api/user";
+import { useRouter } from "vue-router";
 //tabs切换
+//跳转到详情
+const router = useRouter();
+const todetail = (id, type) => {
+  if (type == "article") {
+    router.push({
+      name: "articles",
+      query: {
+        id: id,
+        type: type,
+      },
+    });
+  } else if (type == "info") {
+    router.push({
+      name: "news",
+      query: {
+        id: id,
+        type: type,
+      },
+    });
+  } else if (type == "integral_goods") {
+    router.push({
+      path: "/store/pointshoping/:id",
+      query: {
+        id: id,
+        type: type,
+      },
+    });
+  } else if (type == "post") {
+    router.push({
+      path: "/topic",
+      query: {
+        id: id,
+        type: type,
+      },
+    });
+  }
+};
 
 //我的足迹列表
 let commList = ref([]);

+ 11 - 3
src/views/personal/make.vue

@@ -192,14 +192,23 @@ import ExperienceCard from "./components/ExperienceCard.vue";
 import Routers from "./components/Routers.vue";
 import * as shootApi from "~/api/subscribe";
 import * as userApi from "~/api/user";
+import { useRoute } from "vue-router";
 import {
   ArrowLeft,
   LocationFilled,
   WarningFilled,
   SuccessFilled,
 } from "@element-plus/icons-vue";
-const activeName = ref("first");
+//tabs切换
+const type = ref("");
+const route = useRoute();
 const taps = ref(0);
+const activeName = ref("first");
+if (route.query.type) {
+  activeName.value = "second";
+  type.value = 1;
+}
+
 //预约切换
 const make = (idx) => {
   taps.value = idx;
@@ -207,8 +216,7 @@ const make = (idx) => {
 const visibilityDialog = ref(false);
 const bang = ref("+86");
 
-//tabs切换
-const type = ref("");
+
 const handleClick = (tab) => {
   if (tab.index == 0) {
     type.value = 0;

+ 17 - 13
src/views/postDetail.vue

@@ -24,17 +24,17 @@ const toid = () => {
   return Route.query.id;
 };
 //评论
-let comment = ref([]);
-const __comment__ = async () => {
-  try {
-    const { data } = await commentApi.list({
-      source_type: " article",
-      source_id: Route.query.id,
-    });
-    comment.value = data;
-  } catch (error) {}
-};
-onMounted(__comment__);
+// let comment = ref([]);
+// const __comment__ = async () => {
+//   try {
+//     const { data } = await commentApi.list({
+//       source_type: " article",
+//       source_id: Route.query.id,
+//     });
+//     comment.value = data;
+//   } catch (error) {}
+// };
+// onMounted(__comment__);
 //分享
 const dialogVisible = ref(false);
 var url = window.location.href;
@@ -143,7 +143,7 @@ if (Route.name == "news") {
 } else if (Route.name == "articles") {
   detaildType.value = "articles";
   onMounted(__articlesDetail__);
-} else if (Route.name == "video") {
+} else if (Route.name == "videos") {
   detaildType.value = "video";
   onMounted(__videoDetail__);
   type.value = Route.query.type;
@@ -254,7 +254,11 @@ console.log("%c route >>>", "background: blue; color: #fff", Route, Route.name);
         </span>
       </div>
     </div>
-    <Comments :type="detaildType" :id="toid()" />
+    <Comments
+      :comment_count="details.comment_count"
+      :type="detaildType"
+      :id="toid()"
+    />
   </div>
   <el-dialog title="分享" v-model="dialogVisible" width="500px">
     <div style="display: flex">

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است