143 changed files with 1767 additions and 924 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as o,o as s,c as a,a as t,t as r}from"./ydFS6PsN.js";import{u as i}from"./8EvkM1NE.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; |
|||
import{_ as o,o as s,c as a,a as t,t as r}from"./96IDI_OR.js";import{u as i}from"./C5ETpaZb.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; |
|||
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as s}from"./DhCGnUi5.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./ydFS6PsN.js";import{u as f}from"./8EvkM1NE.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default}; |
|||
import{_ as s}from"./0ubqzWuP.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./96IDI_OR.js";import{u as f}from"./C5ETpaZb.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default}; |
|||
@ -1 +1 @@ |
|||
import{u as a,e as s,h as u,i as r,f as h}from"./ydFS6PsN.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; |
|||
import{u as a,e as s,h as u,i as r,f as h}from"./96IDI_OR.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{e as f,a3 as r,a4 as c}from"./ydFS6PsN.js";const p="$s";function l(...o){const n=typeof o[o.length-1]=="string"?o.pop():void 0;typeof o[0]!="string"&&o.unshift(n);const[e,t]=o;if(!e||typeof e!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+e);if(t!==void 0&&typeof t!="function")throw new Error("[nuxt] [useState] init must be a function: "+t);const s=p+e,i=f(),u=r(i.payload.state,s);if(t&&(i._state[s]??={_default:t}),u.value===void 0&&t){const a=t();if(c(a))return i.payload.state[s]=a,a;u.value=a}return u}let y=0;function d(){const o=l("app:toasts",()=>[]);function n(e,t="info",s=3e3){const i=++y;o.value.push({id:i,type:t,msg:e}),s>0&&setTimeout(()=>{o.value=o.value.filter(u=>u.id!==i)},s)}return{toasts:o,toast:n,success:(e,t)=>n(e,"success",t),error:(e,t)=>n(e,"error",t),info:(e,t)=>n(e,"info",t),warn:(e,t)=>n(e,"warning",t)}}export{d as u}; |
|||
import{e as f,a3 as r,a4 as c}from"./96IDI_OR.js";const p="$s";function l(...o){const n=typeof o[o.length-1]=="string"?o.pop():void 0;typeof o[0]!="string"&&o.unshift(n);const[e,t]=o;if(!e||typeof e!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+e);if(t!==void 0&&typeof t!="function")throw new Error("[nuxt] [useState] init must be a function: "+t);const s=p+e,i=f(),u=r(i.payload.state,s);if(t&&(i._state[s]??={_default:t}),u.value===void 0&&t){const a=t();if(c(a))return i.payload.state[s]=a,a;u.value=a}return u}let y=0;function d(){const o=l("app:toasts",()=>[]);function n(e,t="info",s=3e3){const i=++y;o.value.push({id:i,type:t,msg:e}),s>0&&setTimeout(()=>{o.value=o.value.filter(u=>u.id!==i)},s)}return{toasts:o,toast:n,success:(e,t)=>n(e,"success",t),error:(e,t)=>n(e,"error",t),info:(e,t)=>n(e,"info",t),warn:(e,t)=>n(e,"warning",t)}}export{d as u}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{y as p,z as d}from"./ydFS6PsN.js";async function c(s,a,i){const r=p(),n=d(),t={"Content-Type":"application/json"};r.token&&(t.Authorization=r.token),i&&Object.assign(t,i);const o=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(a)});if(!o.ok)throw new Error(`HTTP error: ${o.status}`);const e=await o.json();if(e.code===18)throw r.logout(),n.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}function h(){const s=p();async function a(n,t){const o={};return s.currentAppId&&(o["X-App-Id"]=String(s.currentAppId)),c(`/web/api/api_${n}`,t??{},o)}async function i(n,t){return c(`/console/api/${n}`,t??{})}async function r(n,t){const o=await a("getcostoken",{path:t}),e=o.upload_url||o.url||"",u=await fetch(e,{method:"PUT",headers:{"Content-Type":n.type||"application/octet-stream"},body:n});if(!u.ok)throw new Error(`Upload failed: ${u.status}`);return e.split("?")[0]}return{webApi:a,consoleApi:i,uploadFile:r}}export{h as u}; |
|||
import{y as p,z as d}from"./96IDI_OR.js";async function c(s,a,i){const r=p(),n=d(),t={"Content-Type":"application/json"};r.token&&(t.Authorization=r.token),i&&Object.assign(t,i);const o=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(a)});if(!o.ok)throw new Error(`HTTP error: ${o.status}`);const e=await o.json();if(e.code===18)throw r.logout(),n.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}function h(){const s=p();async function a(n,t){const o={};return s.currentAppId&&(o["X-App-Id"]=String(s.currentAppId)),c(`/web/api/api_${n}`,t??{},o)}async function i(n,t){return c(`/console/api/${n}`,t??{})}async function r(n,t){const o=await a("getcostoken",{path:t}),e=o.upload_url||o.url||"",u=await fetch(e,{method:"PUT",headers:{"Content-Type":n.type||"application/octet-stream"},body:n});if(!u.ok)throw new Error(`Upload failed: ${u.status}`);return e.split("?")[0]}return{webApi:a,consoleApi:i,uploadFile:r}}export{h as u}; |
|||
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as t,o,c as s,I as c}from"./ydFS6PsN.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; |
|||
import{_ as t,o,c as s,I as c}from"./96IDI_OR.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{g as h,y as x,z as w,j as y,c as r,a as e,t as d,l as b,A as _,k as v,m as g,n as k,x as A,s as u,o as p,_ as M}from"./ydFS6PsN.js";const z={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=A({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",z,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default}; |
|||
import{g as h,y as x,z as w,j as y,c as r,a as e,t as d,l as b,A as _,k as v,m as g,n as k,x as A,s as u,o as p,_ as M}from"./96IDI_OR.js";const z={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=A({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",z,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default}; |
|||
@ -1 +1 @@ |
|||
{"id":"045d42c9-2405-4f35-94e4-c42d64239a40","timestamp":1782350899281} |
|||
{"id":"ec4737f4-4bc1-4016-bf94-c7164a1b5e0d","timestamp":1782351561646} |
|||
@ -1 +0,0 @@ |
|||
{"id":"045d42c9-2405-4f35-94e4-c42d64239a40","timestamp":1782350899281,"prerendered":[]} |
|||
@ -0,0 +1 @@ |
|||
{"id":"ec4737f4-4bc1-4016-bf94-c7164a1b5e0d","timestamp":1782351561646,"prerendered":[]} |
|||
@ -0,0 +1 @@ |
|||
.pair-card[data-v-51f11136]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-51f11136]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-51f11136]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-51f11136]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-51f11136]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-51f11136]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-51f11136]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-51f11136]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-51f11136]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-51f11136]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-51f11136]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-51f11136]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-51f11136]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-51f11136]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-51f11136]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-51f11136]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -1 +0,0 @@ |
|||
.pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@ |
|||
.svc-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-8f55f9ae]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-8f55f9ae]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-8f55f9ae]{font-weight:700;padding:2px 7px}.cat-chip[data-v-8f55f9ae],.lock-badge[data-v-8f55f9ae]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-8f55f9ae]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-8f55f9ae]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-8f55f9ae],.override-badge[data-v-8f55f9ae]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-8f55f9ae]{background:#fef3c7;color:#b45309}.field-input[data-v-8f55f9ae]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-8f55f9ae]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-8f55f9ae]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-8f55f9ae]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-8f55f9ae]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-8f55f9ae]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -0,0 +1 @@ |
|||
.svc-item[data-v-97419e3c]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-97419e3c]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-97419e3c]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-97419e3c]{font-weight:700;padding:2px 7px}.cat-chip[data-v-97419e3c],.lock-badge[data-v-97419e3c]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-97419e3c]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-97419e3c]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-97419e3c],.override-badge[data-v-97419e3c]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-97419e3c]{background:#fef3c7;color:#b45309}.field-input[data-v-97419e3c]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-97419e3c]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-97419e3c]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-97419e3c]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-97419e3c]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-97419e3c]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-97419e3c]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -1,4 +1,4 @@ |
|||
import{g as G,j as K,H as P,c as a,a as e,d as u,k as x,p as U,F as f,r as B,m as Y,q as Z,t as n,s as i,C as E,o,n as F,l as I,_ as J}from"./ydFS6PsN.js";import{u as Q}from"./CWcpm1jv.js";import{u as W}from"./CQ70mTiW.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{success:H,error:O}=W(),R={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?R[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
|
|||
import{g as G,j as K,H as P,c as a,a as e,d as u,k as x,p as U,F as f,r as B,m as Y,q as Z,t as n,s as i,C as E,o,n as F,l as I,_ as J}from"./96IDI_OR.js";import{u as Q}from"./Do83zqYq.js";import{u as W}from"./CVUxyiJx.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{success:H,error:O}=W(),R={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?R[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
|
|||
|
|||
只清除本核对面板的记录,不影响已落库的统计数据。 |
|||
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});H("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){O("清空失败:"+(r?.message||"网络异常"))}}function z(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,B(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[U,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[U,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Y,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:z},null,544),[[Z,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:q},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},B(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",M(t.level).cls])},n(M(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),j(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Dt=J(kt,[["__scopeId","data-v-742ee359"]]);export{Dt as default};
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"calltranslate-C6glzS4R.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-C6glzS4R.js"],"names":[],"mappings":"","x_google_ignoreList":[0]} |
|||
@ -1 +0,0 @@ |
|||
{"version":3,"file":"calltranslate-qCADGfI8.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-qCADGfI8.js"],"names":[],"mappings":"","x_google_ignoreList":[0]} |
|||
@ -1,8 +0,0 @@ |
|||
const calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang = ".pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
|
|||
const calltranslateStyles_DWMho6ro = [ |
|||
calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang |
|||
]; |
|||
|
|||
export { calltranslateStyles_DWMho6ro as default }; |
|||
//# sourceMappingURL=calltranslate-styles.DWMho6ro.mjs.map
|
|||
@ -1 +0,0 @@ |
|||
{"version":3,"file":"calltranslate-styles.DWMho6ro.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-Dn-xJ4XY.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles.DWMho6ro.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]} |
|||
@ -0,0 +1,8 @@ |
|||
const calltranslate_vue_vue_type_style_index_0_scoped_51f11136_lang = ".pair-card[data-v-51f11136]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-51f11136]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-51f11136]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-51f11136]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-51f11136]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-51f11136]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-51f11136]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-51f11136]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-51f11136]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-51f11136]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-51f11136]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-51f11136]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-51f11136]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-51f11136]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-51f11136]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-51f11136]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
|
|||
const calltranslateStyles_hpAJUqsK = [ |
|||
calltranslate_vue_vue_type_style_index_0_scoped_51f11136_lang |
|||
]; |
|||
|
|||
export { calltranslateStyles_hpAJUqsK as default }; |
|||
//# sourceMappingURL=calltranslate-styles.hpAJUqsK.mjs.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"calltranslate-styles.hpAJUqsK.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DA2j2DKH.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles.hpAJUqsK.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]} |
|||
File diff suppressed because one or more lines are too long
@ -0,0 +1,205 @@ |
|||
import { defineComponent, ref, reactive, computed, useSSRContext } from 'vue'; |
|||
import { ssrRenderAttrs, ssrRenderStyle, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderDynamicModel } from 'vue/server-renderer'; |
|||
import { u as useApi } from './useApi-B7CB0Cnn.mjs'; |
|||
import { u as useToast } from './useToast-BwtTR9dH.mjs'; |
|||
import { _ as _export_sfc } from './server.mjs'; |
|||
import './auth-QFkCoU1C.mjs'; |
|||
import 'pinia'; |
|||
import '../nitro/nitro.mjs'; |
|||
import 'node:http'; |
|||
import 'node:https'; |
|||
import 'node:events'; |
|||
import 'node:buffer'; |
|||
import 'node:fs'; |
|||
import 'node:path'; |
|||
import 'node:crypto'; |
|||
import 'node:url'; |
|||
import '../routes/renderer.mjs'; |
|||
import 'vue-bundle-renderer/runtime'; |
|||
import 'unhead/server'; |
|||
import 'devalue'; |
|||
import 'unhead/utils'; |
|||
import 'perfect-debounce'; |
|||
|
|||
const _sfc_main = /* @__PURE__ */ defineComponent({ |
|||
__name: "serviceconfig", |
|||
__ssrInlineRender: true, |
|||
setup(__props) { |
|||
const REGIONS = [ |
|||
{ value: 1, label: "中国" }, |
|||
{ value: 2, label: "美国" }, |
|||
{ value: 3, label: "东亚" }, |
|||
{ value: 4, label: "东南亚" }, |
|||
{ value: 5, label: "南亚" }, |
|||
{ value: 6, label: "中东" }, |
|||
{ value: 7, label: "欧洲" }, |
|||
{ value: 8, label: "俄罗斯" }, |
|||
{ value: 9, label: "非洲" }, |
|||
{ value: 10, label: "南美" }, |
|||
{ value: 11, label: "北美" }, |
|||
{ value: 12, label: "大洋洲" }, |
|||
{ value: 13, label: "巴西" }, |
|||
{ value: 14, label: "印度" } |
|||
]; |
|||
const SCAT = [ |
|||
{ v: 1, label: "STT 语音识别", short: "STT", color: "#0369a1", bg: "#dbeafe" }, |
|||
{ v: 2, label: "TTS 语音合成", short: "TTS", color: "#7c3aed", bg: "#ede9fe" }, |
|||
{ v: 3, label: "MT 机器翻译", short: "MT", color: "#059669", bg: "#dcfce7" }, |
|||
{ v: 4, label: "AST 端到端", short: "AST", color: "#c2410c", bg: "#fff7ed" }, |
|||
{ v: 5, label: "LLM 大语言", short: "LLM", color: "#b45309", bg: "#fef9c3" }, |
|||
{ v: 6, label: "存储 OSS/COS", short: "存储", color: "#475569", bg: "#f1f5f9" } |
|||
]; |
|||
useApi(); |
|||
useToast(); |
|||
function scatInfo(v) { |
|||
return SCAT.find((s) => s.v === v) || { short: "?", color: "#999", bg: "#eee", v: 0, label: "" }; |
|||
} |
|||
function parseCats(s) { |
|||
return (s || "").split(",").map((x) => parseInt(x) || 0).filter((x) => x > 0); |
|||
} |
|||
function encCount(s) { |
|||
return (s.fields || []).filter((f) => f.encrypted).length; |
|||
} |
|||
const backendReady = ref(true); |
|||
const allSvcs = ref([]); |
|||
const curSvc = ref(null); |
|||
const curRegion = ref(0); |
|||
const detailMode = ref("empty"); |
|||
const editForm = reactive({ id: "", name: "", description: "", enable: false }); |
|||
const editCats = ref([]); |
|||
const editFields = ref([]); |
|||
const overrideFields = ref([]); |
|||
const regionLoading = ref(false); |
|||
const curRegionLabel = computed(() => { |
|||
const r = REGIONS.find((x) => x.value === curRegion.value); |
|||
return r ? r.label : "区域" + curRegion.value; |
|||
}); |
|||
const syncVisible = ref(false); |
|||
ref(false); |
|||
const syncDesc = ref(""); |
|||
const syncScopeNote = ref(""); |
|||
const syncTargets = ref([]); |
|||
const syncRegionList = computed(() => REGIONS.filter((r) => r.value !== curRegion.value)); |
|||
return (_ctx, _push, _parent, _attrs) => { |
|||
_push(`<div${ssrRenderAttrs(_attrs)} data-v-97419e3c>`); |
|||
if (!backendReady.value) { |
|||
_push(`<div class="mb-4 rounded-lg px-4 py-3 text-sm" style="${ssrRenderStyle({ "background": "#fffbeb", "border": "1px solid #fde68a", "color": "#92400e" })}" data-v-97419e3c> ⚠ 「依赖服务配置」的后端接口尚未迁移到当前 console 服务,功能暂不可用。 </div>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`<div class="flex items-center justify-between mb-5" data-v-97419e3c><div data-v-97419e3c><h2 class="text-lg font-semibold text-slate-800" data-v-97419e3c>依赖服务配置</h2><p class="text-xs text-slate-400 mt-1" data-v-97419e3c>配置火山引擎、阿里云等第三方服务;字段支持加密存储。默认配置全区域共用,可按区域覆盖字段值。</p></div><div class="flex items-center gap-3" data-v-97419e3c><select class="select select-bordered select-sm" data-v-97419e3c><option${ssrRenderAttr("value", 0)} data-v-97419e3c${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, 0) : ssrLooseEqual(curRegion.value, 0)) ? " selected" : ""}>默认(全区域)</option><!--[-->`); |
|||
ssrRenderList(REGIONS, (r) => { |
|||
_push(`<option${ssrRenderAttr("value", r.value)} data-v-97419e3c${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, r.value) : ssrLooseEqual(curRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`); |
|||
}); |
|||
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" style="${ssrRenderStyle(curRegion.value === 0 ? null : { display: "none" })}" data-v-97419e3c>+ 新增服务</button></div></div><div class="flex gap-4" style="${ssrRenderStyle({ "align-items": "flex-start" })}" data-v-97419e3c><div style="${ssrRenderStyle({ "width": "248px", "flex-shrink": "0" })}" data-v-97419e3c><div class="flex flex-col gap-2" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(allSvcs.value, (s) => { |
|||
_push(`<div class="${ssrRenderClass([{ active: curSvc.value && curSvc.value.id === s.id }, "svc-item"])}" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: s.color || "#6366f1" })}" data-v-97419e3c>${ssrInterpolate(s.icon || (s.name || "").charAt(0))}</div><div style="${ssrRenderStyle({ "min-width": "0", "flex": "1" })}" data-v-97419e3c><div class="flex items-center gap-2" data-v-97419e3c><span class="font-semibold text-slate-800 text-sm truncate" data-v-97419e3c>${ssrInterpolate(s.name)}</span><span class="${ssrRenderClass([s.enable ? "badge-success" : "badge-ghost", "badge badge-xs"])}" data-v-97419e3c>${ssrInterpolate(s.enable ? "启用" : "停用")}</span></div><div class="flex flex-wrap gap-1 mt-1" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(parseCats(s.categories), (v) => { |
|||
_push(`<span class="cat-chip" style="${ssrRenderStyle({ color: scatInfo(v).color, background: scatInfo(v).bg })}" data-v-97419e3c>${ssrInterpolate(scatInfo(v).short)}</span>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (encCount(s)) { |
|||
_push(`<span class="lock-badge" data-v-97419e3c>🔒${ssrInterpolate(encCount(s))}</span>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (!allSvcs.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 text-center py-8" data-v-97419e3c>暂无服务</p>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div><div class="flex-1 min-w-0" data-v-97419e3c><div class="bg-white rounded-2xl border border-slate-100 shadow-sm p-6" data-v-97419e3c>`); |
|||
if (detailMode.value === "empty") { |
|||
_push(`<div class="text-center text-slate-300 py-20" data-v-97419e3c><div class="text-5xl mb-3" data-v-97419e3c>⚙️</div><p class="text-sm" data-v-97419e3c>从左侧选择一个服务开始配置</p></div>`); |
|||
} else if (detailMode.value === "default" && curSvc.value) { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><div class="flex items-center gap-3" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-97419e3c>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>${ssrInterpolate(curSvc.value.name)}</h3><p class="text-xs text-slate-400 mt-0.5" data-v-97419e3c>${ssrInterpolate(curSvc.value.id)}</p></div></div><div class="flex gap-2" data-v-97419e3c><button class="btn btn-error btn-sm btn-outline" data-v-97419e3c>删除服务</button><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>保存</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-97419e3c><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" data-v-97419e3c></div><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>启用</span></label><input${ssrIncludeBooleanAttr(Array.isArray(editForm.enable) ? ssrLooseContain(editForm.enable, null) : editForm.enable) ? " checked" : ""} type="checkbox" class="toggle toggle-primary mt-3" data-v-97419e3c></div></div><div class="form-control mb-4" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" data-v-97419e3c></div><div class="mb-4" data-v-97419e3c><p class="text-sm font-medium text-slate-700 mb-2" data-v-97419e3c>服务类别 <span class="text-slate-400 text-xs" data-v-97419e3c>(可多选)</span></p><div class="flex flex-wrap gap-3" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-97419e3c><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-97419e3c>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-97419e3c>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>自定义字段</div><div data-v-97419e3c>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-97419e3c>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-16 text-center" data-v-97419e3c>加密</th><th data-v-97419e3c>默认值</th><th class="w-12" data-v-97419e3c></th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-97419e3c></td><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-97419e3c></td><td class="text-center" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-97419e3c></td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c><button class="btn btn-ghost btn-xs text-error" data-v-97419e3c>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-97419e3c>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "new") { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>新增依赖服务</h3><div class="flex gap-2" data-v-97419e3c><button class="btn btn-ghost btn-sm" data-v-97419e3c>取消</button><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>创建</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-97419e3c><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务ID * <span class="text-slate-400 text-xs" data-v-97419e3c>(唯一,如 volcengine)</span></span></label><input${ssrRenderAttr("value", editForm.id)} class="input input-bordered font-mono" placeholder="volcengine" data-v-97419e3c></div><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" placeholder="火山引擎" data-v-97419e3c></div></div><div class="form-control mb-4" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" placeholder="简述该服务的用途" data-v-97419e3c></div><div class="mb-4" data-v-97419e3c><p class="text-sm font-medium text-slate-700 mb-2" data-v-97419e3c>服务类别</p><div class="flex flex-wrap gap-3" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-97419e3c><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-97419e3c>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-97419e3c>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>自定义字段</div><div data-v-97419e3c>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-97419e3c>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-16 text-center" data-v-97419e3c>加密</th><th data-v-97419e3c>默认值</th><th class="w-12" data-v-97419e3c></th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-97419e3c></td><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-97419e3c></td><td class="text-center" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-97419e3c></td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c><button class="btn btn-ghost btn-xs text-error" data-v-97419e3c>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-97419e3c>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "region" && curSvc.value) { |
|||
_push(`<!--[-->`); |
|||
if (regionLoading.value) { |
|||
_push(`<div class="text-center py-10 text-slate-400" data-v-97419e3c>加载中...</div>`); |
|||
} else { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><div class="flex items-center gap-3" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-97419e3c>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>${ssrInterpolate(curSvc.value.name)}</h3><span class="badge badge-warning badge-sm mt-0.5" data-v-97419e3c>${ssrInterpolate(curRegionLabel.value)} 覆盖模式</span></div></div><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>保存覆盖</button></div><div class="rounded-lg px-3 py-2 mb-4 text-xs" style="${ssrRenderStyle({ "background": "#fefce8", "border": "1px solid #fde047", "color": "#854d0e" })}" data-v-97419e3c> ✦ 当前编辑「${ssrInterpolate(curRegionLabel.value)}」的字段覆盖值。留空的字段将继承默认值。加密字段留空保留已存储密文。 </div><div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-24 text-center" data-v-97419e3c>状态</th><th data-v-97419e3c>有效值</th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(overrideFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td class="font-mono text-slate-700" data-v-97419e3c>${ssrInterpolate(f.key)}</td><td class="text-slate-500" data-v-97419e3c>${ssrInterpolate(f.description)}</td><td class="text-center" data-v-97419e3c>`); |
|||
if (f.is_overridden) { |
|||
_push(`<span class="override-badge" data-v-97419e3c>覆盖</span>`); |
|||
} else { |
|||
_push(`<span class="inherit-badge" data-v-97419e3c>继承</span>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f._input, null)} placeholder="留空继承默认" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f._input)}${ssrRenderAttr("placeholder", "留空继承:" + (f.value || ""))} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div><!--]-->`); |
|||
} |
|||
_push(`<!--]-->`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div><div class="sync-overlay" style="${ssrRenderStyle(syncVisible.value ? null : { display: "none" })}" data-v-97419e3c><div class="sync-box" data-v-97419e3c><div class="flex items-start gap-3 mb-4" data-v-97419e3c><div style="${ssrRenderStyle({ "width": "42px", "height": "42px", "background": "linear-gradient(135deg,#4f46e5,#7c3aed)", "border-radius": "13px", "display": "flex", "align-items": "center", "justify-content": "center", "flex-shrink": "0" })}" data-v-97419e3c><svg style="${ssrRenderStyle({ "width": "20px", "height": "20px", "color": "#fff" })}" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-97419e3c><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" data-v-97419e3c></path></svg></div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>同步到其他区域</h3><p class="text-xs text-slate-400 mt-1" data-v-97419e3c>${ssrInterpolate(syncDesc.value)}</p></div></div><div class="text-xs px-3 py-2 rounded-lg mb-3" style="${ssrRenderStyle({ "background": "#f0fdf4", "border": "1px solid #bbf7d0", "color": "#15803d" })}" data-v-97419e3c>${syncScopeNote.value ?? ""}</div><div class="flex items-center justify-between mb-1" data-v-97419e3c><span class="text-xs font-semibold text-slate-500" data-v-97419e3c>选择目标区域</span><div class="flex gap-2" data-v-97419e3c><button class="btn btn-ghost btn-xs" data-v-97419e3c>全选</button><button class="btn btn-ghost btn-xs" data-v-97419e3c>清空</button></div></div><div class="sync-region-grid" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(syncRegionList.value, (r) => { |
|||
_push(`<label class="${ssrRenderClass([{ checked: syncTargets.value.includes(r.value) }, "sync-region-item"])}" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(syncTargets.value.includes(r.value)) ? " checked" : ""} data-v-97419e3c><span data-v-97419e3c>${ssrInterpolate(r.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div><p class="text-[11px] text-slate-400 mb-5" data-v-97419e3c>⚠ 已勾选区域中与当前配置相同的字段将被覆盖;加密字段密文一并同步。</p><div class="flex gap-3 justify-end" data-v-97419e3c><button class="btn btn-ghost" data-v-97419e3c>仅保存当前区域</button><button class="btn btn-primary text-white" data-v-97419e3c>保存并同步</button></div></div></div></div>`); |
|||
}; |
|||
} |
|||
}); |
|||
const _sfc_setup = _sfc_main.setup; |
|||
_sfc_main.setup = (props, ctx) => { |
|||
const ssrContext = useSSRContext(); |
|||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/serviceconfig.vue"); |
|||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0; |
|||
}; |
|||
const serviceconfig = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-97419e3c"]]); |
|||
|
|||
export { serviceconfig as default }; |
|||
//# sourceMappingURL=serviceconfig-BTX37VDF.mjs.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"serviceconfig-BTX37VDF.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-BTX37VDF.js"],"names":[],"mappings":"","x_google_ignoreList":[0]} |
|||
@ -1,198 +0,0 @@ |
|||
import { defineComponent, ref, reactive, computed, useSSRContext } from 'vue'; |
|||
import { ssrRenderAttrs, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate, ssrRenderStyle, ssrRenderClass, ssrRenderDynamicModel } from 'vue/server-renderer'; |
|||
import { u as useApi } from './useApi-B7CB0Cnn.mjs'; |
|||
import { u as useToast } from './useToast-BwtTR9dH.mjs'; |
|||
import { _ as _export_sfc } from './server.mjs'; |
|||
import './auth-QFkCoU1C.mjs'; |
|||
import 'pinia'; |
|||
import '../nitro/nitro.mjs'; |
|||
import 'node:http'; |
|||
import 'node:https'; |
|||
import 'node:events'; |
|||
import 'node:buffer'; |
|||
import 'node:fs'; |
|||
import 'node:path'; |
|||
import 'node:crypto'; |
|||
import 'node:url'; |
|||
import '../routes/renderer.mjs'; |
|||
import 'vue-bundle-renderer/runtime'; |
|||
import 'unhead/server'; |
|||
import 'devalue'; |
|||
import 'unhead/utils'; |
|||
import 'perfect-debounce'; |
|||
|
|||
const _sfc_main = /* @__PURE__ */ defineComponent({ |
|||
__name: "serviceconfig", |
|||
__ssrInlineRender: true, |
|||
setup(__props) { |
|||
const REGIONS = [ |
|||
{ value: 1, label: "中国" }, |
|||
{ value: 2, label: "美国" }, |
|||
{ value: 3, label: "东亚" }, |
|||
{ value: 4, label: "东南亚" }, |
|||
{ value: 5, label: "南亚" }, |
|||
{ value: 6, label: "中东" }, |
|||
{ value: 7, label: "欧洲" }, |
|||
{ value: 8, label: "俄罗斯" }, |
|||
{ value: 9, label: "非洲" }, |
|||
{ value: 10, label: "南美" }, |
|||
{ value: 11, label: "北美" }, |
|||
{ value: 12, label: "大洋洲" }, |
|||
{ value: 13, label: "巴西" }, |
|||
{ value: 14, label: "印度" } |
|||
]; |
|||
const SCAT = [ |
|||
{ v: 1, label: "STT 语音识别", short: "STT", color: "#0369a1", bg: "#dbeafe" }, |
|||
{ v: 2, label: "TTS 语音合成", short: "TTS", color: "#7c3aed", bg: "#ede9fe" }, |
|||
{ v: 3, label: "MT 机器翻译", short: "MT", color: "#059669", bg: "#dcfce7" }, |
|||
{ v: 4, label: "AST 端到端", short: "AST", color: "#c2410c", bg: "#fff7ed" }, |
|||
{ v: 5, label: "LLM 大语言", short: "LLM", color: "#b45309", bg: "#fef9c3" }, |
|||
{ v: 6, label: "存储 OSS/COS", short: "存储", color: "#475569", bg: "#f1f5f9" } |
|||
]; |
|||
useApi(); |
|||
useToast(); |
|||
function scatInfo(v) { |
|||
return SCAT.find((s) => s.v === v) || { short: "?", color: "#999", bg: "#eee", v: 0, label: "" }; |
|||
} |
|||
function parseCats(s) { |
|||
return (s || "").split(",").map((x) => parseInt(x) || 0).filter((x) => x > 0); |
|||
} |
|||
function encCount(s) { |
|||
return (s.fields || []).filter((f) => f.encrypted).length; |
|||
} |
|||
const allSvcs = ref([]); |
|||
const curSvc = ref(null); |
|||
const curRegion = ref(0); |
|||
const detailMode = ref("empty"); |
|||
const editForm = reactive({ id: "", name: "", description: "", enable: false }); |
|||
const editCats = ref([]); |
|||
const editFields = ref([]); |
|||
const overrideFields = ref([]); |
|||
const regionLoading = ref(false); |
|||
const curRegionLabel = computed(() => { |
|||
const r = REGIONS.find((x) => x.value === curRegion.value); |
|||
return r ? r.label : "区域" + curRegion.value; |
|||
}); |
|||
const syncVisible = ref(false); |
|||
ref(false); |
|||
const syncDesc = ref(""); |
|||
const syncScopeNote = ref(""); |
|||
const syncTargets = ref([]); |
|||
const syncRegionList = computed(() => REGIONS.filter((r) => r.value !== curRegion.value)); |
|||
return (_ctx, _push, _parent, _attrs) => { |
|||
_push(`<div${ssrRenderAttrs(_attrs)} data-v-8f55f9ae><div class="flex items-center justify-between mb-5" data-v-8f55f9ae><div data-v-8f55f9ae><h2 class="text-lg font-semibold text-slate-800" data-v-8f55f9ae>依赖服务配置</h2><p class="text-xs text-slate-400 mt-1" data-v-8f55f9ae>配置火山引擎、阿里云等第三方服务;字段支持加密存储。默认配置全区域共用,可按区域覆盖字段值。</p></div><div class="flex items-center gap-3" data-v-8f55f9ae><select class="select select-bordered select-sm" data-v-8f55f9ae><option${ssrRenderAttr("value", 0)} data-v-8f55f9ae${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, 0) : ssrLooseEqual(curRegion.value, 0)) ? " selected" : ""}>默认(全区域)</option><!--[-->`); |
|||
ssrRenderList(REGIONS, (r) => { |
|||
_push(`<option${ssrRenderAttr("value", r.value)} data-v-8f55f9ae${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, r.value) : ssrLooseEqual(curRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`); |
|||
}); |
|||
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" style="${ssrRenderStyle(curRegion.value === 0 ? null : { display: "none" })}" data-v-8f55f9ae>+ 新增服务</button></div></div><div class="flex gap-4" style="${ssrRenderStyle({ "align-items": "flex-start" })}" data-v-8f55f9ae><div style="${ssrRenderStyle({ "width": "248px", "flex-shrink": "0" })}" data-v-8f55f9ae><div class="flex flex-col gap-2" data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(allSvcs.value, (s) => { |
|||
_push(`<div class="${ssrRenderClass([{ active: curSvc.value && curSvc.value.id === s.id }, "svc-item"])}" data-v-8f55f9ae><div class="svc-logo" style="${ssrRenderStyle({ background: s.color || "#6366f1" })}" data-v-8f55f9ae>${ssrInterpolate(s.icon || (s.name || "").charAt(0))}</div><div style="${ssrRenderStyle({ "min-width": "0", "flex": "1" })}" data-v-8f55f9ae><div class="flex items-center gap-2" data-v-8f55f9ae><span class="font-semibold text-slate-800 text-sm truncate" data-v-8f55f9ae>${ssrInterpolate(s.name)}</span><span class="${ssrRenderClass([s.enable ? "badge-success" : "badge-ghost", "badge badge-xs"])}" data-v-8f55f9ae>${ssrInterpolate(s.enable ? "启用" : "停用")}</span></div><div class="flex flex-wrap gap-1 mt-1" data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(parseCats(s.categories), (v) => { |
|||
_push(`<span class="cat-chip" style="${ssrRenderStyle({ color: scatInfo(v).color, background: scatInfo(v).bg })}" data-v-8f55f9ae>${ssrInterpolate(scatInfo(v).short)}</span>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (encCount(s)) { |
|||
_push(`<span class="lock-badge" data-v-8f55f9ae>🔒${ssrInterpolate(encCount(s))}</span>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (!allSvcs.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 text-center py-8" data-v-8f55f9ae>暂无服务</p>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div><div class="flex-1 min-w-0" data-v-8f55f9ae><div class="bg-white rounded-2xl border border-slate-100 shadow-sm p-6" data-v-8f55f9ae>`); |
|||
if (detailMode.value === "empty") { |
|||
_push(`<div class="text-center text-slate-300 py-20" data-v-8f55f9ae><div class="text-5xl mb-3" data-v-8f55f9ae>⚙️</div><p class="text-sm" data-v-8f55f9ae>从左侧选择一个服务开始配置</p></div>`); |
|||
} else if (detailMode.value === "default" && curSvc.value) { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-8f55f9ae><div class="flex items-center gap-3" data-v-8f55f9ae><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-8f55f9ae>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-8f55f9ae><h3 class="text-base font-semibold text-slate-800" data-v-8f55f9ae>${ssrInterpolate(curSvc.value.name)}</h3><p class="text-xs text-slate-400 mt-0.5" data-v-8f55f9ae>${ssrInterpolate(curSvc.value.id)}</p></div></div><div class="flex gap-2" data-v-8f55f9ae><button class="btn btn-error btn-sm btn-outline" data-v-8f55f9ae>删除服务</button><button class="btn btn-primary btn-sm text-white" data-v-8f55f9ae>保存</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-8f55f9ae>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-8f55f9ae><div class="form-control" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" data-v-8f55f9ae></div><div class="form-control" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>启用</span></label><input${ssrIncludeBooleanAttr(Array.isArray(editForm.enable) ? ssrLooseContain(editForm.enable, null) : editForm.enable) ? " checked" : ""} type="checkbox" class="toggle toggle-primary mt-3" data-v-8f55f9ae></div></div><div class="form-control mb-4" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" data-v-8f55f9ae></div><div class="mb-4" data-v-8f55f9ae><p class="text-sm font-medium text-slate-700 mb-2" data-v-8f55f9ae>服务类别 <span class="text-slate-400 text-xs" data-v-8f55f9ae>(可多选)</span></p><div class="flex flex-wrap gap-3" data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-8f55f9ae><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-8f55f9ae><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-8f55f9ae>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-8f55f9ae>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-8f55f9ae>自定义字段</div><div data-v-8f55f9ae>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-8f55f9ae>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-8f55f9ae><table class="table text-xs" data-v-8f55f9ae><thead data-v-8f55f9ae><tr data-v-8f55f9ae><th class="w-32" data-v-8f55f9ae>字段名</th><th data-v-8f55f9ae>字段描述</th><th class="w-16 text-center" data-v-8f55f9ae>加密</th><th data-v-8f55f9ae>默认值</th><th class="w-12" data-v-8f55f9ae></th></tr></thead><tbody data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-8f55f9ae><td data-v-8f55f9ae><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-8f55f9ae></td><td data-v-8f55f9ae><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-8f55f9ae></td><td class="text-center" data-v-8f55f9ae><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-8f55f9ae></td><td data-v-8f55f9ae>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-8f55f9ae><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-8f55f9ae><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-8f55f9ae>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-8f55f9ae>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-8f55f9ae>`); |
|||
} |
|||
_push(`</td><td data-v-8f55f9ae><button class="btn btn-ghost btn-xs text-error" data-v-8f55f9ae>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-8f55f9ae>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "new") { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-8f55f9ae><h3 class="text-base font-semibold text-slate-800" data-v-8f55f9ae>新增依赖服务</h3><div class="flex gap-2" data-v-8f55f9ae><button class="btn btn-ghost btn-sm" data-v-8f55f9ae>取消</button><button class="btn btn-primary btn-sm text-white" data-v-8f55f9ae>创建</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-8f55f9ae>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-8f55f9ae><div class="form-control" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>服务ID * <span class="text-slate-400 text-xs" data-v-8f55f9ae>(唯一,如 volcengine)</span></span></label><input${ssrRenderAttr("value", editForm.id)} class="input input-bordered font-mono" placeholder="volcengine" data-v-8f55f9ae></div><div class="form-control" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" placeholder="火山引擎" data-v-8f55f9ae></div></div><div class="form-control mb-4" data-v-8f55f9ae><label class="label" data-v-8f55f9ae><span class="label-text" data-v-8f55f9ae>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" placeholder="简述该服务的用途" data-v-8f55f9ae></div><div class="mb-4" data-v-8f55f9ae><p class="text-sm font-medium text-slate-700 mb-2" data-v-8f55f9ae>服务类别</p><div class="flex flex-wrap gap-3" data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-8f55f9ae><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-8f55f9ae><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-8f55f9ae>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-8f55f9ae>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-8f55f9ae>自定义字段</div><div data-v-8f55f9ae>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-8f55f9ae>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-8f55f9ae><table class="table text-xs" data-v-8f55f9ae><thead data-v-8f55f9ae><tr data-v-8f55f9ae><th class="w-32" data-v-8f55f9ae>字段名</th><th data-v-8f55f9ae>字段描述</th><th class="w-16 text-center" data-v-8f55f9ae>加密</th><th data-v-8f55f9ae>默认值</th><th class="w-12" data-v-8f55f9ae></th></tr></thead><tbody data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-8f55f9ae><td data-v-8f55f9ae><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-8f55f9ae></td><td data-v-8f55f9ae><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-8f55f9ae></td><td class="text-center" data-v-8f55f9ae><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-8f55f9ae></td><td data-v-8f55f9ae>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-8f55f9ae><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-8f55f9ae><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-8f55f9ae>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-8f55f9ae>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-8f55f9ae>`); |
|||
} |
|||
_push(`</td><td data-v-8f55f9ae><button class="btn btn-ghost btn-xs text-error" data-v-8f55f9ae>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-8f55f9ae>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "region" && curSvc.value) { |
|||
_push(`<!--[-->`); |
|||
if (regionLoading.value) { |
|||
_push(`<div class="text-center py-10 text-slate-400" data-v-8f55f9ae>加载中...</div>`); |
|||
} else { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-8f55f9ae><div class="flex items-center gap-3" data-v-8f55f9ae><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-8f55f9ae>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-8f55f9ae><h3 class="text-base font-semibold text-slate-800" data-v-8f55f9ae>${ssrInterpolate(curSvc.value.name)}</h3><span class="badge badge-warning badge-sm mt-0.5" data-v-8f55f9ae>${ssrInterpolate(curRegionLabel.value)} 覆盖模式</span></div></div><button class="btn btn-primary btn-sm text-white" data-v-8f55f9ae>保存覆盖</button></div><div class="rounded-lg px-3 py-2 mb-4 text-xs" style="${ssrRenderStyle({ "background": "#fefce8", "border": "1px solid #fde047", "color": "#854d0e" })}" data-v-8f55f9ae> ✦ 当前编辑「${ssrInterpolate(curRegionLabel.value)}」的字段覆盖值。留空的字段将继承默认值。加密字段留空保留已存储密文。 </div><div class="overflow-x-auto" data-v-8f55f9ae><table class="table text-xs" data-v-8f55f9ae><thead data-v-8f55f9ae><tr data-v-8f55f9ae><th class="w-32" data-v-8f55f9ae>字段名</th><th data-v-8f55f9ae>字段描述</th><th class="w-24 text-center" data-v-8f55f9ae>状态</th><th data-v-8f55f9ae>有效值</th></tr></thead><tbody data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(overrideFields.value, (f, i) => { |
|||
_push(`<tr data-v-8f55f9ae><td class="font-mono text-slate-700" data-v-8f55f9ae>${ssrInterpolate(f.key)}</td><td class="text-slate-500" data-v-8f55f9ae>${ssrInterpolate(f.description)}</td><td class="text-center" data-v-8f55f9ae>`); |
|||
if (f.is_overridden) { |
|||
_push(`<span class="override-badge" data-v-8f55f9ae>覆盖</span>`); |
|||
} else { |
|||
_push(`<span class="inherit-badge" data-v-8f55f9ae>继承</span>`); |
|||
} |
|||
_push(`</td><td data-v-8f55f9ae>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-8f55f9ae><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f._input, null)} placeholder="留空继承默认" data-v-8f55f9ae><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-8f55f9ae>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-8f55f9ae>🔒</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f._input)}${ssrRenderAttr("placeholder", "留空继承:" + (f.value || ""))} data-v-8f55f9ae>`); |
|||
} |
|||
_push(`</td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div><!--]-->`); |
|||
} |
|||
_push(`<!--]-->`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div><div class="sync-overlay" style="${ssrRenderStyle(syncVisible.value ? null : { display: "none" })}" data-v-8f55f9ae><div class="sync-box" data-v-8f55f9ae><div class="flex items-start gap-3 mb-4" data-v-8f55f9ae><div style="${ssrRenderStyle({ "width": "42px", "height": "42px", "background": "linear-gradient(135deg,#4f46e5,#7c3aed)", "border-radius": "13px", "display": "flex", "align-items": "center", "justify-content": "center", "flex-shrink": "0" })}" data-v-8f55f9ae><svg style="${ssrRenderStyle({ "width": "20px", "height": "20px", "color": "#fff" })}" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-8f55f9ae><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" data-v-8f55f9ae></path></svg></div><div data-v-8f55f9ae><h3 class="text-base font-semibold text-slate-800" data-v-8f55f9ae>同步到其他区域</h3><p class="text-xs text-slate-400 mt-1" data-v-8f55f9ae>${ssrInterpolate(syncDesc.value)}</p></div></div><div class="text-xs px-3 py-2 rounded-lg mb-3" style="${ssrRenderStyle({ "background": "#f0fdf4", "border": "1px solid #bbf7d0", "color": "#15803d" })}" data-v-8f55f9ae>${syncScopeNote.value ?? ""}</div><div class="flex items-center justify-between mb-1" data-v-8f55f9ae><span class="text-xs font-semibold text-slate-500" data-v-8f55f9ae>选择目标区域</span><div class="flex gap-2" data-v-8f55f9ae><button class="btn btn-ghost btn-xs" data-v-8f55f9ae>全选</button><button class="btn btn-ghost btn-xs" data-v-8f55f9ae>清空</button></div></div><div class="sync-region-grid" data-v-8f55f9ae><!--[-->`); |
|||
ssrRenderList(syncRegionList.value, (r) => { |
|||
_push(`<label class="${ssrRenderClass([{ checked: syncTargets.value.includes(r.value) }, "sync-region-item"])}" data-v-8f55f9ae><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(syncTargets.value.includes(r.value)) ? " checked" : ""} data-v-8f55f9ae><span data-v-8f55f9ae>${ssrInterpolate(r.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div><p class="text-[11px] text-slate-400 mb-5" data-v-8f55f9ae>⚠ 已勾选区域中与当前配置相同的字段将被覆盖;加密字段密文一并同步。</p><div class="flex gap-3 justify-end" data-v-8f55f9ae><button class="btn btn-ghost" data-v-8f55f9ae>仅保存当前区域</button><button class="btn btn-primary text-white" data-v-8f55f9ae>保存并同步</button></div></div></div></div>`); |
|||
}; |
|||
} |
|||
}); |
|||
const _sfc_setup = _sfc_main.setup; |
|||
_sfc_main.setup = (props, ctx) => { |
|||
const ssrContext = useSSRContext(); |
|||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/serviceconfig.vue"); |
|||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0; |
|||
}; |
|||
const serviceconfig = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8f55f9ae"]]); |
|||
|
|||
export { serviceconfig as default }; |
|||
//# sourceMappingURL=serviceconfig-qwLggDKS.mjs.map
|
|||
@ -1 +0,0 @@ |
|||
{"version":3,"file":"serviceconfig-qwLggDKS.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-qwLggDKS.js"],"names":[],"mappings":"","x_google_ignoreList":[0]} |
|||
@ -0,0 +1,8 @@ |
|||
const serviceconfig_vue_vue_type_style_index_0_scoped_97419e3c_lang = ".svc-item[data-v-97419e3c]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-97419e3c]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-97419e3c]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-97419e3c]{font-weight:700;padding:2px 7px}.cat-chip[data-v-97419e3c],.lock-badge[data-v-97419e3c]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-97419e3c]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-97419e3c]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-97419e3c],.override-badge[data-v-97419e3c]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-97419e3c]{background:#fef3c7;color:#b45309}.field-input[data-v-97419e3c]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-97419e3c]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-97419e3c]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-97419e3c]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-97419e3c]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-97419e3c]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-97419e3c]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
|
|||
const serviceconfigStyles_BE2TPkT0 = [ |
|||
serviceconfig_vue_vue_type_style_index_0_scoped_97419e3c_lang |
|||
]; |
|||
|
|||
export { serviceconfigStyles_BE2TPkT0 as default }; |
|||
//# sourceMappingURL=serviceconfig-styles.BE2TPkT0.mjs.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"serviceconfig-styles.BE2TPkT0.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-C3NfMX4J.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles.BE2TPkT0.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]} |
|||
@ -1,8 +0,0 @@ |
|||
const serviceconfig_vue_vue_type_style_index_0_scoped_8f55f9ae_lang = ".svc-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-8f55f9ae]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-8f55f9ae]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-8f55f9ae]{font-weight:700;padding:2px 7px}.cat-chip[data-v-8f55f9ae],.lock-badge[data-v-8f55f9ae]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-8f55f9ae]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-8f55f9ae]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-8f55f9ae],.override-badge[data-v-8f55f9ae]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-8f55f9ae]{background:#fef3c7;color:#b45309}.field-input[data-v-8f55f9ae]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-8f55f9ae]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-8f55f9ae]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-8f55f9ae]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-8f55f9ae]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-8f55f9ae]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
|
|||
const serviceconfigStyles_xUAQG0GO = [ |
|||
serviceconfig_vue_vue_type_style_index_0_scoped_8f55f9ae_lang |
|||
]; |
|||
|
|||
export { serviceconfigStyles_xUAQG0GO as default }; |
|||
//# sourceMappingURL=serviceconfig-styles.xUAQG0GO.mjs.map
|
|||
@ -1 +0,0 @@ |
|||
{"version":3,"file":"serviceconfig-styles.xUAQG0GO.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-00PjZ_x3.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles.xUAQG0GO.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]} |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as o,o as s,c as a,a as t,t as r}from"./ydFS6PsN.js";import{u as i}from"./8EvkM1NE.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; |
|||
import{_ as o,o as s,c as a,a as t,t as r}from"./96IDI_OR.js";import{u as i}from"./C5ETpaZb.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; |
|||
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as s}from"./DhCGnUi5.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./ydFS6PsN.js";import{u as f}from"./8EvkM1NE.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default}; |
|||
import{_ as s}from"./0ubqzWuP.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./96IDI_OR.js";import{u as f}from"./C5ETpaZb.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default}; |
|||
@ -1 +1 @@ |
|||
import{u as a,e as s,h as u,i as r,f as h}from"./ydFS6PsN.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; |
|||
import{u as a,e as s,h as u,i as r,f as h}from"./96IDI_OR.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{e as f,a3 as r,a4 as c}from"./ydFS6PsN.js";const p="$s";function l(...o){const n=typeof o[o.length-1]=="string"?o.pop():void 0;typeof o[0]!="string"&&o.unshift(n);const[e,t]=o;if(!e||typeof e!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+e);if(t!==void 0&&typeof t!="function")throw new Error("[nuxt] [useState] init must be a function: "+t);const s=p+e,i=f(),u=r(i.payload.state,s);if(t&&(i._state[s]??={_default:t}),u.value===void 0&&t){const a=t();if(c(a))return i.payload.state[s]=a,a;u.value=a}return u}let y=0;function d(){const o=l("app:toasts",()=>[]);function n(e,t="info",s=3e3){const i=++y;o.value.push({id:i,type:t,msg:e}),s>0&&setTimeout(()=>{o.value=o.value.filter(u=>u.id!==i)},s)}return{toasts:o,toast:n,success:(e,t)=>n(e,"success",t),error:(e,t)=>n(e,"error",t),info:(e,t)=>n(e,"info",t),warn:(e,t)=>n(e,"warning",t)}}export{d as u}; |
|||
import{e as f,a3 as r,a4 as c}from"./96IDI_OR.js";const p="$s";function l(...o){const n=typeof o[o.length-1]=="string"?o.pop():void 0;typeof o[0]!="string"&&o.unshift(n);const[e,t]=o;if(!e||typeof e!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+e);if(t!==void 0&&typeof t!="function")throw new Error("[nuxt] [useState] init must be a function: "+t);const s=p+e,i=f(),u=r(i.payload.state,s);if(t&&(i._state[s]??={_default:t}),u.value===void 0&&t){const a=t();if(c(a))return i.payload.state[s]=a,a;u.value=a}return u}let y=0;function d(){const o=l("app:toasts",()=>[]);function n(e,t="info",s=3e3){const i=++y;o.value.push({id:i,type:t,msg:e}),s>0&&setTimeout(()=>{o.value=o.value.filter(u=>u.id!==i)},s)}return{toasts:o,toast:n,success:(e,t)=>n(e,"success",t),error:(e,t)=>n(e,"error",t),info:(e,t)=>n(e,"info",t),warn:(e,t)=>n(e,"warning",t)}}export{d as u}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{y as p,z as d}from"./ydFS6PsN.js";async function c(s,a,i){const r=p(),n=d(),t={"Content-Type":"application/json"};r.token&&(t.Authorization=r.token),i&&Object.assign(t,i);const o=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(a)});if(!o.ok)throw new Error(`HTTP error: ${o.status}`);const e=await o.json();if(e.code===18)throw r.logout(),n.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}function h(){const s=p();async function a(n,t){const o={};return s.currentAppId&&(o["X-App-Id"]=String(s.currentAppId)),c(`/web/api/api_${n}`,t??{},o)}async function i(n,t){return c(`/console/api/${n}`,t??{})}async function r(n,t){const o=await a("getcostoken",{path:t}),e=o.upload_url||o.url||"",u=await fetch(e,{method:"PUT",headers:{"Content-Type":n.type||"application/octet-stream"},body:n});if(!u.ok)throw new Error(`Upload failed: ${u.status}`);return e.split("?")[0]}return{webApi:a,consoleApi:i,uploadFile:r}}export{h as u}; |
|||
import{y as p,z as d}from"./96IDI_OR.js";async function c(s,a,i){const r=p(),n=d(),t={"Content-Type":"application/json"};r.token&&(t.Authorization=r.token),i&&Object.assign(t,i);const o=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(a)});if(!o.ok)throw new Error(`HTTP error: ${o.status}`);const e=await o.json();if(e.code===18)throw r.logout(),n.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}function h(){const s=p();async function a(n,t){const o={};return s.currentAppId&&(o["X-App-Id"]=String(s.currentAppId)),c(`/web/api/api_${n}`,t??{},o)}async function i(n,t){return c(`/console/api/${n}`,t??{})}async function r(n,t){const o=await a("getcostoken",{path:t}),e=o.upload_url||o.url||"",u=await fetch(e,{method:"PUT",headers:{"Content-Type":n.type||"application/octet-stream"},body:n});if(!u.ok)throw new Error(`Upload failed: ${u.status}`);return e.split("?")[0]}return{webApi:a,consoleApi:i,uploadFile:r}}export{h as u}; |
|||
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{_ as t,o,c as s,I as c}from"./ydFS6PsN.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; |
|||
import{_ as t,o,c as s,I as c}from"./96IDI_OR.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
import{g as h,y as x,z as w,j as y,c as r,a as e,t as d,l as b,A as _,k as v,m as g,n as k,x as A,s as u,o as p,_ as M}from"./ydFS6PsN.js";const z={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=A({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",z,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default}; |
|||
import{g as h,y as x,z as w,j as y,c as r,a as e,t as d,l as b,A as _,k as v,m as g,n as k,x as A,s as u,o as p,_ as M}from"./96IDI_OR.js";const z={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=A({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",z,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default}; |
|||
@ -0,0 +1 @@ |
|||
.pair-card[data-v-51f11136]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-51f11136]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-51f11136]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-51f11136]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-51f11136]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-51f11136]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-51f11136]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-51f11136]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-51f11136]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-51f11136]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-51f11136]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-51f11136]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-51f11136]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-51f11136]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-51f11136]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-51f11136]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -1 +0,0 @@ |
|||
.pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@ |
|||
.svc-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-8f55f9ae]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-8f55f9ae]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-8f55f9ae]{font-weight:700;padding:2px 7px}.cat-chip[data-v-8f55f9ae],.lock-badge[data-v-8f55f9ae]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-8f55f9ae]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-8f55f9ae]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-8f55f9ae],.override-badge[data-v-8f55f9ae]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-8f55f9ae]{background:#fef3c7;color:#b45309}.field-input[data-v-8f55f9ae]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-8f55f9ae]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-8f55f9ae]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-8f55f9ae]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-8f55f9ae]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-8f55f9ae]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -0,0 +1 @@ |
|||
.svc-item[data-v-97419e3c]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-97419e3c]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-97419e3c]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-97419e3c]{font-weight:700;padding:2px 7px}.cat-chip[data-v-97419e3c],.lock-badge[data-v-97419e3c]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-97419e3c]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-97419e3c]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-97419e3c],.override-badge[data-v-97419e3c]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-97419e3c]{background:#fef3c7;color:#b45309}.field-input[data-v-97419e3c]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-97419e3c]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-97419e3c]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-97419e3c]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-97419e3c]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-97419e3c]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-97419e3c]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-97419e3c]{border-color:#6366f1;background:#eef2ff;color:#4338ca} |
|||
@ -1,4 +1,4 @@ |
|||
import{g as G,j as K,H as P,c as a,a as e,d as u,k as x,p as U,F as f,r as B,m as Y,q as Z,t as n,s as i,C as E,o,n as F,l as I,_ as J}from"./ydFS6PsN.js";import{u as Q}from"./CWcpm1jv.js";import{u as W}from"./CQ70mTiW.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{success:H,error:O}=W(),R={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?R[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
|
|||
import{g as G,j as K,H as P,c as a,a as e,d as u,k as x,p as U,F as f,r as B,m as Y,q as Z,t as n,s as i,C as E,o,n as F,l as I,_ as J}from"./96IDI_OR.js";import{u as Q}from"./Do83zqYq.js";import{u as W}from"./CVUxyiJx.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{success:H,error:O}=W(),R={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?R[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
|
|||
|
|||
只清除本核对面板的记录,不影响已落库的统计数据。 |
|||
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});H("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){O("清空失败:"+(r?.message||"网络异常"))}}function z(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,B(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[U,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[U,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Y,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:z},null,544),[[Z,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:q},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},B(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",M(t.level).cls])},n(M(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),j(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Dt=J(kt,[["__scopeId","data-v-742ee359"]]);export{Dt as default};
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
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,5 @@ |
|||
const calltranslate_vue_vue_type_style_index_0_scoped_51f11136_lang = ".pair-card[data-v-51f11136]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-51f11136]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-51f11136]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-51f11136]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-51f11136]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-51f11136]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-51f11136]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-51f11136]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-51f11136]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-51f11136]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-51f11136]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-51f11136]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-51f11136]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-51f11136]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-51f11136]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-51f11136]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
export { |
|||
calltranslate_vue_vue_type_style_index_0_scoped_51f11136_lang as default |
|||
}; |
|||
//# sourceMappingURL=calltranslate-styles-1.mjs-DA2j2DKH.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"calltranslate-styles-1.mjs-DA2j2DKH.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} |
|||
@ -0,0 +1 @@ |
|||
{"file":"calltranslate-styles-1.mjs-DA2j2DKH.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} |
|||
@ -1,5 +0,0 @@ |
|||
const calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang = ".pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca}"; |
|||
export { |
|||
calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang as default |
|||
}; |
|||
//# sourceMappingURL=calltranslate-styles-1.mjs-Dn-xJ4XY.js.map
|
|||
@ -1 +0,0 @@ |
|||
{"version":3,"file":"calltranslate-styles-1.mjs-Dn-xJ4XY.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} |
|||
@ -1 +0,0 @@ |
|||
{"file":"calltranslate-styles-1.mjs-Dn-xJ4XY.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} |
|||
@ -1,4 +0,0 @@ |
|||
import style_0 from "./calltranslate-styles-1.mjs-Dn-xJ4XY.js"; |
|||
export default [ |
|||
style_0 |
|||
] |
|||
@ -0,0 +1,4 @@ |
|||
import style_0 from "./calltranslate-styles-1.mjs-DA2j2DKH.js"; |
|||
export default [ |
|||
style_0 |
|||
] |
|||
@ -0,0 +1,200 @@ |
|||
import { defineComponent, ref, reactive, computed, useSSRContext } from "vue"; |
|||
import { ssrRenderAttrs, ssrRenderStyle, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderDynamicModel } from "vue/server-renderer"; |
|||
import { u as useApi } from "./useApi-B7CB0Cnn.js"; |
|||
import { u as useToast } from "./useToast-BwtTR9dH.js"; |
|||
import { _ as _export_sfc } from "../server.mjs"; |
|||
import "./auth-QFkCoU1C.js"; |
|||
import "pinia"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs"; |
|||
import "#internal/nuxt/paths"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/hookable@6.1.1/node_modules/hookable/dist/index.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/h3-compat.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/defu@6.1.7/node_modules/defu/dist/defu.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/ufo@1.6.4/node_modules/ufo/dist/index.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/perfect-debounce@2.1.0/node_modules/perfect-debounce/dist/index.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs"; |
|||
import "/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs"; |
|||
const _sfc_main = /* @__PURE__ */ defineComponent({ |
|||
__name: "serviceconfig", |
|||
__ssrInlineRender: true, |
|||
setup(__props) { |
|||
const REGIONS = [ |
|||
{ value: 1, label: "中国" }, |
|||
{ value: 2, label: "美国" }, |
|||
{ value: 3, label: "东亚" }, |
|||
{ value: 4, label: "东南亚" }, |
|||
{ value: 5, label: "南亚" }, |
|||
{ value: 6, label: "中东" }, |
|||
{ value: 7, label: "欧洲" }, |
|||
{ value: 8, label: "俄罗斯" }, |
|||
{ value: 9, label: "非洲" }, |
|||
{ value: 10, label: "南美" }, |
|||
{ value: 11, label: "北美" }, |
|||
{ value: 12, label: "大洋洲" }, |
|||
{ value: 13, label: "巴西" }, |
|||
{ value: 14, label: "印度" } |
|||
]; |
|||
const SCAT = [ |
|||
{ v: 1, label: "STT 语音识别", short: "STT", color: "#0369a1", bg: "#dbeafe" }, |
|||
{ v: 2, label: "TTS 语音合成", short: "TTS", color: "#7c3aed", bg: "#ede9fe" }, |
|||
{ v: 3, label: "MT 机器翻译", short: "MT", color: "#059669", bg: "#dcfce7" }, |
|||
{ v: 4, label: "AST 端到端", short: "AST", color: "#c2410c", bg: "#fff7ed" }, |
|||
{ v: 5, label: "LLM 大语言", short: "LLM", color: "#b45309", bg: "#fef9c3" }, |
|||
{ v: 6, label: "存储 OSS/COS", short: "存储", color: "#475569", bg: "#f1f5f9" } |
|||
]; |
|||
useApi(); |
|||
useToast(); |
|||
function scatInfo(v) { |
|||
return SCAT.find((s) => s.v === v) || { short: "?", color: "#999", bg: "#eee", v: 0, label: "" }; |
|||
} |
|||
function parseCats(s) { |
|||
return (s || "").split(",").map((x) => parseInt(x) || 0).filter((x) => x > 0); |
|||
} |
|||
function encCount(s) { |
|||
return (s.fields || []).filter((f) => f.encrypted).length; |
|||
} |
|||
const backendReady = ref(true); |
|||
const allSvcs = ref([]); |
|||
const curSvc = ref(null); |
|||
const curRegion = ref(0); |
|||
const detailMode = ref("empty"); |
|||
const editForm = reactive({ id: "", name: "", description: "", enable: false }); |
|||
const editCats = ref([]); |
|||
const editFields = ref([]); |
|||
const overrideFields = ref([]); |
|||
const regionLoading = ref(false); |
|||
const curRegionLabel = computed(() => { |
|||
const r = REGIONS.find((x) => x.value === curRegion.value); |
|||
return r ? r.label : "区域" + curRegion.value; |
|||
}); |
|||
const syncVisible = ref(false); |
|||
ref(false); |
|||
const syncDesc = ref(""); |
|||
const syncScopeNote = ref(""); |
|||
const syncTargets = ref([]); |
|||
const syncRegionList = computed(() => REGIONS.filter((r) => r.value !== curRegion.value)); |
|||
return (_ctx, _push, _parent, _attrs) => { |
|||
_push(`<div${ssrRenderAttrs(_attrs)} data-v-97419e3c>`); |
|||
if (!backendReady.value) { |
|||
_push(`<div class="mb-4 rounded-lg px-4 py-3 text-sm" style="${ssrRenderStyle({ "background": "#fffbeb", "border": "1px solid #fde68a", "color": "#92400e" })}" data-v-97419e3c> ⚠ 「依赖服务配置」的后端接口尚未迁移到当前 console 服务,功能暂不可用。 </div>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`<div class="flex items-center justify-between mb-5" data-v-97419e3c><div data-v-97419e3c><h2 class="text-lg font-semibold text-slate-800" data-v-97419e3c>依赖服务配置</h2><p class="text-xs text-slate-400 mt-1" data-v-97419e3c>配置火山引擎、阿里云等第三方服务;字段支持加密存储。默认配置全区域共用,可按区域覆盖字段值。</p></div><div class="flex items-center gap-3" data-v-97419e3c><select class="select select-bordered select-sm" data-v-97419e3c><option${ssrRenderAttr("value", 0)} data-v-97419e3c${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, 0) : ssrLooseEqual(curRegion.value, 0)) ? " selected" : ""}>默认(全区域)</option><!--[-->`); |
|||
ssrRenderList(REGIONS, (r) => { |
|||
_push(`<option${ssrRenderAttr("value", r.value)} data-v-97419e3c${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, r.value) : ssrLooseEqual(curRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`); |
|||
}); |
|||
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" style="${ssrRenderStyle(curRegion.value === 0 ? null : { display: "none" })}" data-v-97419e3c>+ 新增服务</button></div></div><div class="flex gap-4" style="${ssrRenderStyle({ "align-items": "flex-start" })}" data-v-97419e3c><div style="${ssrRenderStyle({ "width": "248px", "flex-shrink": "0" })}" data-v-97419e3c><div class="flex flex-col gap-2" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(allSvcs.value, (s) => { |
|||
_push(`<div class="${ssrRenderClass([{ active: curSvc.value && curSvc.value.id === s.id }, "svc-item"])}" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: s.color || "#6366f1" })}" data-v-97419e3c>${ssrInterpolate(s.icon || (s.name || "").charAt(0))}</div><div style="${ssrRenderStyle({ "min-width": "0", "flex": "1" })}" data-v-97419e3c><div class="flex items-center gap-2" data-v-97419e3c><span class="font-semibold text-slate-800 text-sm truncate" data-v-97419e3c>${ssrInterpolate(s.name)}</span><span class="${ssrRenderClass([s.enable ? "badge-success" : "badge-ghost", "badge badge-xs"])}" data-v-97419e3c>${ssrInterpolate(s.enable ? "启用" : "停用")}</span></div><div class="flex flex-wrap gap-1 mt-1" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(parseCats(s.categories), (v) => { |
|||
_push(`<span class="cat-chip" style="${ssrRenderStyle({ color: scatInfo(v).color, background: scatInfo(v).bg })}" data-v-97419e3c>${ssrInterpolate(scatInfo(v).short)}</span>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (encCount(s)) { |
|||
_push(`<span class="lock-badge" data-v-97419e3c>🔒${ssrInterpolate(encCount(s))}</span>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div>`); |
|||
}); |
|||
_push(`<!--]-->`); |
|||
if (!allSvcs.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 text-center py-8" data-v-97419e3c>暂无服务</p>`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div><div class="flex-1 min-w-0" data-v-97419e3c><div class="bg-white rounded-2xl border border-slate-100 shadow-sm p-6" data-v-97419e3c>`); |
|||
if (detailMode.value === "empty") { |
|||
_push(`<div class="text-center text-slate-300 py-20" data-v-97419e3c><div class="text-5xl mb-3" data-v-97419e3c>⚙️</div><p class="text-sm" data-v-97419e3c>从左侧选择一个服务开始配置</p></div>`); |
|||
} else if (detailMode.value === "default" && curSvc.value) { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><div class="flex items-center gap-3" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-97419e3c>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>${ssrInterpolate(curSvc.value.name)}</h3><p class="text-xs text-slate-400 mt-0.5" data-v-97419e3c>${ssrInterpolate(curSvc.value.id)}</p></div></div><div class="flex gap-2" data-v-97419e3c><button class="btn btn-error btn-sm btn-outline" data-v-97419e3c>删除服务</button><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>保存</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-97419e3c><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" data-v-97419e3c></div><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>启用</span></label><input${ssrIncludeBooleanAttr(Array.isArray(editForm.enable) ? ssrLooseContain(editForm.enable, null) : editForm.enable) ? " checked" : ""} type="checkbox" class="toggle toggle-primary mt-3" data-v-97419e3c></div></div><div class="form-control mb-4" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" data-v-97419e3c></div><div class="mb-4" data-v-97419e3c><p class="text-sm font-medium text-slate-700 mb-2" data-v-97419e3c>服务类别 <span class="text-slate-400 text-xs" data-v-97419e3c>(可多选)</span></p><div class="flex flex-wrap gap-3" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-97419e3c><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-97419e3c>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-97419e3c>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>自定义字段</div><div data-v-97419e3c>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-97419e3c>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-16 text-center" data-v-97419e3c>加密</th><th data-v-97419e3c>默认值</th><th class="w-12" data-v-97419e3c></th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-97419e3c></td><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-97419e3c></td><td class="text-center" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-97419e3c></td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c><button class="btn btn-ghost btn-xs text-error" data-v-97419e3c>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-97419e3c>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "new") { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>新增依赖服务</h3><div class="flex gap-2" data-v-97419e3c><button class="btn btn-ghost btn-sm" data-v-97419e3c>取消</button><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>创建</button></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>基本信息</div><div class="grid grid-cols-2 gap-4 mb-4" data-v-97419e3c><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务ID * <span class="text-slate-400 text-xs" data-v-97419e3c>(唯一,如 volcengine)</span></span></label><input${ssrRenderAttr("value", editForm.id)} class="input input-bordered font-mono" placeholder="volcengine" data-v-97419e3c></div><div class="form-control" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务名称 *</span></label><input${ssrRenderAttr("value", editForm.name)} class="input input-bordered" placeholder="火山引擎" data-v-97419e3c></div></div><div class="form-control mb-4" data-v-97419e3c><label class="label" data-v-97419e3c><span class="label-text" data-v-97419e3c>服务描述</span></label><input${ssrRenderAttr("value", editForm.description)} class="input input-bordered" placeholder="简述该服务的用途" data-v-97419e3c></div><div class="mb-4" data-v-97419e3c><p class="text-sm font-medium text-slate-700 mb-2" data-v-97419e3c>服务类别</p><div class="flex flex-wrap gap-3" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(SCAT, (sc) => { |
|||
_push(`<label class="flex items-center gap-2 cursor-pointer" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-sm checkbox-primary"${ssrRenderAttr("value", sc.v)}${ssrIncludeBooleanAttr(Array.isArray(editCats.value) ? ssrLooseContain(editCats.value, sc.v) : editCats.value) ? " checked" : ""} data-v-97419e3c><span class="cat-chip" style="${ssrRenderStyle({ color: sc.color, background: sc.bg })}" data-v-97419e3c>${ssrInterpolate(sc.short)}</span><span class="text-xs text-slate-600" data-v-97419e3c>${ssrInterpolate(sc.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div></div><div class="divider text-xs text-slate-400 my-3" data-v-97419e3c>自定义字段</div><div data-v-97419e3c>`); |
|||
if (!editFields.value.length) { |
|||
_push(`<p class="text-xs text-slate-400 py-4 text-center" data-v-97419e3c>尚无自定义字段,点击下方添加</p>`); |
|||
} else { |
|||
_push(`<div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-16 text-center" data-v-97419e3c>加密</th><th data-v-97419e3c>默认值</th><th class="w-12" data-v-97419e3c></th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(editFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.key)} placeholder="key" data-v-97419e3c></td><td data-v-97419e3c><input class="field-input"${ssrRenderAttr("value", f.description)} placeholder="用途描述" data-v-97419e3c></td><td class="text-center" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(Array.isArray(f.encrypted) ? ssrLooseContain(f.encrypted, null) : f.encrypted) ? " checked" : ""} data-v-97419e3c></td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f.def_value, null)} placeholder="留空保留原值" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒 加密</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f.def_value)} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c><button class="btn btn-ghost btn-xs text-error" data-v-97419e3c>×</button></td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div>`); |
|||
} |
|||
_push(`<button class="btn btn-ghost btn-sm mt-2 text-primary" data-v-97419e3c>+ 添加字段</button></div><!--]-->`); |
|||
} else if (detailMode.value === "region" && curSvc.value) { |
|||
_push(`<!--[-->`); |
|||
if (regionLoading.value) { |
|||
_push(`<div class="text-center py-10 text-slate-400" data-v-97419e3c>加载中...</div>`); |
|||
} else { |
|||
_push(`<!--[--><div class="flex items-center justify-between mb-5" data-v-97419e3c><div class="flex items-center gap-3" data-v-97419e3c><div class="svc-logo" style="${ssrRenderStyle({ background: curSvc.value.color || "#6366f1", width: "44px", height: "44px", fontSize: "20px" })}" data-v-97419e3c>${ssrInterpolate(curSvc.value.icon || (curSvc.value.name || "").charAt(0))}</div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>${ssrInterpolate(curSvc.value.name)}</h3><span class="badge badge-warning badge-sm mt-0.5" data-v-97419e3c>${ssrInterpolate(curRegionLabel.value)} 覆盖模式</span></div></div><button class="btn btn-primary btn-sm text-white" data-v-97419e3c>保存覆盖</button></div><div class="rounded-lg px-3 py-2 mb-4 text-xs" style="${ssrRenderStyle({ "background": "#fefce8", "border": "1px solid #fde047", "color": "#854d0e" })}" data-v-97419e3c> ✦ 当前编辑「${ssrInterpolate(curRegionLabel.value)}」的字段覆盖值。留空的字段将继承默认值。加密字段留空保留已存储密文。 </div><div class="overflow-x-auto" data-v-97419e3c><table class="table text-xs" data-v-97419e3c><thead data-v-97419e3c><tr data-v-97419e3c><th class="w-32" data-v-97419e3c>字段名</th><th data-v-97419e3c>字段描述</th><th class="w-24 text-center" data-v-97419e3c>状态</th><th data-v-97419e3c>有效值</th></tr></thead><tbody data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(overrideFields.value, (f, i) => { |
|||
_push(`<tr data-v-97419e3c><td class="font-mono text-slate-700" data-v-97419e3c>${ssrInterpolate(f.key)}</td><td class="text-slate-500" data-v-97419e3c>${ssrInterpolate(f.description)}</td><td class="text-center" data-v-97419e3c>`); |
|||
if (f.is_overridden) { |
|||
_push(`<span class="override-badge" data-v-97419e3c>覆盖</span>`); |
|||
} else { |
|||
_push(`<span class="inherit-badge" data-v-97419e3c>继承</span>`); |
|||
} |
|||
_push(`</td><td data-v-97419e3c>`); |
|||
if (f.encrypted) { |
|||
_push(`<!--[--><div class="relative" data-v-97419e3c><input${ssrRenderAttr("type", f._show ? "text" : "password")} class="field-input pr-14"${ssrRenderDynamicModel(f._show ? "text" : "password", f._input, null)} placeholder="留空继承默认" data-v-97419e3c><button type="button" class="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700" data-v-97419e3c>${ssrInterpolate(f._show ? "隐藏" : "显示")}</button></div><span class="lock-badge ml-1" data-v-97419e3c>🔒</span><!--]-->`); |
|||
} else { |
|||
_push(`<input class="field-input"${ssrRenderAttr("value", f._input)}${ssrRenderAttr("placeholder", "留空继承:" + (f.value || ""))} data-v-97419e3c>`); |
|||
} |
|||
_push(`</td></tr>`); |
|||
}); |
|||
_push(`<!--]--></tbody></table></div><!--]-->`); |
|||
} |
|||
_push(`<!--]-->`); |
|||
} else { |
|||
_push(`<!---->`); |
|||
} |
|||
_push(`</div></div></div><div class="sync-overlay" style="${ssrRenderStyle(syncVisible.value ? null : { display: "none" })}" data-v-97419e3c><div class="sync-box" data-v-97419e3c><div class="flex items-start gap-3 mb-4" data-v-97419e3c><div style="${ssrRenderStyle({ "width": "42px", "height": "42px", "background": "linear-gradient(135deg,#4f46e5,#7c3aed)", "border-radius": "13px", "display": "flex", "align-items": "center", "justify-content": "center", "flex-shrink": "0" })}" data-v-97419e3c><svg style="${ssrRenderStyle({ "width": "20px", "height": "20px", "color": "#fff" })}" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-97419e3c><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" data-v-97419e3c></path></svg></div><div data-v-97419e3c><h3 class="text-base font-semibold text-slate-800" data-v-97419e3c>同步到其他区域</h3><p class="text-xs text-slate-400 mt-1" data-v-97419e3c>${ssrInterpolate(syncDesc.value)}</p></div></div><div class="text-xs px-3 py-2 rounded-lg mb-3" style="${ssrRenderStyle({ "background": "#f0fdf4", "border": "1px solid #bbf7d0", "color": "#15803d" })}" data-v-97419e3c>${syncScopeNote.value ?? ""}</div><div class="flex items-center justify-between mb-1" data-v-97419e3c><span class="text-xs font-semibold text-slate-500" data-v-97419e3c>选择目标区域</span><div class="flex gap-2" data-v-97419e3c><button class="btn btn-ghost btn-xs" data-v-97419e3c>全选</button><button class="btn btn-ghost btn-xs" data-v-97419e3c>清空</button></div></div><div class="sync-region-grid" data-v-97419e3c><!--[-->`); |
|||
ssrRenderList(syncRegionList.value, (r) => { |
|||
_push(`<label class="${ssrRenderClass([{ checked: syncTargets.value.includes(r.value) }, "sync-region-item"])}" data-v-97419e3c><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(syncTargets.value.includes(r.value)) ? " checked" : ""} data-v-97419e3c><span data-v-97419e3c>${ssrInterpolate(r.label)}</span></label>`); |
|||
}); |
|||
_push(`<!--]--></div><p class="text-[11px] text-slate-400 mb-5" data-v-97419e3c>⚠ 已勾选区域中与当前配置相同的字段将被覆盖;加密字段密文一并同步。</p><div class="flex gap-3 justify-end" data-v-97419e3c><button class="btn btn-ghost" data-v-97419e3c>仅保存当前区域</button><button class="btn btn-primary text-white" data-v-97419e3c>保存并同步</button></div></div></div></div>`); |
|||
}; |
|||
} |
|||
}); |
|||
const _sfc_setup = _sfc_main.setup; |
|||
_sfc_main.setup = (props, ctx) => { |
|||
const ssrContext = useSSRContext(); |
|||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/serviceconfig.vue"); |
|||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0; |
|||
}; |
|||
const serviceconfig = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-97419e3c"]]); |
|||
export { |
|||
serviceconfig as default |
|||
}; |
|||
//# sourceMappingURL=serviceconfig-BTX37VDF.js.map
|
|||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue