整合ydoc-lucky-ui主题, 代码待整理
This commit is contained in:
parent
15b7f1ad4e
commit
bd25ea3d96
@ -10,5 +10,5 @@ package define
|
|||||||
const (
|
const (
|
||||||
SwaggerUIThemeDefault = "swaggerUI" // 文档默认主题
|
SwaggerUIThemeDefault = "swaggerUI" // 文档默认主题
|
||||||
SwaggerUIThemeKnife4go = "knife4go" // knife4go 主题
|
SwaggerUIThemeKnife4go = "knife4go" // knife4go 主题
|
||||||
SwaggerUIThemeYDocLucky = "YDocLuckyUI" // YDoc Lucky UI 主题: https://github.com/NoBugBoy/LuckyUI
|
SwaggerUIThemeYDocLucky = "ydoc-lucky-ui" // YDoc Lucky UI 主题: https://github.com/NoBugBoy/LuckyUI
|
||||||
)
|
)
|
||||||
|
100
swagger_ui.go
100
swagger_ui.go
@ -8,14 +8,21 @@
|
|||||||
package api_doc
|
package api_doc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"embed"
|
||||||
"git.zhangdeman.cn/gateway/api-doc/define"
|
"git.zhangdeman.cn/gateway/api-doc/define"
|
||||||
|
"git.zhangdeman.cn/zhangdeman/consts"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
knife4goFiles "github.com/go-webtools/knife4go"
|
knife4goFiles "github.com/go-webtools/knife4go"
|
||||||
knife4goGin "github.com/go-webtools/knife4go/gin"
|
knife4goGin "github.com/go-webtools/knife4go/gin"
|
||||||
swaggerFiles "github.com/swaggo/files"
|
swaggerFiles "github.com/swaggo/files"
|
||||||
ginSwagger "github.com/swaggo/gin-swagger"
|
ginSwagger "github.com/swaggo/gin-swagger"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:embed ydoc-lucky-ui/*
|
||||||
|
var ydocUIFiles embed.FS
|
||||||
|
|
||||||
// NewSwaggerUI ...
|
// NewSwaggerUI ...
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
@ -31,6 +38,8 @@ func NewSwaggerUI(info *define.Info, servers []*define.ServerItem, uiTheme strin
|
|||||||
type SwaggerUI struct {
|
type SwaggerUI struct {
|
||||||
docInstance *Generate // 文档实例
|
docInstance *Generate // 文档实例
|
||||||
uiTheme string // 文档主题, swaggerUI / knife4go, 默认 knife4go
|
uiTheme string // 文档主题, swaggerUI / knife4go, 默认 knife4go
|
||||||
|
router *gin.Engine
|
||||||
|
baseUri string
|
||||||
}
|
}
|
||||||
|
|
||||||
// DocInstance 文档实例
|
// DocInstance 文档实例
|
||||||
@ -42,6 +51,81 @@ func (su *SwaggerUI) DocInstance() *Generate {
|
|||||||
return su.docInstance
|
return su.docInstance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RegisterHandler ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:00 2025/2/16
|
||||||
|
func (su *SwaggerUI) RegisterHandler(router *gin.Engine, baseUri string) {
|
||||||
|
su.router = router
|
||||||
|
baseUri = strings.TrimRight(baseUri, "/")
|
||||||
|
if len(baseUri) == 0 {
|
||||||
|
baseUri = "/docs/swagger"
|
||||||
|
}
|
||||||
|
su.baseUri = baseUri
|
||||||
|
router.GET("/assets/*any", func(ctx *gin.Context) {
|
||||||
|
if su.uiTheme == define.SwaggerUIThemeYDocLucky {
|
||||||
|
fileRealPath := strings.TrimPrefix(ctx.Request.RequestURI, baseUri)
|
||||||
|
byteData, _ := ydocUIFiles.ReadFile(define.SwaggerUIThemeYDocLucky + fileRealPath)
|
||||||
|
uriArr := strings.Split(ctx.Request.RequestURI, ".")
|
||||||
|
contentType := "text/" + uriArr[len(uriArr)-1]
|
||||||
|
if strings.HasSuffix(ctx.Request.RequestURI, "png") {
|
||||||
|
contentType = "image/png"
|
||||||
|
}
|
||||||
|
ctx.Header("Content-Type", contentType)
|
||||||
|
ctx.String(http.StatusOK, string(byteData))
|
||||||
|
ctx.Abort()
|
||||||
|
}
|
||||||
|
ctx.AbortWithStatus(http.StatusNotFound)
|
||||||
|
})
|
||||||
|
router.GET(baseUri+"/*any", func(ctx *gin.Context) {
|
||||||
|
if ctx.Request.RequestURI == baseUri+"/doc.json" {
|
||||||
|
// 默认swagger, 通过此接口读取文档数据
|
||||||
|
ctx.JSON(http.StatusOK, su.docInstance.Doc())
|
||||||
|
ctx.Abort()
|
||||||
|
}
|
||||||
|
if ctx.Request.RequestURI == "/doc/swagger/openapi.json" {
|
||||||
|
// knife4go 文档通过此接口读取文档列表
|
||||||
|
ctx.JSON(http.StatusOK, []map[string]any{
|
||||||
|
{
|
||||||
|
"name": "服务文档",
|
||||||
|
"url": "doc.json",
|
||||||
|
"swaggerVersion": consts.SwaggerDocVersion3,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
ctx.Abort()
|
||||||
|
}
|
||||||
|
if su.uiTheme == define.SwaggerUIThemeYDocLucky {
|
||||||
|
fileRealPath := strings.TrimPrefix(ctx.Request.RequestURI, baseUri)
|
||||||
|
byteData, _ := ydocUIFiles.ReadFile(define.SwaggerUIThemeYDocLucky + fileRealPath)
|
||||||
|
if strings.HasSuffix(ctx.Request.RequestURI, "html") {
|
||||||
|
byteData = []byte(strings.ReplaceAll(string(byteData), "{{BASE_URI}}", baseUri))
|
||||||
|
}
|
||||||
|
uriArr := strings.Split(ctx.Request.RequestURI, ".")
|
||||||
|
contentType := "text/" + uriArr[len(uriArr)-1]
|
||||||
|
if strings.HasSuffix(ctx.Request.RequestURI, "png") {
|
||||||
|
contentType = "image/png"
|
||||||
|
} else if strings.HasSuffix(ctx.Request.RequestURI, "js") {
|
||||||
|
contentType = "application/javascript"
|
||||||
|
}
|
||||||
|
ctx.Header("Content-Type", contentType)
|
||||||
|
ctx.String(http.StatusOK, string(byteData))
|
||||||
|
ctx.Abort()
|
||||||
|
}
|
||||||
|
}, su.Handler())
|
||||||
|
router.GET("/swagger-resources", func(ctx *gin.Context) { // lucky UI获取分组信息
|
||||||
|
ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*") // 允许访问所有域
|
||||||
|
ctx.JSON(http.StatusOK, []map[string]any{
|
||||||
|
{
|
||||||
|
"name": "服务文档",
|
||||||
|
"url": baseUri + "/doc.json",
|
||||||
|
"swaggerVersion": consts.SwaggerDocVersion3,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
// ctx.JSON(http.StatusOK, swaggerInstance.docInstance.Data())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Handler 访问文档的接口处理
|
// Handler 访问文档的接口处理
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
@ -52,13 +136,25 @@ func (su *SwaggerUI) Handler() func(ctx *gin.Context) {
|
|||||||
case define.SwaggerUIThemeKnife4go:
|
case define.SwaggerUIThemeKnife4go:
|
||||||
return su.HandleKnife4goUI()
|
return su.HandleKnife4goUI()
|
||||||
case define.SwaggerUIThemeYDocLucky:
|
case define.SwaggerUIThemeYDocLucky:
|
||||||
// TODO : YDoc-Lucky-UI 主题处理
|
// YDoc-Lucky-UI 主题处理
|
||||||
return su.HandleSwaggerUI()
|
return su.HandleLuckyUI()
|
||||||
default:
|
default:
|
||||||
return su.HandleSwaggerUI()
|
return su.HandleSwaggerUI()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HandleLuckyUI ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:04 2025/2/16
|
||||||
|
func (su *SwaggerUI) HandleLuckyUI() func(ctx *gin.Context) {
|
||||||
|
// su.router.StaticFS(su.baseUri+"/assets", http.FS(ydocUIFiles))
|
||||||
|
return func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// HandleKnife4goUI ...
|
// HandleKnife4goUI ...
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
1
ydoc-lucky-ui/assets/Api.525b760d.css
Normal file
1
ydoc-lucky-ui/assets/Api.525b760d.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
#titleDoc[data-v-bf5b8710]{font-size:21px}[data-v-bf5b8710] .too-old td{color:#ff231e!important}
|
1
ydoc-lucky-ui/assets/Api.73b14880.js
Normal file
1
ydoc-lucky-ui/assets/Api.73b14880.js
Normal file
File diff suppressed because one or more lines are too long
1
ydoc-lucky-ui/assets/FirstPage.1d240e81.js
Normal file
1
ydoc-lucky-ui/assets/FirstPage.1d240e81.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{i as e,e as t,f as a,g as l,j as u,w as s,a3 as d,a4 as o,z as f,A as n,a5 as i,O as r}from"./vendor.08310185.js";const _={id:"typeCount"},p={id:"typeCount"},c={id:"typeCount"},b={id:"typeCount"},h={setup(h){let v=e("g"),y=v.value.data,g=v.value.resource,E=y.paths,k=Object.keys(E),j=0,m=0,x=0,C=0;return k.forEach((e=>{let t=E[e];Object.keys(t).forEach((e=>{switch(e){case"get":j+=1;break;case"post":m+=1;break;case"put":x+=1;break;case"delete":C+=1}}))})),(e,h)=>(t(),a("div",null,[l(u(d),{title:"基础信息"},{default:s((()=>[l(u(o),{"x-gap":12,"y-gap":20,cols:2},{default:s((()=>[l(u(i),null,{default:s((()=>[l(u(d),{title:"标题:",hoverable:""},{default:s((()=>[f(n(u(y).info.title),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"Host:",hoverable:""},{default:s((()=>[f(n(u(y).info.contact.url),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"简介:",hoverable:""},{default:s((()=>[f(n(u(y).info.description),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"base path:",hoverable:""},{default:s((()=>[f(n(u(y).basePath),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"作者:",hoverable:""},{default:s((()=>[f(n(u(y).info.contact.name),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"分组名称:",hoverable:""},{default:s((()=>[f(n(u(g)[0].url),1)])),_:1})])),_:1})])),_:1})])),_:1}),l(u(d),{title:"Api类型统计",style:{"margin-top":"30px"}},{default:s((()=>[l(u(o),{"x-gap":50,"y-gap":10,cols:4},{default:s((()=>[l(u(i),null,{default:s((()=>[l(u(d),{title:"POST",hoverable:""},{default:s((()=>[r("span",_,n(u(m)),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"GET",hoverable:""},{default:s((()=>[r("span",p,n(u(j)),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"PUT",hoverable:""},{default:s((()=>[r("span",c,n(u(x)),1)])),_:1})])),_:1}),l(u(i),null,{default:s((()=>[l(u(d),{title:"DELETE",hoverable:""},{default:s((()=>[r("span",b,n(u(C)),1)])),_:1})])),_:1})])),_:1})])),_:1})]))}};export{h as default};
|
1
ydoc-lucky-ui/assets/FirstPage.48bcf13f.css
Normal file
1
ydoc-lucky-ui/assets/FirstPage.48bcf13f.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
#typeCount{font-size:24px}
|
1
ydoc-lucky-ui/assets/Manager.02a611ee.js
Normal file
1
ydoc-lucky-ui/assets/Manager.02a611ee.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{r as e,u as a,o as t,e as l,y as s,w as r,j as i,T as o,a3 as u,f as n,g as d,ao as c,q as p,ap as g,t as y,v,x as f,aq as m,W as k,z as S,b as h,ar as _,as as x,O,A as I,aa as J}from"./vendor.08310185.js";const N={key:0},b=S("点我清除全部用例"),q=S(" 你确定要全部清理吗,我会把LocalStorage全部干掉哦。 "),z={style:{"font-size":"18px"}},C={key:1},E={setup(S){let E=e([]),j=e([{title:"名称",key:"title"},{title:"状态",key:"status"},{title:"创建时间",key:"time"},{title:"请求参数",key:"param",render:e=>(e.param.forEach((e=>{delete e.in,delete e.type,delete e.required,delete e.active})),JSON.stringify(e.param))},{title:"请求体",key:"body"},{title:"操作",key:"action",render:e=>h(y,{type:"primary",onClick:()=>W(e)},{default:()=>"删除"})}]),P=e(!0);a();let W=e=>{let a=localStorage.getItem(e.group),t=JSON.parse(a);for(var l=0;l<t.length;l++)if(t[l].title==e.title){1==t.length?localStorage.removeItem(e.group):(t.splice(l,1),localStorage.setItem(e.group,JSON.stringify(t)));break}A()},w=()=>{localStorage.clear(),A()},A=()=>{P.vlaue=!1,E.value=[];for(var e=0;e<localStorage.length;e++){var a=localStorage.key(e);if(a.startsWith("lucky")){let e={},t=JSON.parse(localStorage.getItem(a));t.forEach((e=>{e.group=a})),e.key=a.split("_")[1],e.value=t,E.value.push(e)}}P.vlaue=!0};return t((()=>{A()})),(e,a)=>(l(),s(i(o),{vertical:""},{default:r((()=>[i(P)?(l(),s(i(u),{key:0,title:"请求用例管理"},{default:r((()=>[i(E).length>0?(l(),n("div",N,[d(i(o),{vertical:"",size:15},{default:r((()=>[d(i(c),{"positive-text":"好的,没关系.","negative-text":"Emmm,算了吧.",onPositiveClick:i(w)},{icon:r((()=>[d(i(p),null,{default:r((()=>[d(i(g))])),_:1})])),trigger:r((()=>[d(i(y),{dashed:"",type:"primary"},{default:r((()=>[b])),_:1})])),default:r((()=>[q])),_:1},8,["onPositiveClick"]),(l(!0),n(v,null,f(i(E),((e,a)=>(l(),n("div",null,[d(i(_),null,{default:r((()=>[d(i(x),{name:"index"},{header:r((()=>[O("span",z,I(e.key),1)])),default:r((()=>[d(i(J),{columns:i(j),data:e.value},null,8,["columns","data"])])),_:2},1024)])),_:2},1024)])))),256))])),_:1})])):(l(),n("div",C,[d(i(m),{status:"404",title:"好像没有多余的请求用例了",description:"去创建几个试试吧"})]))])),_:1})):k("",!0)])),_:1}))}};export{E as default};
|
1
ydoc-lucky-ui/assets/MethodTrace.9051cb05.js
Normal file
1
ydoc-lucky-ui/assets/MethodTrace.9051cb05.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{a as l}from"./index.4ac3587a.js";import{r as a,o as e,e as t,f as u,g as s,j as n,T as d,w as o,l as f,z as p,b as r,D as b}from"./vendor.08310185.js";const i=p(" asdsa "),y={setup(p){const y=a([{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"1"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"3"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"4"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"5"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"6"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"7"},{label:()=>r(b,null,{default:()=>"电灯熄灭 物换星移 泥牛入海"}),key:"8"},{label:()=>r(b,null,{default:()=>"黑暗好像 一颗巨石 按在胸口"}),key:"2"}]);return e((()=>{let a=window.location.pathname.replace("/doc.html","");a="http://127.0.0.1:8888",l({url:"http://127.0.0.1:8888/getMc",method:"get"}).then((l=>{l.data&&console.log(l.data)}))})),(l,a)=>(t(),u("div",null,[s(n(d),null,{default:o((()=>[s(n(f),{options:y.value,style:{width:"180px"},"default-value":"1"},null,8,["options"]),i])),_:1})]))}};export{y as default};
|
1
ydoc-lucky-ui/assets/Models.a928c1a8.js
Normal file
1
ydoc-lucky-ui/assets/Models.a928c1a8.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{e as s,y as t,w as a,j as e,a3 as o,g as u,aq as i,t as n,z as l}from"./vendor.08310185.js";const r=l("去提个Issues催一下"),c={setup(l){let c=()=>{window.open("https://github.com/NoBugBoy/YdocLuckyUi/issues/new")};return(l,d)=>(s(),t(e(o),null,{default:a((()=>[u(e(i),{status:"500",title:"作者太懒了,这个功能并不太想做",description:"也许你真的不太需要这个东西."},{footer:a((()=>[u(e(n),{onClick:e(c)},{default:a((()=>[r])),_:1},8,["onClick"])])),_:1})])),_:1}))}};export{c as default};
|
1
ydoc-lucky-ui/assets/Share.3315ee0c.js
Normal file
1
ydoc-lucky-ui/assets/Share.3315ee0c.js
Normal file
File diff suppressed because one or more lines are too long
5
ydoc-lucky-ui/assets/icon.a080a8a4.svg
Normal file
5
ydoc-lucky-ui/assets/icon.a080a8a4.svg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<svg height="16" width="8" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<polygon points="0,0 8,8 0,16"
|
||||||
|
style="fill:#666;stroke:purple;stroke-width:0" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 156 B |
1
ydoc-lucky-ui/assets/index.4ac3587a.js
Normal file
1
ydoc-lucky-ui/assets/index.4ac3587a.js
Normal file
File diff suppressed because one or more lines are too long
1
ydoc-lucky-ui/assets/index.5b18e4ae.css
Normal file
1
ydoc-lucky-ui/assets/index.5b18e4ae.css
Normal file
File diff suppressed because one or more lines are too long
BIN
ydoc-lucky-ui/assets/title.8b763cb0.png
Normal file
BIN
ydoc-lucky-ui/assets/title.8b763cb0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 340 KiB |
1
ydoc-lucky-ui/assets/vendor.0513d345.css
Normal file
1
ydoc-lucky-ui/assets/vendor.0513d345.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
.jv-container{box-sizing:border-box;position:relative}.jv-container.boxed{border:1px solid #eee;border-radius:6px}.jv-container.boxed:hover{box-shadow:0 2px 7px #00000026;border-color:transparent;position:relative}.jv-container.jv-light{background:#fff;white-space:nowrap;color:#525252;font-size:14px;font-family:Consolas,Menlo,Courier,monospace}.jv-container.jv-light .jv-ellipsis{color:#999;background-color:#eee;display:inline-block;line-height:.9;font-size:.9em;padding:0 4px 2px;margin:0 4px;border-radius:3px;vertical-align:2px;cursor:pointer;user-select:none}.jv-container.jv-light .jv-button{color:#49b3ff}.jv-container.jv-light .jv-key{color:#111;margin-right:4px}.jv-container.jv-light .jv-item.jv-array{color:#111}.jv-container.jv-light .jv-item.jv-boolean{color:#fc1e70}.jv-container.jv-light .jv-item.jv-function{color:#067bca}.jv-container.jv-light .jv-item.jv-number{color:#fc1e70}.jv-container.jv-light .jv-item.jv-object{color:#111}.jv-container.jv-light .jv-item.jv-undefined{color:#e08331}.jv-container.jv-light .jv-item.jv-string{color:#42b983;word-break:break-word;white-space:normal}.jv-container.jv-light .jv-item.jv-string .jv-link{color:#0366d6}.jv-container.jv-light .jv-code .jv-toggle:before{padding:0 2px;border-radius:2px}.jv-container.jv-light .jv-code .jv-toggle:hover:before{background:#eee}.jv-container .jv-code{overflow:hidden;padding:30px 20px}.jv-container .jv-code.boxed{max-height:300px}.jv-container .jv-code.open{max-height:initial!important;overflow:visible;overflow-x:auto;padding-bottom:45px}.jv-container .jv-toggle{background-image:url(/assets/icon.a080a8a4.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;cursor:pointer;width:10px;height:10px;margin-right:2px;display:inline-block;transition:transform .1s}.jv-container .jv-toggle.open{transform:rotate(90deg)}.jv-container .jv-more{position:absolute;z-index:1;bottom:0;left:0;right:0;height:40px;width:100%;text-align:center;cursor:pointer}.jv-container .jv-more .jv-toggle{position:relative;top:40%;z-index:2;color:#888;transition:all .1s;transform:rotate(90deg)}.jv-container .jv-more .jv-toggle.open{transform:rotate(-90deg)}.jv-container .jv-more:after{content:"";width:100%;height:100%;position:absolute;bottom:0;left:0;z-index:1;background:linear-gradient(to bottom,rgba(0,0,0,0) 20%,rgba(230,230,230,.3) 100%);transition:all .1s}.jv-container .jv-more:hover .jv-toggle{top:50%;color:#111}.jv-container .jv-more:hover:after{background:linear-gradient(to bottom,rgba(0,0,0,0) 20%,rgba(230,230,230,.3) 100%)}.jv-container .jv-button{position:relative;cursor:pointer;display:inline-block;padding:5px;z-index:5}.jv-container .jv-button.copied{opacity:.4;cursor:default}.jv-container .jv-tooltip{position:absolute}.jv-container .jv-tooltip.right{right:15px}.jv-container .jv-tooltip.left{left:15px}.jv-container .j-icon{font-size:12px}.jv-node{position:relative}.jv-node:after{content:","}.jv-node:last-of-type:after{content:""}.jv-node.toggle{margin-left:13px!important}.jv-node .jv-node{margin-left:25px}
|
14
ydoc-lucky-ui/assets/vendor.08310185.js
Normal file
14
ydoc-lucky-ui/assets/vendor.08310185.js
Normal file
File diff suppressed because one or more lines are too long
BIN
ydoc-lucky-ui/favicon.ico
Normal file
BIN
ydoc-lucky-ui/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
18
ydoc-lucky-ui/index.html
Normal file
18
ydoc-lucky-ui/index.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta http-equiv="Pragma" content="no-cache">
|
||||||
|
<link rel="icon" href="{{BASE_URI}}/assets/title.8b763cb0.png" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>接口文档</title>
|
||||||
|
<script type="module" crossorigin src="{{BASE_URI}}/assets/index.4ac3587a.js"></script>
|
||||||
|
<link rel="modulepreload" href="{{BASE_URI}}/assets/vendor.08310185.js">
|
||||||
|
<link rel="stylesheet" href="{{BASE_URI}}/assets/vendor.0513d345.css">
|
||||||
|
<link rel="stylesheet" href="{{BASE_URI}}/assets/index.5b18e4ae.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user