init
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
||||
@@ -0,0 +1,81 @@
|
||||
import{r as o,o as y,j as m,h as a,g as s,v as t,i as n}from"./.pnpm.8fb36023.js";const _={class:"markdown-body"},x=n("p",{class:"describe-plugin"},"\u901A\u7528\u7684\u5F02\u5E38\u9875\u9762\u3002",-1),b=n("p",null,[t("\u4F7F\u7528 "),n("code",null,"lay-exception"),t(" \u6807\u7B7E, \u521B\u5EFA\u4E00\u4E2A\u5F02\u5E38\u9875\u9762")],-1),f=n("pre",null,[n("code",{"v-pre":""},[n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-exception")]),t(),n("span",{class:"token attr-name"},"status"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("401"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"title"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("401"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"describe"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("\u8EAB\u4EFD\u8BA4\u8BC1\u5931\u8D25"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),t(),n("span",{class:"token attr-name"},"#extra"),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t("\u5237\u65B0"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),t(),n("span",{class:"token attr-name"},"type"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("primary"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t("\u8FD4\u56DE"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-exception")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("script")]),n("span",{class:"token punctuation"},">")]),n("span",{class:"token script"},[n("span",{class:"token language-javascript"},[t(`
|
||||
`),n("span",{class:"token keyword"},"import"),t(),n("span",{class:"token punctuation"},"{"),t(" ref "),n("span",{class:"token punctuation"},"}"),t(),n("span",{class:"token keyword"},"from"),t(),n("span",{class:"token string"},"'vue'"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"export"),t(),n("span",{class:"token keyword"},"default"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token function"},"setup"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"return"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`)])]),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("script")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`)])],-1),v=n("p",null,[t("\u4F7F\u7528 "),n("code",null,"lay-exception"),t(" \u6807\u7B7E, \u521B\u5EFA\u4E00\u4E2A\u5F02\u5E38\u9875\u9762")],-1),h=n("pre",null,[n("code",{"v-pre":""},[n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-exception")]),t(),n("span",{class:"token attr-name"},"status"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("403"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"title"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("403"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"describe"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("\u6682\u65E0\u76F8\u5173\u6743\u9650"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),t(),n("span",{class:"token attr-name"},"#extra"),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t("\u5237\u65B0"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),t(),n("span",{class:"token attr-name"},"type"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("primary"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t("\u8FD4\u56DE"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-exception")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("script")]),n("span",{class:"token punctuation"},">")]),n("span",{class:"token script"},[n("span",{class:"token language-javascript"},[t(`
|
||||
`),n("span",{class:"token keyword"},"import"),t(),n("span",{class:"token punctuation"},"{"),t(" ref "),n("span",{class:"token punctuation"},"}"),t(),n("span",{class:"token keyword"},"from"),t(),n("span",{class:"token string"},"'vue'"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"export"),t(),n("span",{class:"token keyword"},"default"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token function"},"setup"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"return"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`)])]),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("script")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`)])],-1),w=n("p",null,[t("\u4F7F\u7528 "),n("code",null,"lay-exception"),t(" \u6807\u7B7E, \u521B\u5EFA\u4E00\u4E2A\u5F02\u5E38\u9875\u9762")],-1),q=n("pre",null,[n("code",{"v-pre":""},[n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-exception")]),t(),n("span",{class:"token attr-name"},"status"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("404"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"title"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("404"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"describe"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("\u8DF3\u8F6C\u9875\u9762\u5931\u8D25"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),t(),n("span",{class:"token attr-name"},"#extra"),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t("\u5237\u65B0"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),t(),n("span",{class:"token attr-name"},"type"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("primary"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t("\u8FD4\u56DE"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-exception")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("script")]),n("span",{class:"token punctuation"},">")]),n("span",{class:"token script"},[n("span",{class:"token language-javascript"},[t(`
|
||||
`),n("span",{class:"token keyword"},"import"),t(),n("span",{class:"token punctuation"},"{"),t(" ref "),n("span",{class:"token punctuation"},"}"),t(),n("span",{class:"token keyword"},"from"),t(),n("span",{class:"token string"},"'vue'"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"export"),t(),n("span",{class:"token keyword"},"default"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token function"},"setup"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"return"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`)])]),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("script")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`)])],-1),E=n("p",null,[t("\u4F7F\u7528 "),n("code",null,"lay-exception"),t(" \u6807\u7B7E, \u521B\u5EFA\u4E00\u4E2A\u5F02\u5E38\u9875\u9762")],-1),j=n("pre",null,[n("code",{"v-pre":""},[n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-exception")]),t(),n("span",{class:"token attr-name"},"status"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("500"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"title"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("500"),n("span",{class:"token punctuation"},'"')]),t(),n("span",{class:"token attr-name"},"describe"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("\u670D\u52A1\u53D1\u751F\u9519\u8BEF"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("template")]),t(),n("span",{class:"token attr-name"},"#extra"),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t("\u5237\u65B0"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("lay-button")]),t(),n("span",{class:"token attr-name"},"type"),n("span",{class:"token attr-value"},[n("span",{class:"token punctuation attr-equals"},"="),n("span",{class:"token punctuation"},'"'),t("primary"),n("span",{class:"token punctuation"},'"')]),n("span",{class:"token punctuation"},">")]),t("\u8FD4\u56DE"),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-button")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("lay-exception")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("template")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
|
||||
`),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"<"),t("script")]),n("span",{class:"token punctuation"},">")]),n("span",{class:"token script"},[n("span",{class:"token language-javascript"},[t(`
|
||||
`),n("span",{class:"token keyword"},"import"),t(),n("span",{class:"token punctuation"},"{"),t(" ref "),n("span",{class:"token punctuation"},"}"),t(),n("span",{class:"token keyword"},"from"),t(),n("span",{class:"token string"},"'vue'"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"export"),t(),n("span",{class:"token keyword"},"default"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token function"},"setup"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
|
||||
`),n("span",{class:"token keyword"},"return"),t(),n("span",{class:"token punctuation"},"{"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`),n("span",{class:"token punctuation"},"}"),t(`
|
||||
`)])]),n("span",{class:"token tag"},[n("span",{class:"token tag"},[n("span",{class:"token punctuation"},"</"),t("script")]),n("span",{class:"token punctuation"},">")]),t(`
|
||||
`)])],-1),N=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"\u5C5E\u6027"),n("th",null,"\u63CF\u8FF0"),n("th",null,"\u53EF\u9009\u503C")])]),n("tbody",null,[n("tr",null,[n("td",null,"title"),n("td",null,"\u6807\u9898"),n("td",null,"\u2013")]),n("tr",null,[n("td",null,"status"),n("td",null,"\u72B6\u6001"),n("td",null,[n("code",null,"403"),t(),n("code",null,"404"),t(),n("code",null,"500")])]),n("tr",null,[n("td",null,"describe"),n("td",null,"\u63CF\u8FF0\u4FE1\u606F"),n("td",null,"\u2013")])])],-1),C=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"\u5C5E\u6027"),n("th",null,"\u63CF\u8FF0"),n("th",null,"\u53EF\u9009\u503C")])]),n("tbody",null,[n("tr",null,[n("td",null,"extra"),n("td",null,"\u64CD\u4F5C"),n("td",null,"\u2013")])])],-1),B={style:{display:"flex","justify-content":"space-between","margin-top":"20px"}},T={},A={__name:"exception",setup(V,{expose:r}){return r({frontmatter:{}}),(z,I)=>{const g=o("lay-anchor"),p=o("lay-field"),e=o("lay-button"),c=o("lay-exception"),l=o("lay-code"),u=o("lay-table-box"),d=o("lay-contributor"),k=o("lay-icon"),i=o("router-link");return y(),m("div",_,[a(g,{anchors:"\u57FA\u672C\u4ECB\u7ECD,401,403,404,500,Exception \u5C5E\u6027,Exception \u63D2\u69FD",currIndex:-1,show:!0}),a(p,{id:"\u57FA\u672C\u4ECB\u7ECD",title:"\u57FA\u672C\u4ECB\u7ECD",style:{"margin-top":"21px","margin-bottom":"20px"}}),x,a(p,{id:"401",title:"401",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(l,null,{description:s(()=>[b]),code:s(()=>[f]),default:s(()=>[a(c,{status:"401",title:"401",describe:"\u8EAB\u4EFD\u8BA4\u8BC1\u5931\u8D25"},{extra:s(()=>[a(e,null,{default:s(()=>[t("\u5237\u65B0")]),_:1}),a(e,{type:"primary"},{default:s(()=>[t("\u8FD4\u56DE")]),_:1})]),_:1})]),_:1}),a(p,{id:"403",title:"403",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(l,null,{description:s(()=>[v]),code:s(()=>[h]),default:s(()=>[a(c,{status:"403",title:"403",describe:"\u6682\u65E0\u76F8\u5173\u6743\u9650"},{extra:s(()=>[a(e,null,{default:s(()=>[t("\u5237\u65B0")]),_:1}),a(e,{type:"primary"},{default:s(()=>[t("\u8FD4\u56DE")]),_:1})]),_:1})]),_:1}),a(p,{id:"404",title:"404",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(l,null,{description:s(()=>[w]),code:s(()=>[q]),default:s(()=>[a(c,{status:"404",title:"404",describe:"\u8DF3\u8F6C\u9875\u9762\u5931\u8D25"},{extra:s(()=>[a(e,null,{default:s(()=>[t("\u5237\u65B0")]),_:1}),a(e,{type:"primary"},{default:s(()=>[t("\u8FD4\u56DE")]),_:1})]),_:1})]),_:1}),a(p,{id:"500",title:"500",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(l,null,{description:s(()=>[E]),code:s(()=>[j]),default:s(()=>[a(c,{status:"500",title:"500",describe:"\u670D\u52A1\u53D1\u751F\u9519\u8BEF"},{extra:s(()=>[a(e,null,{default:s(()=>[t("\u5237\u65B0")]),_:1}),a(e,{type:"primary"},{default:s(()=>[t("\u8FD4\u56DE")]),_:1})]),_:1})]),_:1}),a(p,{id:"Exception \u5C5E\u6027",title:"Exception \u5C5E\u6027",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(u,null,{default:s(()=>[N]),_:1}),a(p,{id:"Exception \u63D2\u69FD",title:"Exception \u63D2\u69FD",style:{"margin-top":"21px","margin-bottom":"20px"}}),a(u,null,{default:s(()=>[C]),_:1}),a(d,{"file-path":"exception"}),n("div",B,[n("div",null,[a(i,{to:"/zh-CN/components/splitPanel",class:"lay-link",style:{display:""}},{default:s(()=>[a(k,{type:"layui-icon-left"}),t("\u5206\u5272\u9762\u677F")]),_:1})]),n("div",null,[a(i,{to:"/zh-CN/components/result",class:"lay-link",style:{display:""}},{default:s(()=>[t("\u7ED3\u679C "),a(k,{type:"layui-icon-right"})]),_:1})])])])}}};export{A as default,T as frontmatter};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,392 @@
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "LayTab",
|
||||
};
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import "./index.less";
|
||||
import { LayIcon } from "@layui/icons-vue";
|
||||
import tabItem from "../tabItem/index.vue";
|
||||
import RenderFunction from "../_components/renderFunction";
|
||||
import {
|
||||
Component,
|
||||
computed,
|
||||
useSlots,
|
||||
provide,
|
||||
VNode,
|
||||
Ref,
|
||||
ref,
|
||||
watch,
|
||||
shallowRef,
|
||||
onMounted,
|
||||
nextTick,
|
||||
CSSProperties,
|
||||
reactive,
|
||||
h,
|
||||
createTextVNode,
|
||||
Fragment,
|
||||
} from "vue";
|
||||
import { useResizeObserver } from "@vueuse/core";
|
||||
import { TabData, TabInjectKey, TabPosition } from "./interface";
|
||||
|
||||
export interface TabProps {
|
||||
type?: string;
|
||||
modelValue: string;
|
||||
allowClose?: boolean;
|
||||
tabPosition?: TabPosition;
|
||||
beforeClose?: Function;
|
||||
beforeLeave?: Function;
|
||||
activeBarTransition?: boolean;
|
||||
}
|
||||
|
||||
const slot = useSlots();
|
||||
const childrens: Ref<VNode[]> = ref([]);
|
||||
const tabMap = reactive(new Map<number, TabData>());
|
||||
|
||||
const setItemInstanceBySlot = function (nodes: VNode[]) {
|
||||
nodes?.map((item) => {
|
||||
let component = item.type as Component;
|
||||
if (item.type.toString() == "Symbol(Fragment)") {
|
||||
setItemInstanceBySlot(item.children as VNode[]);
|
||||
} else {
|
||||
if (component.name == tabItem.name) {
|
||||
childrens.value.push(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const props = withDefaults(defineProps<TabProps>(), {
|
||||
tabPosition: "top",
|
||||
});
|
||||
|
||||
const emit = defineEmits(["update:modelValue", "change", "close"]);
|
||||
|
||||
const active = computed({
|
||||
get() {
|
||||
return props.modelValue;
|
||||
},
|
||||
set(val) {
|
||||
emit("update:modelValue", val);
|
||||
},
|
||||
});
|
||||
|
||||
const tabItems = computed(() => {
|
||||
const tabData: TabData[] = [];
|
||||
childrens.value.forEach((item) => {
|
||||
const tab = tabMap.get(item.props?.id);
|
||||
if (tab) tabData.push(tab);
|
||||
});
|
||||
return tabData;
|
||||
});
|
||||
|
||||
const addItem = (id: number, data: any) => {
|
||||
tabMap.set(id, data);
|
||||
};
|
||||
|
||||
const removeItem = (id: number) => {
|
||||
tabMap.delete(id);
|
||||
};
|
||||
|
||||
provide(
|
||||
TabInjectKey,
|
||||
reactive({
|
||||
active: active,
|
||||
addItem,
|
||||
removeItem,
|
||||
})
|
||||
);
|
||||
|
||||
const change = function (id: any) {
|
||||
if (props.beforeLeave && props.beforeLeave(id) === false) {
|
||||
return;
|
||||
}
|
||||
emit("update:modelValue", id);
|
||||
emit("change", id);
|
||||
};
|
||||
|
||||
const close = function (index: number, id: any) {
|
||||
if (props.beforeClose && props.beforeClose(id) === false) {
|
||||
return;
|
||||
}
|
||||
childrens.value.splice(index, 1);
|
||||
if (active.value === id) {
|
||||
const nextChildren =
|
||||
childrens.value[index === childrens.value.length ? 0 : index];
|
||||
change(nextChildren && nextChildren.props ? nextChildren.props.id : "");
|
||||
}
|
||||
emit("close", id);
|
||||
};
|
||||
|
||||
const activeBarRef = shallowRef<HTMLElement | undefined>(undefined);
|
||||
const activeEl = shallowRef<HTMLElement | undefined>(undefined);
|
||||
const tabBarStyle = ref<CSSProperties>();
|
||||
const getBarStyle = () => {
|
||||
let offset = 0;
|
||||
let tabSize = 0;
|
||||
const sizeName =
|
||||
props.tabPosition === "top" || props.tabPosition === "bottom"
|
||||
? "width"
|
||||
: "height";
|
||||
const axis = sizeName === "width" ? "X" : "Y";
|
||||
const position = axis === "X" ? "left" : "top";
|
||||
const el = activeEl.value;
|
||||
const activeElParentElement = navRef.value;
|
||||
if (!el || !activeElParentElement) return;
|
||||
const rect = el?.getBoundingClientRect();
|
||||
const parentRect = activeElParentElement?.getBoundingClientRect();
|
||||
offset = rect[position] - parentRect[position];
|
||||
tabSize = el.getBoundingClientRect()[sizeName];
|
||||
return {
|
||||
[sizeName]: `${tabSize}px`,
|
||||
transform: `translate${axis}(${offset}px)`,
|
||||
transition: props.activeBarTransition ? `transform .3s` : "",
|
||||
};
|
||||
};
|
||||
|
||||
const navRef = shallowRef<HTMLElement | undefined>(undefined);
|
||||
const scrollable = ref(false);
|
||||
const navOffset = ref<number>(0);
|
||||
const navStyle = computed<CSSProperties>(() => {
|
||||
const axis =
|
||||
props.tabPosition === "top" || props.tabPosition === "bottom" ? "X" : "Y";
|
||||
const position = axis === "X" ? "left" : "top";
|
||||
const scrollPrevSize = scrollPrevRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
return {
|
||||
transform: `translate${axis}(-${navOffset.value}px)`,
|
||||
[position]: scrollable.value ? `${scrollPrevSize}px` : 0,
|
||||
};
|
||||
});
|
||||
const sizeName = computed(() => {
|
||||
return props.tabPosition === "top" || props.tabPosition === "bottom"
|
||||
? "Width"
|
||||
: "Height";
|
||||
});
|
||||
|
||||
const getNavSize = function () {
|
||||
let size = 0;
|
||||
const nodeList = navRef.value?.querySelectorAll("li");
|
||||
nodeList?.forEach((item) => {
|
||||
size += item[`offset${sizeName.value}`];
|
||||
});
|
||||
return size;
|
||||
};
|
||||
|
||||
const scrollPrev = function () {
|
||||
if (!navRef.value) return;
|
||||
const containerSize = navRef.value[`offset${sizeName.value}`];
|
||||
const currentOffset = navOffset.value;
|
||||
if (!currentOffset) return;
|
||||
let newOffset =
|
||||
currentOffset > containerSize ? currentOffset - containerSize : 0;
|
||||
navOffset.value = newOffset;
|
||||
};
|
||||
|
||||
const scrollNextRef = shallowRef<HTMLElement | undefined>(undefined);
|
||||
const scrollPrevRef = shallowRef<HTMLElement | undefined>(undefined);
|
||||
const scrollNext = function () {
|
||||
if (!navRef.value) return;
|
||||
const navSize = getNavSize();
|
||||
const containerSize = navRef.value[`offset${sizeName.value}`];
|
||||
const currentOffset = navOffset.value;
|
||||
const scrollNextSize = scrollNextRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
const scrollPrevSize = scrollPrevRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
if (navSize - currentOffset <= containerSize) return;
|
||||
let newOffset =
|
||||
navSize - currentOffset > containerSize * 2
|
||||
? currentOffset + containerSize
|
||||
: navSize - containerSize + scrollNextSize + scrollPrevSize;
|
||||
navOffset.value = newOffset;
|
||||
};
|
||||
|
||||
const headRef = shallowRef<HTMLDivElement | undefined>(undefined);
|
||||
const scrollToActiveTab = function () {
|
||||
if (!scrollable.value) return;
|
||||
const activeTab = activeEl.value;
|
||||
const container = headRef.value;
|
||||
if (!activeTab || !container) return;
|
||||
const activeTabRect = activeTab?.getBoundingClientRect();
|
||||
const containerRect = container?.getBoundingClientRect();
|
||||
const isHorizontal = ["top", "bottom"].includes(props.tabPosition);
|
||||
const currentOffset = navOffset.value;
|
||||
let newOffset = currentOffset;
|
||||
const navSize = getNavSize();
|
||||
const scrollNextSize = scrollNextRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
const scrollPrevSize = scrollPrevRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
const maxOffset = isHorizontal
|
||||
? navSize - containerRect.width + scrollNextSize + scrollPrevSize
|
||||
: navSize - containerRect.height + scrollNextSize + scrollPrevSize;
|
||||
if (isHorizontal) {
|
||||
if (activeTabRect.left < containerRect.left) {
|
||||
newOffset = currentOffset - (containerRect.left - activeTabRect.left);
|
||||
newOffset -= scrollPrevSize;
|
||||
}
|
||||
if (activeTabRect.right > containerRect.right) {
|
||||
newOffset = currentOffset + activeTabRect.right - containerRect.right;
|
||||
newOffset += scrollNextSize;
|
||||
}
|
||||
} else {
|
||||
if (activeTabRect.top < containerRect.top) {
|
||||
newOffset = currentOffset - (containerRect.top - activeTabRect.top);
|
||||
}
|
||||
if (activeTabRect.bottom > containerRect.bottom) {
|
||||
newOffset = currentOffset + (activeTabRect.bottom - containerRect.bottom);
|
||||
}
|
||||
}
|
||||
newOffset = Math.max(newOffset, 0);
|
||||
navOffset.value = Math.min(newOffset, maxOffset);
|
||||
};
|
||||
|
||||
const update = () => {
|
||||
if (!navRef.value) return;
|
||||
activeEl.value = navRef.value?.querySelector(".layui-this") as HTMLElement;
|
||||
tabBarStyle.value = getBarStyle();
|
||||
|
||||
if (props.tabPosition !== "top" && props.tabPosition !== "bottom") return; // 暂时屏蔽垂直方向
|
||||
const navSize = getNavSize();
|
||||
const containerSize = navRef.value[`offset${sizeName.value}`];
|
||||
const currentOffset = navOffset.value;
|
||||
const scrollNextSize = scrollNextRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
const scrollPrevSize = scrollPrevRef.value?.[`offset${sizeName.value}`] ?? 0;
|
||||
if (containerSize < navSize) {
|
||||
const currentOffset = navOffset.value;
|
||||
scrollable.value = true;
|
||||
if (navSize - currentOffset < containerSize) {
|
||||
navOffset.value =
|
||||
navSize - containerSize + scrollNextSize + scrollPrevSize;
|
||||
}
|
||||
scrollToActiveTab();
|
||||
} else {
|
||||
scrollable.value = false;
|
||||
if (currentOffset > 0) {
|
||||
navOffset.value = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const renderTabIcon = (attrs: Record<string, unknown>) => {
|
||||
const tab = attrs.tabData as TabData;
|
||||
if (typeof tab.icon === "function") {
|
||||
return tab.icon();
|
||||
} else if (typeof tab.icon === "string") {
|
||||
return h(LayIcon, {
|
||||
type: tab.icon,
|
||||
style: "margin-right: 8px;",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const renderTabTitle = (attrs: Record<string, unknown>) => {
|
||||
const tab = attrs.tabData as TabData;
|
||||
if (tab.slots?.title) {
|
||||
return h(Fragment, tab.slots?.title && tab.slots.title());
|
||||
}
|
||||
if (typeof tab.title === "function") {
|
||||
return tab.title();
|
||||
} else if (typeof tab.title === "string") {
|
||||
return createTextVNode(tab.title as string);
|
||||
}
|
||||
};
|
||||
|
||||
useResizeObserver(navRef, update);
|
||||
|
||||
watch(
|
||||
tabMap,
|
||||
function () {
|
||||
childrens.value = [];
|
||||
setItemInstanceBySlot((slot.default && slot.default()) as VNode[]);
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
watch(
|
||||
() => [
|
||||
props.modelValue,
|
||||
props.tabPosition,
|
||||
props.type,
|
||||
childrens.value.length,
|
||||
],
|
||||
async () => {
|
||||
await nextTick();
|
||||
update();
|
||||
}
|
||||
);
|
||||
|
||||
onMounted(() => {
|
||||
update();
|
||||
scrollToActiveTab();
|
||||
});
|
||||
|
||||
provide("active", active);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="layui-tab"
|
||||
:class="[
|
||||
type ? 'layui-tab-' + type : '',
|
||||
props.tabPosition ? `is-${tabPosition}` : '',
|
||||
]"
|
||||
>
|
||||
<div
|
||||
ref="headRef"
|
||||
:class="['layui-tab-head', props.tabPosition ? `is-${tabPosition}` : '']"
|
||||
>
|
||||
<ul
|
||||
ref="navRef"
|
||||
:class="[
|
||||
'layui-tab-title',
|
||||
props.tabPosition ? `is-${tabPosition}` : '',
|
||||
]"
|
||||
:style="navStyle"
|
||||
>
|
||||
<div
|
||||
ref="activeBarRef"
|
||||
v-if="type === 'brief'"
|
||||
class="layui-tab-active-bar"
|
||||
:style="tabBarStyle"
|
||||
></div>
|
||||
<li
|
||||
v-for="(child, index) in tabItems"
|
||||
:key="child.id"
|
||||
:class="[child.id === active ? 'layui-this' : '']"
|
||||
@click.stop="change(child.id)"
|
||||
>
|
||||
<span>
|
||||
<RenderFunction
|
||||
v-if="child['icon']"
|
||||
:renderFunc="renderTabIcon"
|
||||
:tabData="child"
|
||||
/>
|
||||
<RenderFunction :renderFunc="renderTabTitle" :tabData="child" />
|
||||
</span>
|
||||
<i
|
||||
v-if="allowClose && child.closable != false"
|
||||
class="layui-icon layui-icon-close layui-unselect layui-tab-close"
|
||||
@click.stop="close(index, child.id)"
|
||||
></i>
|
||||
</li>
|
||||
</ul>
|
||||
<span
|
||||
ref="scrollPrevRef"
|
||||
v-if="scrollable"
|
||||
class="layui-unselect layui-tab-bar prev"
|
||||
@click="scrollPrev"
|
||||
>
|
||||
<LayIcon type="layui-icon-left"></LayIcon>
|
||||
</span>
|
||||
<span
|
||||
ref="scrollNextRef"
|
||||
v-if="scrollable"
|
||||
class="layui-unselect layui-tab-bar"
|
||||
@click="scrollNext"
|
||||
>
|
||||
<LayIcon type="layui-icon-right"></LayIcon>
|
||||
</span>
|
||||
</div>
|
||||
<div class="layui-tab-content">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "AdditionIcon",
|
||||
};
|
||||
</script>
|
||||
<script setup lang="ts">
|
||||
import LayIcon from "../component/icon/index";
|
||||
|
||||
const props = defineProps<{
|
||||
color?: string;
|
||||
size?: string;
|
||||
}>();
|
||||
</script>
|
||||
<template>
|
||||
<lay-icon
|
||||
:color="props.color"
|
||||
:size="props.size"
|
||||
type="layui-icon-addition"
|
||||
/>
|
||||
</template>
|
||||
Reference in New Issue
Block a user