diff --git a/dist/assets/ActivationManagement-DuZO7LSx.js b/dist/assets/ActivationManagement-DuZO7LSx.js new file mode 100644 index 0000000..a784eb1 --- /dev/null +++ b/dist/assets/ActivationManagement-DuZO7LSx.js @@ -0,0 +1 @@ +import{I as d}from"./info-DbTQmklK.js";import{d as m,a as r,b as t,f as i,u as a,x as c,F as f,r as u,o as n,t as e,n as v}from"./index-C5t0nGiQ.js";const y={class:"p-6"},g={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#eef5f0",border:"1px solid #a3c4ad"}},F={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},D={class:"overflow-x-auto"},h={class:"w-full"},k={class:"px-6 py-4"},w={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},A={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},C={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},E={class:"px-6 py-4"},_={class:"p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#FFFBE6",border:"1px solid #FFE58F"}},P=m({__name:"ActivationManagement",setup(z){const x=[{sn:"GD30-2025-000001",model:"GD30 高密度电法仪",activationDate:"2025-02-10 14:30",status:"已激活",operator:"王工程师"},{sn:"GT20-2025-000045",model:"GT20 瞬变电磁仪",activationDate:"2025-02-09 10:15",status:"已激活",operator:"李工程师"},{sn:"GM10-2025-000023",model:"GM10 大地电磁仪",activationDate:"2025-02-08 16:20",status:"待激活",operator:"张工程师"}],p=l=>{switch(l){case"已激活":return{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"};case"激活失败":return{backgroundColor:"#FFF1F0",color:"#FF4D4F",border:"1px solid #FFCCC7"};case"待激活":return{backgroundColor:"#FFFBE6",color:"#FAAD14",border:"1px solid #FFE58F"}}};return(l,o)=>(n(),r("div",y,[o[5]||(o[5]=t("div",{class:"mb-6"},[t("h2",{class:"text-2xl font-semibold mb-1"},"激活管理"),t("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理设备激活流程与记录")],-1)),t("div",g,[i(a(d),{size:20,style:{color:"#4a7c59","flex-shrink":"0","margin-top":"2px"}}),o[0]||(o[0]=t("div",{style:{color:"#2d5a3d"}},[t("div",{class:"font-medium mb-1"},"APP激活流程说明"),t("div",{class:"text-sm"}," APP读取设备UID → 与后台SN匹配 → 下载授权文件和配置 → 生成设备配置 → 激活设备。激活成功后,设备每次开机会自动检测授权文件更新。 ")],-1))]),o[6]||(o[6]=c('
',1)),t("div",F,[o[3]||(o[3]=t("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[t("h3",{class:"text-lg font-semibold"},"激活记录")],-1)),t("div",D,[t("table",h,[o[2]||(o[2]=t("thead",{style:{"background-color":"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"设备SN号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"型号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"激活日期"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作人员"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"状态"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),t("tbody",null,[(n(),r(f,null,u(x,(s,b)=>t("tr",{key:b,class:"border-b",style:{"border-color":"#F0F0F0"}},[t("td",k,e(s.sn),1),t("td",w,e(s.model),1),t("td",A,e(s.activationDate),1),t("td",C,e(s.operator),1),t("td",E,[t("span",{class:"px-2 py-1 rounded text-xs",style:v(p(s.status))},e(s.status),5)]),o[1]||(o[1]=t("td",{class:"px-6 py-4"},[t("div",{class:"flex items-center gap-3"},[t("button",{class:"text-sm",style:{color:"#4a7c59"}},"详情")])],-1))])),64))])])])]),o[7]||(o[7]=c('

APP激活流程 & 开机授权检测

读取UID
APP读取设备UID
SN匹配
后台SN匹配验证
下载文件
下载授权和配置
生成配置
生成设备配置文件
激活设备
完成激活流程
',1)),t("div",_,[i(a(d),{size:20,style:{color:"#FAAD14","flex-shrink":"0","margin-top":"2px"}}),o[4]||(o[4]=t("div",{style:{color:"#D46B08"}},[t("div",{class:"font-medium"},"开机授权检测机制"),t("div",{class:"text-sm mt-1"}," 设备每次开机 → APP自动连接 → 检测授权文件是否有更新 → 有更新则自动下载 ")],-1))])]))}});export{P as default}; diff --git a/dist/assets/CalibrationRecords-gMo2tbHk.js b/dist/assets/CalibrationRecords-gMo2tbHk.js new file mode 100644 index 0000000..bf0befc --- /dev/null +++ b/dist/assets/CalibrationRecords-gMo2tbHk.js @@ -0,0 +1 @@ +import{I as n}from"./info-DbTQmklK.js";import{d as p,a as r,b as t,f as x,u as y,x as a,F as u,r as m,o as d,t as l,n as g}from"./index-C5t0nGiQ.js";const v={class:"p-6"},f={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#F9F0FF",border:"1px solid #D3ADF7"}},D={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},F={class:"overflow-x-auto"},h={class:"w-full"},w={class:"px-6 py-4"},k={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},S={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},_={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},A={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},C={class:"px-6 py-4"},R=p({__name:"CalibrationRecords",setup(B){const i=[{boardSn:"RX20240308001",deviceSn:"GD30-2025-000001",calibrationDate:"2024-03-01",calibrator:"王工程师",expiryDate:"2025-03-01",status:"合格"},{boardSn:"RX20240308002",deviceSn:"GD20-2025-000045",calibrationDate:"2024-03-05",calibrator:"李工程师",expiryDate:"2025-03-05",status:"合格"},{boardSn:"RX20240308003",deviceSn:"GD10-2025-000023",calibrationDate:"2024-03-08",calibrator:"张工程师",expiryDate:"2025-03-08",status:"合格"}],c=e=>{switch(e){case"合格":return{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"};case"不合格":return{backgroundColor:"#FFF1F0",color:"#FF4D4F",border:"1px solid #FFCCC7"};case"待校准":return{backgroundColor:"#FFFBE6",color:"#FAAD14",border:"1px solid #FFE58F"}}};return(e,o)=>(d(),r("div",v,[o[4]||(o[4]=t("div",{class:"mb-6"},[t("h2",{class:"text-2xl font-semibold mb-1"},"校准管理"),t("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理采集板校准数据")],-1)),t("div",f,[x(y(n),{size:20,style:{color:"#722ED1","flex-shrink":"0","margin-top":"2px"}}),o[0]||(o[0]=t("div",{style:{color:"#531DAB"}},[t("div",{class:"font-medium"},"校准说明"),t("div",{class:"text-sm mt-1"}," 校准仅针对采集板,其他板卡无需校准。 ")],-1))]),o[5]||(o[5]=a('
采集板校准总数
1,245
待校准采集板
23
校准中
8
校准即将到期
15
',2)),t("div",D,[o[3]||(o[3]=t("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[t("h3",{class:"text-lg font-semibold"},"校准记录")],-1)),t("div",F,[t("table",h,[o[2]||(o[2]=t("thead",{style:{"background-color":"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"采集板SN号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"所属设备"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"校准日期"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"到期日期"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"校准人员"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"状态"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),t("tbody",null,[(d(),r(u,null,m(i,(s,b)=>t("tr",{key:b,class:"border-b",style:{"border-color":"#F0F0F0"}},[t("td",w,l(s.boardSn),1),t("td",k,l(s.deviceSn),1),t("td",S,l(s.calibrationDate),1),t("td",_,l(s.expiryDate),1),t("td",A,l(s.calibrator),1),t("td",C,[t("span",{class:"px-2 py-1 rounded text-xs",style:g(c(s.status))},l(s.status),5)]),o[1]||(o[1]=t("td",{class:"px-6 py-4"},[t("div",{class:"flex items-center gap-3"},[t("button",{class:"text-sm",style:{color:"#4a7c59"}},"详情"),t("button",{class:"text-sm",style:{color:"#4a7c59"}},"下载报告")])],-1))])),64))])])])]),o[6]||(o[6]=a('
显示 1-10 / 共 1,245 条
',1))]))}});export{R as default}; diff --git a/dist/assets/ConfigFileManagement-CPVgUNG2.js b/dist/assets/ConfigFileManagement-CPVgUNG2.js new file mode 100644 index 0000000..9d48975 --- /dev/null +++ b/dist/assets/ConfigFileManagement-CPVgUNG2.js @@ -0,0 +1 @@ +import{d as m,a,b as t,u as l,f as r,j as n,x as c,F as y,r as f,y as g,o as i,t as e,n as v}from"./index-C5t0nGiQ.js";import{P as D}from"./plus-BfKzmzQH.js";import{I as F}from"./info-DbTQmklK.js";import{S as _}from"./search-BFqPyJ5C.js";const h={class:"p-6"},w={class:"mb-6"},k={class:"flex items-center justify-between mb-2"},G={class:"flex items-center gap-3"},C={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#eef5f0",border:"1px solid #a3c4ad"}},A={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},I={class:"grid grid-cols-4 gap-4"},S={class:"flex items-end"},T={class:"w-full px-4 py-2 rounded text-white flex items-center justify-center gap-2",style:{"background-color":"#4a7c59"}},B={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},j={class:"overflow-x-auto"},z={class:"w-full"},N={class:"px-6 py-4",style:{color:"#4a7c59"}},V={class:"px-6 py-4"},E={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},M={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},P={class:"px-6 py-4"},J=m({__name:"ConfigFileManagement",setup(L){const b=g(),p=[{configId:"CFG-GD30-v1.2.0",model:"GD30 高密度电法仪",version:"v1.2.0",createdTime:"2024-03-01 10:30",status:"生效"},{configId:"CFG-GT20-v1.5.3",model:"GT20 瞬变电磁仪",version:"v1.5.3",createdTime:"2024-02-28 14:20",status:"生效"}],x=d=>{switch(d){case"生效":return{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"};case"已停用":return{backgroundColor:"#FAFAFA",color:"rgba(0, 0, 0, 0.45)",border:"1px solid #D9D9D9"}}};return(d,o)=>(i(),a("div",h,[t("div",w,[t("div",k,[o[2]||(o[2]=t("h2",{class:"text-2xl font-semibold"},"配置文件管理",-1)),t("div",G,[t("button",{class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{"background-color":"#4a7c59"},onClick:o[0]||(o[0]=s=>l(b).push("/config-files/new"))},[r(l(D),{size:16}),o[1]||(o[1]=n(" 新建配置 ",-1))])])]),o[3]||(o[3]=t("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理设备型号配置文件",-1))]),t("div",C,[r(l(F),{size:20,style:{color:"#4a7c59","flex-shrink":"0","margin-top":"2px"}}),o[4]||(o[4]=t("div",{style:{color:"#2d5a3d"}},[t("div",{class:"font-medium mb-1"},"配置文件说明"),t("div",{class:"text-sm"}," 配置文件按设备型号绑定适配,包含发射参数、采集参数、网络参数等。每个型号可以有1个配置版本。 ")],-1))]),t("div",A,[t("div",I,[o[6]||(o[6]=c('
',3)),t("div",S,[t("button",T,[r(l(_),{size:16}),o[5]||(o[5]=n(" 查询 ",-1))])])])]),t("div",B,[o[9]||(o[9]=t("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[t("h3",{class:"text-lg font-semibold"},"配置文件列表")],-1)),t("div",j,[t("table",z,[o[8]||(o[8]=t("thead",{style:{"background-color":"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"配置ID"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"适配型号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"版本"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"创建时间"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"状态"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),t("tbody",null,[(i(),a(y,null,f(p,(s,u)=>t("tr",{key:u,class:"border-b",style:{"border-color":"#F0F0F0"}},[t("td",N,e(s.configId),1),t("td",V,e(s.model),1),t("td",E,e(s.version),1),t("td",M,e(s.createdTime),1),t("td",P,[t("span",{class:"px-2 py-1 rounded text-xs",style:v(x(s.status))},e(s.status),5)]),o[7]||(o[7]=t("td",{class:"px-6 py-4"},[t("div",{class:"flex items-center gap-3"},[t("button",{class:"text-sm",style:{color:"#4a7c59"}},"详情"),t("button",{class:"text-sm",style:{color:"#4a7c59"}},"编辑"),t("button",{class:"text-sm",style:{color:"#4a7c59"}},"下发"),t("button",{class:"text-sm",style:{color:"#4a7c59"}},"下载"),t("button",{class:"text-sm",style:{color:"#FF4D4F"}},"删除")])],-1))])),64))])])])]),o[10]||(o[10]=c('
显示 1-10 / 共 48 条
',1))]))}});export{J as default}; diff --git a/dist/assets/Dashboard--eri3aJi.js b/dist/assets/Dashboard--eri3aJi.js new file mode 100644 index 0000000..6fbdd0e --- /dev/null +++ b/dist/assets/Dashboard--eri3aJi.js @@ -0,0 +1,31 @@ +import{c as n,d as F,a as i,b as e,F as c,r,o as s,e as S,f as h,w as y,t as l,n as d,g as p,u as b,h as m,i as N,W as D,j as f,k as A}from"./index-C5t0nGiQ.js";import{S as V}from"./server-hSQBXLWa.js";import{C as z}from"./clock-CMNFmLxx.js";import{U as M}from"./upload-Cl9qkJl5.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W=n("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j=n("package-check",[["path",{d:"m16 16 2 2 4-4",key:"gfu2re"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B=n("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G=n("trending-down",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T=n("trending-up",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L=n("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),U={class:"p-6"},E={class:"grid grid-cols-4 gap-6 mb-6"},O={class:"flex items-start justify-between"},I={class:"flex-1"},P={class:"text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.65)"}},R={class:"text-3xl font-semibold mb-2"},q={class:"text-sm"},H={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},J={style:{display:"flex","flex-direction":"column",gap:"16px"}},K={style:{width:"60px","text-align":"right","font-size":"14px",color:"rgba(0,0,0,0.65)","flex-shrink":"0"}},Q={style:{flex:"1","background-color":"#F5F5F5","border-radius":"4px",height:"24px",overflow:"hidden"}},X={style:{width:"40px","font-size":"14px",color:"rgba(0,0,0,0.85)"}},Y={class:"bg-white p-6 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},Z={class:"grid grid-cols-2 gap-6"},$={class:"flex items-center justify-between mb-4"},ee={class:"text-base font-medium"},te={class:"px-2 py-1 rounded text-xs",style:{"background-color":"#F0F2F5",color:"rgba(0, 0, 0, 0.65)"}},se={class:"flex-1"},le={class:"text-sm mb-1"},oe={class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},ie={class:"flex items-center gap-3"},ne={key:0,class:"text-xs",style:{color:"rgba(0, 0, 0, 0.45)"}},ue=F({__name:"Dashboard",setup(ae){const _=[{label:"设备总数",value:"5,234",trend:"up",trendValue:"+5.2%",color:"#4a7c59",icon:V,link:"/devices"},{label:"装配中",value:"4,856",trend:"up",trendValue:"+2.8%",color:"#52C41A",icon:L,link:"/devices"},{label:"已激活",value:"4,912",trend:"up",trendValue:"+1.5%",color:"#4a7c59",icon:W,link:"/activation"},{label:"有新版本",value:"156",color:"#722ED1",icon:j,link:"/firmware"},{label:"维修中",value:"23",trend:"down",trendValue:"-12.3%",color:"#FF4D4F",icon:D,link:"/repair"},{label:"报废",value:"56",color:"#FA8C16",icon:B,link:"/scrap"},{label:"授权即将到期",value:"45",color:"#FAAD14",icon:z,link:"/licenses"},{label:"升级中",value:"8",color:"#13C2C2",icon:M,link:"/firmware"}],v=[{name:"已装配",value:45,color:"#52C41A"},{name:"已出厂",value:378,color:"#FF4D4F"},{name:"已激活",value:286,color:"#FAAD14"},{name:"报废",value:7,color:"#8C8C8C"}],g=A(()=>Math.max(...v.map(x=>x.value))),w=[{title:"待校准设备",count:23,link:"/calibration",tasks:[{deviceSN:"AC20240308005",description:"采集板校准即将到期",time:"3天后到期",link:"/calibration"},{deviceSN:"AC20240308006",description:"新采集板待校准",time:"今天",link:"/calibration"}]},{title:"维修工单",count:5,link:"/repair",tasks:[{deviceSN:"GD30-2024-000056",description:"板卡故障,待处理",time:"4小时前",link:"/repair/WO-2024-0001"},{deviceSN:"GD30-2024-000078",description:"固件异常",time:"6小时前",link:"/repair/WO-2024-0002"}]},{title:"固件升级通知",count:8,link:"/firmware",tasks:[{deviceSN:"SN2024030710",description:"固件版本v2.3.5可用",time:"1天前",link:"/firmware"},{deviceSN:"SN2024030711",description:"固件版本v2.3.5可用",time:"1天前",link:"/firmware"}]},{title:"授权即将到期",count:45,link:"/licenses",tasks:[{deviceSN:"GD30-2025-000001",description:"授权将于30天后到期",time:"30天",link:"/licenses"},{deviceSN:"GT20-2025-000045",description:"授权将于15天后到期",time:"15天",link:"/licenses"}]}];return(x,o)=>{const u=S("router-link");return s(),i("div",U,[o[3]||(o[3]=e("div",{class:"mb-6"},[e("h2",{class:"text-2xl font-semibold mb-1"},"首页"),e("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"生产管理数据总览")],-1)),e("div",E,[(s(),i(c,null,r(_,(t,k)=>h(u,{key:k,to:t.link,class:"bg-white p-6 rounded-lg block hover:shadow-md transition-shadow",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},{default:y(()=>[e("div",O,[e("div",I,[e("div",P,l(t.label),1),e("div",R,l(t.value),1),t.trend&&t.trendValue?(s(),i("div",{key:0,class:"flex items-center gap-1",style:d({color:t.trend==="up"?"#52C41A":"#FF4D4F"})},[t.trend==="up"?(s(),p(b(T),{key:0,size:14})):(s(),p(b(G),{key:1,size:14})),e("span",q,l(t.trendValue),1)],4)):m("",!0)]),e("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center",style:d({backgroundColor:t.color+"15"})},[(s(),p(N(t.icon),{size:24,style:d({color:t.color})},null,8,["style"]))],4)])]),_:2},1032,["to"])),64))]),e("div",H,[o[0]||(o[0]=e("h3",{class:"text-lg font-semibold mb-6"},"设备状态分布",-1)),e("div",J,[(s(),i(c,null,r(v,t=>e("div",{key:t.name,style:{display:"flex","align-items":"center",gap:"12px"}},[e("div",K,l(t.name),1),e("div",Q,[e("div",{style:d({width:t.value/g.value*100+"%",height:"100%",backgroundColor:t.color,borderRadius:"0 4px 4px 0",transition:"width 0.3s ease",minWidth:t.value>0?"2px":"0"})},null,4)]),e("div",X,l(t.value),1)])),64))])]),e("div",Y,[o[2]||(o[2]=e("h3",{class:"text-lg font-semibold mb-6"},"待处理任务",-1)),e("div",Z,[(s(),i(c,null,r(w,(t,k)=>e("div",{key:k},[e("div",$,[e("h4",ee,l(t.title),1),e("span",te,l(t.count),1)]),e("div",null,[(s(!0),i(c,null,r(t.tasks,(a,C)=>(s(),i("div",{key:C,class:"flex items-start justify-between py-3",style:{"border-bottom":"1px solid #F0F0F0"}},[e("div",se,[e("div",le,l(a.deviceSN),1),e("div",oe,l(a.description),1)]),e("div",ie,[a.time?(s(),i("span",ne,l(a.time),1)):m("",!0),h(u,{to:a.link,class:"text-sm",style:{color:"#4a7c59"}},{default:y(()=>[...o[1]||(o[1]=[f("处理",-1)])]),_:1},8,["to"])])]))),128))]),t.tasks.length[f(" 查看全部 "+l(t.count)+" 项 ",1)]),_:2},1032,["to"])):m("",!0)])),64))])])])}}});export{ue as default}; diff --git a/dist/assets/DeviceDetail-CiWFBze4.js b/dist/assets/DeviceDetail-CiWFBze4.js new file mode 100644 index 0000000..bd0f379 --- /dev/null +++ b/dist/assets/DeviceDetail-CiWFBze4.js @@ -0,0 +1 @@ +import{d as y,a as i,b as s,u as r,f as v,x as n,F as b,r as m,w as u,y as f,e as _,o as d,n as a,t as o,h as F,j as h}from"./index-C5t0nGiQ.js";import{A as k}from"./arrow-left-De7UcLOo.js";import{C as w}from"./clock-CMNFmLxx.js";const C={class:"p-6"},D={class:"mb-6"},B={class:"flex items-center gap-4 mb-2"},E={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},V={class:"flex items-center justify-center gap-6"},A={class:"text-center"},S={class:"text-xs",style:{color:"rgba(0, 0, 0, 0.45)"}},N={key:0,style:{color:"#D9D9D9","font-size":"24px"}},M={class:"bg-white p-6 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},P={class:"flex items-center justify-between mb-6"},T={class:"relative"},j={class:"space-y-6"},z={class:"flex flex-col items-center flex-shrink-0"},I={class:"w-12 h-12 rounded-full flex items-center justify-center relative z-10",style:{"background-color":"#eef5f0",border:"2px solid #4a7c59"}},R={class:"flex-1 pt-2"},X={class:"flex items-center gap-3 mb-2"},G={class:"font-medium"},L={class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},O={class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},H={class:"text-sm",style:{color:"rgba(0, 0, 0, 0.65)"}},U=y({__name:"DeviceDetail",setup($){const x=f(),c=[{name:"主板",version:"MB-V2.3",sn:"MB20240308001",bg:"#eef5f0",color:"#4a7c59"},{name:"采集板",version:"RX-V1.8",sn:"RX20240308002",bg:"#F0F5FF",color:"#597EF7"},{name:"发射板",version:"TX-V1.2",sn:"TX20240308003",bg:"#FFF7E6",color:"#FA8C16"},{name:"测控板",version:"MC-V1.5",sn:"MC20240308004",bg:"#F6FFED",color:"#52C41A"},{name:"升压板",version:"BO-V1.0",sn:"BO20240308005",bg:"#FFF0F6",color:"#EB2F96"}],g=[{date:"2024-03-01",type:"固件升级",operator:"王工程师",description:"升级固件至v2.3.5,解决数据采集异常问题"},{date:"2024-02-15",type:"主板更换",operator:"李工程师",description:"更换主控板(旧:MB20231215001 → 新:MB20240215001)"},{date:"2024-01-20",type:"常规保养",operator:"张工程师",description:"清洁设备,检查线路连接,测试功能正常"}];return(q,t)=>{const p=_("router-link");return d(),i("div",C,[s("div",D,[s("div",B,[s("button",{class:"p-2 rounded hover:bg-gray-100 transition-colors",style:{color:"rgba(0, 0, 0, 0.65)"},onClick:t[0]||(t[0]=e=>r(x).go(-1))},[v(r(k),{size:20})]),t[1]||(t[1]=s("h2",{class:"text-2xl font-semibold"},"GD30-2025-000001",-1)),t[2]||(t[2]=s("span",{class:"px-3 py-1 rounded text-sm",style:{"background-color":"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"}}," 已激活 ",-1))])]),t[7]||(t[7]=n('

基本信息

设备型号
GD30 高密度电法仪
主机SN号
GD30-2025-000001
设备状态
已激活
生产日期
2025-01-15
出厂日期
2025-02-01
激活日期
2025-02-10
装配人员
张工程师
测试人员
李工程师
客户名称
北京地质研究院
',1)),s("div",E,[t[3]||(t[3]=s("h3",{class:"text-lg font-semibold mb-6"},"硬件拓扑",-1)),s("div",V,[(d(),i(b,null,m(c,(e,l)=>s("div",{key:e.name,class:"flex items-center gap-6"},[s("div",A,[s("div",{class:"w-28 h-28 rounded-lg flex flex-col items-center justify-center mb-3",style:a({backgroundColor:e.bg,border:"2px solid "+e.color})},[s("div",{class:"text-base font-semibold",style:a({color:e.color})},o(e.name),5),s("div",{class:"text-xs mt-2",style:a({color:e.color})},o(e.version),5)],4),s("div",S,o(e.sn),1)]),Number(l)

授权信息

授权ID
LIC-2025-0001
授权状态
已激活
授权类型
正式授权
生效日期
2025-02-10
到期日期
2026-02-10
剩余天数
317天
授权功能模块
1D(SP/VES/IP) / 2D(SP/ERT/IP) / 3D(SP/ERT/IP)
授权文件

固件信息

当前固件版本
v2.3.5
最后更新时间
2024-03-01 10:30
更新方式
远程OTA
配置文件版本
v1.2.0
配置同步时间
2024-03-01 10:35
',2)),s("div",M,[s("div",P,[t[5]||(t[5]=s("h3",{class:"text-lg font-semibold"},"维修历史",-1)),v(p,{to:"/repair",class:"text-sm",style:{color:"#4a7c59"}},{default:u(()=>[...t[4]||(t[4]=[h("查看全部",-1)])]),_:1})]),s("div",T,[t[6]||(t[6]=s("div",{class:"absolute left-6 top-6 bottom-6 w-0.5",style:{"background-color":"#F0F0F0"}},null,-1)),s("div",j,[(d(),i(b,null,m(g,(e,l)=>s("div",{key:l,class:"flex gap-4"},[s("div",z,[s("div",I,[v(r(w),{size:20,style:{color:"#4a7c59"}})])]),s("div",R,[s("div",X,[s("span",G,o(e.type),1),s("span",L,o(e.date),1),s("span",O,"操作人:"+o(e.operator),1)]),s("div",H,o(e.description),1)])])),64))])])])])}}});export{U as default}; diff --git a/dist/assets/DeviceList-NCBTEyEZ.js b/dist/assets/DeviceList-NCBTEyEZ.js new file mode 100644 index 0000000..b619310 --- /dev/null +++ b/dist/assets/DeviceList-NCBTEyEZ.js @@ -0,0 +1,6 @@ +import{c as F,d as _,a as i,b as o,f as r,u as l,j as n,x as u,F as x,r as G,t as e,y as C,k as y,o as d,n as S,h as V,s as m}from"./index-C5t0nGiQ.js";import{D as h}from"./download-hBwFRgUo.js";import{P as z}from"./plus-BfKzmzQH.js";import{S as B}from"./search-BFqPyJ5C.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N=F("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),T={class:"p-6"},j={class:"mb-6"},E={class:"flex items-center justify-between mb-2"},L={class:"flex items-center gap-3"},I={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}},M={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},P={class:"grid grid-cols-5 gap-4"},A={class:"flex items-end"},$={class:"w-full px-4 py-2 rounded text-white flex items-center justify-center gap-2",style:{"background-color":"#4a7c59"}},O={class:"space-y-4 mb-6"},R={class:"flex items-start justify-between mb-4"},X={class:"flex-1 grid grid-cols-5 gap-4"},q={class:"font-medium"},H={style:{color:"rgba(0, 0, 0, 0.65)"}},J={class:"flex items-center gap-3 pt-4 border-t",style:{"border-color":"#F0F0F0"}},K=["onClick"],Q={class:"text-sm flex items-center gap-1",style:{color:"#FF4D4F"}},U={class:"bg-white p-4 rounded-lg flex items-center justify-between",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},W={class:"text-sm",style:{color:"rgba(0, 0, 0, 0.65)"}},g=5234,lo=_({__name:"DeviceList",setup(Y){const a=C(),c=m(1),b=m(10),f=[{sn:"GD30-20240308-001",model:"GD30 高密度电法仪",status:"已激活",firmwareVersion:"v2.3.5",registrationDate:"2024-03-08 14:30"},{sn:"GT20-20240307-045",model:"GT20 瞬变电磁仪",status:"已出厂",firmwareVersion:"v1.8.2",registrationDate:"2024-03-07 10:15"},{sn:"GD30-20240308-002",model:"GD30 高密度电法仪",status:"装配中",firmwareVersion:"v2.3.4",registrationDate:"2024-03-08 16:20"}];function D(p){switch(p){case"已激活":return{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"};case"已出厂":return{backgroundColor:"#FFF7E6",color:"#FA8C16",border:"1px solid #FFD591"};case"装配中":return{backgroundColor:"#eef5f0",color:"#4a7c59",border:"1px solid #a3c4ad"}}}const v=y(()=>(c.value-1)*b.value+1),k=y(()=>Math.min(c.value*b.value,g));return(p,t)=>(d(),i("div",T,[o("div",j,[o("div",E,[t[3]||(t[3]=o("h2",{class:"text-2xl font-semibold"},"设备列表",-1)),o("div",L,[o("button",I,[r(l(h),{size:16}),t[1]||(t[1]=n(" 导出 ",-1))]),o("button",{class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{"background-color":"#4a7c59"},onClick:t[0]||(t[0]=s=>l(a).push("/registration"))},[r(l(z),{size:16}),t[2]||(t[2]=n(" 登记设备 ",-1))])])]),t[4]||(t[4]=o("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理所有设备信息",-1))]),o("div",M,[o("div",P,[t[6]||(t[6]=u('
',4)),o("div",A,[o("button",$,[r(l(B),{size:16}),t[5]||(t[5]=n(" 搜索 ",-1))])])])]),o("div",O,[(d(),i(x,null,G(f,(s,w)=>o("div",{key:w,class:"bg-white rounded-lg p-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},[o("div",R,[o("div",X,[o("div",null,[t[7]||(t[7]=o("div",{class:"text-xs mb-1",style:{color:"rgba(0, 0, 0, 0.45)"}},"设备SN号",-1)),o("div",q,e(s.sn),1)]),o("div",null,[t[8]||(t[8]=o("div",{class:"text-xs mb-1",style:{color:"rgba(0, 0, 0, 0.45)"}},"型号",-1)),o("div",null,e(s.model),1)]),o("div",null,[t[9]||(t[9]=o("div",{class:"text-xs mb-1",style:{color:"rgba(0, 0, 0, 0.45)"}},"状态",-1)),o("span",{class:"inline-block px-2 py-1 rounded text-xs",style:S(D(s.status))},e(s.status),5)]),o("div",null,[t[10]||(t[10]=o("div",{class:"text-xs mb-1",style:{color:"rgba(0, 0, 0, 0.45)"}},"固件版本",-1)),o("div",null,e(s.firmwareVersion),1)]),o("div",null,[t[11]||(t[11]=o("div",{class:"text-xs mb-1",style:{color:"rgba(0, 0, 0, 0.45)"}},"生产日期",-1)),o("div",H,e(s.registrationDate),1)])])]),o("div",J,[o("button",{class:"text-sm",style:{color:"#4a7c59"},onClick:Z=>l(a).push("/devices/"+s.sn)},"详情",8,K),t[14]||(t[14]=o("button",{class:"text-sm",style:{color:"#4a7c59"}},"BOM",-1)),s.status==="已激活"?(d(),i(x,{key:0},[t[13]||(t[13]=o("span",{style:{color:"#D9D9D9"}},"|",-1)),o("button",Q,[r(l(N),{size:14}),t[12]||(t[12]=n(" 下线 ",-1))])],64)):V("",!0)])])),64))]),o("div",U,[o("div",W," 显示 "+e(v.value)+"-"+e(k.value)+" / 共 "+e(g.toLocaleString())+" 台 ",1),t[15]||(t[15]=u('
...
',1))])]))}});export{lo as default}; diff --git a/dist/assets/DeviceModelManagement-DADpSpiv.js b/dist/assets/DeviceModelManagement-DADpSpiv.js new file mode 100644 index 0000000..7fafe7e --- /dev/null +++ b/dist/assets/DeviceModelManagement-DADpSpiv.js @@ -0,0 +1,16 @@ +import{c as q,d as T,a as x,b as t,f as i,u as m,F as w,r as D,j as u,l as U,m as y,v as $,p as v,q as j,n as b,t as r,h as E,s as k,o as p,g as I,i as P,w as g,e as L}from"./index-C5t0nGiQ.js";import{I as K}from"./info-DbTQmklK.js";import{P as A}from"./plus-BfKzmzQH.js";import{X as H}from"./x-Cy9cTPf9.js";import{S as O}from"./server-hSQBXLWa.js";import{C as R,T as W}from"./triangle-alert-DaaA5cmC.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X=q("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J=q("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q=q("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]),Y={class:"p-6"},Z={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{backgroundColor:"#eef5f0",border:"1px solid #a3c4ad"}},tt={class:"grid grid-cols-4 gap-6 mb-6"},et={class:"flex items-center justify-between"},ot={class:"text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.65)"}},lt={class:"text-3xl font-semibold"},st={class:"bg-white rounded-lg mb-6",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},rt={class:"p-6 border-b",style:{borderColor:"#F0F0F0"}},nt={class:"flex items-center justify-between"},it={class:"overflow-x-auto"},dt={class:"w-full"},at={class:"px-6 py-4"},ut={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},pt={class:"px-6 py-4"},ct={class:"px-6 py-4"},xt={class:"px-6 py-4"},yt={class:"px-6 py-4"},bt={class:"px-6 py-4"},vt={class:"px-6 py-4"},ft={class:"flex items-center gap-3"},mt={class:"bg-white rounded-lg mb-6",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},gt={class:"flex border-b",style:{borderColor:"#F0F0F0"}},Ft=["onClick"],kt={class:"p-6"},wt={class:"w-full"},Dt={class:"px-3 py-3 text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},Ct={class:"flex items-center gap-1"},qt={class:"px-3 py-3 text-sm"},Vt=["value","onBlur"],_t=["onClick"],jt={class:"px-3 py-3 text-center"},At=["onClick"],St={class:"mt-4 flex items-center justify-between"},ht={class:"bg-white w-[480px] h-full flex flex-col",style:{"box-shadow":"-4px 0 12px rgba(0,0,0,0.1)"}},Gt={class:"flex items-center justify-between p-5 border-b",style:{"border-color":"#F0F0F0"}},Mt={class:"flex-1 overflow-y-auto p-6"},Bt={class:"space-y-5"},Nt={class:"flex items-center gap-4"},zt={class:"flex items-center gap-2 cursor-pointer text-sm"},Tt={class:"flex items-center gap-2 cursor-pointer text-sm"},Ut={class:"p-4 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},$t={class:"space-y-2 text-sm",style:{color:"rgba(0,0,0,0.65)"}},Et={class:"flex justify-between"},It={class:"flex justify-between"},Pt={class:"flex justify-between"},Lt={class:"flex items-center justify-end gap-3 p-5 border-t",style:{"border-color":"#F0F0F0"}},Kt=["disabled"],Yt=T({__name:"DeviceModelManagement",setup(Ht){const f=k(!1),l=k({name:"",code:"",authFile:"",configFile:"",firmwareVersion:"",status:"在产"}),c=k("GD30"),S=[{label:"型号总数",value:"12",icon:O,color:"#4a7c59"},{label:"在产型号",value:"8",icon:R,color:"#52C41A"},{label:"停产型号",value:"3",icon:W,color:"#FAAD14"},{label:"关联设备总数",value:"5,234",icon:J,color:"#722ED1"}],h=[{name:"GD30 高密度电法仪",code:"GD30-2024",authFile:"auth_gd30_v2.3.lic",configFile:"config_gd30_v1.5.json",firmwareVersion:"v2.3.5",deviceCount:2456,status:"在产"},{name:"GT20 瞬变电磁仪",code:"GT20-2023",authFile:"auth_gt20_v1.8.lic",configFile:"config_gt20_v1.2.json",firmwareVersion:"v1.8.2",deviceCount:1823,status:"在产"},{name:"GM10 大地电磁仪",code:"GM10-2022",authFile:"auth_gm10_v1.5.lic",configFile:"config_gm10_v1.0.json",firmwareVersion:"v1.5.1",deviceCount:955,status:"停产"}],d=k({GD30:[{id:1,text:"主板SN扫码绑定主机",type:"text",required:!0,note:"唯一SN"},{id:2,text:"采集板SN录入",type:"text",required:!0,note:"1/6/12通道"},{id:3,text:"发射板SN录入",type:"text",required:!0,note:""},{id:4,text:"内置升压模块检查",type:"bool",required:!0,note:""},{id:5,text:"GPS/北斗检测",type:"bool",required:!0,note:"授时正常"},{id:6,text:"电池安装与容量检测",type:"bool",required:!0,note:""},{id:7,text:"输入电压12~48V测试",type:"bool",required:!0,note:""},{id:8,text:"接收电压精度校验",type:"bool",required:!0,note:"按型号量程"},{id:9,text:"自电补偿±10V",type:"bool",required:!0,note:""},{id:10,text:"输入阻抗≥100MΩ",type:"bool",required:!0,note:""},{id:11,text:"恒压/恒流模式",type:"bool",required:!0,note:""},{id:12,text:"最大发射电流达标",type:"bool",required:!0,note:"6A/10A/10A"},{id:13,text:"脉冲宽度配置",type:"bool",required:!0,note:""},{id:14,text:"调级输出电压",type:"bool",required:!0,note:"100~600V"},{id:15,text:"系统启动正常",type:"bool",required:!0,note:""},{id:16,text:"采集APP连接",type:"bool",required:!0,note:""},{id:17,text:"Geometa账号配置",type:"bool",required:!0,note:""},{id:18,text:"授权文件校验",type:"bool",required:!0,note:""},{id:19,text:"USB/WiFi/网口/SD",type:"bool",required:!0,note:""},{id:20,text:"IP66防护与密封",type:"bool",required:!0,note:""},{id:21,text:"过流/过压/短路保护",type:"bool",required:!0,note:""},{id:22,text:"出厂装箱核对",type:"bool",required:!0,note:""}],GT20:[{id:1,text:"主板SN扫码绑定主机",type:"text",required:!0,note:"唯一SN"},{id:2,text:"采集板SN录入",type:"text",required:!0,note:""},{id:3,text:"GPS/北斗检测",type:"bool",required:!0,note:"授时正常"},{id:4,text:"系统启动正常",type:"bool",required:!0,note:""},{id:5,text:"整体功能测试",type:"bool",required:!0,note:""}],GM10:[{id:1,text:"主板SN扫码绑定主机",type:"text",required:!0,note:"唯一SN"},{id:2,text:"传感器模块连接",type:"bool",required:!0,note:""},{id:3,text:"接口板安装",type:"bool",required:!0,note:""},{id:4,text:"线缆整理",type:"bool",required:!0,note:""},{id:5,text:"系统初始化检测",type:"bool",required:!0,note:""}]}),F=k(null),G=(n,e,s,o)=>{d.value={...d.value,[n]:d.value[n].map(a=>a.id===e?{...a,[s]:o}:a)}},M=n=>{const e=d.value[n],s=e.length>0?Math.max(...e.map(o=>o.id))+1:1;d.value={...d.value,[n]:[...e,{id:s,text:"新检查项",type:"bool",required:!0,note:""}]}},B=(n,e)=>{d.value={...d.value,[n]:d.value[n].filter(s=>s.id!==e).map((s,o)=>({...s,id:o+1}))}},N=(n,e,s)=>{G(e,s,"text",n.target.value),F.value=null},z=n=>{n.key==="Enter"&&n.target.blur()};return(n,e)=>{const s=L("router-link");return p(),x("div",Y,[e[53]||(e[53]=t("div",{class:"mb-6"},[t("h2",{class:"text-2xl font-semibold mb-1"},"设备型号管理"),t("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理设备型号及相关配置")],-1)),t("div",Z,[i(m(K),{size:20,style:{color:"#4a7c59",flexShrink:0,marginTop:"2px"}}),e[16]||(e[16]=t("div",{style:{color:"#2d5a3d"}}," 型号管理是平台核心枢纽,每个型号关联授权文件、配置文件和固件版本 ",-1))]),t("div",tt,[(p(),x(w,null,D(S,(o,a)=>t("div",{key:a,class:"bg-white p-6 rounded-lg",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},[t("div",et,[t("div",null,[t("div",ot,r(o.label),1),t("div",lt,r(o.value),1)]),t("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center",style:b({backgroundColor:`${o.color}15`})},[(p(),I(P(o.icon),{size:24,style:b({color:o.color})},null,8,["style"]))],4)])])),64))]),t("div",st,[t("div",rt,[t("div",nt,[e[18]||(e[18]=t("h3",{class:"text-lg font-semibold"},"型号列表",-1)),t("button",{class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{backgroundColor:"#4a7c59"},onClick:e[0]||(e[0]=o=>f.value=!0)},[i(m(A),{size:16}),e[17]||(e[17]=u(" 新增型号 ",-1))])])]),t("div",it,[t("table",dt,[e[23]||(e[23]=t("thead",{style:{backgroundColor:"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"型号名称"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"编码"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"授权文件"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"配置文件"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"固件版本"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"设备数"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"状态"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),t("tbody",null,[(p(),x(w,null,D(h,(o,a)=>t("tr",{key:a,class:"border-b",style:{borderColor:"#F0F0F0"}},[t("td",at,r(o.name),1),t("td",ut,r(o.code),1),t("td",pt,[i(s,{to:"/licenses",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[u(r(o.authFile),1)]),_:2},1024)]),t("td",ct,[i(s,{to:"/config-files",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[u(r(o.configFile),1)]),_:2},1024)]),t("td",xt,[i(s,{to:"/firmware",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[u(r(o.firmwareVersion),1)]),_:2},1024)]),t("td",yt,r(o.deviceCount.toLocaleString()),1),t("td",bt,[t("span",{class:"px-2 py-1 rounded text-xs",style:b({backgroundColor:o.status==="在产"?"#F6FFED":"#FFFBE6",color:o.status==="在产"?"#52C41A":"#FAAD14",border:`1px solid ${o.status==="在产"?"#B7EB8F":"#FFE58F"}`})},r(o.status),5)]),t("td",vt,[t("div",ft,[e[22]||(e[22]=t("button",{class:"text-sm",style:{color:"#4a7c59"}},"编辑",-1)),i(s,{to:"/licenses",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[...e[19]||(e[19]=[u("授权",-1)])]),_:1}),i(s,{to:"/config-files",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[...e[20]||(e[20]=[u("配置",-1)])]),_:1}),i(s,{to:"/firmware",class:"text-sm",style:{color:"#4a7c59"}},{default:g(()=>[...e[21]||(e[21]=[u("固件",-1)])]),_:1})])])])),64))])])])]),t("div",mt,[e[27]||(e[27]=t("div",{class:"p-6 border-b",style:{borderColor:"#F0F0F0"}},[t("h3",{class:"text-lg font-semibold"},"装配Checklist模板")],-1)),t("div",gt,[(p(!0),x(w,null,D(Object.keys(d.value),o=>(p(),x("button",{key:o,onClick:a=>c.value=o,class:"px-6 py-3 text-sm font-medium transition-colors",style:b({color:c.value===o?"#4a7c59":"rgba(0, 0, 0, 0.65)",borderBottom:c.value===o?"2px solid #4a7c59":"none",marginBottom:c.value===o?"-1px":"0"})},r(o),13,Ft))),128))]),t("div",kt,[t("table",wt,[e[24]||(e[24]=t("thead",{style:{backgroundColor:"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-3 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)",width:"50px"}},"序号"),t("th",{class:"px-3 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"项目名称"),t("th",{class:"px-3 py-3 text-center text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)",width:"70px"}},"操作")])],-1)),t("tbody",null,[(p(!0),x(w,null,D(d.value[c.value],o=>{var a,V,_;return p(),x("tr",{key:o.id,class:"border-b",style:{borderColor:"#F0F0F0"}},[t("td",Dt,[t("div",Ct,[i(m(X),{size:14,style:{color:"#D9D9D9"}}),u(" "+r(o.id),1)])]),t("td",qt,[((a=F.value)==null?void 0:a.model)===c.value&&((V=F.value)==null?void 0:V.id)===o.id&&((_=F.value)==null?void 0:_.field)==="text"?(p(),x("input",{key:0,autofocus:"",class:"w-full px-2 py-1 border rounded text-sm",style:{borderColor:"#4a7c59"},value:o.text,onBlur:C=>N(C,c.value,o.id),onKeydown:z},null,40,Vt)):(p(),x("span",{key:1,class:"cursor-pointer hover:text-blue-500",onClick:C=>F.value={model:c.value,id:o.id,field:"text"}},r(o.text),9,_t))]),t("td",jt,[t("button",{onClick:C=>B(c.value,o.id),class:"text-gray-400 hover:text-red-500 transition-colors"},[i(m(Q),{size:15})],8,At)])])}),128))])]),t("div",St,[t("button",{onClick:e[1]||(e[1]=o=>M(c.value)),class:"px-4 py-2 text-sm flex items-center gap-1 rounded transition-colors",style:{color:"#4a7c59",border:"1px dashed #4a7c59"}},[i(m(A),{size:14}),e[25]||(e[25]=u(" 添加检查项 ",-1))]),e[26]||(e[26]=t("button",{class:"px-6 py-2 text-sm rounded text-white",style:{backgroundColor:"#4a7c59"}}," 确认保存 ",-1))])])]),f.value?(p(),x("div",{key:0,class:"fixed inset-0 z-50 flex justify-end",style:{"background-color":"rgba(0,0,0,0.45)"},onClick:e[15]||(e[15]=U(o=>f.value=!1,["self"]))},[t("div",ht,[t("div",Gt,[e[28]||(e[28]=t("h3",{class:"text-lg font-semibold"},"新增设备型号",-1)),t("button",{onClick:e[2]||(e[2]=o=>f.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.45)"}},[i(m(H),{size:18})])]),t("div",Mt,[t("div",Bt,[t("div",null,[e[29]||(e[29]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},[u("型号名称 "),t("span",{style:{color:"#FF4D4F"}},"*")],-1)),y(t("input",{"onUpdate:modelValue":e[3]||(e[3]=o=>l.value.name=o),type:"text",class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9"},placeholder:"如:GD30 高密度电法仪"},null,512),[[$,l.value.name]])]),t("div",null,[e[31]||(e[31]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},[u("型号编码 "),t("span",{style:{color:"#FF4D4F"}},"*")],-1)),y(t("select",{"onUpdate:modelValue":e[4]||(e[4]=o=>l.value.code=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[30]||(e[30]=[t("option",{value:""},"请选择编码",-1),t("option",null,"GD10-2025",-1),t("option",null,"GD20-2025",-1),t("option",null,"GD30-2025",-1),t("option",null,"GT20-2025",-1),t("option",null,"GM10-2025",-1)])],512),[[v,l.value.code]])]),t("div",null,[e[33]||(e[33]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定授权文件",-1)),y(t("select",{"onUpdate:modelValue":e[5]||(e[5]=o=>l.value.authFile=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[32]||(e[32]=[t("option",{value:""},"请选择授权文件",-1),t("option",null,"auth_gd10_v1.0.lic",-1),t("option",null,"auth_gd20_v2.0.lic",-1),t("option",null,"auth_gd30_v2.3.lic",-1),t("option",null,"auth_gt20_v1.8.lic",-1),t("option",null,"auth_gm10_v1.5.lic",-1)])],512),[[v,l.value.authFile]]),e[34]||(e[34]=t("div",{class:"text-xs mt-1",style:{color:"rgba(0,0,0,0.45)"}},"授权文件按型号绑定,设备激活时自动下载",-1))]),t("div",null,[e[36]||(e[36]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定配置文件",-1)),y(t("select",{"onUpdate:modelValue":e[6]||(e[6]=o=>l.value.configFile=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[35]||(e[35]=[t("option",{value:""},"请选择配置文件",-1),t("option",null,"config_gd10_v1.0.json",-1),t("option",null,"config_gd20_v1.2.json",-1),t("option",null,"config_gd30_v1.5.json",-1),t("option",null,"config_gt20_v1.2.json",-1),t("option",null,"config_gm10_v1.0.json",-1)])],512),[[v,l.value.configFile]]),e[37]||(e[37]=t("div",{class:"text-xs mt-1",style:{color:"rgba(0,0,0,0.45)"}},"配置文件包含发射参数、采集参数、网络参数等",-1))]),t("div",null,[e[39]||(e[39]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定主机固件版本",-1)),y(t("select",{"onUpdate:modelValue":e[7]||(e[7]=o=>l.value.firmwareVersion=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[38]||(e[38]=[t("option",{value:""},"请选择主机固件版本",-1),t("option",null,"v2.3.5",-1),t("option",null,"v2.3.0",-1),t("option",null,"v2.2.0",-1),t("option",null,"v2.1.0",-1),t("option",null,"v1.8.2",-1),t("option",null,"v1.5.1",-1)])],512),[[v,l.value.firmwareVersion]])]),t("div",null,[e[41]||(e[41]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定主协板固件版本",-1)),y(t("select",{"onUpdate:modelValue":e[8]||(e[8]=o=>l.value.firmwareVersion=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[40]||(e[40]=[t("option",{value:""},"请选择主协板固件版本",-1),t("option",null,"v2.3.5",-1),t("option",null,"v2.3.0",-1),t("option",null,"v2.2.0",-1),t("option",null,"v2.1.0",-1),t("option",null,"v1.8.2",-1),t("option",null,"v1.5.1",-1)])],512),[[v,l.value.firmwareVersion]])]),t("div",null,[e[43]||(e[43]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定发射板固件版本",-1)),y(t("select",{"onUpdate:modelValue":e[9]||(e[9]=o=>l.value.firmwareVersion=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[42]||(e[42]=[t("option",{value:""},"请选择发射板固件版本",-1),t("option",null,"v2.3.5",-1),t("option",null,"v2.3.0",-1),t("option",null,"v2.2.0",-1),t("option",null,"v2.1.0",-1),t("option",null,"v1.8.2",-1),t("option",null,"v1.5.1",-1)])],512),[[v,l.value.firmwareVersion]])]),t("div",null,[e[45]||(e[45]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"绑定采集板固件版本",-1)),y(t("select",{"onUpdate:modelValue":e[10]||(e[10]=o=>l.value.firmwareVersion=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...e[44]||(e[44]=[t("option",{value:""},"请选择采集板固件版本",-1),t("option",null,"v2.3.5",-1),t("option",null,"v2.3.0",-1),t("option",null,"v2.2.0",-1),t("option",null,"v2.1.0",-1),t("option",null,"v1.8.2",-1),t("option",null,"v1.5.1",-1)])],512),[[v,l.value.firmwareVersion]])]),t("div",null,[e[48]||(e[48]=t("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"状态",-1)),t("div",Nt,[t("label",zt,[y(t("input",{type:"radio","onUpdate:modelValue":e[11]||(e[11]=o=>l.value.status=o),value:"在产",style:{"accent-color":"#4a7c59"}},null,512),[[j,l.value.status]]),e[46]||(e[46]=t("span",null,"在产",-1))]),t("label",Tt,[y(t("input",{type:"radio","onUpdate:modelValue":e[12]||(e[12]=o=>l.value.status=o),value:"停产",style:{"accent-color":"#4a7c59"}},null,512),[[j,l.value.status]]),e[47]||(e[47]=t("span",null,"停产",-1))])])]),t("div",Ut,[e[52]||(e[52]=t("div",{class:"text-sm font-medium mb-3"},"绑定预览",-1)),t("div",$t,[t("div",Et,[e[49]||(e[49]=t("span",null,"授权文件",-1)),t("span",{style:b({color:l.value.authFile?"#52C41A":"#FF4D4F"})},r(l.value.authFile||"未绑定"),5)]),t("div",It,[e[50]||(e[50]=t("span",null,"配置文件",-1)),t("span",{style:b({color:l.value.configFile?"#52C41A":"#FF4D4F"})},r(l.value.configFile||"未绑定"),5)]),t("div",Pt,[e[51]||(e[51]=t("span",null,"固件版本",-1)),t("span",{style:b({color:l.value.firmwareVersion?"#52C41A":"#FF4D4F"})},r(l.value.firmwareVersion||"未绑定"),5)])])])])]),t("div",Lt,[t("button",{class:"px-4 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:e[13]||(e[13]=o=>f.value=!1)},"取消"),t("button",{class:"px-4 py-2 rounded text-white text-sm",style:b({backgroundColor:l.value.name&&l.value.code?"#4a7c59":"#D9D9D9"}),disabled:!l.value.name||!l.value.code,onClick:e[14]||(e[14]=o=>f.value=!1)},"确认创建",12,Kt)])])])):E("",!0)])}}});export{Yt as default}; diff --git a/dist/assets/DeviceRegistration-CmbG4qLB.js b/dist/assets/DeviceRegistration-CmbG4qLB.js new file mode 100644 index 0000000..9624721 --- /dev/null +++ b/dist/assets/DeviceRegistration-CmbG4qLB.js @@ -0,0 +1,16 @@ +import{c as C,d as I,a as i,b as e,j as y,m as M,p as X,x as O,f as r,u as l,F as g,r as F,t as d,v as L,n as u,h as v,s as b,k as B,o as n,g as R}from"./index-C5t0nGiQ.js";import{C as U,T as z}from"./triangle-alert-DaaA5cmC.js";import{U as S}from"./upload-Cl9qkJl5.js";import{X as D}from"./x-Cy9cTPf9.js";import{D as H}from"./download-hBwFRgUo.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k=C("camera",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W=C("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j=C("file-spreadsheet",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]),Z={class:"p-6"},J={class:"bg-white p-6 rounded-lg mb-6",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},K={class:"grid grid-cols-3 gap-6"},Q={class:"mb-4 p-4 rounded-lg flex items-start gap-3",style:{backgroundColor:"#F6FFED",border:"1px solid #B7EB8F"}},Y={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{backgroundColor:"#FFFBE6",border:"1px solid #FFE58F",display:"none"}},ee={class:"bg-white rounded-lg mb-6",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},te={class:"p-6 border-b",style:{borderColor:"#F0F0F0"}},oe={class:"flex items-center justify-between"},se={class:"overflow-x-auto"},le={class:"w-full"},re={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},de={class:"px-6 py-4"},ne={class:"px-6 py-4"},ae={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},ie={class:"px-6 py-4"},ce={class:"px-6 py-4"},pe={class:"bg-white rounded-lg mb-6",style:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)"}},ue={class:"p-6 border-b",style:{borderColor:"#F0F0F0"}},be={class:"flex items-center justify-between"},xe={class:"flex items-center gap-2"},ye={class:"text-sm font-semibold",style:{color:"#4a7c59"}},ve={class:"p-6"},fe={class:"space-y-3"},me=["onClick"],ge={class:"flex-1"},he={class:"flex items-center gap-2"},Fe={key:0,class:"px-2 py-1 rounded text-xs flex items-center gap-1",style:{backgroundColor:"#FFF1F0",color:"#FF4D4F",border:"1px solid #FFCCC7"}},De={class:"flex items-center gap-2"},ke=["onClick"],Ce=["onClick"],we={key:0,class:"fixed inset-0 z-50 flex items-center justify-center",style:{"background-color":"rgba(0,0,0,0.45)"}},_e={class:"bg-white rounded-lg w-[560px] max-h-[80vh] flex flex-col",style:{"box-shadow":"0 4px 12px rgba(0,0,0,0.15)"}},Ae={class:"flex items-center justify-between p-5 border-b",style:{"border-color":"#F0F0F0"}},Me={class:"p-6 overflow-y-auto flex-1"},Be={class:"mb-4"},ze={class:"text-sm font-medium mb-2"},Se={class:"flex flex-wrap gap-3"},je=["src","alt"],Ee=["onClick"],$e={class:"flex items-center justify-end gap-3 p-5 border-t",style:{"border-color":"#F0F0F0"}},Ge=["disabled"],Ne={key:1,class:"fixed inset-0 z-50 flex items-center justify-center",style:{"background-color":"rgba(0,0,0,0.45)"}},Pe={class:"bg-white rounded-lg w-[520px]",style:{"box-shadow":"0 4px 12px rgba(0,0,0,0.15)"}},Te={class:"flex items-center justify-between p-5 border-b",style:{"border-color":"#F0F0F0"}},Ve={class:"p-6"},qe={class:"mb-6"},Ie={class:"p-4 rounded-lg flex items-center justify-between",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},Xe={class:"flex items-center gap-3"},Oe={class:"px-3 py-1.5 rounded text-sm flex items-center gap-1",style:{border:"1px solid #4a7c59",color:"#4a7c59"}},Le={class:"mb-6"},Re={class:"text-sm",style:{color:"#52C41A"}},Ue={class:"flex items-center justify-end gap-3 p-5 border-t",style:{"border-color":"#F0F0F0"}},He=["disabled"],tt=I({__name:"DeviceRegistration",setup(We){const f=b(!1),c=b(null),m=b(!1),w=b(0),p=b([]),h=b(""),_=s=>{w.value=s,p.value=[],h.value="",m.value=!0},E=s=>{const t=s.target;if(t.files)for(const o of Array.from(t.files))p.value.push({name:o.name,url:URL.createObjectURL(o)});t.value=""},$=s=>{p.value.splice(s,1)},G=()=>{const s=x.value.find(t=>t.id===w.value);s&&(s.photos=p.value.length,s.completed=!0),m.value=!1},N=s=>{const t=s.target;t.files&&t.files.length>0&&(c.value=t.files[0])},A=b("GD30"),x=b([{id:1,text:"主板安装及固定",completed:!0,photos:3,needPhoto:!0,versionCheck:!0,versionMatch:!0},{id:2,text:"采集板连接",completed:!0,photos:2,needPhoto:!0,versionCheck:!0,versionMatch:!0},{id:3,text:"测控板安装",completed:!0,photos:2,needPhoto:!0,versionCheck:!0,versionMatch:!1},{id:4,text:"电源线连接检查",completed:!1,photos:0,needPhoto:!0,versionCheck:!1,versionMatch:!0},{id:5,text:"外壳密封性检测",completed:!1,photos:0,needPhoto:!0,versionCheck:!1,versionMatch:!0}]),P=[{code:"MB-2024-001",name:"主控板",sn:"MB20240308001",spec:"GD30-MB-V2.3",calibration:"无需校准",quantity:1},{code:"RX-2024-002",name:"采集板",sn:"RX20240308002",spec:"GD30-RX-V1.8",calibration:"已校准",quantity:2},{code:"MC-2024-003",name:"测控板",sn:"MC20240308003",spec:"GD30-MC-V1.5",calibration:"无需校准",quantity:1},{code:"TX-2024-003",name:"发射板",sn:"TX20240308003",spec:"GD30-TX-V1.5",calibration:"无需校准",quantity:1},{code:"BO-2024-004",name:"升压板",sn:"BO20240308004",spec:"BP600",calibration:"无需校准",quantity:1},{code:"CS-2024-005",name:"外壳机箱",sn:"-",spec:"AL6061-T6",calibration:"无需校准",quantity:1}],T=B(()=>x.value.filter(s=>s.completed).length),V=B(()=>x.value.length),q=s=>{x.value=x.value.map(t=>t.id===s?{...t,completed:!t.completed}:t)};return(s,t)=>(n(),i("div",Z,[t[36]||(t[36]=e("div",{class:"mb-6"},[e("h2",{class:"text-2xl font-semibold mb-1"},"设备登记"),e("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"登记新设备信息及装配记录")],-1)),e("div",J,[t[13]||(t[13]=e("h3",{class:"text-lg font-semibold mb-6"},"装机信息",-1)),e("div",K,[e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},[y(" 设备型号 "),e("span",{style:{color:"#FF4D4F"}},"*")],-1)),M(e("select",{"onUpdate:modelValue":t[0]||(t[0]=o=>A.value=o),class:"w-full px-3 py-2 border rounded",style:{borderColor:"#D9D9D9",backgroundColor:"#fff"}},[...t[10]||(t[10]=[e("option",{value:"GD30"},"GD30 高密度电法仪",-1),e("option",{value:"GT20"},"GT20 瞬变电磁仪",-1),e("option",{value:"GTXD"},"GM10 大地电磁仪",-1)])],512),[[X,A.value]])]),t[12]||(t[12]=O('
已绑定
',5))])]),e("div",Q,[r(l(U),{size:20,style:{color:"#52C41A",flexShrink:0,marginTop:"2px"}}),t[14]||(t[14]=e("div",null,[e("div",{style:{color:"#389E0D",fontWeight:500}},"型号已匹配:GD30"),e("div",{class:"text-sm mt-1",style:{color:"#52C41A"}}," 授权文件:auth_gd30_v2.3.lic | 配置文件:config_gd30_v1.5.json | 固件版本:v2.3.5 ")],-1))]),e("div",Y,[r(l(z),{size:20,style:{color:"#FAAD14",flexShrink:0,marginTop:"2px"}}),t[15]||(t[15]=e("div",null,[e("div",{style:{color:"#D46B08",fontWeight:500}},"未匹配到型号关联信息"),e("div",{class:"text-sm mt-1",style:{color:"#FAAD14"}}," 请先在型号管理中配置该型号的授权文件、配置文件和固件版本 ")],-1))]),e("div",ee,[e("div",te,[e("div",oe,[t[17]||(t[17]=e("h3",{class:"text-lg font-semibold"},"设备BOM清单",-1)),e("button",{class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"},onClick:t[1]||(t[1]=o=>f.value=!0)},[r(l(S),{size:16}),t[16]||(t[16]=y(" 导入 ",-1))])])]),e("div",se,[e("table",le,[t[19]||(t[19]=e("thead",{style:{backgroundColor:"#FAFAFA"}},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"物料编码"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"物料名称"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"SN号"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"规格型号"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"校准状态"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"数量"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),e("tbody",null,[(n(),i(g,null,F(P,(o,a)=>e("tr",{key:a,class:"border-b",style:{borderColor:"#F0F0F0"}},[e("td",re,d(o.code),1),e("td",de,d(o.name),1),e("td",ne,d(o.sn),1),e("td",ae,d(o.spec),1),e("td",ie,[e("span",{class:"px-2 py-1 rounded text-xs",style:u({backgroundColor:o.calibration==="已校准"?"#F6FFED":"#F0F2F5",color:o.calibration==="已校准"?"#52C41A":"rgba(0, 0, 0, 0.65)",border:`1px solid ${o.calibration==="已校准"?"#B7EB8F":"#D9D9D9"}`})},d(o.calibration),5)]),e("td",ce,d(o.quantity),1),t[18]||(t[18]=e("td",{class:"px-6 py-4"},[e("div",{class:"flex items-center gap-3"},[e("button",{class:"text-sm",style:{color:"#4a7c59"}},"编辑"),e("button",{class:"text-sm",style:{color:"#FF4D4F"}},"删除")])],-1))])),64))])])])]),e("div",pe,[e("div",ue,[e("div",be,[t[21]||(t[21]=e("h3",{class:"text-lg font-semibold"},"装配Checklist",-1)),e("div",xe,[t[20]||(t[20]=e("span",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.65)"}},"完成进度",-1)),e("span",ye,d(T.value)+"/"+d(V.value),1)])])]),e("div",ve,[e("div",fe,[(n(!0),i(g,null,F(x.value,o=>(n(),i("div",{key:o.id,class:"flex items-center gap-4 p-4 rounded border",style:u({backgroundColor:o.completed?"#F6FFED":"#FAFAFA",borderColor:o.completed?"#B7EB8F":"#F0F0F0"})},[e("button",{onClick:a=>q(o.id),class:"w-6 h-6 rounded border flex items-center justify-center flex-shrink-0 transition-colors",style:u({borderColor:o.completed?"#52C41A":"#D9D9D9",backgroundColor:o.completed?"#52C41A":"#fff"})},[o.completed?(n(),R(l(W),{key:0,size:16,color:"#fff"})):v("",!0)],12,me),e("div",{class:"w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",style:u({backgroundColor:o.completed?"#52C41A":"#D9D9D9",color:"white"})},d(o.id),5),e("div",ge,[e("div",he,[e("span",{style:u({color:o.completed?"rgba(0, 0, 0, 0.85)":"rgba(0, 0, 0, 0.65)"})},d(o.text),5),o.versionCheck&&!o.versionMatch?(n(),i("span",Fe,[r(l(z),{size:12}),t[22]||(t[22]=y(" 版本不一致! ",-1))])):v("",!0)])]),e("div",De,[o.needPhoto&&o.completed&&o.photos>0?(n(),i("button",{key:0,class:"px-3 py-1 rounded text-xs flex items-center gap-1 cursor-pointer",style:{backgroundColor:"#eef5f0",color:"#4a7c59"},onClick:a=>_(o.id)},[r(l(k),{size:12}),y(" 已上传 "+d(o.photos)+"张 ",1)],8,ke)):v("",!0),o.needPhoto&&!o.completed?(n(),i("button",{key:1,class:"px-3 py-1 rounded text-xs flex items-center gap-1",style:{backgroundColor:"#4a7c59",color:"#fff"},onClick:a=>_(o.id)},[r(l(k),{size:12}),t[23]||(t[23]=y(" 拍照上传 ",-1))],8,Ce)):v("",!0)])],4))),128))])])]),t[37]||(t[37]=e("div",{class:"flex items-center justify-end gap-3 p-4 bg-white rounded-lg sticky bottom-0",style:{boxShadow:"0 -2px 8px rgba(0, 0, 0, 0.05)"}},[e("button",{class:"px-6 py-2 rounded",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}}," 取消 "),e("button",{class:"px-6 py-2 rounded",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}}," 更新 "),e("button",{class:"px-6 py-2 rounded text-white",style:{backgroundColor:"#4a7c59"}}," 提交 ")],-1)),m.value?(n(),i("div",we,[e("div",_e,[e("div",Ae,[t[24]||(t[24]=e("h3",{class:"text-lg font-semibold"},"上传照片",-1)),e("button",{onClick:t[2]||(t[2]=o=>m.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.45)"}},[r(l(D),{size:18})])]),e("div",Me,[e("div",Be,[e("div",ze,"照片("+d(p.value.length)+"张)",1),e("div",Se,[(n(!0),i(g,null,F(p.value,(o,a)=>(n(),i("div",{key:a,class:"relative w-24 h-24 rounded-lg overflow-hidden",style:{border:"1px solid #F0F0F0"}},[e("img",{src:o.url,alt:o.name,class:"w-full h-full object-cover"},null,8,je),e("button",{class:"absolute top-1 right-1 w-5 h-5 rounded-full flex items-center justify-center",style:{"background-color":"rgba(0,0,0,0.5)",color:"#fff"},onClick:Ze=>$(a)},[r(l(D),{size:12})],8,Ee)]))),128)),e("div",{class:"w-24 h-24 rounded-lg flex flex-col items-center justify-center cursor-pointer transition-colors hover:border-blue-400",style:{border:"2px dashed #D9D9D9",color:"rgba(0,0,0,0.45)"},onClick:t[3]||(t[3]=o=>{var a;return(a=s.$refs.photoInput)==null?void 0:a.click()})},[r(l(k),{size:24}),t[25]||(t[25]=e("span",{class:"text-xs mt-1"},"添加照片",-1))]),e("input",{ref:"photoInput",type:"file",accept:"image/*",multiple:"",class:"hidden",onChange:E},null,544)])]),e("div",null,[t[26]||(t[26]=e("div",{class:"text-sm font-medium mb-2"},"备注",-1)),M(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=o=>h.value=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","min-height":"80px",resize:"vertical"},placeholder:"输入备注信息(可选)"},null,512),[[L,h.value]])])]),e("div",$e,[e("button",{class:"px-4 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:t[5]||(t[5]=o=>m.value=!1)},"取消"),e("button",{class:"px-4 py-2 rounded text-white text-sm",style:u({backgroundColor:p.value.length>0?"#4a7c59":"#D9D9D9"}),disabled:p.value.length===0,onClick:G},"确认上传("+d(p.value.length)+"张)",13,Ge)])])])):v("",!0),f.value?(n(),i("div",Ne,[e("div",Pe,[e("div",Te,[t[27]||(t[27]=e("h3",{class:"text-lg font-semibold"},"导入BOM清单",-1)),e("button",{onClick:t[6]||(t[6]=o=>{f.value=!1,c.value=null}),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.45)"}},[r(l(D),{size:18})])]),e("div",Ve,[e("div",qe,[t[30]||(t[30]=e("div",{class:"text-sm font-medium mb-2"},"第一步:下载导入模板",-1)),e("div",Ie,[e("div",Xe,[r(l(j),{size:24,style:{color:"#52C41A"}}),t[28]||(t[28]=e("div",null,[e("div",{class:"text-sm"},"BOM导入模板.xlsx"),e("div",{class:"text-xs",style:{color:"rgba(0,0,0,0.45)"}},"包含物料编码、物料名称、SN号、规格型号等字段")],-1))]),e("button",Oe,[r(l(H),{size:14}),t[29]||(t[29]=y(" 下载模板 ",-1))])])]),e("div",Le,[t[34]||(t[34]=e("div",{class:"text-sm font-medium mb-2"},"第二步:上传Excel文件",-1)),e("div",{class:"p-8 rounded-lg text-center cursor-pointer transition-colors",style:u({border:c.value?"2px solid #52C41A":"2px dashed #D9D9D9",backgroundColor:c.value?"#F6FFED":"#FAFAFA"}),onClick:t[7]||(t[7]=o=>{var a;return(a=s.$refs.fileInput)==null?void 0:a.click()})},[e("input",{ref:"fileInput",type:"file",accept:".xlsx,.xls,.csv",class:"hidden",onChange:N},null,544),c.value?(n(),i(g,{key:0},[r(l(j),{size:32,style:{color:"#52C41A",margin:"0 auto 8px"}}),e("div",Re,d(c.value.name),1),t[31]||(t[31]=e("div",{class:"text-xs mt-1",style:{color:"rgba(0,0,0,0.45)"}},"点击重新选择文件",-1))],64)):(n(),i(g,{key:1},[r(l(S),{size:32,style:{color:"#D9D9D9",margin:"0 auto 8px"}}),t[32]||(t[32]=e("div",{class:"text-sm",style:{color:"rgba(0,0,0,0.65)"}},"点击或拖拽文件到此处上传",-1)),t[33]||(t[33]=e("div",{class:"text-xs mt-1",style:{color:"rgba(0,0,0,0.45)"}},"支持 .xlsx、.xls、.csv 格式",-1))],64))],4)]),t[35]||(t[35]=e("div",{class:"p-3 rounded text-xs",style:{"background-color":"#FFFBE6",border:"1px solid #FFE58F",color:"#D46B08"}}," 提示:请确保Excel文件格式与模板一致,物料编码和SN号为必填字段。导入后可在BOM清单中编辑。 ",-1))]),e("div",Ue,[e("button",{class:"px-4 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:t[8]||(t[8]=o=>{f.value=!1,c.value=null})},"取消"),e("button",{class:"px-4 py-2 rounded text-white text-sm",style:u({backgroundColor:c.value?"#4a7c59":"#D9D9D9"}),disabled:!c.value,onClick:t[9]||(t[9]=o=>{f.value=!1,c.value=null})},"确认导入",12,He)])])])):v("",!0)]))}});export{tt as default}; diff --git a/dist/assets/FirmwareLibrary-XKwdIJ2N.js b/dist/assets/FirmwareLibrary-XKwdIJ2N.js new file mode 100644 index 0000000..57086ae --- /dev/null +++ b/dist/assets/FirmwareLibrary-XKwdIJ2N.js @@ -0,0 +1 @@ +import{U as b}from"./upload-Cl9qkJl5.js";import{d as y,a as l,b as s,f as d,u as g,j as i,F as r,r as c,s as _,o as a,t as o,h as m,w as v,e as f}from"./index-C5t0nGiQ.js";const k={class:"p-6"},h={class:"mb-6"},D={class:"flex items-center justify-between mb-2"},F={class:"flex items-center gap-3"},C={class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{"background-color":"#4a7c59"}},B={class:"bg-white rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},S={class:"divide-y",style:{"border-color":"#F0F0F0"}},A={class:"flex items-center gap-4 mb-2"},z={class:"text-lg font-semibold"},M={class:"text-sm",style:{color:"rgba(0,0,0,0.45)"}},N={class:"text-sm",style:{color:"#52C41A"}},T={class:"text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},V={class:"text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},L={class:"text-sm mb-3",style:{color:"rgba(0,0,0,0.65)"}},j={key:0,class:"mb-3"},R={key:1,class:"mb-4"},U={class:"text-sm list-disc pl-5",style:{color:"rgba(0,0,0,0.65)"}},E={class:"flex items-center gap-6 pt-2"},G={key:1,class:"flex items-center gap-6 pt-3"},H=["onClick"],J=y({__name:"FirmwareLibrary",setup(O){const p=_([{version:"v2.3.0",releaseDate:"2024-02-20",status:"已发布",fileSize:"12.5MB",downloads:1234,md5:"a1b2c3d4e5f6...",sha256:"...",model:"GD30",hardwareRange:"A1-A3",upgradeType:"可选",signed:!0,notes:["修复OTA升级流程中的断点续传Bug","优化设备心跳上报频率","新增配置文件远程下发功能","增强安全性,升级前强制验证固件签名"],expanded:!0},{version:"v2.2.0",releaseDate:"2024-01-15",status:"已发布",fileSize:"12.0MB",downloads:2456,expanded:!1},{version:"v2.1.0",releaseDate:"2023-12-01",status:"已发布",fileSize:"11.5MB",downloads:3587,expanded:!1}]);return($,e)=>{const u=f("router-link");return a(),l("div",k,[s("div",h,[s("div",D,[e[2]||(e[2]=s("h2",{class:"text-2xl font-semibold"},"固件库",-1)),s("div",F,[s("button",C,[d(g(b),{size:16}),e[0]||(e[0]=i(" 上传固件 ",-1))]),e[1]||(e[1]=s("button",{class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"}}," 发布固件 ",-1))])])]),s("div",B,[e[10]||(e[10]=s("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[s("h3",{class:"text-base font-medium"},"固件版本库")],-1)),s("div",S,[(a(!0),l(r,null,c(p.value,t=>(a(),l("div",{key:t.version,class:"p-6"},[s("div",A,[s("span",z,"版本: "+o(t.version),1),s("span",M,"发布日期: "+o(t.releaseDate),1),s("span",N,o(t.status),1)]),s("div",T," 文件大小: "+o(t.fileSize)+" 下载次数: "+o(t.downloads.toLocaleString())+"次 ",1),t.expanded&&t.md5?(a(),l(r,{key:0},[s("div",V," MD5: "+o(t.md5)+" SHA256: "+o(t.sha256),1),s("div",L," 适用型号: "+o(t.model)+" 硬件版本范围: "+o(t.hardwareRange)+" 升级类型: "+o(t.upgradeType),1),t.signed?(a(),l("div",j,[...e[3]||(e[3]=[s("span",{class:"text-sm",style:{color:"#52C41A"}},"数字签名: 已签名",-1)])])):m("",!0),t.notes&&t.notes.length?(a(),l("div",R,[e[4]||(e[4]=s("div",{class:"text-sm font-medium mb-1",style:{color:"rgba(0,0,0,0.85)"}},"发布说明:",-1)),s("ul",U,[(a(!0),l(r,null,c(t.notes,(n,x)=>(a(),l("li",{key:x},o(n),1))),128))])])):m("",!0),s("div",E,[e[6]||(e[6]=s("button",{class:"text-sm",style:{color:"#4a7c59"}},"下载",-1)),e[7]||(e[7]=s("button",{class:"text-sm",style:{color:"#4a7c59"}},"编辑",-1)),e[8]||(e[8]=s("button",{class:"text-sm",style:{color:"#4a7c59"}},"撤回发布",-1)),d(u,{to:"/firmware-upgrade",class:"text-sm",style:{color:"#4a7c59"}},{default:v(()=>[...e[5]||(e[5]=[i("查看升级任务",-1)])]),_:1})])],64)):(a(),l("div",G,[e[9]||(e[9]=s("button",{class:"text-sm",style:{color:"#4a7c59"}},"下载",-1)),s("button",{class:"text-sm",style:{color:"#4a7c59"},onClick:n=>t.expanded=!0},"查看详情",8,H)]))]))),128))])])])}}});export{J as default}; diff --git a/dist/assets/LicenseGenerate-CsoTS0Do.js b/dist/assets/LicenseGenerate-CsoTS0Do.js new file mode 100644 index 0000000..d92ba35 --- /dev/null +++ b/dist/assets/LicenseGenerate-CsoTS0Do.js @@ -0,0 +1 @@ +import{d as S,a as i,b as e,u as a,f,j as A,m,p as D,v as I,h as P,t as u,F as V,r as _,n as E,y as G,s as n,k as v,o as b}from"./index-C5t0nGiQ.js";import{A as T}from"./arrow-left-De7UcLOo.js";import{I as $}from"./info-DbTQmklK.js";const M={class:"p-6"},N={class:"mb-6"},j={class:"flex items-center gap-4 mb-2"},z={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#eef5f0",border:"1px solid #a3c4ad"}},B={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},L={class:"grid grid-cols-3 gap-6"},R={key:0},U={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},H={class:"p-6 border-b flex items-center justify-between",style:{"border-color":"#F0F0F0"}},q={class:"flex items-center gap-3"},J={class:"text-sm",style:{color:"rgba(0,0,0,0.45)"}},K={class:"overflow-x-auto"},O={class:"w-full"},Q={class:"px-6 py-3"},W=["checked","disabled","onChange"],X={class:"px-6 py-3 text-sm"},Y={class:"flex items-center justify-end gap-3 p-4 bg-white rounded-lg sticky bottom-0",style:{"box-shadow":"0 -2px 8px rgba(0,0,0,0.05)"}},Z=["disabled"],ae=S({__name:"LicenseGenerate",setup(ee){const p=G(),x=n("GD-10 Supreme"),c=n("永久"),y=n(""),k=n([{name:"1D SP"},{name:"2D SP"},{name:"3D SP"},{name:"1D VES"},{name:"2D ERT"},{name:"3D ERT"},{name:"1D IP"},{name:"2D IP"},{name:"3D IP"},{name:"跨孔(Cross-Hole)"},{name:"水上(Marine)"}]),r=v(()=>k.value.map(t=>({...t,available:!1}))),o=n(new Set),w=t=>{o.value.has(t)?o.value.delete(t):o.value.add(t)},h=()=>{r.value.forEach(t=>{t.available&&o.value.add(t.name)})},g=()=>{o.value.clear()},d=v(()=>r.value.filter(t=>t.available&&o.value.has(t.name)).length),C=v(()=>r.value.filter(t=>t.available).length);return(t,l)=>(b(),i("div",M,[e("div",N,[e("div",j,[e("button",{onClick:l[0]||(l[0]=s=>a(p).go(-1)),class:"p-2 rounded hover:bg-gray-100 transition-colors",style:{color:"rgba(0,0,0,0.65)"}},[f(a(T),{size:20})]),l[7]||(l[7]=e("h2",{class:"text-2xl font-semibold"},"选择授权项生成",-1))]),l[8]||(l[8]=e("p",{class:"text-sm ml-12",style:{color:"rgba(0,0,0,0.45)"}},"选择设备型号和授权功能模块,生成授权文件",-1))]),e("div",z,[f(a($),{size:20,style:{color:"#4a7c59","flex-shrink":"0","margin-top":"2px"}}),l[9]||(l[9]=e("div",{style:{color:"#2d5a3d"}},[e("div",{class:"text-sm"}," 不同设备型号支持不同的授权功能模块。选择型号后,下方表格会显示该型号可用的授权项。生成的授权文件将在设备APP激活时自动下载到对应设备。 ")],-1))]),e("div",B,[l[15]||(l[15]=e("h3",{class:"text-lg font-semibold mb-6"},"基本信息",-1)),e("div",L,[e("div",null,[l[11]||(l[11]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},[A("设备型号 "),e("span",{style:{color:"#FF4D4F"}},"*")],-1)),m(e("select",{"onUpdate:modelValue":l[1]||(l[1]=s=>x.value=s),class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9","background-color":"#fff"},onChange:l[2]||(l[2]=s=>g())},[...l[10]||(l[10]=[e("option",null,"GD-10 Supreme",-1),e("option",null,"GD-20 Supreme",-1),e("option",null,"GD-30 Supreme",-1)])],544),[[D,x.value]])]),e("div",null,[l[13]||(l[13]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"授权有效期",-1)),m(e("select",{"onUpdate:modelValue":l[3]||(l[3]=s=>c.value=s),class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...l[12]||(l[12]=[e("option",null,"永久",-1),e("option",null,"1年",-1),e("option",null,"2年",-1),e("option",null,"自定义",-1)])],512),[[D,c.value]])]),c.value==="自定义"?(b(),i("div",R,[l[14]||(l[14]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"到期日期",-1)),m(e("input",{type:"date","onUpdate:modelValue":l[4]||(l[4]=s=>y.value=s),class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9"}},null,512),[[I,y.value]])])):P("",!0)])]),e("div",U,[e("div",H,[e("div",q,[l[16]||(l[16]=e("h3",{class:"text-lg font-semibold"},"功能授权项选择",-1)),e("span",J,"已选 "+u(d.value)+" / "+u(C.value)+" 项",1)]),e("div",{class:"flex items-center gap-3"},[e("button",{class:"text-sm",style:{color:"#4a7c59"},onClick:h},"全选可用项"),e("button",{class:"text-sm",style:{color:"rgba(0,0,0,0.45)"},onClick:g},"清空")])]),e("div",K,[e("table",O,[l[17]||(l[17]=e("thead",{style:{"background-color":"#FAFAFA"}},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)",width:"150px"}},"选择"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"授权项名称")])],-1)),e("tbody",null,[(b(!0),i(V,null,_(r.value,(s,F)=>(b(),i("tr",{key:F,class:"border-b",style:{"border-color":"#F0F0F0"}},[e("td",Q,[e("input",{type:"checkbox",class:"w-4 h-4",style:{"accent-color":"#4a7c59"},checked:o.value.has(s.name),disabled:!s.available,onChange:le=>w(s.name)},null,40,W)]),e("td",X,u(s.name),1)]))),128))])])])]),e("div",Y,[e("button",{class:"px-6 py-2 rounded",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:l[5]||(l[5]=s=>a(p).go(-1))},"取消"),e("button",{class:"px-6 py-2 rounded text-white",style:E({backgroundColor:d.value>0?"#52C41A":"#D9D9D9"}),disabled:d.value===0,onClick:l[6]||(l[6]=s=>a(p).push("/licenses"))}," 生成授权文件("+u(d.value)+"项) ",13,Z)])]))}});export{ae as default}; diff --git a/dist/assets/LicenseManagement-DIHeCigb.js b/dist/assets/LicenseManagement-DIHeCigb.js new file mode 100644 index 0000000..ac387b0 --- /dev/null +++ b/dist/assets/LicenseManagement-DIHeCigb.js @@ -0,0 +1 @@ +import{d as B,a,b as e,f as b,u as x,j as f,x as k,F as w,r as S,l as M,m as v,p as h,v as T,h as m,t as r,n as C,s as p,k as D,o as n}from"./index-C5t0nGiQ.js";import{D as $}from"./download-hBwFRgUo.js";import{P as L}from"./plus-BfKzmzQH.js";import{I as N}from"./info-DbTQmklK.js";import{X as R}from"./x-Cy9cTPf9.js";const U={class:"p-6"},H={class:"mb-6"},X={class:"flex items-center justify-between mb-2"},q={class:"flex items-center gap-3"},J={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"}},K={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#E6FFFB",border:"1px solid #87E8DE"}},O={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},Q={class:"overflow-x-auto"},W={class:"w-full"},Y={class:"px-6 py-4",style:{color:"#4a7c59"}},Z={class:"px-6 py-4"},ee={class:"px-6 py-4 text-sm",style:{color:"rgba(0,0,0,0.65)","max-width":"200px"}},te={class:"px-6 py-4",style:{color:"rgba(0,0,0,0.65)"}},se={class:"px-6 py-4",style:{color:"rgba(0,0,0,0.65)"}},oe={class:"px-6 py-4"},le={class:"px-6 py-4"},re={class:"flex items-center gap-3"},de={key:0,class:"text-sm",style:{color:"#52C41A"}},ae={key:1,class:"text-sm",style:{color:"#FF4D4F"}},ne={class:"bg-white w-[640px] h-full flex flex-col",style:{"box-shadow":"-4px 0 12px rgba(0,0,0,0.1)"}},ue={class:"flex items-center justify-between p-5 border-b",style:{"border-color":"#F0F0F0"}},ie={class:"flex-1 overflow-y-auto p-6"},pe={class:"grid grid-cols-2 gap-4 mb-6"},ce={key:0},be={class:"flex items-center justify-between mb-3"},xe={class:"flex items-center gap-2"},me={class:"text-xs",style:{color:"rgba(0,0,0,0.45)"}},ge={class:"w-full text-sm"},ye={class:"px-3 py-2"},fe=["checked","onChange"],ve={class:"px-3 py-2"},De={class:"flex items-center justify-end gap-3 p-5 border-t",style:{"border-color":"#F0F0F0"}},Fe=["disabled"],Ie=B({__name:"LicenseManagement",setup(ke){const u=p(!1),d=p("GD-10 Supreme"),g=p("永久"),F=p(""),i=[{name:"1D SP",gd10:!0,gd20:!0,gd30:!0},{name:"2D SP",gd10:!0,gd20:!0,gd30:!0},{name:"3D SP",gd10:!1,gd20:!0,gd30:!0},{name:"1D VES",gd10:!0,gd20:!0,gd30:!0},{name:"2D ERT",gd10:!0,gd20:!0,gd30:!0},{name:"3D ERT",gd10:!1,gd20:!0,gd30:!0},{name:"1D IP",gd10:!0,gd20:!0,gd30:!0},{name:"2D IP",gd10:!0,gd20:!0,gd30:!0},{name:"3D IP",gd10:!1,gd20:!0,gd30:!0},{name:"跨孔(Cross-Hole)",gd10:!1,gd20:!0,gd30:!0},{name:"水上(Marine)",gd10:!1,gd20:!0,gd30:!0}],l=p(new Set),_=D(()=>i.map(s=>{let t=!1;return d.value==="GD-10 Supreme"?t=s.gd10:d.value==="GD-20 Supreme"?t=s.gd20:t=s.gd30,{...s,preset:t}})),c=D(()=>l.value.size),G=D(()=>i.length),I=s=>{l.value.has(s)?l.value.delete(s):l.value.add(s)},A=()=>{i.forEach(s=>l.value.add(s.name))},E=()=>{l.value.clear()},P=()=>{l.value.clear(),i.forEach(s=>{let t=!1;d.value==="GD-10 Supreme"?t=s.gd10:d.value==="GD-20 Supreme"?t=s.gd20:t=s.gd30,t&&l.value.add(s.name)}),u.value=!0},V=()=>{l.value.clear(),i.forEach(s=>{let t=!1;d.value==="GD-10 Supreme"?t=s.gd10:d.value==="GD-20 Supreme"?t=s.gd20:t=s.gd30,t&&l.value.add(s.name)})},j=[{licenseId:"LIC-GD10-Supreme-v1.0",model:"GD-10 Supreme",status:"已发布",modules:"1D SP, 2D SP, 1D VES, 2D ERT, 1D IP, 2D IP",expiry:"永久",createdDate:"2025-02-01"},{licenseId:"LIC-GD20-Supreme-v1.0",model:"GD-20 Supreme",status:"已发布",modules:"全部模块",expiry:"永久",createdDate:"2025-02-05"},{licenseId:"LIC-GD30-Supreme-v1.0",model:"GD-30 Supreme",status:"草稿",modules:"全部模块(不含水上)",expiry:"1年",createdDate:"2025-02-08"}],z=s=>s==="已发布"?{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"}:s==="草稿"?{backgroundColor:"#FFFBE6",color:"#FAAD14",border:"1px solid #FFE58F"}:{backgroundColor:"#FAFAFA",color:"rgba(0,0,0,0.45)",border:"1px solid #D9D9D9"};return(s,t)=>(n(),a("div",U,[e("div",H,[e("div",X,[t[10]||(t[10]=e("h2",{class:"text-2xl font-semibold"},"授权管理",-1)),e("div",q,[e("button",J,[b(x($),{size:16}),t[8]||(t[8]=f(" 导出 ",-1))]),e("button",{class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{"background-color":"#4a7c59"},onClick:P},[b(x(L),{size:16}),t[9]||(t[9]=f(" 选择授权项生成 ",-1))])])]),t[11]||(t[11]=e("p",{class:"text-sm",style:{color:"rgba(0,0,0,0.45)"}},"管理设备授权文件",-1))]),e("div",K,[b(x(N),{size:20,style:{color:"#13C2C2","flex-shrink":"0","margin-top":"2px"}}),t[12]||(t[12]=e("div",{style:{color:"#006D75"}},[e("div",{class:"font-medium mb-1"},"授权说明"),e("div",{class:"text-sm"},'授权文件按设备型号管理,每个型号对应一套授权模块配置。点击"选择授权项生成"可按型号勾选功能模块并生成授权文件,设备在APP激活时自动下载对应型号的授权文件。')],-1))]),t[24]||(t[24]=k('
',1)),e("div",O,[e("div",Q,[e("table",W,[t[15]||(t[15]=e("thead",{style:{"background-color":"#FAFAFA"}},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"授权文件ID"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"适配型号"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"授权模块"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"有效期"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"创建日期"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"状态"),e("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0,0,0,0.85)"}},"操作")])],-1)),e("tbody",null,[(n(),a(w,null,S(j,(o,y)=>e("tr",{key:y,class:"border-b",style:{"border-color":"#F0F0F0"}},[e("td",Y,r(o.licenseId),1),e("td",Z,r(o.model),1),e("td",ee,r(o.modules),1),e("td",te,r(o.expiry),1),e("td",se,r(o.createdDate),1),e("td",oe,[e("span",{class:"px-2 py-1 rounded text-xs",style:C(z(o.status))},r(o.status),5)]),e("td",le,[e("div",re,[t[13]||(t[13]=e("button",{class:"text-sm",style:{color:"#4a7c59"}},"详情",-1)),t[14]||(t[14]=e("button",{class:"text-sm",style:{color:"#4a7c59"}},"下载",-1)),o.status==="草稿"?(n(),a("button",de,"发布")):m("",!0),o.status==="已发布"?(n(),a("button",ae,"停用")):m("",!0)])])])),64))])])])]),t[25]||(t[25]=k('
显示 1-10 / 共 156 条
',1)),u.value?(n(),a("div",{key:0,class:"fixed inset-0 z-50 flex justify-end",style:{"background-color":"rgba(0,0,0,0.45)"},onClick:t[7]||(t[7]=M(o=>u.value=!1,["self"]))},[e("div",ne,[e("div",ue,[t[16]||(t[16]=e("h3",{class:"text-lg font-semibold"},"选择授权项生成",-1)),e("button",{onClick:t[0]||(t[0]=o=>u.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.45)"}},[b(x(R),{size:18})])]),e("div",ie,[e("div",pe,[e("div",null,[t[18]||(t[18]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},[f("设备型号 "),e("span",{style:{color:"#FF4D4F"}},"*")],-1)),v(e("select",{"onUpdate:modelValue":t[1]||(t[1]=o=>d.value=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"},onChange:t[2]||(t[2]=o=>V())},[...t[17]||(t[17]=[e("option",null,"GD-10 Supreme",-1),e("option",null,"GD-20 Supreme",-1),e("option",null,"GD-30 Supreme",-1)])],544),[[h,d.value]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"授权有效期",-1)),v(e("select",{"onUpdate:modelValue":t[3]||(t[3]=o=>g.value=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...t[19]||(t[19]=[e("option",null,"永久",-1),e("option",null,"1年",-1),e("option",null,"2年",-1),e("option",null,"自定义",-1)])],512),[[h,g.value]])]),g.value==="自定义"?(n(),a("div",ce,[t[21]||(t[21]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.85)"}},"到期日期",-1)),v(e("input",{type:"date","onUpdate:modelValue":t[4]||(t[4]=o=>F.value=o),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9"}},null,512),[[T,F.value]])])):m("",!0)]),e("div",be,[e("div",xe,[t[22]||(t[22]=e("span",{class:"text-sm font-medium"},"功能授权项",-1)),e("span",me,"已选 "+r(c.value)+" / "+r(G.value)+" 项",1)]),e("div",{class:"flex items-center gap-3"},[e("button",{class:"text-xs",style:{color:"#4a7c59"},onClick:A},"全选"),e("button",{class:"text-xs",style:{color:"rgba(0,0,0,0.45)"},onClick:E},"清空")])]),e("table",ge,[t[23]||(t[23]=e("thead",{style:{"background-color":"#FAFAFA"}},[e("tr",null,[e("th",{class:"px-3 py-2 text-left",style:{width:"36px"}}),e("th",{class:"px-3 py-2 text-left"},"功能授权项名称")])],-1)),e("tbody",null,[(n(!0),a(w,null,S(_.value,(o,y)=>(n(),a("tr",{key:y,class:"border-b",style:{"border-color":"#F0F0F0"}},[e("td",ye,[e("input",{type:"checkbox",class:"w-3.5 h-3.5",style:{"accent-color":"#4a7c59"},checked:l.value.has(o.name),onChange:we=>I(o.name)},null,40,fe)]),e("td",ve,r(o.name),1)]))),128))])])]),e("div",De,[e("button",{class:"px-4 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:t[5]||(t[5]=o=>u.value=!1)},"取消"),e("button",{class:"px-4 py-2 rounded text-white text-sm",style:C({backgroundColor:c.value>0?"#52C41A":"#D9D9D9"}),disabled:c.value===0,onClick:t[6]||(t[6]=o=>u.value=!1)},"生成授权文件("+r(c.value)+"项)",13,Fe)])])])):m("",!0)]))}});export{Ie as default}; diff --git a/dist/assets/ParameterConfiguration-eKxkO1XH.js b/dist/assets/ParameterConfiguration-eKxkO1XH.js new file mode 100644 index 0000000..5cf206f --- /dev/null +++ b/dist/assets/ParameterConfiguration-eKxkO1XH.js @@ -0,0 +1,6 @@ +import{c as O,d as W,a as o,b as e,u,f as w,t as d,m as a,p as V,v as g,F as i,r as m,z as c,x as N,h as b,j as p,y as $,k as L,s as r,o as t,n as k,A as R}from"./index-C5t0nGiQ.js";import{A as j}from"./arrow-left-De7UcLOo.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S=O("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),q={class:"p-6"},J={class:"mb-6"},K={class:"flex items-center gap-4 mb-2"},Q={class:"text-2xl font-semibold"},X={class:"text-sm ml-12",style:{color:"rgba(0, 0, 0, 0.45)"}},Y={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},Z={class:"grid grid-cols-3 gap-x-12 gap-y-6"},ee={key:1,class:"font-medium"},le={key:1,style:{color:"#4a7c59"}},se={class:"text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.45)"}},oe={key:0,class:"px-2 py-1 rounded text-xs",style:{"background-color":"#FFFBE6",color:"#FAAD14",border:"1px solid #FFE58F"}},te={key:1,style:{color:"rgba(0, 0, 0, 0.65)"}},re={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},ae={class:"grid grid-cols-2 gap-x-12 gap-y-6"},de={class:"col-span-2"},ne={class:"flex flex-wrap gap-2"},ce=["checked"],ue={class:"col-span-2"},ie={class:"flex flex-wrap gap-2"},be=["checked"],pe={class:"flex items-center gap-2 cursor-pointer"},ve={style:{color:"rgba(0, 0, 0, 0.65)"}},ye={class:"flex items-center gap-6"},xe={class:"flex items-center gap-2 cursor-pointer"},ge={class:"flex items-center gap-2 cursor-pointer"},me={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},ke={class:"grid grid-cols-2 gap-x-12 gap-y-6"},fe={class:"col-span-2"},De={class:"flex flex-wrap gap-2"},he=["onClick"],we={class:"col-span-2"},Ve={class:"flex flex-wrap gap-2"},Ce=["checked"],Ue={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},Ae={class:"grid grid-cols-2 gap-x-12 gap-y-6"},Fe={class:"flex items-center gap-4"},ze={class:"flex items-center gap-2 cursor-pointer"},Ge={key:1,class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},Te={class:"flex items-center gap-4"},_e={class:"flex items-center gap-2 cursor-pointer"},Me={key:1,class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},Ne={class:"flex items-center gap-2 cursor-pointer"},Se={style:{color:"rgba(0, 0, 0, 0.65)"}},Pe={class:"flex items-center gap-4"},Be={class:"flex items-center gap-2 cursor-pointer"},Ee={key:1,class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},He={class:"flex items-center justify-end gap-3 p-4 bg-white rounded-lg sticky bottom-0",style:{"box-shadow":"0 -2px 8px rgba(0, 0, 0, 0.05)"}},Ie={class:"px-6 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}},Oe={class:"px-6 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}},qe=W({__name:"ParameterConfiguration",setup(We){const f=$(),P=R(),n=L(()=>P.params.configId==="new"),C=r("GD30"),U=r("v1.0.0"),A=r("1500V"),F=r("10A"),B=r([{value:"±2.5V",checked:!0},{value:"±80V",checked:!0},{value:"±600V",checked:!1}]),D=r(!0),z=r(!0),G=r(!0),v=r(!0),T=r("1600"),y=r(!0),_=r("12"),h=r(!0),x=r(!0),M=r("75"),E=r([{value:"0.25s",checked:!0},{value:"0.5s",checked:!0},{value:"1s",checked:!0},{value:"2s",checked:!0},{value:"4s",checked:!0},{value:"8s",checked:!0},{value:"16s",checked:!0},{value:"32s",checked:!0},{value:"64s",checked:!0}]),H=r([{value:"0+0-",checked:!0},{value:"+0-0",checked:!0},{value:"+-",checked:!0}]),I=r([{value:"50Hz",checked:!0},{value:"60Hz",checked:!0},{value:"100Hz",checked:!0},{value:"1000Hz",checked:!0}]);return($e,l)=>(t(),o("div",q,[e("div",J,[e("div",K,[e("button",{onClick:l[0]||(l[0]=s=>u(f).go(-1)),class:"p-2 rounded hover:bg-gray-100 transition-colors",style:{color:"rgba(0, 0, 0, 0.65)"}},[w(u(j),{size:20})]),e("h2",Q,d(n.value?"新建配置文件":"参数配置"),1)]),e("p",X,d(n.value?"选择设备型号和参数,生成配置文件":"配置设备型号的详细参数"),1)]),e("div",Y,[l[20]||(l[20]=e("h3",{class:"text-lg font-semibold mb-6"},"型号信息",-1)),e("div",Z,[e("div",null,[l[18]||(l[18]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.45)"}},"适配型号",-1)),n.value?a((t(),o("select",{key:0,"onUpdate:modelValue":l[1]||(l[1]=s=>C.value=s),class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...l[17]||(l[17]=[e("option",{value:"GD30"},"GD30 高密度电法仪",-1),e("option",{value:"GT20"},"GT20 瞬变电磁仪",-1),e("option",{value:"GM10"},"GM10 大地电磁仪",-1)])],512)),[[V,C.value]]):(t(),o("div",ee,"GD30 高密度电法仪"))]),e("div",null,[l[19]||(l[19]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.45)"}},"配置文件版本",-1)),n.value?a((t(),o("input",{key:0,type:"text","onUpdate:modelValue":l[2]||(l[2]=s=>U.value=s),class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9"},placeholder:"如 v1.0.0"},null,512)),[[g,U.value]]):(t(),o("div",le,"v1.2.0"))]),e("div",null,[e("div",se,d(n.value?"状态":"最后更新时间"),1),n.value?(t(),o("span",oe,"待生成")):(t(),o("div",te,"2024-03-01 10:30"))])])]),e("div",re,[l[31]||(l[31]=e("h3",{class:"text-lg font-semibold mb-6"},"发射参数",-1)),e("div",ae,[e("div",null,[l[22]||(l[22]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}}," 最大发射电压 ",-1)),a(e("select",{class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9","background-color":"#fff"},"onUpdate:modelValue":l[3]||(l[3]=s=>A.value=s)},[...l[21]||(l[21]=[e("option",null,"500V",-1),e("option",null,"800V",-1),e("option",null,"1000V",-1),e("option",null,"1200V",-1),e("option",null,"1500V",-1)])],512),[[V,A.value]])]),e("div",null,[l[24]||(l[24]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}}," 最大发射电流 ",-1)),a(e("select",{class:"w-full px-3 py-2 border rounded",style:{"border-color":"#D9D9D9","background-color":"#fff"},"onUpdate:modelValue":l[4]||(l[4]=s=>F.value=s)},[...l[23]||(l[23]=[e("option",null,"2A",-1),e("option",null,"5A",-1),e("option",null,"8A",-1),e("option",null,"10A",-1),e("option",null,"15A",-1)])],512),[[V,F.value]])]),e("div",de,[l[25]||(l[25]=e("label",{class:"block text-sm mb-3",style:{color:"rgba(0, 0, 0, 0.85)"}}," 发射脉宽 ",-1)),e("div",ne,[(t(!0),o(i,null,m(E.value,s=>(t(),o("label",{key:s.value,class:"px-4 py-2 rounded border cursor-pointer transition-colors",style:k({borderColor:s.checked?"#4a7c59":"#D9D9D9",backgroundColor:s.checked?"#eef5f0":"#fff",color:s.checked?"#4a7c59":"rgba(0, 0, 0, 0.65)"})},[e("input",{type:"checkbox",class:"hidden",checked:s.checked,readonly:""},null,8,ce),p(" "+d(s.value),1)],4))),128))])]),e("div",ue,[l[26]||(l[26]=e("label",{class:"block text-sm mb-3",style:{color:"rgba(0, 0, 0, 0.85)"}}," 发射波形 ",-1)),e("div",ie,[(t(!0),o(i,null,m(H.value,s=>(t(),o("label",{key:s.value,class:"px-4 py-2 rounded border cursor-pointer transition-colors",style:k({borderColor:s.checked?"#4a7c59":"#D9D9D9",backgroundColor:s.checked?"#eef5f0":"#fff",color:s.checked?"#4a7c59":"rgba(0, 0, 0, 0.65)"})},[e("input",{type:"checkbox",class:"hidden",checked:s.checked,readonly:""},null,8,be),p(" "+d(s.value),1)],4))),128))])]),e("div",null,[l[27]||(l[27]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"支持全波形测量",-1)),e("label",pe,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[5]||(l[5]=s=>D.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,D.value]]),e("span",ve,d(D.value?"是":"否"),1)])]),e("div",null,[l[30]||(l[30]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"占空比支持",-1)),e("div",ye,[e("label",xe,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[6]||(l[6]=s=>z.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,z.value]]),l[28]||(l[28]=e("span",{style:{color:"rgba(0, 0, 0, 0.65)"}},"50% 占空比",-1))]),e("label",ge,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[7]||(l[7]=s=>G.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,G.value]]),l[29]||(l[29]=e("span",{style:{color:"rgba(0, 0, 0, 0.65)"}},"100% 占空比",-1))])])])])]),e("div",me,[l[35]||(l[35]=e("h3",{class:"text-lg font-semibold mb-6"},"采集参数",-1)),e("div",ke,[e("div",fe,[l[32]||(l[32]=e("label",{class:"block text-sm mb-3",style:{color:"rgba(0, 0, 0, 0.85)"}},"电压测量范围",-1)),e("div",De,[(t(!0),o(i,null,m(B.value,s=>(t(),o("label",{key:s.value,class:"px-4 py-2 rounded border cursor-pointer transition-colors",style:k({borderColor:s.checked?"#4a7c59":"#D9D9D9",backgroundColor:s.checked?"#eef5f0":"#fff",color:s.checked?"#4a7c59":"rgba(0, 0, 0, 0.65)"}),onClick:Le=>s.checked=!s.checked},d(s.value),13,he))),128))])]),e("div",we,[l[33]||(l[33]=e("label",{class:"block text-sm mb-3",style:{color:"rgba(0, 0, 0, 0.85)"}}," 采样率 ",-1)),e("div",Ve,[(t(!0),o(i,null,m(I.value,s=>(t(),o("label",{key:s.value,class:"px-4 py-2 rounded border cursor-pointer transition-colors",style:k({borderColor:s.checked?"#4a7c59":"#D9D9D9",backgroundColor:s.checked?"#eef5f0":"#fff",color:s.checked?"#4a7c59":"rgba(0, 0, 0, 0.65)"})},[e("input",{type:"checkbox",class:"hidden",checked:s.checked,readonly:""},null,8,Ce),p(" "+d(s.value),1)],4))),128))])]),l[34]||(l[34]=N('
-
',2))])]),e("div",Ue,[l[43]||(l[43]=e("h3",{class:"text-lg font-semibold mb-6"},"保护参数",-1)),e("div",Ae,[e("div",null,[l[37]||(l[37]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"过压保护",-1)),e("div",Fe,[e("label",ze,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[8]||(l[8]=s=>v.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,v.value]]),l[36]||(l[36]=e("span",{style:{color:"rgba(0, 0, 0, 0.65)"}},"启用",-1))]),v.value?a((t(),o("input",{key:0,type:"number",class:"w-32 px-3 py-1 border rounded text-sm",style:{"border-color":"#D9D9D9"},"onUpdate:modelValue":l[9]||(l[9]=s=>T.value=s)},null,512)),[[g,T.value]]):b("",!0),v.value?(t(),o("span",Ge,"V")):b("",!0)])]),e("div",null,[l[39]||(l[39]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"过流保护",-1)),e("div",Te,[e("label",_e,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[10]||(l[10]=s=>y.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,y.value]]),l[38]||(l[38]=e("span",{style:{color:"rgba(0, 0, 0, 0.65)"}},"启用",-1))]),y.value?a((t(),o("input",{key:0,type:"number",class:"w-32 px-3 py-1 border rounded text-sm",style:{"border-color":"#D9D9D9"},"onUpdate:modelValue":l[11]||(l[11]=s=>_.value=s)},null,512)),[[g,_.value]]):b("",!0),y.value?(t(),o("span",Me,"A")):b("",!0)])]),e("div",null,[l[40]||(l[40]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"短路保护",-1)),e("label",Ne,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[12]||(l[12]=s=>h.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,h.value]]),e("span",Se,d(h.value?"已启用":"未启用"),1)])]),e("div",null,[l[42]||(l[42]=e("label",{class:"block text-sm mb-2",style:{color:"rgba(0, 0, 0, 0.85)"}},"高温保护",-1)),e("div",Pe,[e("label",Be,[a(e("input",{type:"checkbox","onUpdate:modelValue":l[13]||(l[13]=s=>x.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[c,x.value]]),l[41]||(l[41]=e("span",{style:{color:"rgba(0, 0, 0, 0.65)"}},"启用",-1))]),x.value?a((t(),o("input",{key:0,type:"number",class:"w-32 px-3 py-1 border rounded text-sm",style:{"border-color":"#D9D9D9"},"onUpdate:modelValue":l[14]||(l[14]=s=>M.value=s)},null,512)),[[g,M.value]]):b("",!0),x.value?(t(),o("span",Ee,"°C")):b("",!0)])])])]),l[48]||(l[48]=N('

网络参数

',1)),e("div",He,[e("button",{class:"px-6 py-2 rounded",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"},onClick:l[15]||(l[15]=s=>u(f).go(-1))}," 取消 "),n.value?(t(),o(i,{key:0},[e("button",Ie,[w(u(S),{size:16}),l[44]||(l[44]=p(" 预览配置 ",-1))]),e("button",{class:"px-6 py-2 rounded text-white",style:{"background-color":"#52C41A"},onClick:l[16]||(l[16]=s=>u(f).push("/config-files"))}," 确认生成配置文件 ")],64)):(t(),o(i,{key:1},[l[46]||(l[46]=e("button",{class:"px-6 py-2 rounded",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}}," 重置默认 ",-1)),e("button",Oe,[w(u(S),{size:16}),l[45]||(l[45]=p(" 预览配置 ",-1))]),l[47]||(l[47]=e("button",{class:"px-6 py-2 rounded text-white",style:{"background-color":"#4a7c59"}}," 下发配置 ",-1))],64))])]))}});export{qe as default}; diff --git a/dist/assets/PlaceholderPage-hha3Zgt8.js b/dist/assets/PlaceholderPage-hha3Zgt8.js new file mode 100644 index 0000000..96c7407 --- /dev/null +++ b/dist/assets/PlaceholderPage-hha3Zgt8.js @@ -0,0 +1 @@ +import{d as o,a,b as e,t as l,o as r}from"./index-C5t0nGiQ.js";const n={class:"p-6"},d={class:"text-2xl font-semibold mb-4"},c=o({__name:"PlaceholderPage",props:{title:{}},setup(s){return(i,t)=>(r(),a("div",n,[e("h2",d,l(s.title),1),t[0]||(t[0]=e("div",{class:"bg-white p-6 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},[e("p",{style:{color:"rgba(0,0,0,0.45)"}},"此页面正在开发中...")],-1))]))}});export{c as default}; diff --git a/dist/assets/RepairOrderDetail-Bn3R9Puf.js b/dist/assets/RepairOrderDetail-Bn3R9Puf.js new file mode 100644 index 0000000..aad25cf --- /dev/null +++ b/dist/assets/RepairOrderDetail-Bn3R9Puf.js @@ -0,0 +1 @@ +import{d as c,a as b,b as t,u as e,f as y,t as l,j as d,x as f,F as w,r as k,m as p,z as x,y as A,A as F,s as u,o as m}from"./index-C5t0nGiQ.js";import{A as D}from"./arrow-left-De7UcLOo.js";const C={class:"p-6"},V={class:"mb-6"},h={class:"flex items-center gap-4"},N={class:"text-base",style:{color:"rgba(0,0,0,0.45)"}},R={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},S={class:"space-y-2 text-sm",style:{color:"rgba(0,0,0,0.65)"}},B={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},$={class:"space-y-3"},j={class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},z={class:"space-y-3"},G={class:"flex items-center gap-2 cursor-pointer text-sm"},I={class:"flex items-center gap-2 cursor-pointer text-sm",style:{color:"rgba(0,0,0,0.65)"}},L={class:"flex items-center justify-center gap-4 p-4 bg-white rounded-lg sticky bottom-0",style:{"box-shadow":"0 -2px 8px rgba(0,0,0,0.05)"}},T=c({__name:"RepairOrderDetail",setup(O){const r=A(),i=F().params.orderId||"WO-2024-0001",n=u(!0),a=u(!1),v=[{time:"2024-02-25 14:35:00",person:"李工",action:"接单",detail:"开始处理"},{time:"2024-02-25 15:00:00",person:"李工",action:"确认板卡故障,准备更换"},{time:"2024-02-26 09:20:00",person:"李工",action:"更换板卡 AC-2024-0001→AC-2024-0003"},{time:"2024-02-26 10:00:00",person:"李工",action:"板卡更换完成,设备恢复正常"}];return(X,s)=>(m(),b("div",C,[t("div",V,[t("div",h,[t("button",{onClick:s[0]||(s[0]=o=>e(r).go(-1)),class:"p-2 rounded hover:bg-gray-100 transition-colors",style:{color:"rgba(0,0,0,0.65)"}},[y(e(D),{size:20})]),s[5]||(s[5]=t("h2",{class:"text-2xl font-semibold"},"维修工单详情",-1)),t("span",N,l(e(i)),1)])]),t("div",R,[s[11]||(s[11]=t("h3",{class:"text-base font-semibold mb-4"},"工单信息",-1)),t("div",S,[t("div",null,"工单号:"+l(e(i)),1),s[6]||(s[6]=t("div",null,[d(" 状态: "),t("span",{class:"px-2 py-0.5 rounded text-xs",style:{"background-color":"#eef5f0",color:"#4a7c59",border:"1px solid #a3c4ad"}},"🔧 处理中")],-1)),s[7]||(s[7]=t("div",null,[d("优先级:"),t("span",{style:{color:"#FF4D4F"}},"高")],-1)),s[8]||(s[8]=t("div",null,"创建时间:2024-02-25 14:20:00",-1)),s[9]||(s[9]=t("div",null,"维修人员:李工",-1)),s[10]||(s[10]=t("div",null,"预计修复:2024-02-28",-1))])]),s[20]||(s[20]=f('

设备信息

设备SN:GD30-2024-000056
设备型号:GD30-Supreme
固件版本:v3.2.0
硬件版本:A1
客户:XX地质勘探公司

故障信息

故障类型:综合故障
故障描述:采集板AC-2024-0001无法正常工作,引起数据采集异常
初判结果:自动点采集板验证不通过,无法获取测量数据
',2)),t("div",B,[s[12]||(s[12]=t("h3",{class:"text-base font-semibold mb-4"},"处理记录",-1)),t("div",$,[(m(),b(w,null,k(v,(o,g)=>t("div",{key:g,class:"text-sm",style:{color:"rgba(0,0,0,0.65)"}},l(o.time)+" "+l(o.person)+" "+l(o.action),1)),64))]),s[13]||(s[13]=t("button",{class:"text-sm mt-3",style:{color:"#4a7c59"}},"添加记录",-1))]),s[21]||(s[21]=t("div",{class:"bg-white p-6 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},[t("h3",{class:"text-base font-semibold mb-4"},"板卡更换记录"),t("div",{class:"space-y-2 text-sm",style:{color:"rgba(0,0,0,0.65)"}},[t("div",null,"原板卡:AC-2024-0001 硬件版本: A1 状态: 已换下"),t("div",null,"新板卡:AC-2024-0003 硬件版本: A1 状态: 已安装"),t("div",null,"更换时间:2024-02-26 09:20:00"),t("div",null,"更换人员:李工")])],-1)),t("div",j,[s[16]||(s[16]=t("h3",{class:"text-base font-semibold mb-4"},"授权处理",-1)),s[17]||(s[17]=t("p",{class:"text-sm mb-4",style:{color:"rgba(0,0,0,0.65)"}},"板卡更换后,需要重新生成授权文件",-1)),t("div",z,[t("label",G,[p(t("input",{type:"checkbox","onUpdate:modelValue":s[1]||(s[1]=o=>n.value=o),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[x,n.value]]),s[14]||(s[14]=d(" 重新生成授权文件 ",-1))]),t("label",I,[p(t("input",{type:"checkbox","onUpdate:modelValue":s[2]||(s[2]=o=>a.value=o),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[x,a.value]]),s[15]||(s[15]=d(" 推送适配固件 ",-1))])]),s[18]||(s[18]=t("button",{class:"mt-4 px-4 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"}},"处理授权",-1))]),t("div",L,[t("button",{class:"px-6 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:s[3]||(s[3]=o=>e(r).go(-1))},"取消"),s[19]||(s[19]=t("button",{class:"px-6 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"}},"关闭工单",-1)),t("button",{class:"px-6 py-2 rounded text-sm",style:{border:"1px solid #FF4D4F",color:"#FF4D4F"},onClick:s[4]||(s[4]=o=>e(r).push("/scrap"))},"申请报废")])]))}});export{T as default}; diff --git a/dist/assets/RepairOrders-Cub_3lJ7.js b/dist/assets/RepairOrders-Cub_3lJ7.js new file mode 100644 index 0000000..f666383 --- /dev/null +++ b/dist/assets/RepairOrders-Cub_3lJ7.js @@ -0,0 +1 @@ +import{d as _,a as d,b as o,f as m,u as b,j as p,x as j,F as c,r as F,l as G,m as e,p as B,v as x,h as D,t as n,z as k,n as A,y as ll,s as t,o as a,q as E}from"./index-C5t0nGiQ.js";import{P as ol}from"./plus-BfKzmzQH.js";import{U as sl}from"./upload-Cl9qkJl5.js";import{D as tl}from"./download-hBwFRgUo.js";import{A as O}from"./arrow-left-De7UcLOo.js";const el={class:"p-6"},rl={class:"mb-6"},dl={class:"flex items-center justify-between mb-2"},nl={class:"flex items-center gap-3"},al={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"}},il={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"}},ul={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},bl={class:"divide-y",style:{"border-color":"#F0F0F0"}},pl={class:"flex items-center gap-4 mb-3"},cl={class:"font-semibold"},xl={class:"text-sm",style:{color:"rgba(0,0,0,0.65)"}},vl={class:"text-sm",style:{color:"rgba(0,0,0,0.65)"}},yl={class:"flex items-center gap-1 text-sm"},ml=["onClick"],fl=["onClick"],gl=["onClick"],Fl={class:"bg-white w-[520px] h-full flex flex-col",style:{"box-shadow":"-4px 0 12px rgba(0,0,0,0.1)"}},Dl={class:"flex items-center gap-3 p-5 border-b",style:{"border-color":"#F0F0F0"}},kl={class:"flex-1 overflow-y-auto p-6 space-y-6"},Al={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},wl={class:"space-y-3"},Cl={class:"flex items-center gap-4"},Vl={class:"flex-1"},Ul={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},$l={class:"space-y-4"},zl={class:"space-y-1.5"},Sl=["value"],Nl={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},jl={class:"space-y-4"},Gl={class:"space-y-1.5"},Bl=["value"],El={class:"flex items-center justify-center gap-4 p-5 border-t",style:{"border-color":"#F0F0F0"}},Ol={class:"bg-white w-[520px] h-full flex flex-col",style:{"box-shadow":"-4px 0 12px rgba(0,0,0,0.1)"}},Pl={class:"flex items-center gap-3 p-5 border-b",style:{"border-color":"#F0F0F0"}},Ml={class:"text-lg font-semibold"},Rl={class:"flex-1 overflow-y-auto p-6 space-y-6"},Tl={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},Xl={class:"space-y-2"},Il=["value"],Wl={key:0,class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},Ll={class:"space-y-3"},ql={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},Hl={class:"space-y-2"},Jl={class:"flex items-center gap-2 cursor-pointer text-sm"},Kl={class:"flex items-center gap-2 cursor-pointer text-sm"},Ql={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},Yl={class:"p-5 rounded-lg",style:{"background-color":"#FFF1F0",border:"1px solid #FFCCC7"}},Zl={class:"mb-3"},hl=["disabled"],_l={class:"flex items-center justify-center gap-4 p-5 border-t",style:{"border-color":"#F0F0F0"}},lo={class:"bg-white w-[540px] h-full flex flex-col",style:{"box-shadow":"-4px 0 12px rgba(0,0,0,0.1)"}},oo={class:"flex items-center gap-3 p-5 border-b",style:{"border-color":"#F0F0F0"}},so={class:"text-sm",style:{color:"rgba(0,0,0,0.45)"}},to={class:"flex-1 overflow-y-auto p-6 space-y-5"},eo={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},ro={class:"space-y-2 text-sm",style:{color:"rgba(0,0,0,0.65)"}},no={class:"p-5 rounded-lg",style:{"background-color":"#FAFAFA",border:"1px solid #F0F0F0"}},ao={class:"space-y-2"},io={class:"flex items-center gap-2 cursor-pointer text-sm"},uo={class:"flex items-center gap-2 cursor-pointer text-sm",style:{color:"rgba(0,0,0,0.65)"}},bo={class:"flex items-center justify-center gap-4 p-5 border-t",style:{"border-color":"#F0F0F0"}},fo=_({__name:"RepairOrders",setup(po){const J=ll(),v=t(!1),u=t(!1),y=t(!1),w=t(""),C=t(!0),V=t(!1),K=r=>{w.value=r,C.value=!0,V.value=!1,y.value=!0},P=t(""),g=t(""),U=t(""),$=t(""),z=t(""),S=t(!0),N=t(!1),f=t(""),M=r=>{P.value=r,g.value="",U.value="",$.value="",z.value="",S.value=!0,N.value=!1,f.value="",u.value=!0},R=t("GD30-2024-000056"),T=t("板卡故障"),X=t(""),I=t(""),W=t("低"),L=t("李工"),q=t("2024-02-28"),H=t(""),Q=[{id:"WO-2024-0001",sn:"GD30-xxxx",fault:"板卡故障",status:"处理中",priority:"高"},{id:"WO-2024-0002",sn:"GD30-xxxx",fault:"固件异常",status:"已处理",priority:"中"},{id:"WO-2024-0003",sn:"GD30-xxxx",fault:"通信异常",status:"待处理",priority:"低"}],Y=r=>r==="处理中"?{backgroundColor:"#eef5f0",color:"#4a7c59",border:"1px solid #a3c4ad"}:r==="已处理"?{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"}:{backgroundColor:"#FAFAFA",color:"rgba(0,0,0,0.65)",border:"1px solid #D9D9D9"},Z=r=>r==="处理中"?"🔧":r==="已处理"?"✅":"⏳",h=r=>r==="高"?{backgroundColor:"#FFF1F0",color:"#FF4D4F",border:"1px solid #FFCCC7"}:r==="中"?{backgroundColor:"#FFF7E6",color:"#FA8C16",border:"1px solid #FFD591"}:{backgroundColor:"#F0F5FF",color:"#597EF7",border:"1px solid #ADC6FF"};return(r,l)=>(a(),d("div",el,[o("div",rl,[o("div",dl,[l[34]||(l[34]=o("h2",{class:"text-2xl font-semibold"},"维修工单",-1)),o("div",nl,[o("button",{class:"px-4 py-2 rounded text-white flex items-center gap-2",style:{"background-color":"#4a7c59"},onClick:l[0]||(l[0]=s=>v.value=!0)},[m(b(ol),{size:16}),l[31]||(l[31]=p(" 新建工单 ",-1))]),o("button",al,[m(b(sl),{size:16}),l[32]||(l[32]=p(" 批量导入 ",-1))]),o("button",il,[m(b(tl),{size:16}),l[33]||(l[33]=p(" 导出 ",-1))])])])]),l[83]||(l[83]=j('

筛选条件

~
',1)),o("div",ul,[l[41]||(l[41]=o("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[o("span",{class:"text-base font-semibold"},"维修工单列表"),o("span",{class:"text-sm ml-2",style:{color:"rgba(0,0,0,0.45)"}},"共 156 个工单")],-1)),o("div",bl,[(a(),d(c,null,F(Q,s=>o("div",{key:s.id,class:"px-6 py-5"},[o("div",pl,[o("span",cl,n(s.id),1),o("span",xl,n(s.sn),1),o("span",vl,n(s.fault),1),o("span",{class:"px-2 py-0.5 rounded text-xs inline-flex items-center gap-1",style:A(Y(s.status))},n(Z(s.status))+n(s.status),5),o("span",{class:"px-2 py-0.5 rounded text-xs",style:A(h(s.priority))},n(s.priority),5)]),o("div",yl,[l[40]||(l[40]=o("span",{style:{color:"rgba(0,0,0,0.45)"}},"操作:",-1)),o("button",{style:{color:"#4a7c59"},class:"px-2",onClick:i=>K(s.id)},"详情",8,ml),s.status==="处理中"?(a(),d(c,{key:0},[o("button",{style:{color:"#4a7c59"},class:"px-2",onClick:i=>M(s.id)},"处理",8,fl),l[35]||(l[35]=o("button",{style:{color:"#4a7c59"},class:"px-2"},"关闭",-1)),l[36]||(l[36]=o("button",{style:{color:"#4a7c59"},class:"px-2"},"查看历史",-1))],64)):s.status==="已处理"?(a(),d(c,{key:1},[l[37]||(l[37]=o("button",{style:{color:"#4a7c59"},class:"px-2"},"查看",-1)),l[38]||(l[38]=o("button",{style:{color:"#4a7c59"},class:"px-2"},"重新打开",-1))],64)):(a(),d(c,{key:2},[o("button",{style:{color:"#4a7c59"},class:"px-2",onClick:i=>M(s.id)},"处理",8,gl),l[39]||(l[39]=o("button",{style:{color:"#4a7c59"},class:"px-2"},"分配",-1))],64))])])),64))])]),l[84]||(l[84]=j('
显示 1-10 / 共 156 条
...
',1)),v.value?(a(),d("div",{key:0,class:"fixed inset-0 z-50 flex justify-end",style:{"background-color":"rgba(0,0,0,0.45)"},onClick:l[12]||(l[12]=G(s=>v.value=!1,["self"]))},[o("div",Fl,[o("div",Dl,[o("button",{onClick:l[1]||(l[1]=s=>v.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.65)"}},[m(b(O),{size:18})]),l[42]||(l[42]=o("h3",{class:"text-lg font-semibold"},"新建维修工单",-1))]),o("div",kl,[o("div",Al,[l[47]||(l[47]=o("h4",{class:"text-base font-semibold mb-4"},"设备信息",-1)),o("div",wl,[o("div",Cl,[o("div",Vl,[l[44]||(l[44]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"设备SN:",-1)),e(o("select",{"onUpdate:modelValue":l[2]||(l[2]=s=>R.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...l[43]||(l[43]=[o("option",null,"GD30-2024-000056",-1),o("option",null,"GD30-2024-000078",-1),o("option",null,"GT20-2024-000012",-1)])],512),[[B,R.value]])]),l[45]||(l[45]=o("button",{class:"text-sm mt-5",style:{color:"#4a7c59"}},"查找设备",-1))]),l[46]||(l[46]=o("div",{class:"text-sm space-y-1",style:{color:"rgba(0,0,0,0.65)"}},[o("div",null,"设备型号:GD30-Supreme"),o("div",null,"当前固件:v2.2.0"),o("div",null,"硬件版本:A1"),o("div",null,"客户:XX地质勘探公司")],-1))])]),o("div",Ul,[l[51]||(l[51]=o("h4",{class:"text-base font-semibold mb-4"},"故障信息",-1)),o("div",$l,[o("div",null,[l[48]||(l[48]=o("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.65)"}},"故障类型:",-1)),o("div",zl,[(a(),d(c,null,F(["板卡故障","固件异常","通信故障","其他问题"],s=>o("label",{key:s,class:"flex items-center gap-2 cursor-pointer text-sm"},[e(o("input",{type:"radio","onUpdate:modelValue":l[3]||(l[3]=i=>T.value=i),value:s,style:{"accent-color":"#4a7c59"}},null,8,Sl),[[E,T.value]]),o("span",null,n(s),1)])),64))])]),o("div",null,[l[49]||(l[49]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"故障描述:",-1)),e(o("textarea",{"onUpdate:modelValue":l[4]||(l[4]=s=>X.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","min-height":"70px",resize:"vertical"},placeholder:"请输入故障描述..."},null,512),[[x,X.value]])]),o("div",null,[l[50]||(l[50]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"故障现象:",-1)),e(o("textarea",{"onUpdate:modelValue":l[5]||(l[5]=s=>I.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","min-height":"70px",resize:"vertical"},placeholder:"请输入故障现象..."},null,512),[[x,I.value]])])])]),o("div",Nl,[l[57]||(l[57]=o("h4",{class:"text-base font-semibold mb-4"},"工单信息",-1)),o("div",jl,[o("div",null,[l[52]||(l[52]=o("label",{class:"block text-sm mb-2",style:{color:"rgba(0,0,0,0.65)"}},"优先级",-1)),o("div",Gl,[(a(),d(c,null,F(["低","中","高"],s=>o("label",{key:s,class:"flex items-center gap-2 cursor-pointer text-sm"},[e(o("input",{type:"radio","onUpdate:modelValue":l[6]||(l[6]=i=>W.value=i),value:s,style:{"accent-color":"#4a7c59"}},null,8,Bl),[[E,W.value]]),o("span",{style:A({color:s==="高"?"#FF4D4F":s==="中"?"#FA8C16":"#597EF7"})},n(s),5)])),64))])]),o("div",null,[l[54]||(l[54]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"维修人员:",-1)),e(o("select",{"onUpdate:modelValue":l[7]||(l[7]=s=>L.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...l[53]||(l[53]=[o("option",null,"李工",-1),o("option",null,"王工",-1),o("option",null,"张工",-1)])],512),[[B,L.value]])]),o("div",null,[l[55]||(l[55]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"预计修复时间:",-1)),e(o("input",{type:"date","onUpdate:modelValue":l[8]||(l[8]=s=>q.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9"}},null,512),[[x,q.value]])]),o("div",null,[l[56]||(l[56]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"备注:",-1)),e(o("textarea",{"onUpdate:modelValue":l[9]||(l[9]=s=>H.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","min-height":"60px",resize:"vertical"},placeholder:"请输入备注信息..."},null,512),[[x,H.value]])])])])]),o("div",El,[o("button",{class:"px-6 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:l[10]||(l[10]=s=>v.value=!1)},"取消"),o("button",{class:"px-6 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"},onClick:l[11]||(l[11]=s=>v.value=!1)},"创建工单")])])])):D("",!0),u.value?(a(),d("div",{key:1,class:"fixed inset-0 z-50 flex justify-end",style:{"background-color":"rgba(0,0,0,0.45)"},onClick:l[24]||(l[24]=G(s=>u.value=!1,["self"]))},[o("div",Ol,[o("div",Pl,[o("button",{onClick:l[13]||(l[13]=s=>u.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.65)"}},[m(b(O),{size:18})]),o("h3",Ml,"处理工单 "+n(P.value),1)]),o("div",Rl,[o("div",Tl,[l[58]||(l[58]=o("h4",{class:"text-base font-semibold mb-4"},"处理操作",-1)),o("div",Xl,[(a(),d(c,null,F(["更换板卡","固件修复","参数重置","其他处理"],s=>o("label",{key:s,class:"flex items-center gap-2 cursor-pointer text-sm"},[e(o("input",{type:"radio","onUpdate:modelValue":l[14]||(l[14]=i=>g.value=i),value:s,style:{"accent-color":"#4a7c59"}},null,8,Il),[[E,g.value]]),o("span",null,n(s),1)])),64))])]),g.value==="更换板卡"?(a(),d("div",Wl,[l[61]||(l[61]=o("h4",{class:"text-base font-semibold mb-4"},"板卡更换",-1)),o("div",Ll,[o("div",null,[l[59]||(l[59]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"原板卡SN:",-1)),e(o("input",{"onUpdate:modelValue":l[15]||(l[15]=s=>$.value=s),type:"text",class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9"},placeholder:"如 AC-2024-0001"},null,512),[[x,$.value]])]),o("div",null,[l[60]||(l[60]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"新板卡SN:",-1)),e(o("input",{"onUpdate:modelValue":l[16]||(l[16]=s=>z.value=s),type:"text",class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9"},placeholder:"如 AC-2024-0003"},null,512),[[x,z.value]])])])])):D("",!0),o("div",ql,[l[64]||(l[64]=o("h4",{class:"text-base font-semibold mb-4"},"授权处理",-1)),o("div",Hl,[o("label",Jl,[e(o("input",{type:"checkbox","onUpdate:modelValue":l[17]||(l[17]=s=>S.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[k,S.value]]),l[62]||(l[62]=o("span",null,"重新生成授权文件",-1))]),o("label",Kl,[e(o("input",{type:"checkbox","onUpdate:modelValue":l[18]||(l[18]=s=>N.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[k,N.value]]),l[63]||(l[63]=o("span",null,"推送适配固件",-1))])])]),o("div",Ql,[l[65]||(l[65]=o("h4",{class:"text-base font-semibold mb-4"},"处理备注",-1)),e(o("textarea",{"onUpdate:modelValue":l[19]||(l[19]=s=>U.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","min-height":"80px",resize:"vertical"},placeholder:"请输入处理说明..."},null,512),[[x,U.value]])]),o("div",Yl,[l[68]||(l[68]=o("h4",{class:"text-base font-semibold mb-2",style:{color:"#CF1322"}},"报废处理",-1)),l[69]||(l[69]=o("p",{class:"text-xs mb-3",style:{color:"#FF4D4F"}},"如设备无法修复,可申请报废。报废操作不可逆,请谨慎操作。",-1)),o("div",Zl,[l[67]||(l[67]=o("label",{class:"block text-sm mb-1",style:{color:"rgba(0,0,0,0.65)"}},"报废原因:",-1)),e(o("select",{"onUpdate:modelValue":l[20]||(l[20]=s=>f.value=s),class:"w-full px-3 py-2 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[...l[66]||(l[66]=[o("option",{value:""},"请选择报废原因",-1),o("option",null,"主板损坏无法修复",-1),o("option",null,"多个核心部件损坏",-1),o("option",null,"维修成本超过设备价值",-1),o("option",null,"设备老化严重",-1)])],512),[[B,f.value]])]),o("button",{class:"px-4 py-2 rounded text-sm",style:A({border:"1px solid #FF4D4F",color:f.value?"#FF4D4F":"#D9D9D9"}),disabled:!f.value,onClick:l[21]||(l[21]=s=>{u.value=!1,b(J).push("/scrap")})},"申请报废",12,hl)])]),o("div",_l,[o("button",{class:"px-6 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:l[22]||(l[22]=s=>u.value=!1)},"取消"),o("button",{class:"px-6 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"},onClick:l[23]||(l[23]=s=>u.value=!1)},"提交处理")])])])):D("",!0),y.value?(a(),d("div",{key:2,class:"fixed inset-0 z-50 flex justify-end",style:{"background-color":"rgba(0,0,0,0.45)"},onClick:l[30]||(l[30]=G(s=>y.value=!1,["self"]))},[o("div",lo,[o("div",oo,[o("button",{onClick:l[25]||(l[25]=s=>y.value=!1),class:"p-1 rounded hover:bg-gray-100",style:{color:"rgba(0,0,0,0.65)"}},[m(b(O),{size:18})]),l[70]||(l[70]=o("h3",{class:"text-lg font-semibold"},"维修工单详情",-1)),o("span",so,n(w.value),1)]),o("div",to,[o("div",eo,[l[76]||(l[76]=o("h4",{class:"text-base font-semibold mb-3"},"工单信息",-1)),o("div",ro,[o("div",null,"工单号:"+n(w.value),1),l[71]||(l[71]=o("div",null,[p("状态:"),o("span",{class:"px-2 py-0.5 rounded text-xs",style:{"background-color":"#eef5f0",color:"#4a7c59",border:"1px solid #a3c4ad"}},"🔧 处理中")],-1)),l[72]||(l[72]=o("div",null,[p("优先级:"),o("span",{style:{color:"#FF4D4F"}},"高")],-1)),l[73]||(l[73]=o("div",null,"创建时间:2024-02-25 14:30:00",-1)),l[74]||(l[74]=o("div",null,"维修人员:李工",-1)),l[75]||(l[75]=o("div",null,"预计修复:2024-02-28",-1))])]),l[82]||(l[82]=j('

设备信息

设备SN:GD30-2024-000056
设备型号:GD30-Supreme
当前固件:v2.2.0
硬件版本:A1
客户:XX地质勘探公司

故障信息

故障类型:板卡故障
故障描述:采集板AC-2024-0001无法正常工作,引起数据采集异常
故障现象:启动后采集板指示灯不亮,无法获取测量数据

处理记录

2024-02-25 14:35:00 李工 接单,初步诊断
2024-02-25 15:00:00 李工 确认板卡故障,准备更换
2024-02-26 09:30:00 李工 更换板卡 AC-2024-0001→AC-2024-0003
2024-02-26 10:00:00 李工 板卡更换完成,设备恢复正常

板卡更换记录

原板卡:AC-2024-0001 硬件版本: A1 状态: 已换下
新板卡:AC-2024-0003 硬件版本: A1 状态: ✅ 正常
更换时间:2024-02-26 09:30:00
更换人员:李工
',4)),o("div",no,[l[79]||(l[79]=o("h4",{class:"text-base font-semibold mb-3"},"授权处理",-1)),l[80]||(l[80]=o("p",{class:"text-sm mb-3",style:{color:"rgba(0,0,0,0.65)"}},"板卡更换后,需要重新生成授权文件",-1)),o("div",ao,[o("label",io,[e(o("input",{type:"checkbox","onUpdate:modelValue":l[26]||(l[26]=s=>C.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[k,C.value]]),l[77]||(l[77]=p(" 重新生成授权文件 ",-1))]),o("label",uo,[e(o("input",{type:"checkbox","onUpdate:modelValue":l[27]||(l[27]=s=>V.value=s),class:"w-4 h-4",style:{"accent-color":"#4a7c59"}},null,512),[[k,V.value]]),l[78]||(l[78]=p(" 推送适配固件 ",-1))])]),l[81]||(l[81]=o("button",{class:"mt-3 px-4 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"}},"处理授权",-1))])]),o("div",bo,[o("button",{class:"px-6 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"},onClick:l[28]||(l[28]=s=>y.value=!1)},"取消"),o("button",{class:"px-6 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"},onClick:l[29]||(l[29]=s=>y.value=!1)},"关闭工单")])])])):D("",!0)]))}});export{fo as default}; diff --git a/dist/assets/RepairStats-DDRWP6tS.js b/dist/assets/RepairStats-DDRWP6tS.js new file mode 100644 index 0000000..0f7db87 --- /dev/null +++ b/dist/assets/RepairStats-DDRWP6tS.js @@ -0,0 +1 @@ +import{D as x}from"./download-hBwFRgUo.js";import{d as u,a as l,b as e,f as m,u as g,j as v,F as n,r as d,o as r,n as c,t as o,s as y}from"./index-C5t0nGiQ.js";const f={class:"p-6"},h={class:"mb-6 flex items-center justify-between"},_={class:"px-4 py-2 rounded text-white flex items-center gap-2 text-sm",style:{"background-color":"#4a7c59"}},w={class:"bg-white p-4 rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},k={class:"flex items-center gap-4"},D={class:"flex items-center gap-1"},C=["onClick"],F={class:"mb-6"},A={class:"grid grid-cols-4 gap-4"},j={class:"text-sm",style:{color:"rgba(0,0,0,0.45)"}},B={class:"grid grid-cols-2 gap-6 mb-6"},N={class:"bg-white p-6 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},S={class:"space-y-4"},T={class:"text-sm w-16 flex-shrink-0",style:{color:"rgba(0,0,0,0.65)"}},V={class:"flex-1 h-5 rounded",style:{"background-color":"#F5F5F5",overflow:"hidden"}},z={class:"text-sm w-14 text-right",style:{color:"rgba(0,0,0,0.85)"}},G=u({__name:"RepairStats",setup(E){const a=y("本月"),i=["本月","上月","本季度","本年度","自定义"],b=[{value:"156",label:"总工单数",color:"rgba(0,0,0,0.85)"},{value:"8",label:"处理中",color:"#4a7c59"},{value:"145",label:"已完成",color:"#52C41A"},{value:"3",label:"待处理",color:"#FF4D4F"}],p=[{name:"板卡故障",percent:65.5,color:"#4a7c59"},{name:"固件异常",percent:22.3,color:"#52C41A"},{name:"通信故障",percent:6.3,color:"#FAAD14"},{name:"其他",percent:5.9,color:"#8C8C8C"}];return(L,s)=>(r(),l("div",f,[e("div",h,[s[1]||(s[1]=e("h2",{class:"text-2xl font-semibold"},"维修统计",-1)),e("button",_,[m(g(x),{size:16}),s[0]||(s[0]=v(" 导出报告 ",-1))])]),e("div",w,[e("div",k,[s[2]||(s[2]=e("span",{class:"text-sm",style:{color:"rgba(0,0,0,0.65)"}},"时间范围:",-1)),s[3]||(s[3]=e("select",{class:"px-3 py-1.5 border rounded text-sm",style:{"border-color":"#D9D9D9","background-color":"#fff"}},[e("option",null,"本月")],-1)),e("div",D,[(r(),l(n,null,d(i,t=>e("button",{key:t,class:"px-4 py-1.5 rounded text-sm transition-colors",style:c({backgroundColor:a.value===t?"#4a7c59":"transparent",color:a.value===t?"#fff":"rgba(0,0,0,0.65)"}),onClick:R=>a.value=t},o(t),13,C)),64))])])]),e("div",F,[s[4]||(s[4]=e("h3",{class:"text-base font-medium mb-3",style:{color:"rgba(0,0,0,0.85)"}},"维修统计",-1)),e("div",A,[(r(),l(n,null,d(b,t=>e("div",{key:t.label,class:"bg-white p-5 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},[e("div",{class:"text-3xl font-semibold mb-1",style:c({color:t.color})},o(t.value),5),e("div",j,o(t.label),1)])),64))])]),e("div",B,[e("div",N,[s[5]||(s[5]=e("h3",{class:"text-base font-semibold mb-5"},"故障类型分布",-1)),e("div",S,[(r(),l(n,null,d(p,t=>e("div",{key:t.name,class:"flex items-center gap-3"},[e("span",T,o(t.name),1),e("div",V,[e("div",{class:"h-full rounded",style:c({width:t.percent+"%",backgroundColor:t.color})},null,4)]),e("span",z,o(t.percent)+"%",1)])),64))])]),s[6]||(s[6]=e("div",{class:"bg-white p-6 rounded-lg",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},[e("h3",{class:"text-base font-semibold mb-5"},"维修趋势"),e("div",{class:"flex items-center justify-center h-40",style:{color:"rgba(0,0,0,0.25)"}},[e("div",{class:"text-center text-sm"},[e("div",null,"📊 维修趋势图表"),e("div",null,"1月-6月趋势")])])],-1))]),s[7]||(s[7]=e("div",{class:"bg-white p-4 rounded-lg flex items-center gap-3",style:{"box-shadow":"0 1px 2px rgba(0,0,0,0.05)"}},[e("button",{class:"px-4 py-2 rounded text-white text-sm",style:{"background-color":"#4a7c59"}},"导出报表"),e("button",{class:"px-4 py-2 rounded text-sm",style:{border:"1px solid #D9D9D9",color:"rgba(0,0,0,0.85)"}},"打印")],-1))]))}});export{G as default}; diff --git a/dist/assets/ScrapManagement-U9YcVefM.js b/dist/assets/ScrapManagement-U9YcVefM.js new file mode 100644 index 0000000..7c6de7f --- /dev/null +++ b/dist/assets/ScrapManagement-U9YcVefM.js @@ -0,0 +1,6 @@ +import{c as y,d as g,a as d,b as t,f as l,u as r,j as a,x as i,F as f,r as v,o as c,t as e,n as D,w as h,h as w,y as _,e as k}from"./index-C5t0nGiQ.js";import{U as F}from"./upload-Cl9qkJl5.js";import{D as C}from"./download-hBwFRgUo.js";import{I as A}from"./info-DbTQmklK.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S=y("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]),N={class:"p-6"},O={class:"mb-6"},B={class:"flex items-center justify-between mb-2"},G={class:"flex items-center gap-3"},z={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}},E={class:"px-4 py-2 rounded flex items-center gap-2",style:{border:"1px solid #D9D9D9",color:"rgba(0, 0, 0, 0.85)"}},T={class:"mb-6 p-4 rounded-lg flex items-start gap-3",style:{"background-color":"#eef5f0",border:"1px solid #a3c4ad"}},V={class:"bg-white rounded-lg mb-6",style:{"box-shadow":"0 1px 2px rgba(0, 0, 0, 0.05)"}},j={class:"overflow-x-auto"},I={class:"w-full"},L={class:"px-6 py-4"},M={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},W={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},q={class:"px-6 py-4",style:{color:"rgba(0, 0, 0, 0.65)"}},U={class:"px-6 py-4"},X={class:"px-6 py-4"},R={class:"px-6 py-4"},$={class:"flex items-center gap-3"},Z=g({__name:"ScrapManagement",setup(H){const b=_(),p=[{sn:"GD30-2023-001234",model:"GD30 地质探测仪",scrapDate:"2024-03-01",status:"已回收",sourceOrder:"WO-2024-0001",reason:"主板损坏无法修复"},{sn:"GT20-2023-000567",model:"GT20 物探仪",scrapDate:"2024-03-05",status:"已审批",sourceOrder:"WO-2024-0025",reason:"多个核心部件损坏"},{sn:"GTXD-2023-000890",model:"GTXD 探测仪",scrapDate:"2024-03-08",status:"待审批",sourceOrder:"WO-2024-0048",reason:"维修成本超过设备价值"}],x=n=>{switch(n){case"已回收":return{backgroundColor:"#F6FFED",color:"#52C41A",border:"1px solid #B7EB8F"};case"已审批":return{backgroundColor:"#eef5f0",color:"#4a7c59",border:"1px solid #a3c4ad"};case"待审批":return{backgroundColor:"#FFFBE6",color:"#FAAD14",border:"1px solid #FFE58F"}}};return(n,s)=>{const u=k("router-link");return c(),d("div",N,[t("div",O,[t("div",B,[s[3]||(s[3]=t("h2",{class:"text-2xl font-semibold"},"报废管理",-1)),t("div",G,[t("button",z,[l(r(F),{size:16}),s[1]||(s[1]=a(" 批量导入 ",-1))]),t("button",E,[l(r(C),{size:16}),s[2]||(s[2]=a(" 导出 ",-1))])])]),s[4]||(s[4]=t("p",{class:"text-sm",style:{color:"rgba(0, 0, 0, 0.45)"}},"管理报废设备与物料回收",-1))]),t("div",T,[l(r(A),{size:20,style:{color:"#4a7c59","flex-shrink":"0","margin-top":"2px"}}),s[5]||(s[5]=t("div",{style:{color:"#2d5a3d"}},[t("div",{class:"font-medium mb-1"},"报废流程说明"),t("div",{class:"text-sm"}," 报废单由维修工单中申请报废创建,关联来源维修工单。报废设备需经过审批流程,审批通过后进行物料回收和入库。 ")],-1))]),s[10]||(s[10]=i('
报废设备总数
156
待审批
12
已审批待回收
8
已回收入库
136
',2)),t("div",V,[s[9]||(s[9]=t("div",{class:"p-6 border-b",style:{"border-color":"#F0F0F0"}},[t("h3",{class:"text-lg font-semibold"},"报废设备列表")],-1)),t("div",j,[t("table",I,[s[8]||(s[8]=t("thead",{style:{"background-color":"#FAFAFA"}},[t("tr",null,[t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"设备SN号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"型号"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"报废日期"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"报废原因"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"状态"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"来源工单"),t("th",{class:"px-6 py-3 text-left text-sm font-medium",style:{color:"rgba(0, 0, 0, 0.85)"}},"操作")])],-1)),t("tbody",null,[(c(),d(f,null,v(p,(o,m)=>t("tr",{key:m,class:"border-b",style:{"border-color":"#F0F0F0"}},[t("td",L,e(o.sn),1),t("td",M,e(o.model),1),t("td",W,e(o.scrapDate),1),t("td",q,e(o.reason),1),t("td",U,[t("span",{class:"px-2 py-1 rounded text-xs",style:D(x(o.status))},e(o.status),5)]),t("td",X,[l(u,{to:"/repair/"+o.sourceOrder,class:"text-sm flex items-center gap-1",style:{color:"#4a7c59"}},{default:h(()=>[l(r(S),{size:14}),a(" "+e(o.sourceOrder),1)]),_:2},1032,["to"])]),t("td",R,[t("div",$,[s[6]||(s[6]=t("button",{class:"text-sm",style:{color:"#4a7c59"}},"查看详情",-1)),s[7]||(s[7]=t("button",{class:"text-sm",style:{color:"#4a7c59"}},"物料检测",-1)),o.status==="已审批"?(c(),d("button",{key:0,class:"text-sm",style:{color:"#52C41A"},onClick:s[0]||(s[0]=J=>r(b).push("/registration"))},"回收入库")):w("",!0)])])])),64))])])])]),s[11]||(s[11]=i('
显示 1-10 / 共 156 条
',1))])}}});export{Z as default}; diff --git a/dist/assets/arrow-left-De7UcLOo.js b/dist/assets/arrow-left-De7UcLOo.js new file mode 100644 index 0000000..2c9eb5a --- /dev/null +++ b/dist/assets/arrow-left-De7UcLOo.js @@ -0,0 +1,6 @@ +import{c as e}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t=e("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);export{t as A}; diff --git a/dist/assets/clock-CMNFmLxx.js b/dist/assets/clock-CMNFmLxx.js new file mode 100644 index 0000000..9dd1b32 --- /dev/null +++ b/dist/assets/clock-CMNFmLxx.js @@ -0,0 +1,6 @@ +import{c}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o=c("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);export{o as C}; diff --git a/dist/assets/download-hBwFRgUo.js b/dist/assets/download-hBwFRgUo.js new file mode 100644 index 0000000..dd39ca8 --- /dev/null +++ b/dist/assets/download-hBwFRgUo.js @@ -0,0 +1,6 @@ +import{c as o}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a=o("download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);export{a as D}; diff --git a/dist/assets/index-C5t0nGiQ.js b/dist/assets/index-C5t0nGiQ.js new file mode 100644 index 0000000..95808df --- /dev/null +++ b/dist/assets/index-C5t0nGiQ.js @@ -0,0 +1,91 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard--eri3aJi.js","assets/server-hSQBXLWa.js","assets/clock-CMNFmLxx.js","assets/upload-Cl9qkJl5.js","assets/DeviceModelManagement-DADpSpiv.js","assets/info-DbTQmklK.js","assets/plus-BfKzmzQH.js","assets/x-Cy9cTPf9.js","assets/triangle-alert-DaaA5cmC.js","assets/DeviceList-NCBTEyEZ.js","assets/download-hBwFRgUo.js","assets/search-BFqPyJ5C.js","assets/DeviceDetail-CiWFBze4.js","assets/arrow-left-De7UcLOo.js","assets/DeviceRegistration-CmbG4qLB.js","assets/LicenseManagement-DIHeCigb.js","assets/LicenseGenerate-CsoTS0Do.js","assets/ActivationManagement-DuZO7LSx.js","assets/CalibrationRecords-gMo2tbHk.js","assets/RepairOrders-Cub_3lJ7.js","assets/RepairStats-DDRWP6tS.js","assets/RepairOrderDetail-Bn3R9Puf.js","assets/ScrapManagement-U9YcVefM.js","assets/FirmwareLibrary-XKwdIJ2N.js","assets/ConfigFileManagement-CPVgUNG2.js","assets/ParameterConfiguration-eKxkO1XH.js"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** +* @vue/shared v3.5.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ms(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Y={},Lt=[],qe=()=>{},ni=()=>!1,jn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bn=e=>e.startsWith("onUpdate:"),ae=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ao=Object.prototype.hasOwnProperty,$=(e,t)=>Ao.call(e,t),V=Array.isArray,Vt=e=>gn(e)==="[object Map]",Wt=e=>gn(e)==="[object Set]",sr=e=>gn(e)==="[object Date]",j=e=>typeof e=="function",re=e=>typeof e=="string",ze=e=>typeof e=="symbol",q=e=>e!==null&&typeof e=="object",si=e=>(q(e)||j(e))&&j(e.then)&&j(e.catch),ri=Object.prototype.toString,gn=e=>ri.call(e),Ro=e=>gn(e).slice(8,-1),ii=e=>gn(e)==="[object Object]",Ls=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zt=Ms(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Un=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},wo=/-\w/g,ye=Un(e=>e.replace(wo,t=>t.slice(1).toUpperCase())),So=/\B([A-Z])/g,Ot=Un(e=>e.replace(So,"-$1").toLowerCase()),Kn=Un(e=>e.charAt(0).toUpperCase()+e.slice(1)),ns=Un(e=>e?`on${Kn(e)}`:""),$e=(e,t)=>!Object.is(e,t),An=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Gn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let rr;const Wn=()=>rr||(rr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ln(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(Oo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Vs(e){let t="";if(re(e))t=e;else if(V(e))for(let n=0;nmt(n,t))}const ci=e=>!!(e&&e.__v_isRef===!0),Pn=e=>re(e)?e:e==null?"":V(e)||q(e)&&(e.toString===ri||!j(e.toString))?ci(e)?Pn(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>ci(t)?ui(e,t.value):Vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[ss(s,i)+" =>"]=r,n),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ss(n))}:ze(t)?ss(t):q(t)&&!V(t)&&!ii(t)?String(t):t,ss=(e,t="")=>{var n;return ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let xe;class Do{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=xe,!t&&xe&&(this.index=(xe.scopes||(xe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(xe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(en){let t=en;for(en=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Xt;){let t=Xt;for(Xt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function hi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function pi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),js(s),Vo(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function ms(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(gi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function gi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===cn)||(e.globalVersion=cn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ms(e))))return;e.flags|=2;const t=e.dep,n=X,s=Ie;X=e,Ie=!0;try{hi(e);const r=e.fn(e._value);(t.version===0||$e(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{X=n,Ie=s,pi(e),e.flags&=-3}}function js(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)js(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Vo(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ie=!0;const mi=[];function rt(){mi.push(Ie),Ie=!1}function it(){const e=mi.pop();Ie=e===void 0?!0:e}function ir(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=X;X=void 0;try{t()}finally{X=n}}}let cn=0;class ko{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!X||!Ie||X===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==X)n=this.activeLink=new ko(X,this),X.deps?(n.prevDep=X.depsTail,X.depsTail.nextDep=n,X.depsTail=n):X.deps=X.depsTail=n,_i(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=X.depsTail,n.nextDep=void 0,X.depsTail.nextDep=n,X.depsTail=n,X.deps===n&&(X.deps=s)}return n}trigger(t){this.version++,cn++,this.notify(t)}notify(t){Fs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Hs()}}}function _i(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)_i(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const _s=new WeakMap,wt=Symbol(""),ys=Symbol(""),un=Symbol("");function de(e,t,n){if(Ie&&X){let s=_s.get(e);s||_s.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Bs),r.map=s,r.key=n),r.track()}}function tt(e,t,n,s,r,i){const o=_s.get(e);if(!o){cn++;return}const l=c=>{c&&c.trigger()};if(Fs(),t==="clear")o.forEach(l);else{const c=V(e),a=c&&Ls(n);if(c&&n==="length"){const f=Number(s);o.forEach((h,g)=>{(g==="length"||g===un||!ze(g)&&g>=f)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),a&&l(o.get(un)),t){case"add":c?a&&l(o.get("length")):(l(o.get(wt)),Vt(e)&&l(o.get(ys)));break;case"delete":c||(l(o.get(wt)),Vt(e)&&l(o.get(ys)));break;case"set":Vt(e)&&l(o.get(wt));break}}Hs()}function Nt(e){const t=W(e);return t===e?t:(de(t,"iterate",un),Ce(e)?t:t.map(Me))}function $n(e){return de(e=W(e),"iterate",un),e}function Ge(e,t){return ot(e)?jt(St(e)?Me(t):t):Me(t)}const Fo={__proto__:null,[Symbol.iterator](){return is(this,Symbol.iterator,e=>Ge(this,e))},concat(...e){return Nt(this).concat(...e.map(t=>V(t)?Nt(t):t))},entries(){return is(this,"entries",e=>(e[1]=Ge(this,e[1]),e))},every(e,t){return Ye(this,"every",e,t,void 0,arguments)},filter(e,t){return Ye(this,"filter",e,t,n=>n.map(s=>Ge(this,s)),arguments)},find(e,t){return Ye(this,"find",e,t,n=>Ge(this,n),arguments)},findIndex(e,t){return Ye(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ye(this,"findLast",e,t,n=>Ge(this,n),arguments)},findLastIndex(e,t){return Ye(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ye(this,"forEach",e,t,void 0,arguments)},includes(...e){return os(this,"includes",e)},indexOf(...e){return os(this,"indexOf",e)},join(e){return Nt(this).join(e)},lastIndexOf(...e){return os(this,"lastIndexOf",e)},map(e,t){return Ye(this,"map",e,t,void 0,arguments)},pop(){return zt(this,"pop")},push(...e){return zt(this,"push",e)},reduce(e,...t){return or(this,"reduce",e,t)},reduceRight(e,...t){return or(this,"reduceRight",e,t)},shift(){return zt(this,"shift")},some(e,t){return Ye(this,"some",e,t,void 0,arguments)},splice(...e){return zt(this,"splice",e)},toReversed(){return Nt(this).toReversed()},toSorted(e){return Nt(this).toSorted(e)},toSpliced(...e){return Nt(this).toSpliced(...e)},unshift(...e){return zt(this,"unshift",e)},values(){return is(this,"values",e=>Ge(this,e))}};function is(e,t,n){const s=$n(e),r=s[t]();return s!==e&&!Ce(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Ho=Array.prototype;function Ye(e,t,n,s,r,i){const o=$n(e),l=o!==e&&!Ce(e),c=o[t];if(c!==Ho[t]){const h=c.apply(e,i);return l?Me(h):h}let a=n;o!==e&&(l?a=function(h,g){return n.call(this,Ge(e,h),g,e)}:n.length>2&&(a=function(h,g){return n.call(this,h,g,e)}));const f=c.call(o,a,s);return l&&r?r(f):f}function or(e,t,n,s){const r=$n(e),i=r!==e&&!Ce(e);let o=n,l=!1;r!==e&&(i?(l=s.length===0,o=function(a,f,h){return l&&(l=!1,a=Ge(e,a)),n.call(this,a,Ge(e,f),h,e)}):n.length>3&&(o=function(a,f,h){return n.call(this,a,f,h,e)}));const c=r[t](o,...s);return l?Ge(e,c):c}function os(e,t,n){const s=W(e);de(s,"iterate",un);const r=s[t](...n);return(r===-1||r===!1)&&Gs(n[0])?(n[0]=W(n[0]),s[t](...n)):r}function zt(e,t,n=[]){rt(),Fs();const s=W(e)[t].apply(e,n);return Hs(),it(),s}const jo=Ms("__proto__,__v_isRef,__isVue"),yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ze));function Bo(e){ze(e)||(e=String(e));const t=W(this);return de(t,"has",e),t.hasOwnProperty(e)}class vi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Yo:Ai:i?Ei:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=V(t);if(!r){let c;if(o&&(c=Fo[n]))return c;if(n==="hasOwnProperty")return Bo}const l=Reflect.get(t,n,pe(t)?t:s);if((ze(n)?yi.has(n):jo(n))||(r||de(t,"get",n),i))return l;if(pe(l)){const c=o&&Ls(n)?l:l.value;return r&&q(c)?bs(c):c}return q(l)?r?bs(l):qn(l):l}}class bi extends vi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=V(t)&&Ls(n);if(!this._isShallow){const a=ot(i);if(!Ce(s)&&!ot(s)&&(i=W(i),s=W(s)),!o&&pe(i)&&!pe(s))return a||(i.value=s),!0}const l=o?Number(n)e,vn=e=>Reflect.getPrototypeOf(e);function $o(e,t,n){return function(...s){const r=this.__v_raw,i=W(r),o=Vt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),f=n?vs:t?jt:Me;return!t&&de(i,"iterate",c?ys:wt),ae(Object.create(a),{next(){const{value:h,done:g}=a.next();return g?{value:h,done:g}:{value:l?[f(h[0]),f(h[1])]:f(h),done:g}}})}}function bn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function qo(e,t){const n={get(r){const i=this.__v_raw,o=W(i),l=W(r);e||($e(r,l)&&de(o,"get",r),de(o,"get",l));const{has:c}=vn(o),a=t?vs:e?jt:Me;if(c.call(o,r))return a(i.get(r));if(c.call(o,l))return a(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&de(W(r),"iterate",wt),r.size},has(r){const i=this.__v_raw,o=W(i),l=W(r);return e||($e(r,l)&&de(o,"has",r),de(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=W(l),a=t?vs:e?jt:Me;return!e&&de(c,"iterate",wt),l.forEach((f,h)=>r.call(i,a(f),a(h),o))}};return ae(n,e?{add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear")}:{add(r){const i=W(this),o=vn(i),l=W(r),c=!t&&!Ce(r)&&!ot(r)?l:r;return o.has.call(i,c)||$e(r,c)&&o.has.call(i,r)||$e(l,c)&&o.has.call(i,l)||(i.add(c),tt(i,"add",c,c)),this},set(r,i){!t&&!Ce(i)&&!ot(i)&&(i=W(i));const o=W(this),{has:l,get:c}=vn(o);let a=l.call(o,r);a||(r=W(r),a=l.call(o,r));const f=c.call(o,r);return o.set(r,i),a?$e(i,f)&&tt(o,"set",r,i):tt(o,"add",r,i),this},delete(r){const i=W(this),{has:o,get:l}=vn(i);let c=o.call(i,r);c||(r=W(r),c=o.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return c&&tt(i,"delete",r,void 0),a},clear(){const r=W(this),i=r.size!==0,o=r.clear();return i&&tt(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=$o(r,e,t)}),n}function Us(e,t){const n=qo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get($(n,r)&&r in s?n:s,r,i)}const zo={get:Us(!1,!1)},Jo={get:Us(!1,!0)},Qo={get:Us(!0,!1)};const xi=new WeakMap,Ei=new WeakMap,Ai=new WeakMap,Yo=new WeakMap;function Zo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xo(e){return e.__v_skip||!Object.isExtensible(e)?0:Zo(Ro(e))}function qn(e){return ot(e)?e:Ks(e,!1,Ko,zo,xi)}function Ri(e){return Ks(e,!1,Wo,Jo,Ei)}function bs(e){return Ks(e,!0,Go,Qo,Ai)}function Ks(e,t,n,s,r){if(!q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=Xo(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function St(e){return ot(e)?St(e.__v_raw):!!(e&&e.__v_isReactive)}function ot(e){return!!(e&&e.__v_isReadonly)}function Ce(e){return!!(e&&e.__v_isShallow)}function Gs(e){return e?!!e.__v_raw:!1}function W(e){const t=e&&e.__v_raw;return t?W(t):e}function el(e){return!$(e,"__v_skip")&&Object.isExtensible(e)&&oi(e,"__v_skip",!0),e}const Me=e=>q(e)?qn(e):e,jt=e=>q(e)?bs(e):e;function pe(e){return e?e.__v_isRef===!0:!1}function xs(e){return wi(e,!1)}function tl(e){return wi(e,!0)}function wi(e,t){return pe(e)?e:new nl(e,t)}class nl{constructor(t,n){this.dep=new Bs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:W(t),this._value=n?t:Me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ce(t)||ot(t);t=s?t:W(t),$e(t,n)&&(this._rawValue=t,this._value=s?t:Me(t),this.dep.trigger())}}function gt(e){return pe(e)?e.value:e}const sl={get:(e,t,n)=>t==="__v_raw"?e:gt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return pe(r)&&!pe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Si(e){return St(e)?e:new Proxy(e,sl)}class rl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=cn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&X!==this)return di(this,!0),!0}get value(){const t=this.dep.track();return gi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function il(e,t,n=!1){let s,r;return j(e)?s=e:(s=e.get,r=e.set),new rl(s,r,n)}const xn={},Tn=new WeakMap;let At;function ol(e,t=!1,n=At){if(n){let s=Tn.get(n);s||Tn.set(n,s=[]),s.push(e)}}function ll(e,t,n=Y){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,a=I=>r?I:Ce(I)||r===!1||r===0?nt(I,1):nt(I);let f,h,g,m,T=!1,w=!1;if(pe(e)?(h=()=>e.value,T=Ce(e)):St(e)?(h=()=>a(e),T=!0):V(e)?(w=!0,T=e.some(I=>St(I)||Ce(I)),h=()=>e.map(I=>{if(pe(I))return I.value;if(St(I))return a(I);if(j(I))return c?c(I,2):I()})):j(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){rt();try{g()}finally{it()}}const I=At;At=f;try{return c?c(e,3,[m]):e(m)}finally{At=I}}:h=qe,t&&r){const I=h,J=r===!0?1/0:r;h=()=>nt(I(),J)}const H=Lo(),k=()=>{f.stop(),H&&H.active&&Ds(H.effects,f)};if(i&&t){const I=t;t=(...J)=>{I(...J),k()}}let O=w?new Array(e.length).fill(xn):xn;const N=I=>{if(!(!(f.flags&1)||!f.dirty&&!I))if(t){const J=f.run();if(r||T||(w?J.some((ue,ee)=>$e(ue,O[ee])):$e(J,O))){g&&g();const ue=At;At=f;try{const ee=[J,O===xn?void 0:w&&O[0]===xn?[]:O,m];O=J,c?c(t,3,ee):t(...ee)}finally{At=ue}}}else f.run()};return l&&l(N),f=new fi(h),f.scheduler=o?()=>o(N,!1):N,m=I=>ol(I,!1,f),g=f.onStop=()=>{const I=Tn.get(f);if(I){if(c)c(I,4);else for(const J of I)J();Tn.delete(f)}},t?s?N(!0):O=f.run():o?o(N.bind(null,!0),!0):f.run(),k.pause=f.pause.bind(f),k.resume=f.resume.bind(f),k.stop=k,k}function nt(e,t=1/0,n){if(t<=0||!q(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,pe(e))nt(e.value,t,n);else if(V(e))for(let s=0;s{nt(s,t,n)});else if(ii(e)){for(const s in e)nt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&nt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function mn(e,t,n,s){try{return s?e(...s):e()}catch(r){zn(r,t,n)}}function Je(e,t,n,s){if(j(e)){const r=mn(e,t,n,s);return r&&si(r)&&r.catch(i=>{zn(i,t,n)}),r}if(V(e)){const r=[];for(let i=0;i>>1,r=_e[s],i=fn(r);i=fn(n)?_e.push(e):_e.splice(ul(t),0,e),e.flags|=1,Oi()}}function Oi(){In||(In=Ci.then(Ti))}function fl(e){V(e)?kt.push(...e):ht&&e.id===-1?ht.splice(Mt+1,0,e):e.flags&1||(kt.push(e),e.flags|=1),Oi()}function lr(e,t,n=Ke+1){for(;n<_e.length;n++){const s=_e[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;_e.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Pi(e){if(kt.length){const t=[...new Set(kt)].sort((n,s)=>fn(n)-fn(s));if(kt.length=0,ht){ht.push(...t);return}for(ht=t,Mt=0;Mte.id==null?e.flags&2?-1:1/0:e.id;function Ti(e){try{for(Ke=0;Ke<_e.length;Ke++){const t=_e[Ke];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),mn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ke<_e.length;Ke++){const t=_e[Ke];t&&(t.flags&=-2)}Ke=-1,_e.length=0,Pi(),In=null,(_e.length||kt.length)&&Ti()}}let Ae=null,Ii=null;function Nn(e){const t=Ae;return Ae=e,Ii=e&&e.type.__scopeId||null,t}function Ft(e,t=Ae,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Ln(-1);const i=Nn(t);let o;try{o=e(...r)}finally{Nn(i),s._d&&Ln(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Of(e,t){if(Ae===null)return e;const n=Xn(Ae),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&j(t)?t.call(s&&s.proxy):t}}const al=Symbol.for("v-scx"),dl=()=>Ne(al);function wn(e,t,n){return Ni(e,t,n)}function Ni(e,t,n=Y){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let a;if(dn){if(i==="sync"){const m=dl();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=qe,m.resume=qe,m.pause=qe,m}}const f=he;l.call=(m,T,w)=>Je(m,f,T,w);let h=!1;i==="post"?l.scheduler=m=>{be(m,f&&f.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(m,T)=>{T?m():$s(m)}),l.augmentJob=m=>{t&&(m.flags|=4),h&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const g=ll(e,t,l);return dn&&(a?a.push(g):c&&g()),g}function hl(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?Mi(s,e):()=>s[e]:e.bind(s,s);let i;j(t)?i=t:(i=t.handler,n=t);const o=yn(this),l=Ni(r,i.bind(s),n);return o(),l}function Mi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,ml=Symbol("_leaveCb");function qs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,qs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function _n(e,t){return j(e)?ae({name:e.name},t,{setup:e}):e}function Di(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function cr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Mn=new WeakMap;function tn(e,t,n,s,r=!1){if(V(e)){e.forEach((w,H)=>tn(w,t&&(V(t)?t[H]:t),n,s,r));return}if(nn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&tn(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Xn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,f=l.refs===Y?l.refs={}:l.refs,h=l.setupState,g=W(h),m=h===Y?ni:w=>cr(f,w)?!1:$(g,w),T=(w,H)=>!(H&&cr(f,H));if(a!=null&&a!==c){if(ur(t),re(a))f[a]=null,m(a)&&(h[a]=null);else if(pe(a)){const w=t;T(a,w.k)&&(a.value=null),w.k&&(f[w.k]=null)}}if(j(c))mn(c,l,12,[o,f]);else{const w=re(c),H=pe(c);if(w||H){const k=()=>{if(e.f){const O=w?m(c)?h[c]:f[c]:T()||!e.k?c.value:f[e.k];if(r)V(O)&&Ds(O,i);else if(V(O))O.includes(i)||O.push(i);else if(w)f[c]=[i],m(c)&&(h[c]=f[c]);else{const N=[i];T(c,e.k)&&(c.value=N),e.k&&(f[e.k]=N)}}else w?(f[c]=o,m(c)&&(h[c]=o)):H&&(T(c,e.k)&&(c.value=o),e.k&&(f[e.k]=o))};if(o){const O=()=>{k(),Mn.delete(e)};O.id=-1,Mn.set(e,O),be(O,n)}else ur(e),k()}}}function ur(e){const t=Mn.get(e);t&&(t.flags|=8,Mn.delete(e))}Wn().requestIdleCallback;Wn().cancelIdleCallback;const nn=e=>!!e.type.__asyncLoader,Li=e=>e.type.__isKeepAlive;function _l(e,t){Vi(e,"a",t)}function yl(e,t){Vi(e,"da",t)}function Vi(e,t,n=he){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Jn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Li(r.parent.vnode)&&vl(s,t,n,r),r=r.parent}}function vl(e,t,n,s){const r=Jn(t,e,s,!0);zs(()=>{Ds(s[t],r)},n)}function Jn(e,t,n=he,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=yn(n),c=Je(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const lt=e=>(t,n=he)=>{(!dn||e==="sp")&&Jn(e,(...s)=>t(...s),n)},bl=lt("bm"),ki=lt("m"),xl=lt("bu"),El=lt("u"),Al=lt("bum"),zs=lt("um"),Rl=lt("sp"),wl=lt("rtg"),Sl=lt("rtc");function Cl(e,t=he){Jn("ec",e,t)}const Fi="components";function Qn(e,t){return ji(Fi,e,!0,t)||e}const Hi=Symbol.for("v-ndc");function Ol(e){return re(e)?ji(Fi,e,!1)||e:e||Hi}function ji(e,t,n=!0,s=!1){const r=Ae||he;if(r){const i=r.type;{const l=pc(i,!1);if(l&&(l===t||l===ye(t)||l===Kn(ye(t))))return i}const o=fr(r[e]||i[e],t)||fr(r.appContext[e],t);return!o&&s?i:o}}function fr(e,t){return e&&(e[t]||e[ye(t)]||e[Kn(ye(t))])}function Es(e,t,n,s){let r;const i=n,o=V(e);if(o||re(e)){const l=o&&St(e);let c=!1,a=!1;l&&(c=!Ce(e),a=ot(e),e=$n(e)),r=new Array(e.length);for(let f=0,h=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;ce?oo(e)?Xn(e):As(e.parent):null,sn=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>As(e.parent),$root:e=>As(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ui(e),$forceUpdate:e=>e.f||(e.f=()=>{$s(e.update)}),$nextTick:e=>e.n||(e.n=Ws.bind(e.proxy)),$watch:e=>hl.bind(e)}),ls=(e,t)=>e!==Y&&!e.__isScriptSetup&&$(e,t),Pl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const g=o[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ls(s,t))return o[t]=1,s[t];if(r!==Y&&$(r,t))return o[t]=2,r[t];if($(i,t))return o[t]=3,i[t];if(n!==Y&&$(n,t))return o[t]=4,n[t];Rs&&(o[t]=0)}}const a=sn[t];let f,h;if(a)return t==="$attrs"&&de(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==Y&&$(n,t))return o[t]=4,n[t];if(h=c.config.globalProperties,$(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ls(r,t)?(r[t]=n,!0):s!==Y&&$(s,t)?(s[t]=n,!0):$(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==Y&&l[0]!=="$"&&$(e,l)||ls(t,l)||$(i,l)||$(s,l)||$(sn,l)||$(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:$(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ar(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function Tl(e){const t=Ui(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&dr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:g,beforeUpdate:m,updated:T,activated:w,deactivated:H,beforeDestroy:k,beforeUnmount:O,destroyed:N,unmounted:I,render:J,renderTracked:ue,renderTriggered:ee,errorCaptured:Le,serverPrefetch:ut,expose:Ve,inheritAttrs:ft,components:vt,directives:ke,filters:$t}=t;if(a&&Il(a,s,null),o)for(const z in o){const K=o[z];j(K)&&(s[z]=K.bind(n))}if(r){const z=r.call(n,n);q(z)&&(e.data=qn(z))}if(Rs=!0,i)for(const z in i){const K=i[z],Qe=j(K)?K.bind(n,n):j(K.get)?K.get.bind(n,n):qe,at=!j(K)&&j(K.set)?K.set.bind(n):qe,Fe=Te({get:Qe,set:at});Object.defineProperty(s,z,{enumerable:!0,configurable:!0,get:()=>Fe.value,set:ve=>Fe.value=ve})}if(l)for(const z in l)Bi(l[z],s,n,z);if(c){const z=j(c)?c.call(n):c;Reflect.ownKeys(z).forEach(K=>{Rn(K,z[K])})}f&&dr(f,e,"c");function le(z,K){V(K)?K.forEach(Qe=>z(Qe.bind(n))):K&&z(K.bind(n))}if(le(bl,h),le(ki,g),le(xl,m),le(El,T),le(_l,w),le(yl,H),le(Cl,Le),le(Sl,ue),le(wl,ee),le(Al,O),le(zs,I),le(Rl,ut),V(Ve))if(Ve.length){const z=e.exposed||(e.exposed={});Ve.forEach(K=>{Object.defineProperty(z,K,{get:()=>n[K],set:Qe=>n[K]=Qe,enumerable:!0})})}else e.exposed||(e.exposed={});J&&e.render===qe&&(e.render=J),ft!=null&&(e.inheritAttrs=ft),vt&&(e.components=vt),ke&&(e.directives=ke),ut&&Di(e)}function Il(e,t,n=qe){V(e)&&(e=ws(e));for(const s in e){const r=e[s];let i;q(r)?"default"in r?i=Ne(r.from||s,r.default,!0):i=Ne(r.from||s):i=Ne(r),pe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function dr(e,t,n){Je(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Bi(e,t,n,s){let r=s.includes(".")?Mi(n,s):()=>n[s];if(re(e)){const i=t[e];j(i)&&wn(r,i)}else if(j(e))wn(r,e.bind(n));else if(q(e))if(V(e))e.forEach(i=>Bi(i,t,n,s));else{const i=j(e.handler)?e.handler.bind(n):t[e.handler];j(i)&&wn(r,i,e)}}function Ui(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Dn(c,a,o,!0)),Dn(c,t,o)),q(t)&&i.set(t,c),c}function Dn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Dn(e,i,n,!0),r&&r.forEach(o=>Dn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Nl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Nl={data:hr,props:pr,emits:pr,methods:Yt,computed:Yt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Yt,directives:Yt,watch:Dl,provide:hr,inject:Ml};function hr(e,t){return t?e?function(){return ae(j(e)?e.call(this,this):e,j(t)?t.call(this,this):t)}:t:e}function Ml(e,t){return Yt(ws(e),ws(t))}function ws(e){if(V(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ye(t)}Modifiers`]||e[`${Ot(t)}Modifiers`];function Fl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Y;let r=n;const i=t.startsWith("update:"),o=i&&kl(s,t.slice(7));o&&(o.trim&&(r=n.map(f=>re(f)?f.trim():f)),o.number&&(r=n.map(Gn)));let l,c=s[l=ns(t)]||s[l=ns(ye(t))];!c&&i&&(c=s[l=ns(Ot(t))]),c&&Je(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Je(a,e,6,r)}}const Hl=new WeakMap;function Gi(e,t,n=!1){const s=n?Hl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!j(e)){const c=a=>{const f=Gi(a,t,!0);f&&(l=!0,ae(o,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(q(e)&&s.set(e,null),null):(V(i)?i.forEach(c=>o[c]=null):ae(o,i),q(e)&&s.set(e,o),o)}function Yn(e,t){return!e||!jn(t)?!1:(t=t.slice(2).replace(/Once$/,""),$(e,t[0].toLowerCase()+t.slice(1))||$(e,Ot(t))||$(e,t))}function gr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:a,renderCache:f,props:h,data:g,setupState:m,ctx:T,inheritAttrs:w}=e,H=Nn(e);let k,O;try{if(n.shapeFlag&4){const I=r||s,J=I;k=We(a.call(J,I,f,h,m,g,T)),O=l}else{const I=t;k=We(I.length>1?I(h,{attrs:l,slots:o,emit:c}):I(h,null)),O=t.props?l:jl(l)}}catch(I){rn.length=0,zn(I,e,1),k=te(_t)}let N=k;if(O&&w!==!1){const I=Object.keys(O),{shapeFlag:J}=N;I.length&&J&7&&(i&&I.some(Bn)&&(O=Bl(O,i)),N=Bt(N,O,!1,!0))}return n.dirs&&(N=Bt(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&qs(N,n.transition),k=N,Nn(H),k}const jl=e=>{let t;for(const n in e)(n==="class"||n==="style"||jn(n))&&((t||(t={}))[n]=e[n]);return t},Bl=(e,t)=>{const n={};for(const s in e)(!Bn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ul(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?mr(s,o,a):!!o;if(c&8){const f=t.dynamicProps;for(let h=0;hObject.create($i),zi=e=>Object.getPrototypeOf(e)===$i;function Gl(e,t,n,s=!1){const r={},i=qi();e.propsDefaults=Object.create(null),Ji(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Ri(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Wl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=W(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,m]=Qi(h,t,!0);ae(o,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!c)return q(e)&&s.set(e,Lt),Lt;if(V(i))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",Qs=e=>V(e)?e.map(We):[We(e)],ql=(e,t,n)=>{if(t._n)return t;const s=Ft((...r)=>Qs(t(...r)),n);return s._c=!1,s},Yi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Js(r))continue;const i=e[r];if(j(i))t[r]=ql(r,i,s);else if(i!=null){const o=Qs(i);t[r]=()=>o}}},Zi=(e,t)=>{const n=Qs(t);e.slots.default=()=>n},Xi=(e,t,n)=>{for(const s in t)(n||!Js(s))&&(e[s]=t[s])},zl=(e,t,n)=>{const s=e.slots=qi();if(e.vnode.shapeFlag&32){const r=t._;r?(Xi(s,t,n),n&&oi(s,"_",r,!0)):Yi(t,s)}else t&&Zi(e,t)},Jl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Y;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Xi(r,t,n):(i=!t.$stable,Yi(t,r)),o=t}else t&&(Zi(e,t),o={default:1});if(i)for(const l in r)!Js(l)&&o[l]==null&&delete r[l]},be=ec;function Ql(e){return Yl(e)}function Yl(e,t){const n=Wn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:g,setScopeId:m=qe,insertStaticContent:T}=e,w=(u,d,p,_=null,b=null,y=null,R=void 0,A=null,E=!!d.dynamicChildren)=>{if(u===d)return;u&&!Jt(u,d)&&(_=v(u),ve(u,b,y,!0),u=null),d.patchFlag===-2&&(E=!1,d.dynamicChildren=null);const{type:x,ref:L,shapeFlag:C}=d;switch(x){case Zn:H(u,d,p,_);break;case _t:k(u,d,p,_);break;case Sn:u==null&&O(d,p,_,R);break;case Se:vt(u,d,p,_,b,y,R,A,E);break;default:C&1?J(u,d,p,_,b,y,R,A,E):C&6?ke(u,d,p,_,b,y,R,A,E):(C&64||C&128)&&x.process(u,d,p,_,b,y,R,A,E,M)}L!=null&&b?tn(L,u&&u.ref,y,d||u,!d):L==null&&u&&u.ref!=null&&tn(u.ref,null,y,u,!0)},H=(u,d,p,_)=>{if(u==null)s(d.el=l(d.children),p,_);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},k=(u,d,p,_)=>{u==null?s(d.el=c(d.children||""),p,_):d.el=u.el},O=(u,d,p,_)=>{[u.el,u.anchor]=T(u.children,d,p,_,u.el,u.anchor)},N=({el:u,anchor:d},p,_)=>{let b;for(;u&&u!==d;)b=g(u),s(u,p,_),u=b;s(d,p,_)},I=({el:u,anchor:d})=>{let p;for(;u&&u!==d;)p=g(u),r(u),u=p;r(d)},J=(u,d,p,_,b,y,R,A,E)=>{if(d.type==="svg"?R="svg":d.type==="math"&&(R="mathml"),u==null)ue(d,p,_,b,y,R,A,E);else{const x=u.el&&u.el._isVueCE?u.el:null;try{x&&x._beginPatch(),ut(u,d,b,y,R,A,E)}finally{x&&x._endPatch()}}},ue=(u,d,p,_,b,y,R,A)=>{let E,x;const{props:L,shapeFlag:C,transition:D,dirs:F}=u;if(E=u.el=o(u.type,y,L&&L.is,L),C&8?f(E,u.children):C&16&&Le(u.children,E,null,_,b,cs(u,y),R,A),F&&xt(u,null,_,"created"),ee(E,u,u.scopeId,R,_),L){for(const Q in L)Q!=="value"&&!Zt(Q)&&i(E,Q,null,L[Q],y,_);"value"in L&&i(E,"value",null,L.value,y),(x=L.onVnodeBeforeMount)&&Ue(x,_,u)}F&&xt(u,null,_,"beforeMount");const U=Zl(b,D);U&&D.beforeEnter(E),s(E,d,p),((x=L&&L.onVnodeMounted)||U||F)&&be(()=>{try{x&&Ue(x,_,u),U&&D.enter(E),F&&xt(u,null,_,"mounted")}finally{}},b)},ee=(u,d,p,_,b)=>{if(p&&m(u,p),_)for(let y=0;y<_.length;y++)m(u,_[y]);if(b){let y=b.subTree;if(d===y||so(y.type)&&(y.ssContent===d||y.ssFallback===d)){const R=b.vnode;ee(u,R,R.scopeId,R.slotScopeIds,b.parent)}}},Le=(u,d,p,_,b,y,R,A,E=0)=>{for(let x=E;x{const A=d.el=u.el;let{patchFlag:E,dynamicChildren:x,dirs:L}=d;E|=u.patchFlag&16;const C=u.props||Y,D=d.props||Y;let F;if(p&&Et(p,!1),(F=D.onVnodeBeforeUpdate)&&Ue(F,p,d,u),L&&xt(d,u,p,"beforeUpdate"),p&&Et(p,!0),(C.innerHTML&&D.innerHTML==null||C.textContent&&D.textContent==null)&&f(A,""),x?Ve(u.dynamicChildren,x,A,p,_,cs(d,b),y):R||K(u,d,A,null,p,_,cs(d,b),y,!1),E>0){if(E&16)ft(A,C,D,p,b);else if(E&2&&C.class!==D.class&&i(A,"class",null,D.class,b),E&4&&i(A,"style",C.style,D.style,b),E&8){const U=d.dynamicProps;for(let Q=0;Q{F&&Ue(F,p,d,u),L&&xt(d,u,p,"updated")},_)},Ve=(u,d,p,_,b,y,R)=>{for(let A=0;A{if(d!==p){if(d!==Y)for(const y in d)!Zt(y)&&!(y in p)&&i(u,y,d[y],null,b,_);for(const y in p){if(Zt(y))continue;const R=p[y],A=d[y];R!==A&&y!=="value"&&i(u,y,A,R,b,_)}"value"in p&&i(u,"value",d.value,p.value,b)}},vt=(u,d,p,_,b,y,R,A,E)=>{const x=d.el=u?u.el:l(""),L=d.anchor=u?u.anchor:l("");let{patchFlag:C,dynamicChildren:D,slotScopeIds:F}=d;F&&(A=A?A.concat(F):F),u==null?(s(x,p,_),s(L,p,_),Le(d.children||[],p,L,b,y,R,A,E)):C>0&&C&64&&D&&u.dynamicChildren&&u.dynamicChildren.length===D.length?(Ve(u.dynamicChildren,D,p,b,y,R,A),(d.key!=null||b&&d===b.subTree)&&eo(u,d,!0)):K(u,d,p,L,b,y,R,A,E)},ke=(u,d,p,_,b,y,R,A,E)=>{d.slotScopeIds=A,u==null?d.shapeFlag&512?b.ctx.activate(d,p,_,R,E):$t(d,p,_,b,y,R,E):Pt(u,d,E)},$t=(u,d,p,_,b,y,R)=>{const A=u.component=cc(u,_,b);if(Li(u)&&(A.ctx.renderer=M),fc(A,!1,R),A.asyncDep){if(b&&b.registerDep(A,le,R),!u.el){const E=A.subTree=te(_t);k(null,E,d,p),u.placeholder=E.el}}else le(A,u,d,p,b,y,R)},Pt=(u,d,p)=>{const _=d.component=u.component;if(Ul(u,d,p))if(_.asyncDep&&!_.asyncResolved){z(_,d,p);return}else _.next=d,_.update();else d.el=u.el,_.vnode=d},le=(u,d,p,_,b,y,R)=>{const A=()=>{if(u.isMounted){let{next:C,bu:D,u:F,parent:U,vnode:Q}=u;{const je=to(u);if(je){C&&(C.el=Q.el,z(u,C,R)),je.asyncDep.then(()=>{be(()=>{u.isUnmounted||x()},b)});return}}let Z=C,ie;Et(u,!1),C?(C.el=Q.el,z(u,C,R)):C=Q,D&&An(D),(ie=C.props&&C.props.onVnodeBeforeUpdate)&&Ue(ie,U,C,Q),Et(u,!0);const fe=gr(u),He=u.subTree;u.subTree=fe,w(He,fe,h(He.el),v(He),u,b,y),C.el=fe.el,Z===null&&Kl(u,fe.el),F&&be(F,b),(ie=C.props&&C.props.onVnodeUpdated)&&be(()=>Ue(ie,U,C,Q),b)}else{let C;const{el:D,props:F}=d,{bm:U,m:Q,parent:Z,root:ie,type:fe}=u,He=nn(d);Et(u,!1),U&&An(U),!He&&(C=F&&F.onVnodeBeforeMount)&&Ue(C,Z,d),Et(u,!0);{ie.ce&&ie.ce._hasShadowRoot()&&ie.ce._injectChildStyle(fe,u.parent?u.parent.type:void 0);const je=u.subTree=gr(u);w(null,je,p,_,u,b,y),d.el=je.el}if(Q&&be(Q,b),!He&&(C=F&&F.onVnodeMounted)){const je=d;be(()=>Ue(C,Z,je),b)}(d.shapeFlag&256||Z&&nn(Z.vnode)&&Z.vnode.shapeFlag&256)&&u.a&&be(u.a,b),u.isMounted=!0,d=p=_=null}};u.scope.on();const E=u.effect=new fi(A);u.scope.off();const x=u.update=E.run.bind(E),L=u.job=E.runIfDirty.bind(E);L.i=u,L.id=u.uid,E.scheduler=()=>$s(L),Et(u,!0),x()},z=(u,d,p)=>{d.component=u;const _=u.vnode.props;u.vnode=d,u.next=null,Wl(u,d.props,_,p),Jl(u,d.children,p),rt(),lr(u),it()},K=(u,d,p,_,b,y,R,A,E=!1)=>{const x=u&&u.children,L=u?u.shapeFlag:0,C=d.children,{patchFlag:D,shapeFlag:F}=d;if(D>0){if(D&128){at(x,C,p,_,b,y,R,A,E);return}else if(D&256){Qe(x,C,p,_,b,y,R,A,E);return}}F&8?(L&16&&we(x,b,y),C!==x&&f(p,C)):L&16?F&16?at(x,C,p,_,b,y,R,A,E):we(x,b,y,!0):(L&8&&f(p,""),F&16&&Le(C,p,_,b,y,R,A,E))},Qe=(u,d,p,_,b,y,R,A,E)=>{u=u||Lt,d=d||Lt;const x=u.length,L=d.length,C=Math.min(x,L);let D;for(D=0;DL?we(u,b,y,!0,!1,C):Le(d,p,_,b,y,R,A,E,C)},at=(u,d,p,_,b,y,R,A,E)=>{let x=0;const L=d.length;let C=u.length-1,D=L-1;for(;x<=C&&x<=D;){const F=u[x],U=d[x]=E?et(d[x]):We(d[x]);if(Jt(F,U))w(F,U,p,null,b,y,R,A,E);else break;x++}for(;x<=C&&x<=D;){const F=u[C],U=d[D]=E?et(d[D]):We(d[D]);if(Jt(F,U))w(F,U,p,null,b,y,R,A,E);else break;C--,D--}if(x>C){if(x<=D){const F=D+1,U=FD)for(;x<=C;)ve(u[x],b,y,!0),x++;else{const F=x,U=x,Q=new Map;for(x=U;x<=D;x++){const Ee=d[x]=E?et(d[x]):We(d[x]);Ee.key!=null&&Q.set(Ee.key,x)}let Z,ie=0;const fe=D-U+1;let He=!1,je=0;const qt=new Array(fe);for(x=0;x=fe){ve(Ee,b,y,!0);continue}let Be;if(Ee.key!=null)Be=Q.get(Ee.key);else for(Z=U;Z<=D;Z++)if(qt[Z-U]===0&&Jt(Ee,d[Z])){Be=Z;break}Be===void 0?ve(Ee,b,y,!0):(qt[Be-U]=x+1,Be>=je?je=Be:He=!0,w(Ee,d[Be],p,null,b,y,R,A,E),ie++)}const er=He?Xl(qt):Lt;for(Z=er.length-1,x=fe-1;x>=0;x--){const Ee=U+x,Be=d[Ee],tr=d[Ee+1],nr=Ee+1{const{el:y,type:R,transition:A,children:E,shapeFlag:x}=u;if(x&6){Fe(u.component.subTree,d,p,_);return}if(x&128){u.suspense.move(d,p,_);return}if(x&64){R.move(u,d,p,M);return}if(R===Se){s(y,d,p);for(let C=0;CA.enter(y),b);else{const{leave:C,delayLeave:D,afterLeave:F}=A,U=()=>{u.ctx.isUnmounted?r(y):s(y,d,p)},Q=()=>{y._isLeaving&&y[ml](!0),C(y,()=>{U(),F&&F()})};D?D(y,U,Q):Q()}else s(y,d,p)},ve=(u,d,p,_=!1,b=!1)=>{const{type:y,props:R,ref:A,children:E,dynamicChildren:x,shapeFlag:L,patchFlag:C,dirs:D,cacheIndex:F,memo:U}=u;if(C===-2&&(b=!1),A!=null&&(rt(),tn(A,null,p,u,!0),it()),F!=null&&(d.renderCache[F]=void 0),L&256){d.ctx.deactivate(u);return}const Q=L&1&&D,Z=!nn(u);let ie;if(Z&&(ie=R&&R.onVnodeBeforeUnmount)&&Ue(ie,d,u),L&6)bt(u.component,p,_);else{if(L&128){u.suspense.unmount(p,_);return}Q&&xt(u,null,d,"beforeUnmount"),L&64?u.type.remove(u,d,p,M,_):x&&!x.hasOnce&&(y!==Se||C>0&&C&64)?we(x,d,p,!1,!0):(y===Se&&C&384||!b&&L&16)&&we(E,d,p),_&&Tt(u)}const fe=U!=null&&F==null;(Z&&(ie=R&&R.onVnodeUnmounted)||Q||fe)&&be(()=>{ie&&Ue(ie,d,u),Q&&xt(u,null,d,"unmounted"),fe&&(u.el=null)},p)},Tt=u=>{const{type:d,el:p,anchor:_,transition:b}=u;if(d===Se){It(p,_);return}if(d===Sn){I(u);return}const y=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:A}=b,E=()=>R(p,y);A?A(u.el,y,E):E()}else y()},It=(u,d)=>{let p;for(;u!==d;)p=g(u),r(u),u=p;r(d)},bt=(u,d,p)=>{const{bum:_,scope:b,job:y,subTree:R,um:A,m:E,a:x}=u;yr(E),yr(x),_&&An(_),b.stop(),y&&(y.flags|=8,ve(R,u,d,p)),A&&be(A,d),be(()=>{u.isUnmounted=!0},d)},we=(u,d,p,_=!1,b=!1,y=0)=>{for(let R=y;R{if(u.shapeFlag&6)return v(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=g(u.anchor||u.el),p=d&&d[pl];return p?g(p):d};let P=!1;const S=(u,d,p)=>{let _;u==null?d._vnode&&(ve(d._vnode,null,null,!0),_=d._vnode.component):w(d._vnode||null,u,d,null,null,null,p),d._vnode=u,P||(P=!0,lr(_),Pi(),P=!1)},M={p:w,um:ve,m:Fe,r:Tt,mt:$t,mc:Le,pc:K,pbc:Ve,n:v,o:e};return{render:S,hydrate:void 0,createApp:Vl(S)}}function cs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Et({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Zl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function eo(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function to(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:to(t)}function yr(e){if(e)for(let t=0;te.__isSuspense;function ec(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):fl(e)}const Se=Symbol.for("v-fgt"),Zn=Symbol.for("v-txt"),_t=Symbol.for("v-cmt"),Sn=Symbol.for("v-stc"),rn=[];let Re=null;function Pe(e=!1){rn.push(Re=e?null:[])}function tc(){rn.pop(),Re=rn[rn.length-1]||null}let an=1;function Ln(e,t=!1){an+=e,e<0&&Re&&t&&(Re.hasOnce=!0)}function ro(e){return e.dynamicChildren=an>0?Re||Lt:null,tc(),an>0&&Re&&Re.push(e),e}function Ct(e,t,n,s,r,i){return ro(ce(e,t,n,s,r,i,!0))}function Vn(e,t,n,s,r){return ro(te(e,t,n,s,r,!0))}function kn(e){return e?e.__v_isVNode===!0:!1}function Jt(e,t){return e.type===t.type&&e.key===t.key}const io=({key:e})=>e??null,Cn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||pe(e)||j(e)?{i:Ae,r:e,k:t,f:!!n}:e:null);function ce(e,t=null,n=null,s=0,r=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&io(t),ref:t&&Cn(t),scopeId:Ii,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ae};return l?(Ys(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),an>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const te=nc;function nc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Hi)&&(e=_t),kn(e)){const l=Bt(e,t,!0);return n&&Ys(l,n),an>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(gc(e)&&(e=e.__vccOpts),t){t=sc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Vs(l)),q(c)&&(Gs(c)&&!V(c)&&(c=ae({},c)),t.style=ln(c))}const o=re(e)?1:so(e)?128:gl(e)?64:q(e)?4:j(e)?2:0;return ce(e,t,n,s,r,o,i,!0)}function sc(e){return e?Gs(e)||zi(e)?ae({},e):e:null}function Bt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,a=t?ic(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&io(a),ref:t&&t.ref?n&&i?V(i)?i.concat(Cn(t)):[i,Cn(t)]:Cn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Bt(e.ssContent),ssFallback:e.ssFallback&&Bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&qs(f,c.clone(f)),f}function Fn(e=" ",t=0){return te(Zn,null,e,t)}function Pf(e,t){const n=te(Sn,null,e);return n.staticCount=t,n}function rc(e="",t=!1){return t?(Pe(),Vn(_t,null,e)):te(_t,null,e)}function We(e){return e==null||typeof e=="boolean"?te(_t):V(e)?te(Se,null,e.slice()):kn(e)?et(e):te(Zn,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Bt(e)}function Ys(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ys(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!zi(t)?t._ctx=Ae:r===3&&Ae&&(Ae.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else j(t)?(t={default:t,_ctx:Ae},n=32):(t=String(t),s&64?(n=16,t=[Fn(t)]):n=8);e.children=t,e.shapeFlag|=n}function ic(...e){const t={};for(let n=0;nhe||Ae;let Hn,Cs;{const e=Wn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Hn=t("__VUE_INSTANCE_SETTERS__",n=>he=n),Cs=t("__VUE_SSR_SETTERS__",n=>dn=n)}const yn=e=>{const t=he;return Hn(e),e.scope.on(),()=>{e.scope.off(),Hn(t)}},vr=()=>{he&&he.scope.off(),Hn(null)};function oo(e){return e.vnode.shapeFlag&4}let dn=!1;function fc(e,t=!1,n=!1){t&&Cs(t);const{props:s,children:r}=e.vnode,i=oo(e);Gl(e,s,i,t),zl(e,r,n||t);const o=i?ac(e,t):void 0;return t&&Cs(!1),o}function ac(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Pl);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?hc(e):null,i=yn(e),o=mn(s,e,0,[e.props,r]),l=si(o);if(it(),i(),(l||e.sp)&&!nn(e)&&Di(e),l){if(o.then(vr,vr),t)return o.then(c=>{br(e,c)}).catch(c=>{zn(c,e,0)});e.asyncDep=o}else br(e,o)}else lo(e)}function br(e,t,n){j(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:q(t)&&(e.setupState=Si(t)),lo(e)}function lo(e,t,n){const s=e.type;e.render||(e.render=s.render||qe);{const r=yn(e);rt();try{Tl(e)}finally{it(),r()}}}const dc={get(e,t){return de(e,"get",""),e[t]}};function hc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,dc),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Si(el(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in sn)return sn[n](e)},has(t,n){return n in t||n in sn}})):e.proxy}function pc(e,t=!0){return j(e)?e.displayName||e.name:e.name||t&&e.__name}function gc(e){return j(e)&&"__vccOpts"in e}const Te=(e,t)=>il(e,t,dn);function hn(e,t,n){try{Ln(-1);const s=arguments.length;return s===2?q(t)&&!V(t)?kn(t)?te(e,null,[t]):te(e,t):te(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&kn(n)&&(n=[n]),te(e,t,n))}finally{Ln(1)}}const mc="3.5.31";/** +* @vue/runtime-dom v3.5.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Os;const xr=typeof window<"u"&&window.trustedTypes;if(xr)try{Os=xr.createPolicy("vue",{createHTML:e=>e})}catch{}const co=Os?e=>Os.createHTML(e):e=>e,_c="http://www.w3.org/2000/svg",yc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,Er=Xe&&Xe.createElement("template"),vc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(_c,e):t==="mathml"?Xe.createElementNS(yc,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Er.innerHTML=co(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Er.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},bc=Symbol("_vtc");function xc(e,t,n){const s=e[bc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ar=Symbol("_vod"),Ec=Symbol("_vsh"),Ac=Symbol(""),Rc=/(?:^|;)\s*display\s*:/;function wc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&On(s,l,"")}else for(const o in t)n[o]==null&&On(s,o,"");for(const o in n)o==="display"&&(i=!0),On(s,o,n[o])}else if(r){if(t!==n){const o=s[Ac];o&&(n+=";"+o),s.cssText=n,i=Rc.test(n)}}else t&&e.removeAttribute("style");Ar in e&&(e[Ar]=i?s.display:"",e[Ec]&&(s.display="none"))}const Rr=/\s*!important$/;function On(e,t,n){if(V(n))n.forEach(s=>On(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Sc(e,t);Rr.test(n)?e.setProperty(Ot(s),n.replace(Rr,""),"important"):e[s]=n}}const wr=["Webkit","Moz","ms"],us={};function Sc(e,t){const n=us[t];if(n)return n;let s=ye(t);if(s!=="filter"&&s in e)return us[t]=s;s=Kn(s);for(let r=0;rfs||(Tc.then(()=>fs=0),fs=Date.now());function Nc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Je(Mc(s,n.value),t,5,[s])};return n.value=e,n.attached=Ic(),n}function Mc(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ir=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Dc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?xc(e,s,o):t==="style"?wc(e,n,s):jn(t)?Bn(t)||Oc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Lc(e,t,s,o))?(Or(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Cr(e,t,s,o,i,t!=="value")):e._isVueCE&&(Vc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!re(s)))?Or(e,ye(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cr(e,t,s,o))};function Lc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ir(t)&&j(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Ir(t)&&re(n)?!1:t in e}function Vc(e,t){const n=e._def.props;if(!n)return!1;const s=ye(t);return Array.isArray(n)?n.some(r=>ye(r)===s):Object.keys(n).some(r=>ye(r)===s)}const yt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>An(t,n):t};function kc(e){e.target.composing=!0}function Nr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Oe=Symbol("_assign");function Mr(e,t,n){return t&&(e=e.trim()),n&&(e=Gn(e)),e}const Tf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Oe]=yt(r);const i=s||r.props&&r.props.type==="number";st(e,t?"change":"input",o=>{o.target.composing||e[Oe](Mr(e.value,n,i))}),(n||i)&&st(e,"change",()=>{e.value=Mr(e.value,n,i)}),t||(st(e,"compositionstart",kc),st(e,"compositionend",Nr),st(e,"change",Nr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Oe]=yt(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Gn(e.value):e.value,c=t??"";if(l===c)return;const a=e.getRootNode();(a instanceof Document||a instanceof ShadowRoot)&&a.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c)}},If={deep:!0,created(e,t,n){e[Oe]=yt(n),st(e,"change",()=>{const s=e._modelValue,r=Ut(e),i=e.checked,o=e[Oe];if(V(s)){const l=ks(s,r),c=l!==-1;if(i&&!c)o(s.concat(r));else if(!i&&c){const a=[...s];a.splice(l,1),o(a)}}else if(Wt(s)){const l=new Set(s);i?l.add(r):l.delete(r),o(l)}else o(uo(e,i))})},mounted:Dr,beforeUpdate(e,t,n){e[Oe]=yt(n),Dr(e,t,n)}};function Dr(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=ks(t,s.props.value)>-1;else if(Wt(t))r=t.has(s.props.value);else{if(t===n)return;r=mt(t,uo(e,!0))}e.checked!==r&&(e.checked=r)}const Nf={created(e,{value:t},n){e.checked=mt(t,n.props.value),e[Oe]=yt(n),st(e,"change",()=>{e[Oe](Ut(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[Oe]=yt(s),t!==n&&(e.checked=mt(t,s.props.value))}},Mf={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Wt(t);st(e,"change",()=>{const i=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Gn(Ut(o)):Ut(o));e[Oe](e.multiple?r?new Set(i):i:i[0]),e._assigning=!0,Ws(()=>{e._assigning=!1})}),e[Oe]=yt(s)},mounted(e,{value:t}){Lr(e,t)},beforeUpdate(e,t,n){e[Oe]=yt(n)},updated(e,{value:t}){e._assigning||Lr(e,t)}};function Lr(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!Wt(t))){for(let r=0,i=e.options.length;rString(a)===String(l)):o.selected=ks(t,l)>-1}else o.selected=t.has(l);else if(mt(Ut(o),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Ut(e){return"_value"in e?e._value:e.value}function uo(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Fc=["ctrl","shift","alt","meta"],Hc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Fc.some(n=>e[`${n}Key`]&&!t.includes(n))},Df=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o{const t=Bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Gc(s);if(!r)return;const i=t._component;!j(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Kc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Kc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Gc(e){return re(e)?document.querySelector(e):e}const Wc=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},$c={};function qc(e,t){const n=Qn("router-view");return Pe(),Vn(n)}const zc=Wc($c,[["render",qc]]),Jc="modulepreload",Qc=function(e){return"/"+e},kr={},ne=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let o=function(a){return Promise.all(a.map(f=>Promise.resolve(f).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=o(n.map(a=>{if(a=Qc(a),a in kr)return;kr[a]=!0;const f=a.endsWith(".css"),h=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${h}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":Jc,f||(g.as="script"),g.crossOrigin="",g.href=a,c&&g.setAttribute("nonce",c),document.head.appendChild(g),f)return new Promise((m,T)=>{g.addEventListener("load",m),g.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${a}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Dt=typeof document<"u";function fo(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Yc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&fo(e.default)}const G=Object.assign;function as(e,t){const n={};for(const s in t){const r=t[s];n[s]=De(r)?r.map(e):e(r)}return n}const on=()=>{},De=Array.isArray;function Fr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const ao=/#/g,Zc=/&/g,Xc=/\//g,eu=/=/g,tu=/\?/g,ho=/\+/g,nu=/%5B/g,su=/%5D/g,po=/%5E/g,ru=/%60/g,go=/%7B/g,iu=/%7C/g,mo=/%7D/g,ou=/%20/g;function Zs(e){return e==null?"":encodeURI(""+e).replace(iu,"|").replace(nu,"[").replace(su,"]")}function lu(e){return Zs(e).replace(go,"{").replace(mo,"}").replace(po,"^")}function Ps(e){return Zs(e).replace(ho,"%2B").replace(ou,"+").replace(ao,"%23").replace(Zc,"%26").replace(ru,"`").replace(go,"{").replace(mo,"}").replace(po,"^")}function cu(e){return Ps(e).replace(eu,"%3D")}function uu(e){return Zs(e).replace(ao,"%23").replace(tu,"%3F")}function fu(e){return uu(e).replace(Xc,"%2F")}function pn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const au=/\/$/,du=e=>e.replace(au,"");function ds(e,t,n="/"){let s,r={},i="",o="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),i=t.slice(c,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(s=s||t.slice(0,l),o=t.slice(l,t.length)),s=mu(s??t,n),{fullPath:s+i+o,path:s,query:r,hash:pn(o)}}function hu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Hr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function pu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Kt(t.matched[s],n.matched[r])&&_o(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Kt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function _o(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!gu(e[n],t[n]))return!1;return!0}function gu(e,t){return De(e)?jr(e,t):De(t)?jr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function jr(e,t){return De(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function mu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,o,l;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const dt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ts=(function(e){return e.pop="pop",e.push="push",e})({}),hs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function _u(e){if(!e)if(Dt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),du(e)}const yu=/^[^#]+#/;function vu(e,t){return e.replace(yu,"#")+t}function bu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const es=()=>({left:window.scrollX,top:window.scrollY});function xu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=bu(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Br(e,t){return(history.state?history.state.position-t:-1)+e}const Is=new Map;function Eu(e,t){Is.set(e,t)}function Au(e){const t=Is.get(e);return Is.delete(e),t}function Ru(e){return typeof e=="string"||e&&typeof e=="object"}function yo(e){return typeof e=="string"||typeof e=="symbol"}let se=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const vo=Symbol("");se.MATCHER_NOT_FOUND+"",se.NAVIGATION_GUARD_REDIRECT+"",se.NAVIGATION_ABORTED+"",se.NAVIGATION_CANCELLED+"",se.NAVIGATION_DUPLICATED+"";function Gt(e,t){return G(new Error,{type:e,[vo]:!0},t)}function Ze(e,t){return e instanceof Error&&vo in e&&(t==null||!!(e.type&t))}const wu=["params","query","hash"];function Su(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of wu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Cu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Ps(r)):[s&&Ps(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Ou(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=De(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Pu=Symbol(""),Kr=Symbol(""),ts=Symbol(""),Xs=Symbol(""),Ns=Symbol("");function Qt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function pt(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=g=>{g===!1?c(Gt(se.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):Ru(g)?c(Gt(se.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(o&&s.enterCallbacks[r]===o&&typeof g=="function"&&o.push(g),l())},f=i(()=>e.call(s&&s.instances[r],t,n,a));let h=Promise.resolve(f);e.length<3&&(h=h.then(a)),h.catch(g=>c(g))})}function ps(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const l in o.components){let c=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(fo(c)){const a=(c.__vccOpts||c)[t];a&&i.push(pt(a,n,s,o,l,r))}else{let a=c();i.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const h=Yc(f)?f.default:f;o.mods[l]=f,o.components[l]=h;const g=(h.__vccOpts||h)[t];return g&&pt(g,n,s,o,l,r)()}))}}return i}function Tu(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;oKt(a,l))?s.push(l):n.push(l));const c=e.matched[o];c&&(t.matched.find(a=>Kt(a,c))||r.push(c))}return[n,s,r]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Iu=()=>location.protocol+"//"+location.host;function bo(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),Hr(l,"")}return Hr(n,e)+s+r}function Nu(e,t,n,s){let r=[],i=[],o=null;const l=({state:g})=>{const m=bo(e,location),T=n.value,w=t.value;let H=0;if(g){if(n.value=m,t.value=g,o&&o===T){o=null;return}H=w?g.position-w.position:0}else s(m);r.forEach(k=>{k(n.value,T,{delta:H,type:Ts.pop,direction:H?H>0?hs.forward:hs.back:hs.unknown})})};function c(){o=n.value}function a(g){r.push(g);const m=()=>{const T=r.indexOf(g);T>-1&&r.splice(T,1)};return i.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(G({},g.state,{scroll:es()}),"")}}function h(){for(const g of i)g();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:h}}function Gr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?es():null}}function Mu(e){const{history:t,location:n}=window,s={value:bo(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,a,f){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Iu()+e+c;try{t[f?"replaceState":"pushState"](a,"",g),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](g)}}function o(c,a){i(c,G({},t.state,Gr(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=G({},r.value,t.state,{forward:c,scroll:es()});i(f.current,f,!0),i(c,G({},Gr(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Du(e){e=_u(e);const t=Mu(e),n=Nu(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=G({location:"",base:e,go:s,createHref:vu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Rt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var oe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(oe||{});const Lu={type:Rt.Static,value:""},Vu=/[a-zA-Z0-9_]/;function ku(e){if(!e)return[[]];if(e==="/")return[[Lu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=oe.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,a="",f="";function h(){a&&(n===oe.Static?i.push({type:Rt.Static,value:a}):n===oe.Param||n===oe.ParamRegExp||n===oe.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Rt.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;lt.length?t.length===1&&t[0]===me.Static+me.Segment?1:-1:0}function xo(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Uu={strict:!1,end:!0,sensitive:!1};function Ku(e,t,n){const s=ju(ku(e.path),n),r=G(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Gu(e,t){const n=[],s=new Map;t=Fr(Uu,t);function r(h){return s.get(h)}function i(h,g,m){const T=!m,w=zr(h);w.aliasOf=m&&m.record;const H=Fr(t,h),k=[w];if("alias"in h){const I=typeof h.alias=="string"?[h.alias]:h.alias;for(const J of I)k.push(zr(G({},w,{components:m?m.record.components:w.components,path:J,aliasOf:m?m.record:w})))}let O,N;for(const I of k){const{path:J}=I;if(g&&J[0]!=="/"){const ue=g.record.path,ee=ue[ue.length-1]==="/"?"":"/";I.path=g.record.path+(J&&ee+J)}if(O=Ku(I,g,H),m?m.alias.push(O):(N=N||O,N!==O&&N.alias.push(O),T&&h.name&&!Jr(O)&&o(h.name)),Eo(O)&&c(O),w.children){const ue=w.children;for(let ee=0;ee{o(N)}:on}function o(h){if(yo(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(o),g.alias.forEach(o))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const g=qu(h,n);n.splice(g,0,h),h.record.name&&!Jr(h)&&s.set(h.record.name,h)}function a(h,g){let m,T={},w,H;if("name"in h&&h.name){if(m=s.get(h.name),!m)throw Gt(se.MATCHER_NOT_FOUND,{location:h});H=m.record.name,T=G(qr(g.params,m.keys.filter(N=>!N.optional).concat(m.parent?m.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),h.params&&qr(h.params,m.keys.map(N=>N.name))),w=m.stringify(T)}else if(h.path!=null)w=h.path,m=n.find(N=>N.re.test(w)),m&&(T=m.parse(w),H=m.record.name);else{if(m=g.name?s.get(g.name):n.find(N=>N.re.test(g.path)),!m)throw Gt(se.MATCHER_NOT_FOUND,{location:h,currentLocation:g});H=m.record.name,T=G({},g.params,h.params),w=m.stringify(T)}const k=[];let O=m;for(;O;)k.unshift(O.record),O=O.parent;return{name:H,path:w,params:T,matched:k,meta:$u(k)}}e.forEach(h=>i(h));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:a,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function qr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function zr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Wu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Wu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Jr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function $u(e){return e.reduce((t,n)=>G(t,n.meta),{})}function qu(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;xo(e,t[i])<0?s=i:n=i+1}const r=zu(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function zu(e){let t=e;for(;t=t.parent;)if(Eo(t)&&xo(e,t)===0)return t}function Eo({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Qr(e){const t=Ne(ts),n=Ne(Xs),s=Te(()=>{const c=gt(e.to);return t.resolve(c)}),r=Te(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],h=n.matched;if(!f||!h.length)return-1;const g=h.findIndex(Kt.bind(null,f));if(g>-1)return g;const m=Yr(c[a-2]);return a>1&&Yr(f)===m&&h[h.length-1].path!==m?h.findIndex(Kt.bind(null,c[a-2])):g}),i=Te(()=>r.value>-1&&Xu(n.params,s.value.params)),o=Te(()=>r.value>-1&&r.value===n.matched.length-1&&_o(n.params,s.value.params));function l(c={}){if(Zu(c)){const a=t[gt(e.replace)?"replace":"push"](gt(e.to)).catch(on);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:Te(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function Ju(e){return e.length===1?e[0]:e}const Qu=_n({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Qr,setup(e,{slots:t}){const n=qn(Qr(e)),{options:s}=Ne(ts),r=Te(()=>({[Zr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Zr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Ju(t.default(n));return e.custom?i:hn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Yu=Qu;function Zu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Xu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!De(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Yr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Zr=(e,t,n)=>e??t??n,ef=_n({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ne(Ns),r=Te(()=>e.route||s.value),i=Ne(Kr,0),o=Te(()=>{let a=gt(i);const{matched:f}=r.value;let h;for(;(h=f[a])&&!h.components;)a++;return a}),l=Te(()=>r.value.matched[o.value]);Rn(Kr,Te(()=>o.value+1)),Rn(Pu,l),Rn(Ns,r);const c=xs();return wn(()=>[c.value,l.value,e.name],([a,f,h],[g,m,T])=>{f&&(f.instances[h]=a,m&&m!==f&&a&&a===g&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!Kt(f,m)||!g)&&(f.enterCallbacks[h]||[]).forEach(w=>w(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,h=l.value,g=h&&h.components[f];if(!g)return Xr(n.default,{Component:g,route:a});const m=h.props[f],T=m?m===!0?a.params:typeof m=="function"?m(a):m:null,H=hn(g,G({},T,t,{onVnodeUnmounted:k=>{k.component.isUnmounted&&(h.instances[f]=null)},ref:c}));return Xr(n.default,{Component:H,route:a})||H}}});function Xr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const tf=ef;function nf(e){const t=Gu(e.routes,e),n=e.parseQuery||Cu,s=e.stringifyQuery||Ur,r=e.history,i=Qt(),o=Qt(),l=Qt(),c=tl(dt);let a=dt;Dt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=as.bind(null,v=>""+v),h=as.bind(null,fu),g=as.bind(null,pn);function m(v,P){let S,M;return yo(v)?(S=t.getRecordMatcher(v),M=P):M=v,t.addRoute(M,S)}function T(v){const P=t.getRecordMatcher(v);P&&t.removeRoute(P)}function w(){return t.getRoutes().map(v=>v.record)}function H(v){return!!t.getRecordMatcher(v)}function k(v,P){if(P=G({},P||c.value),typeof v=="string"){const p=ds(n,v,P.path),_=t.resolve({path:p.path},P),b=r.createHref(p.fullPath);return G(p,_,{params:g(_.params),hash:pn(p.hash),redirectedFrom:void 0,href:b})}let S;if(v.path!=null)S=G({},v,{path:ds(n,v.path,P.path).path});else{const p=G({},v.params);for(const _ in p)p[_]==null&&delete p[_];S=G({},v,{params:h(p)}),P.params=h(P.params)}const M=t.resolve(S,P),B=v.hash||"";M.params=f(g(M.params));const u=hu(s,G({},v,{hash:lu(B),path:M.path})),d=r.createHref(u);return G({fullPath:u,hash:B,query:s===Ur?Ou(v.query):v.query||{}},M,{redirectedFrom:void 0,href:d})}function O(v){return typeof v=="string"?ds(n,v,c.value.path):G({},v)}function N(v,P){if(a!==v)return Gt(se.NAVIGATION_CANCELLED,{from:P,to:v})}function I(v){return ee(v)}function J(v){return I(G(O(v),{replace:!0}))}function ue(v,P){const S=v.matched[v.matched.length-1];if(S&&S.redirect){const{redirect:M}=S;let B=typeof M=="function"?M(v,P):M;return typeof B=="string"&&(B=B.includes("?")||B.includes("#")?B=O(B):{path:B},B.params={}),G({query:v.query,hash:v.hash,params:B.path!=null?{}:v.params},B)}}function ee(v,P){const S=a=k(v),M=c.value,B=v.state,u=v.force,d=v.replace===!0,p=ue(S,M);if(p)return ee(G(O(p),{state:typeof p=="object"?G({},B,p.state):B,force:u,replace:d}),P||S);const _=S;_.redirectedFrom=P;let b;return!u&&pu(s,M,S)&&(b=Gt(se.NAVIGATION_DUPLICATED,{to:_,from:M}),Fe(M,M,!0,!1)),(b?Promise.resolve(b):Ve(_,M)).catch(y=>Ze(y)?Ze(y,se.NAVIGATION_GUARD_REDIRECT)?y:at(y):K(y,_,M)).then(y=>{if(y){if(Ze(y,se.NAVIGATION_GUARD_REDIRECT))return ee(G({replace:d},O(y.to),{state:typeof y.to=="object"?G({},B,y.to.state):B,force:u}),P||_)}else y=vt(_,M,!0,d,B);return ft(_,M,y),y})}function Le(v,P){const S=N(v,P);return S?Promise.reject(S):Promise.resolve()}function ut(v){const P=It.values().next().value;return P&&typeof P.runWithContext=="function"?P.runWithContext(v):v()}function Ve(v,P){let S;const[M,B,u]=Tu(v,P);S=ps(M.reverse(),"beforeRouteLeave",v,P);for(const p of M)p.leaveGuards.forEach(_=>{S.push(pt(_,v,P))});const d=Le.bind(null,v,P);return S.push(d),we(S).then(()=>{S=[];for(const p of i.list())S.push(pt(p,v,P));return S.push(d),we(S)}).then(()=>{S=ps(B,"beforeRouteUpdate",v,P);for(const p of B)p.updateGuards.forEach(_=>{S.push(pt(_,v,P))});return S.push(d),we(S)}).then(()=>{S=[];for(const p of u)if(p.beforeEnter)if(De(p.beforeEnter))for(const _ of p.beforeEnter)S.push(pt(_,v,P));else S.push(pt(p.beforeEnter,v,P));return S.push(d),we(S)}).then(()=>(v.matched.forEach(p=>p.enterCallbacks={}),S=ps(u,"beforeRouteEnter",v,P,ut),S.push(d),we(S))).then(()=>{S=[];for(const p of o.list())S.push(pt(p,v,P));return S.push(d),we(S)}).catch(p=>Ze(p,se.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function ft(v,P,S){l.list().forEach(M=>ut(()=>M(v,P,S)))}function vt(v,P,S,M,B){const u=N(v,P);if(u)return u;const d=P===dt,p=Dt?history.state:{};S&&(M||d?r.replace(v.fullPath,G({scroll:d&&p&&p.scroll},B)):r.push(v.fullPath,B)),c.value=v,Fe(v,P,S,d),at()}let ke;function $t(){ke||(ke=r.listen((v,P,S)=>{if(!bt.listening)return;const M=k(v),B=ue(M,bt.currentRoute.value);if(B){ee(G(B,{replace:!0,force:!0}),M).catch(on);return}a=M;const u=c.value;Dt&&Eu(Br(u.fullPath,S.delta),es()),Ve(M,u).catch(d=>Ze(d,se.NAVIGATION_ABORTED|se.NAVIGATION_CANCELLED)?d:Ze(d,se.NAVIGATION_GUARD_REDIRECT)?(ee(G(O(d.to),{force:!0}),M).then(p=>{Ze(p,se.NAVIGATION_ABORTED|se.NAVIGATION_DUPLICATED)&&!S.delta&&S.type===Ts.pop&&r.go(-1,!1)}).catch(on),Promise.reject()):(S.delta&&r.go(-S.delta,!1),K(d,M,u))).then(d=>{d=d||vt(M,u,!1),d&&(S.delta&&!Ze(d,se.NAVIGATION_CANCELLED)?r.go(-S.delta,!1):S.type===Ts.pop&&Ze(d,se.NAVIGATION_ABORTED|se.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),ft(M,u,d)}).catch(on)}))}let Pt=Qt(),le=Qt(),z;function K(v,P,S){at(v);const M=le.list();return M.length?M.forEach(B=>B(v,P,S)):console.error(v),Promise.reject(v)}function Qe(){return z&&c.value!==dt?Promise.resolve():new Promise((v,P)=>{Pt.add([v,P])})}function at(v){return z||(z=!v,$t(),Pt.list().forEach(([P,S])=>v?S(v):P()),Pt.reset()),v}function Fe(v,P,S,M){const{scrollBehavior:B}=e;if(!Dt||!B)return Promise.resolve();const u=!S&&Au(Br(v.fullPath,0))||(M||!S)&&history.state&&history.state.scroll||null;return Ws().then(()=>B(v,P,u)).then(d=>d&&xu(d)).catch(d=>K(d,v,P))}const ve=v=>r.go(v);let Tt;const It=new Set,bt={currentRoute:c,listening:!0,addRoute:m,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:H,getRoutes:w,resolve:k,options:e,push:I,replace:J,go:ve,back:()=>ve(-1),forward:()=>ve(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:le.add,isReady:Qe,install(v){v.component("RouterLink",Yu),v.component("RouterView",tf),v.config.globalProperties.$router=bt,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>gt(c)}),Dt&&!Tt&&c.value===dt&&(Tt=!0,I(r.location).catch(M=>{}));const P={};for(const M in dt)Object.defineProperty(P,M,{get:()=>c.value[M],enumerable:!0});v.provide(ts,bt),v.provide(Xs,Ri(P)),v.provide(Ns,c);const S=v.unmount;It.add(v),v.unmount=function(){It.delete(v),It.size<1&&(a=dt,ke&&ke(),ke=null,c.value=dt,Tt=!1,z=!1),S()}}};function we(v){return v.reduce((P,S)=>P.then(()=>ut(S)),Promise.resolve())}return bt}function Lf(){return Ne(ts)}function sf(e){return Ne(Xs)}/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ei=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),rf=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,s)=>s?s.toUpperCase():n.toLowerCase()),of=e=>{const t=rf(e);return t.charAt(0).toUpperCase()+t.slice(1)},lf=(...e)=>e.filter((t,n,s)=>!!t&&t.trim()!==""&&s.indexOf(t)===n).join(" ").trim();/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var En={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cf=({size:e,strokeWidth:t=2,absoluteStrokeWidth:n,color:s,iconNode:r,name:i,class:o,...l},{slots:c})=>hn("svg",{...En,width:e||En.width,height:e||En.height,stroke:s||En.stroke,"stroke-width":n?Number(t)*24/Number(e):t,class:lf("lucide",...i?[`lucide-${ei(of(i))}-icon`,`lucide-${ei(i)}`]:["lucide-icon"]),...l},[...r.map(a=>hn(...a)),...c.default?[c.default()]:[]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ct=(e,t)=>(n,{slots:s})=>hn(cf,{...n,iconNode:t,name:e},s);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uf=ct("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ff=ct("cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const af=ct("file-code",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const df=ct("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hf=ct("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ti=ct("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pf=ct("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gf=ct("settings-2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gs=ct("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]),mf={class:"w-[200px] h-screen flex-shrink-0 overflow-y-auto",style:{"background-color":"#1a1a1a"}},_f={class:"px-4 py-2.5 text-xs font-semibold uppercase tracking-wider",style:{color:"rgba(255,255,255,0.4)"}},yf=_n({__name:"Sidebar",setup(e){const t=sf(),n=r=>r==="/"?t.path==="/":t.path===r||t.path.startsWith(r+"/"),s=[{title:"设备",items:[{path:"/devices",label:"设备列表",icon:pf},{path:"/models",label:"型号管理",icon:gf}]},{title:"授权",items:[{path:"/licenses",label:"授权管理",icon:ti},{path:"/activation",label:"激活管理",icon:ti}]},{title:"固件",items:[{path:"/firmware",label:"固件库",icon:ff}]},{title:"配置",items:[{path:"/config-files",label:"配置管理",icon:af}]},{title:"校准",items:[{path:"/calibration",label:"校准记录",icon:hf}]},{title:"维修",items:[{path:"/repair",label:"维修工单",icon:gs},{path:"/repair/stats",label:"维修统计",icon:gs},{path:"/scrap",label:"报废回收",icon:gs}]}];return(r,i)=>{const o=Qn("router-link");return Pe(),Ct("aside",mf,[i[1]||(i[1]=ce("div",{class:"px-4 py-4",style:{"border-bottom":"1px solid rgba(255,255,255,0.08)"}},[ce("div",{class:"text-lg font-semibold",style:{color:"#4a7c59"}},"Geomative")],-1)),te(o,{to:"/",class:"flex items-center gap-2 px-4 py-3 text-sm transition-colors",style:ln({color:"#fff",backgroundColor:n("/")?"#2d5a3d":"transparent",borderLeft:n("/")?"3px solid #4a7c59":"3px solid transparent"})},{default:Ft(()=>[...i[0]||(i[0]=[Fn(" 首页 ",-1)])]),_:1},8,["style"]),(Pe(),Ct(Se,null,Es(s,l=>ce("div",{key:l.title},[ce("div",_f,Pn(l.title),1),(Pe(!0),Ct(Se,null,Es(l.items,c=>(Pe(),Vn(o,{key:c.path,to:c.path,class:"flex items-center gap-2 px-4 py-2 text-sm transition-colors",style:ln({color:n(c.path)?"#fff":"rgba(255,255,255,0.65)",backgroundColor:n(c.path)?"#2d5a3d":"transparent",borderLeft:n(c.path)?"3px solid #4a7c59":"3px solid transparent"})},{default:Ft(()=>[(Pe(),Vn(Ol(c.icon),{size:16})),Fn(" "+Pn(c.label),1)]),_:2},1032,["to","style"]))),128))])),64))])}}}),vf={class:"h-14 flex items-center justify-between px-6 flex-shrink-0",style:{"background-color":"#fff","border-bottom":"1px solid #e8e8e8"}},bf={class:"flex items-center gap-4"},xf={key:0,class:"absolute right-0 top-10 w-36 rounded shadow-lg py-1 z-50",style:{"background-color":"#fff",border:"1px solid #e8e8e8"}},Ef=_n({__name:"Header",setup(e){const t=xs(!1),n=xs(),s=[{path:"/users",label:"用户管理"},{path:"/roles",label:"角色权限"},{path:"/logs",label:"操作日志"},{path:"/settings",label:"系统设置"}],r=i=>{n.value&&!n.value.contains(i.target)&&(t.value=!1)};return ki(()=>document.addEventListener("mousedown",r)),zs(()=>document.removeEventListener("mousedown",r)),(i,o)=>{const l=Qn("router-link");return Pe(),Ct("header",vf,[o[6]||(o[6]=ce("div",{class:"flex items-center gap-2"},[ce("h1",{class:"text-base font-semibold",style:{color:"#1a1a1a"}},"地空业务支撑平台——生产管理子系统")],-1)),ce("div",bf,[te(l,{to:"/reports",class:"text-gray-500 hover:text-gray-900 transition-colors",title:"数据统计"},{default:Ft(()=>[te(gt(uf),{size:18})]),_:1}),te(l,{to:"/cost-reports",class:"text-gray-500 hover:text-gray-900 transition-colors",title:"运营报告"},{default:Ft(()=>[te(gt(df),{size:18})]),_:1}),o[5]||(o[5]=ce("div",{class:"w-px h-5 bg-gray-200"},null,-1)),ce("div",{ref_key:"menuRef",ref:n,class:"relative"},[ce("button",{onClick:o[0]||(o[0]=c=>t.value=!t.value),class:"flex items-center gap-2 cursor-pointer"},[...o[2]||(o[2]=[ce("span",{class:"text-sm",style:{color:"#1a1a1a"}},"Super Admin",-1),ce("span",{class:"px-2 py-0.5 rounded text-xs text-white",style:{"background-color":"#4a7c59"}},"管理员",-1)])]),t.value?(Pe(),Ct("div",xf,[(Pe(),Ct(Se,null,Es(s,c=>te(l,{key:c.path,to:c.path,onClick:o[1]||(o[1]=a=>t.value=!1),class:"block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors"},{default:Ft(()=>[Fn(Pn(c.label),1)]),_:2},1032,["to"])),64)),o[3]||(o[3]=ce("div",{style:{"border-top":"1px solid #F0F0F0"}},null,-1)),o[4]||(o[4]=ce("button",{class:"block w-full text-left px-4 py-2 text-sm",style:{color:"#FF4D4F"}},"退出",-1))])):rc("",!0)],512)])])}}}),Af={class:"flex h-screen overflow-hidden"},Rf={class:"flex-1 flex flex-col overflow-hidden"},wf={class:"flex-1 overflow-auto",style:{"background-color":"#F0F2F5"}},Sf=_n({__name:"Layout",setup(e){return(t,n)=>{const s=Qn("router-view");return Pe(),Ct("div",Af,[te(yf),ce("div",Rf,[te(Ef),ce("main",wf,[te(s)])])])}}}),Cf=nf({history:Du(),routes:[{path:"/",component:Sf,children:[{path:"",component:()=>ne(()=>import("./Dashboard--eri3aJi.js"),__vite__mapDeps([0,1,2,3]))},{path:"models",component:()=>ne(()=>import("./DeviceModelManagement-DADpSpiv.js"),__vite__mapDeps([4,5,6,7,1,8]))},{path:"devices",component:()=>ne(()=>import("./DeviceList-NCBTEyEZ.js"),__vite__mapDeps([9,10,6,11]))},{path:"devices/:id",component:()=>ne(()=>import("./DeviceDetail-CiWFBze4.js"),__vite__mapDeps([12,13,2]))},{path:"registration",component:()=>ne(()=>import("./DeviceRegistration-CmbG4qLB.js"),__vite__mapDeps([14,8,3,7,10]))},{path:"licenses",component:()=>ne(()=>import("./LicenseManagement-DIHeCigb.js"),__vite__mapDeps([15,10,6,5,7]))},{path:"licenses/generate",component:()=>ne(()=>import("./LicenseGenerate-CsoTS0Do.js"),__vite__mapDeps([16,13,5]))},{path:"activation",component:()=>ne(()=>import("./ActivationManagement-DuZO7LSx.js"),__vite__mapDeps([17,5]))},{path:"calibration",component:()=>ne(()=>import("./CalibrationRecords-gMo2tbHk.js"),__vite__mapDeps([18,5]))},{path:"repair",component:()=>ne(()=>import("./RepairOrders-Cub_3lJ7.js"),__vite__mapDeps([19,6,3,10,13]))},{path:"repair/stats",component:()=>ne(()=>import("./RepairStats-DDRWP6tS.js"),__vite__mapDeps([20,10]))},{path:"repair/:orderId",component:()=>ne(()=>import("./RepairOrderDetail-Bn3R9Puf.js"),__vite__mapDeps([21,13]))},{path:"scrap",component:()=>ne(()=>import("./ScrapManagement-U9YcVefM.js"),__vite__mapDeps([22,3,10,5]))},{path:"firmware",component:()=>ne(()=>import("./FirmwareLibrary-XKwdIJ2N.js"),__vite__mapDeps([23,3]))},{path:"firmware-upgrade",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"升级任务"}},{path:"calibration-reports",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"校准报告"}},{path:"config-files",component:()=>ne(()=>import("./ConfigFileManagement-CPVgUNG2.js"),__vite__mapDeps([24,6,5,11]))},{path:"config-files/:configId",component:()=>ne(()=>import("./ParameterConfiguration-eKxkO1XH.js"),__vite__mapDeps([25,13]))},{path:"reports",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"数据报表"}},{path:"logs",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"操作日志"}},{path:"settings",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"系统设置"}},{path:":pathMatch(.*)*",component:()=>ne(()=>import("./PlaceholderPage-hha3Zgt8.js"),[]),props:{title:"页面未找到"}}]}]});Uc(zc).use(Cf).mount("#app");export{sf as A,Se as F,gs as W,Ct as a,ce as b,ct as c,_n as d,Qn as e,te as f,Vn as g,rc as h,Ol as i,Fn as j,Te as k,Df as l,Of as m,ln as n,Pe as o,Mf as p,Nf as q,Es as r,xs as s,Pn as t,gt as u,Tf as v,Ft as w,Pf as x,Lf as y,If as z}; diff --git a/dist/assets/index-CRkCzBUD.css b/dist/assets/index-CRkCzBUD.css new file mode 100644 index 0000000..61e090e --- /dev/null +++ b/dist/assets/index-CRkCzBUD.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wider:.05em;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html{font-size:var(--font-size)}h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}h4,label,button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-6{top:calc(var(--spacing)*6)}.top-10{top:calc(var(--spacing)*10)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-6{left:calc(var(--spacing)*6)}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-12{margin-left:calc(var(--spacing)*12)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-40{height:calc(var(--spacing)*40)}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[80vh\]{max-height:80vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-\[200px\]{width:200px}.w-\[480px\]{width:480px}.w-\[520px\]{width:520px}.w-\[540px\]{width:540px}.w-\[560px\]{width:560px}.w-\[640px\]{width:640px}.w-full{width:100%}.w-px{width:1px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-12{column-gap:calc(var(--spacing)*12)}.gap-y-6{row-gap:calc(var(--spacing)*6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.bg-gray-200{background-color:var(--color-gray-200)}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pl-5{padding-left:calc(var(--spacing)*5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:text-blue-500:hover{color:var(--color-blue-500)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}:root{--font-size:16px;--background:#f0f2f5;--foreground:#000;--card:#fff;--card-foreground:#000;--primary:#4a7c59;--success:#52c41a;--warning:#faad14;--error:#ff4d4f;--sidebar-bg:#1a1a1a;--sidebar-text:#ffffffd9;--sidebar-active:#2d5a3d;--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--secondary:oklch(95% .0058 264.53);--secondary-foreground:#030213;--muted:#ececf0;--muted-foreground:#717182;--accent:#e9ebef;--accent-foreground:#030213;--destructive:#d4183d;--destructive-foreground:#fff;--border:#0000001a;--input:transparent;--input-background:#f3f3f5;--switch-background:#cbced4;--font-weight-medium:500;--font-weight-normal:400;--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:#030213;--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(14.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(14.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(39.6% .141 25.723);--destructive-foreground:oklch(63.7% .237 25.331);--border:oklch(26.9% 0 0);--input:oklch(26.9% 0 0);--ring:oklch(43.9% 0 0);--font-weight-medium:500;--font-weight-normal:400;--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(26.9% 0 0);--sidebar-ring:oklch(43.9% 0 0)}button:not(:disabled),a[href],[role=button],router-link{cursor:pointer;transition:opacity .2s,filter .2s,transform .15s,box-shadow .2s}button:not(:disabled):hover{filter:brightness(1.08);box-shadow:0 2px 6px #0000001a}button[style*="color: #4a7c59"]:not(:disabled):hover,a[style*="color: #4a7c59"]:hover,button[style*="color: #FF4D4F"]:not(:disabled):hover,a[style*="color: #FF4D4F"]:hover,button[style*="color: #52C41A"]:not(:disabled):hover,a[style*="color: #52C41A"]:hover{opacity:.75}a.block:hover{box-shadow:0 4px 12px #00000014}button:disabled{cursor:not-allowed;opacity:.5}tbody tr{transition:background-color .15s}tbody tr:hover{background-color:#fafafa}aside a:hover{filter:brightness(1.15)}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000} diff --git a/dist/assets/info-DbTQmklK.js b/dist/assets/info-DbTQmklK.js new file mode 100644 index 0000000..ee0ea89 --- /dev/null +++ b/dist/assets/info-DbTQmklK.js @@ -0,0 +1,6 @@ +import{c}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o=c("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);export{o as I}; diff --git a/dist/assets/plus-BfKzmzQH.js b/dist/assets/plus-BfKzmzQH.js new file mode 100644 index 0000000..7c631d7 --- /dev/null +++ b/dist/assets/plus-BfKzmzQH.js @@ -0,0 +1,6 @@ +import{c as e}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a=e("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);export{a as P}; diff --git a/dist/assets/search-BFqPyJ5C.js b/dist/assets/search-BFqPyJ5C.js new file mode 100644 index 0000000..3ad4026 --- /dev/null +++ b/dist/assets/search-BFqPyJ5C.js @@ -0,0 +1,6 @@ +import{c}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r=c("search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);export{r as S}; diff --git a/dist/assets/server-hSQBXLWa.js b/dist/assets/server-hSQBXLWa.js new file mode 100644 index 0000000..43c8b3a --- /dev/null +++ b/dist/assets/server-hSQBXLWa.js @@ -0,0 +1,6 @@ +import{c as e}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y=e("server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);export{y as S}; diff --git a/dist/assets/triangle-alert-DaaA5cmC.js b/dist/assets/triangle-alert-DaaA5cmC.js new file mode 100644 index 0000000..b0ce3a2 --- /dev/null +++ b/dist/assets/triangle-alert-DaaA5cmC.js @@ -0,0 +1,11 @@ +import{c as e}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a=e("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r=e("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);export{a as C,r as T}; diff --git a/dist/assets/upload-Cl9qkJl5.js b/dist/assets/upload-Cl9qkJl5.js new file mode 100644 index 0000000..b3d5dda --- /dev/null +++ b/dist/assets/upload-Cl9qkJl5.js @@ -0,0 +1,6 @@ +import{c as o}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a=o("upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);export{a as U}; diff --git a/dist/assets/x-Cy9cTPf9.js b/dist/assets/x-Cy9cTPf9.js new file mode 100644 index 0000000..44ba373 --- /dev/null +++ b/dist/assets/x-Cy9cTPf9.js @@ -0,0 +1,6 @@ +import{c as e}from"./index-C5t0nGiQ.js";/** + * @license lucide-vue-next v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c=e("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);export{c as X}; diff --git a/docs/flowchart.md b/docs/flowchart.md new file mode 100644 index 0000000..3f992c8 --- /dev/null +++ b/docs/flowchart.md @@ -0,0 +1,136 @@ +# 地空业务支撑平台 —— 生产管理子系统 流程图 + +```mermaid +flowchart TD + +%% ===== 入口 ===== +HOME["首页 Dashboard\n设备统计 · 待处理任务 · 快捷导航"] + +%% ===== 阶段零:型号管理(核心枢纽)===== +subgraph S0["型号管理(核心枢纽)"] + MODEL["设备型号管理\n型号列表 · 在产/停产"] + MODEL -->|绑定| AUTH_FILE["授权文件\n按型号绑定"] + MODEL -->|绑定| CFG_FILE["配置文件\n按型号绑定"] + MODEL -->|绑定| FW_FILE["固件文件\n主机/主协板/发射板/采集板"] + MODEL -->|管理| CHECKLIST["装配Checklist模板\n按型号配置检查项"] +end + +%% ===== 阶段一:固件与校准 ===== +subgraph S1["阶段一:固件与校准"] + FW_LIB["固件库\n主机固件 · 主协板固件\n发射板固件 · 采集板固件"] + FW_LIB -->|上传zip| FW_UPLOAD["上传固件弹窗\n选择类型 · 版本号 · zip文件"] + FW_LIB -->|烧录采集板| CALIB["采集板校准记录\n校准数据管理"] +end + +%% ===== 阶段二:生产装配 ===== +subgraph S2["阶段二:生产装配"] + DEV_REG["设备登记\n装机信息 · BOM清单 · Checklist"] + DEV_REG -->|导入BOM| IMPORT_DIALOG["Excel导入弹窗\n下载模板 · 上传文件"] + DEV_REG -->|拍照上传| PHOTO_DIALOG["照片上传弹窗\n多张照片 · 备注"] + DEV_REG -->|登记完成| DEV_LIST["设备列表\n筛选 · 搜索 · 状态"] + DEV_LIST -->|点击详情| DEV_DETAIL["设备详情\n基本信息 \n授权信息 · 装配记录\n子设备列表 · 维修历史"] +end + +%% ===== 阶段三:授权出厂 ===== +subgraph S3["阶段三:授权出厂"] + LIC_MGR["授权管理\n授权文件列表 · 按型号管理"] + LIC_MGR -->|选择授权项生成| LIC_DRAWER["授权项抽屉\n选择型号 · 勾选功能模块\n设置有效期 · 生成授权文件"] +end + +%% ===== 阶段四:APP使用(非平台)===== +subgraph S4["阶段四:APP使用"] + APP["APP端操作"] + APP -->|读取UID/SN匹配| CALIB + APP -->|按型号下载| AUTH_FILE + APP -->|按型号下载| CFG_FILE + APP -->|按型号下载| FW_FILE +end + +%% ===== 阶段五:配置管理 ===== +subgraph S5["阶段五:配置管理"] + CFG_MGR["配置文件管理\n配置列表 · 筛选"] + CFG_MGR -->|新建配置抽屉| CFG_NEW["新建配置抽屉\n选择型号 · 发射参数\n采集参数 · 网络参数"] + CFG_MGR -->|编辑详情| PARAM_CFG["参数配置\n发射参数 · 采集参数\n保护参数 · 网络参数"] +end + +%% ===== 阶段六:维修运维 ===== +subgraph S6["阶段六:维修运维"] + REPAIR["维修工单列表\n筛选 · 状态 · 优先级"] + REPAIR -->|新建工单抽屉| NEW_ORDER["新建工单抽屉\n设备信息 · 故障信息 · 工单信息"] + REPAIR -->|处理抽屉| PROCESS["处理工单抽屉\n更换板卡 · 授权处理 · 报废申请"] + REPAIR -->|详情抽屉| ORDER_DETAIL["工单详情抽屉\n工单/设备/故障信息\n处理记录 · 板卡更换 · 授权处理"] + REPAIR -->|维修统计| REPAIR_STATS["维修统计\n故障分布 · 维修趋势"] +end + +%% ===== 阶段七:报废回收 ===== +subgraph S7["阶段七:报废回收"] + SCRAP["报废管理\n报废设备列表 · 审批流程"] + SCRAP -->|关联工单| ORDER_DETAIL + SCRAP -->|回收入库| DEV_REG +end + +%% ===== 首页导航 ===== +HOME -->|待校准设备| CALIB +HOME -->|待处理工单| REPAIR +HOME -->|授权即将到期| LIC_MGR +HOME -->|固件待升级| FW_LIB +HOME -->|设备总数| DEV_LIST +HOME --> MODEL + +%% ===== 型号管理跨模块关联 ===== +MODEL -->|授权按钮| LIC_MGR +MODEL -->|配置按钮| CFG_MGR +MODEL -->|固件按钮| FW_LIB +MODEL -->|Checklist模板| DEV_REG + +%% ===== 跨阶段数据流 ===== +DEV_REG -->|型号必须匹配| MODEL +DEV_DETAIL -->|查看校准| CALIB +DEV_DETAIL -->|查看维修历史| REPAIR +PROCESS -->|申请报废| SCRAP +ORDER_DETAIL -->|更换采集板需重新校准| CALIB +FW_LIB -->|关联型号固件| MODEL + +%% ===== 支撑模块 ===== +subgraph SUPPORT["支撑模块(Header菜单)"] + DATA_STATS["数据统计"] + OPS_RPT["运营报告"] + USER_MGR["用户管理"] + ROLE_MGR["角色权限"] + SYS_LOG["操作日志"] + SYS_SET["系统设置"] +end + +%% 样式 +style S0 fill:#F0F2F5,stroke:#8C8C8C,stroke-width:2px +style S1 fill:#F9F0FF,stroke:#722ED1,stroke-width:2px +style S2 fill:#eef5f0,stroke:#4a7c59,stroke-width:2px +style S3 fill:#E6FFFB,stroke:#13C2C2,stroke-width:2px +style S4 fill:#F6FFED,stroke:#52C41A,stroke-width:2px,stroke-dasharray: 5 5 +style S5 fill:#FFF7E6,stroke:#FA8C16,stroke-width:2px +style S6 fill:#FFF1F0,stroke:#FF4D4F,stroke-width:2px +style S7 fill:#FAFAFA,stroke:#D9D9D9,stroke-width:2px +style SUPPORT fill:#FAFAFA,stroke:#D9D9D9,stroke-width:1px +style HOME fill:#4a7c59,color:#FFFFFF,stroke:#4a7c59 +style APP fill:#F6FFED,stroke:#52C41A,stroke-dasharray: 5 5 +``` + +## 页面清单 + +| 模块 | 页面 | 路由 | 交互方式 | +|------|------|------|----------| +| 首页 | Dashboard | `/` | 卡片点击跳转 | +| 设备 | 设备列表 | `/devices` | 筛选/详情跳转 | +| 设备 | 设备详情 | `/devices/:id` | 页面 | +| 设备 | 设备登记 | `/registration` | 弹窗(导入/拍照) | +| 设备 | 型号管理 | `/models` | 抽屉(新增型号/Checklist模板) | +| 授权 | 授权管理 | `/licenses` | 抽屉(选择授权项生成) | +| 固件 | 固件库 | `/firmware` | 弹窗(上传固件) Tab分类 | +| 配置 | 配置管理 | `/config-files` | 抽屉(新建配置) | +| 配置 | 参数配置 | `/config-files/:id` | 页面 | +| 校准 | 校准记录 | `/calibration` | 页面 | +| 维修 | 维修工单 | `/repair` | 抽屉(新建/处理/详情) | +| 维修 | 维修统计 | `/repair/stats` | 页面 | +| 维修 | 工单详情 | `/repair/:orderId` | 页面 | +| 报废 | 报废管理 | `/scrap` | 页面 | +| 系统 | 用户/角色/日志/设置 | Header菜单 | 页面(占位) | diff --git a/docs/mermaid-diagram-2026-04-02-155412.png b/docs/mermaid-diagram-2026-04-02-155412.png new file mode 100644 index 0000000..3f4ae09 Binary files /dev/null and b/docs/mermaid-diagram-2026-04-02-155412.png differ diff --git a/src/app/pages/RepairOrders.vue b/src/app/pages/RepairOrders.vue new file mode 100644 index 0000000..7f36480 --- /dev/null +++ b/src/app/pages/RepairOrders.vue @@ -0,0 +1,478 @@ + + + diff --git a/src/app/pages/RepairStats.vue b/src/app/pages/RepairStats.vue new file mode 100644 index 0000000..7e2a52a --- /dev/null +++ b/src/app/pages/RepairStats.vue @@ -0,0 +1,95 @@ + + +