diff --git a/app/__pycache__/app.cpython-312.pyc b/app/__pycache__/app.cpython-312.pyc index 234a9f4..c0ed153 100644 Binary files a/app/__pycache__/app.cpython-312.pyc and b/app/__pycache__/app.cpython-312.pyc differ diff --git a/app/__pycache__/config.cpython-312.pyc b/app/__pycache__/config.cpython-312.pyc index d650bd0..6b0f230 100644 Binary files a/app/__pycache__/config.cpython-312.pyc and b/app/__pycache__/config.cpython-312.pyc differ diff --git a/app/assets/convert-B191qXN9.css b/app/assets/convert-B191qXN9.css new file mode 100644 index 0000000..453ad3a --- /dev/null +++ b/app/assets/convert-B191qXN9.css @@ -0,0 +1 @@ +.module-page[data-v-9f5ef1a0]{min-height:100vh;background:#1a1a1a}.main-content[data-v-9f5ef1a0]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-9f5ef1a0]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-9f5ef1a0]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-9f5ef1a0]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-9f5ef1a0]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-9f5ef1a0]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-9f5ef1a0]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-9f5ef1a0]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-9f5ef1a0],.btn-run[data-v-9f5ef1a0],.download[data-v-9f5ef1a0],.btn-delete[data-v-9f5ef1a0],.template-download-row[data-v-9f5ef1a0]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-9f5ef1a0]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-9f5ef1a0]{padding:6px 10px;font-size:12px}.opt-btn[data-v-9f5ef1a0]:hover{color:#3498db;background:#333;border-color:#3498db}.opt-btn.danger[data-v-9f5ef1a0]:hover{color:#ff9f9f;border-color:#e74c3c80}.opt-btn[data-v-9f5ef1a0]:disabled{cursor:not-allowed;opacity:.55}.selected-files[data-v-9f5ef1a0]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-9f5ef1a0]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-9f5ef1a0]{color:#b8c1cc}.option-group[data-v-9f5ef1a0]{margin-bottom:20px}.radio-item[data-v-9f5ef1a0]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.template-item-content[data-v-9f5ef1a0]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.radio-item[data-v-9f5ef1a0]:hover,.radio-item.active[data-v-9f5ef1a0]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-9f5ef1a0]{margin-top:3px}.label[data-v-9f5ef1a0]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-9f5ef1a0]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.template-tag[data-v-9f5ef1a0]{margin-left:8px;padding:2px 8px;border-radius:999px;font-size:11px;color:#8fd0ff;background:#3498db24}.template-tag.muted[data-v-9f5ef1a0]{color:#b8b8b8;background:#ffffff14}.template-tag.custom[data-v-9f5ef1a0]{color:#90f0b3;background:#2ecc7124}.empty-option[data-v-9f5ef1a0]{padding:12px;border:1px dashed #3a3a3a;border-radius:8px;color:#777;font-size:12px}.template-actions[data-v-9f5ef1a0]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px}.template-actions-hint[data-v-9f5ef1a0]{grid-column:1 / -1;font-size:12px;color:#888;line-height:1.5}.hidden-file-input[data-v-9f5ef1a0]{display:none}.template-download-list[data-v-9f5ef1a0]{display:grid;gap:10px;margin-bottom:20px}.template-download-row[data-v-9f5ef1a0]{width:100%;padding:14px 16px;background:linear-gradient(135deg,#252525,#1f2b1f);border:1px solid #2a3a2a;border-radius:10px;display:flex;align-items:center;gap:14px;text-align:left}.template-download-row[data-v-9f5ef1a0]:hover{border-color:#2e7d32;background:linear-gradient(135deg,#2a2a2a,#243324);box-shadow:0 4px 12px #2e7d3226}.template-download-icon[data-v-9f5ef1a0]{width:48px;height:48px;flex-shrink:0;border-radius:10px;background:linear-gradient(145deg,#1b5e20,#2e7d32,#388e3c);display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em}.template-download-text[data-v-9f5ef1a0]{display:flex;flex-direction:column;min-width:0}.template-download-text .title[data-v-9f5ef1a0]{font-size:14px;color:#e0e0e0;font-weight:600}.template-download-text .hint[data-v-9f5ef1a0]{margin:2px 0 0;font-size:12px;color:#888}.run-row[data-v-9f5ef1a0]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-9f5ef1a0]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-9f5ef1a0]:hover{background:#2980b9}.btn-run[data-v-9f5ef1a0]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-9f5ef1a0]{color:#3498db;font-size:13px}.panel-header[data-v-9f5ef1a0]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-9f5ef1a0]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-9f5ef1a0]{list-style:none;margin:0;padding:0}.task-item[data-v-9f5ef1a0]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.left[data-v-9f5ef1a0]{flex:1;min-width:0}.id[data-v-9f5ef1a0]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-9f5ef1a0]{font-size:12px;color:#888;margin-top:4px}.task-right[data-v-9f5ef1a0]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.status[data-v-9f5ef1a0]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-9f5ef1a0]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-9f5ef1a0]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-9f5ef1a0]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-9f5ef1a0]:hover{background:#3498db47}.btn-delete[data-v-9f5ef1a0]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-9f5ef1a0]:hover{background:#e74c3c38}.empty-tasks[data-v-9f5ef1a0]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-9f5ef1a0]{max-height:none}.clean-result-summary[data-v-9f5ef1a0]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-9f5ef1a0]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-9f5ef1a0]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-9f5ef1a0]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-9f5ef1a0]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-9f5ef1a0]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-9f5ef1a0]{flex-direction:column;height:auto}.left-panel[data-v-9f5ef1a0]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-9f5ef1a0]{min-height:420px}.task-item[data-v-9f5ef1a0]{flex-direction:column;align-items:flex-start}.task-right[data-v-9f5ef1a0]{width:100%;justify-content:flex-start}.clean-result-summary[data-v-9f5ef1a0]{grid-template-columns:1fr}} diff --git a/app/assets/convert-D4Yv2oRy.css b/app/assets/convert-D4Yv2oRy.css deleted file mode 100644 index 93a0d05..0000000 --- a/app/assets/convert-D4Yv2oRy.css +++ /dev/null @@ -1 +0,0 @@ -.module-page[data-v-c631a759]{min-height:100vh;background:#1a1a1a}.main-content[data-v-c631a759]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-c631a759]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-c631a759]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-c631a759]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-c631a759]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-c631a759]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-c631a759]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-c631a759]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-c631a759],.btn-run[data-v-c631a759],.download[data-v-c631a759],.btn-delete[data-v-c631a759]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-c631a759]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-c631a759]{padding:6px 10px;font-size:12px}.opt-btn[data-v-c631a759]:hover{color:#3498db;background:#333;border-color:#3498db}.selected-files[data-v-c631a759]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-c631a759]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-c631a759]{color:#b8c1cc}.option-group[data-v-c631a759]{margin-bottom:20px}.radio-item[data-v-c631a759]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.template-item-content[data-v-c631a759]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.radio-item[data-v-c631a759]:hover,.radio-item.active[data-v-c631a759]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-c631a759]{margin-top:3px}.label[data-v-c631a759]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-c631a759]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.template-tag[data-v-c631a759]{margin-left:8px;padding:2px 8px;border-radius:999px;font-size:11px;color:#8fd0ff;background:#3498db24}.template-tag.muted[data-v-c631a759]{color:#b8b8b8;background:#ffffff14}.run-row[data-v-c631a759]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-c631a759]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-c631a759]:hover{background:#2980b9}.btn-run[data-v-c631a759]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-c631a759]{color:#3498db;font-size:13px}.panel-header[data-v-c631a759]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-c631a759]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-c631a759]{list-style:none;margin:0;padding:0}.task-item[data-v-c631a759]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.left[data-v-c631a759]{flex:1;min-width:0}.id[data-v-c631a759]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-c631a759]{font-size:12px;color:#888;margin-top:4px}.task-right[data-v-c631a759]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.status[data-v-c631a759]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-c631a759]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-c631a759]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-c631a759]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-c631a759]:hover{background:#3498db47}.btn-delete[data-v-c631a759]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-c631a759]:hover{background:#e74c3c38}.empty-tasks[data-v-c631a759]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-c631a759]{max-height:none}.clean-result-summary[data-v-c631a759]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-c631a759]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-c631a759]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-c631a759]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-c631a759]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-c631a759]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-c631a759]{flex-direction:column;height:auto}.left-panel[data-v-c631a759]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-c631a759]{min-height:420px}.task-item[data-v-c631a759]{flex-direction:column;align-items:flex-start}.task-right[data-v-c631a759]{width:100%;justify-content:flex-start}.clean-result-summary[data-v-c631a759]{grid-template-columns:1fr}} diff --git a/app/assets/convert.js b/app/assets/convert.js index fb8b14a..fde74ca 100644 --- a/app/assets/convert.js +++ b/app/assets/convert.js @@ -1 +1 @@ -import{d as R,o as P,a as l,c as n,b as V,B as H,e as s,F as y,r as C,t as r,f as m,n as F,w as j,u as z,x as A,g as d,h as E,y as K,i as g,E as o,j as M,z as q,A as J,C as L,_ as O,q as G,s as Q}from"./pywebview-Rm5Hhqpf.js";const W={class:"page-shell module-page"},X={class:"main-content"},Y={class:"left-panel"},Z={class:"upload-zone"},ee={class:"selected-files clean-placeholder"},se={key:0,class:"more-line"},te={key:1},ae={class:"option-group"},le=["value"],ne={class:"template-item-content"},oe={class:"label"},re={key:0,class:"template-tag"},ie={key:1,class:"template-tag muted"},ce={class:"desc"},ue={class:"option-group"},de={class:"radio-item active"},ve={class:"desc"},pe={class:"run-row"},_e=["disabled"],fe={class:"loading-msg"},me={class:"right-panel"},he={class:"task-list-wrap"},ye={class:"clean-result-summary"},ge={class:"summary-card"},be={class:"summary-card"},we={class:"summary-card"},ke={class:"result-list-wrap"},Ce={key:0,class:"empty-tasks"},xe={key:1,class:"task-list clean-result-list"},Fe={class:"left"},Ee=["title"],Te={key:0,class:"files"},Ie={key:1,class:"files"},Be={class:"task-right"},$e=["onClick"],De=["onClick"],Se=R({__name:"BrandConvertTab",setup(Ne){const v=d([]),b=d([]),p=d(!1),h=d([]),_=d({total:0,successCount:0,failedCount:0,items:[]}),u=d([]),c=d(""),w=E(()=>v.value.slice(0,8)),T=E(()=>u.value.find(a=>a.id===c.value)||null);async function I(a){const e=g();if(!e?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const i of a){const f=await e.upload_file_to_java(i);if(!f?.success||!f.data)throw new Error(f?.error||f?.message||`上传失败:${i}`);t.push(f.data)}return t}async function B(){const a=await K();u.value=a||[];const e=u.value.find(t=>t.isDefault);if(e){c.value=e.id;return}u.value.length&&!u.value.some(t=>t.id===c.value)&&(c.value=u.value[0].id)}async function x(a,e){v.value=a,b.value=await I(a),o.success(e)}async function $(){const a=g();if(!a?.select_brand_xlsx_files){o.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const e=await a.select_brand_xlsx_files();if(!e?.length)return;await x(e,`已选择 ${e.length} 个待转换文件`)}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function D(){const a=g();if(!a?.select_brand_folder){o.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const e=await a.select_brand_folder();if(!e)return;const t=await M(e);if(t.success&&t.paths?.length){await x(t.paths,`已选择文件夹内 ${t.paths.length} 个 xlsx 文件`);return}o.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function S(){if(!b.value.length){o.warning("请先选择待转换 Excel 文件或文件夹");return}if(!c.value){o.warning("请先选择模板");return}try{p.value=!0;const a=await q({files:b.value.map(e=>({fileKey:e.fileKey,originalFilename:e.originalFilename})),templateId:c.value});_.value=a,h.value=a.items||[],await k(),o.success("格式转换完成")}catch(a){o.error(a instanceof Error?a.message:"格式转换失败")}finally{p.value=!1}}async function k(){try{const a=await J();h.value=a.items||[],_.value={total:a.items?.length||0,successCount:a.items?.filter(e=>e.success).length||0,failedCount:a.items?.filter(e=>!e.success).length||0,items:a.items||[]}}catch{}}async function U(a){try{await L(a),await k(),o.success("已删除")}catch(e){o.error(e instanceof Error?e.message:"删除失败")}}async function N(a){const e=g();if(!a.downloadUrl){o.warning("当前结果没有下载地址");return}const t=a.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}.txt`;if(e?.save_file_from_url){const i=await e.save_file_from_url(a.downloadUrl,t);i.success?o.success(`已保存:${i.path||t}`):i.error&&i.error!=="用户取消"&&o.error(i.error);return}window.open(a.downloadUrl,"_blank")}return P(()=>{B().catch(()=>{}),k().catch(()=>{})}),(a,e)=>(l(),n("div",W,[V(H,{active:"convert"}),s("div",X,[s("aside",Y,[e[5]||(e[5]=s("div",{class:"section-title"},"选择文件",-1)),s("div",Z,[e[1]||(e[1]=s("div",{class:"hint"},"选择需要转换的 Excel 文件或文件夹,将按所选模板生成 txt 文件。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:$},"选择 Excel 文件"),s("button",{type:"button",class:"opt-btn",onClick:D},"选择文件夹")]),s("div",ee,[v.value.length?(l(),n(y,{key:0},[(l(!0),n(y,null,C(w.value,t=>(l(),n("span",{key:t},r(t),1))),128)),v.value.length>w.value.length?(l(),n("span",se," 还有 "+r(v.value.length-w.value.length)+" 个文件未展开显示 ",1)):m("",!0)],64)):(l(),n("span",te,"暂未选择待转换文件"))])]),e[6]||(e[6]=s("div",{class:"section-title"},"模板选择",-1)),s("div",ae,[(l(!0),n(y,null,C(u.value,t=>(l(),n("label",{key:t.id,class:F(["radio-item",{active:c.value===t.id}])},[j(s("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>c.value=i),type:"radio",value:t.id,name:"convert-template"},null,8,le),[[z,c.value]]),s("div",ne,[s("div",null,[s("span",oe,[A(r(t.templateName)+" ",1),t.isDefault?(l(),n("span",re,"默认")):t.builtIn?(l(),n("span",ie,"内置")):m("",!0)]),s("div",ce,"输出文件:"+r(t.outputFilename),1)])])],2))),128))]),e[7]||(e[7]=s("div",{class:"section-title"},"转换说明",-1)),s("div",ue,[s("label",de,[e[3]||(e[3]=s("input",{type:"checkbox",checked:"",disabled:""},null,-1)),s("div",null,[e[2]||(e[2]=s("span",{class:"label"},"按当前模板输出",-1)),s("div",ve,"当前模板:"+r(T.value?.templateName||"未加载模板"),1)])]),e[4]||(e[4]=s("label",{class:"radio-item active"},[s("input",{type:"checkbox",checked:"",disabled:""}),s("div",null,[s("span",{class:"label"},"SKU 使用雪花ID-序号"),s("div",{class:"desc"},"例如 1773816146796-1")])],-1))]),s("div",pe,[s("button",{type:"button",class:"btn-run",disabled:p.value,onClick:S},r(p.value?"转换中...":"开始转换"),9,_e),s("span",fe,r(p.value?"正在生成并上传结果,请稍候…":"选择文件后即可执行格式转换,结果会显示在右侧供下载"),1)])]),s("section",me,[e[12]||(e[12]=s("div",{class:"panel-header"},"转换结果",-1)),s("div",he,[s("div",ye,[s("div",ge,[e[8]||(e[8]=s("span",{class:"summary-label"},"已处理文件",-1)),s("strong",null,r(_.value.total),1)]),s("div",be,[e[9]||(e[9]=s("span",{class:"summary-label"},"成功结果",-1)),s("strong",null,r(_.value.successCount),1)]),s("div",we,[e[10]||(e[10]=s("span",{class:"summary-label"},"失败文件",-1)),s("strong",null,r(_.value.failedCount),1)])]),s("div",ke,[e[11]||(e[11]=s("div",{class:"result-list-header"},[s("span",null,"生成的 txt 列表")],-1)),h.value.length===0?(l(),n("div",Ce," 暂无转换结果,完成格式转换后会在这里展示输出文件 ")):(l(),n("ul",xe,[(l(!0),n(y,null,C(h.value,t=>(l(),n("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}`,class:"task-item"},[s("div",Fe,[s("span",{class:"id",title:t.sourceFilename},r(t.sourceFilename||"-"),9,Ee),t.outputFilename?(l(),n("div",Te,"输出文件:"+r(t.outputFilename),1)):t.error?(l(),n("div",Ie,"错误信息:"+r(t.error),1)):m("",!0)]),s("div",Be,[s("span",{class:F(["status",t.success?"success":"failed"])},r(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(l(),n("button",{key:0,type:"button",class:"download",onClick:i=>N(t)}," 下载文件 ",8,$e)):m("",!0),t.resultId?(l(),n("button",{key:1,type:"button",class:"btn-delete",onClick:i=>U(t.resultId)}," 删除 ",8,De)):m("",!0)])]))),128))]))])])])])]))}}),Ue=O(Se,[["__scopeId","data-v-c631a759"]]);G(Ue).use(Q).mount("#app"); +import{d as A,o as H,a as n,c as o,b as j,B as z,e as s,F as w,r as F,t as r,f as y,n as E,w as K,u as M,x as q,g as u,h as T,y as J,i as k,E as i,j as L,z as O,A as G,C as Q,_ as W,q as X,s as Y}from"./pywebview-DVgP2-kW.js";const Z={class:"page-shell module-page"},ee={class:"main-content"},se={class:"left-panel"},te={class:"upload-zone"},ae={class:"selected-files clean-placeholder"},le={key:0,class:"more-line"},ne={key:1},oe={class:"option-group"},ie=["value"],re={class:"template-item-content"},ce={class:"label"},ue={key:0,class:"template-tag"},de={key:1,class:"template-tag muted"},ve={key:2,class:"template-tag custom"},pe={class:"desc"},_e={key:0,class:"empty-option"},fe={class:"option-group"},me={class:"radio-item active"},he={class:"desc"},ye={class:"run-row"},ge=["disabled"],be={class:"loading-msg"},we={class:"right-panel"},ke={class:"task-list-wrap"},Ce={class:"clean-result-summary"},xe={class:"summary-card"},Fe={class:"summary-card"},Pe={class:"summary-card"},Ee={class:"result-list-wrap"},Te={key:0,class:"empty-tasks"},Ie={key:1,class:"task-list clean-result-list"},Be={class:"left"},Ne=["title"],$e={key:0,class:"files"},De={key:1,class:"files"},Se={class:"task-right"},Ue=["onClick"],Re=["onClick"],Ve=A({__name:"BrandConvertTab",setup(He){const v=u([]),g=u(""),_=u([]),f=u(!1),b=u([]),m=u({total:0,successCount:0,failedCount:0,items:[]}),d=u([]),c=u(""),C=T(()=>v.value.slice(0,8)),I=T(()=>d.value.find(a=>a.id===c.value)||null);async function P(a){const e=k();if(!e?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const l of a){const p=typeof l=="string"?l:l.absolutePath,V=typeof l=="string"?void 0:l.relativePath,h=await e.upload_file_to_java(p,V);if(!h?.success||!h.data)throw new Error(h?.error||h?.message||`上传失败:${p}`);t.push(h.data)}return t}async function B(a){const e=await J();d.value=e||[];const t=d.value.find(p=>p.id===c.value);if(t){c.value=t.id;return}const l=d.value.find(p=>p.isDefault);if(l){c.value=l.id;return}c.value=d.value[0]?.id||""}async function N(a,e){v.value=a,g.value="",_.value=await P(a),i.success(e)}async function $(){const a=k();if(!a?.select_brand_xlsx_files){i.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const e=await a.select_brand_xlsx_files();if(!e?.length)return;await N(e,`已选择 ${e.length} 个待转换文件`)}catch(e){i.error(e instanceof Error?e.message:"选择失败")}}async function D(){const a=k();if(!a?.select_brand_folder){i.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const e=await a.select_brand_folder();if(!e)return;g.value=e.split(/[/\\]/).filter(Boolean).pop()||"";const t=await L(e);if(t.success&&t.items?.length){v.value=t.items.map(l=>l.relativePath),_.value=await P(t.items),i.success(`已选择文件夹内 ${t.items.length} 个 xlsx 文件`);return}i.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(e){i.error(e instanceof Error?e.message:"选择失败")}}async function S(){if(!_.value.length){i.warning("请先选择待转换 Excel 文件或文件夹");return}if(!c.value){i.warning("请先选择模板");return}try{f.value=!0;const a=await O({files:_.value.map(e=>({fileKey:e.fileKey,originalFilename:e.originalFilename,relativePath:e.relativePath})),templateId:c.value,archiveName:_.value.some(e=>!!e.relativePath)&&g.value?g.value:void 0});m.value=a,b.value=a.items||[],await x(),i.success("格式转换完成")}catch(a){i.error(a instanceof Error?a.message:"格式转换失败")}finally{f.value=!1}}async function x(){try{const a=await G();b.value=a.items||[],m.value={total:a.items?.length||0,successCount:a.items?.filter(e=>e.success).length||0,failedCount:a.items?.filter(e=>!e.success).length||0,items:a.items||[]}}catch{}}async function U(a){try{await Q(a),await x(),i.success("已删除")}catch(e){i.error(e instanceof Error?e.message:"删除失败")}}async function R(a){const e=k();if(!a.downloadUrl){i.warning("当前结果没有下载地址");return}const t=a.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}.txt`;if(e?.save_file_from_url){const l=await e.save_file_from_url(a.downloadUrl,t);l.success?i.success(`已保存:${l.path||t}`):l.error&&l.error!=="用户取消"&&i.error(l.error);return}window.open(a.downloadUrl,"_blank")}return H(()=>{B().catch(()=>{}),x().catch(()=>{})}),(a,e)=>(n(),o("div",Z,[j(z,{active:"convert"}),s("div",ee,[s("aside",se,[e[5]||(e[5]=s("div",{class:"section-title"},"选择文件",-1)),s("div",te,[e[1]||(e[1]=s("div",{class:"hint"},"选择需要转换的 Excel 文件或文件夹,将按所选模板生成 txt 文件。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:$},"选择 Excel 文件"),s("button",{type:"button",class:"opt-btn",onClick:D},"选择文件夹")]),s("div",ae,[v.value.length?(n(),o(w,{key:0},[(n(!0),o(w,null,F(C.value,t=>(n(),o("span",{key:t},r(t),1))),128)),v.value.length>C.value.length?(n(),o("span",le," 还有 "+r(v.value.length-C.value.length)+" 个文件未展开显示 ",1)):y("",!0)],64)):(n(),o("span",ne,"暂未选择待转换文件"))])]),e[6]||(e[6]=s("div",{class:"section-title"},"模板选择",-1)),s("div",oe,[(n(!0),o(w,null,F(d.value,t=>(n(),o("label",{key:t.id,class:E(["radio-item",{active:c.value===t.id}])},[K(s("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>c.value=l),type:"radio",value:t.id,name:"convert-template"},null,8,ie),[[M,c.value]]),s("div",re,[s("div",null,[s("span",ce,[q(r(t.templateName)+" ",1),t.isDefault?(n(),o("span",ue,"默认")):t.builtIn?(n(),o("span",de,"内置")):(n(),o("span",ve,"自定义"))]),s("div",pe,"输出文件:"+r(t.outputFilename),1)])])],2))),128)),d.value.length?y("",!0):(n(),o("div",_e,"暂无可用模板"))]),e[7]||(e[7]=s("div",{class:"section-title"},"转换说明",-1)),s("div",fe,[s("label",me,[e[3]||(e[3]=s("input",{type:"checkbox",checked:"",disabled:""},null,-1)),s("div",null,[e[2]||(e[2]=s("span",{class:"label"},"按当前模板输出",-1)),s("div",he,"当前模板:"+r(I.value?.templateName||"未加载模板"),1)])]),e[4]||(e[4]=s("label",{class:"radio-item active"},[s("input",{type:"checkbox",checked:"",disabled:""}),s("div",null,[s("span",{class:"label"},"SKU 使用雪花ID-序号"),s("div",{class:"desc"},"例如 1773816146796-1")])],-1))]),s("div",ye,[s("button",{type:"button",class:"btn-run",disabled:f.value,onClick:S},r(f.value?"转换中...":"开始转换"),9,ge),s("span",be,r(f.value?"正在生成并上传结果,请稍候…":"选择文件后即可执行格式转换,结果会显示在右侧供下载"),1)])]),s("section",we,[e[12]||(e[12]=s("div",{class:"panel-header"},"转换结果",-1)),s("div",ke,[s("div",Ce,[s("div",xe,[e[8]||(e[8]=s("span",{class:"summary-label"},"已处理文件",-1)),s("strong",null,r(m.value.total),1)]),s("div",Fe,[e[9]||(e[9]=s("span",{class:"summary-label"},"成功结果",-1)),s("strong",null,r(m.value.successCount),1)]),s("div",Pe,[e[10]||(e[10]=s("span",{class:"summary-label"},"失败文件",-1)),s("strong",null,r(m.value.failedCount),1)])]),s("div",Ee,[e[11]||(e[11]=s("div",{class:"result-list-header"},[s("span",null,"生成的结果压缩包列表")],-1)),b.value.length===0?(n(),o("div",Te," 暂无转换结果,完成格式转换后会在这里展示结果压缩包 ")):(n(),o("ul",Ie,[(n(!0),o(w,null,F(b.value,t=>(n(),o("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}`,class:"task-item"},[s("div",Be,[s("span",{class:"id",title:t.sourceFilename},r(t.sourceFilename||"-"),9,Ne),t.outputFilename?(n(),o("div",$e,"压缩包文件:"+r(t.outputFilename),1)):t.error?(n(),o("div",De,"错误信息:"+r(t.error),1)):y("",!0)]),s("div",Se,[s("span",{class:E(["status",t.success?"success":"failed"])},r(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(n(),o("button",{key:0,type:"button",class:"download",onClick:l=>R(t)}," 下载压缩包 ",8,Ue)):y("",!0),t.resultId?(n(),o("button",{key:1,type:"button",class:"btn-delete",onClick:l=>U(t.resultId)}," 删除 ",8,Re)):y("",!0)])]))),128))]))])])])])]))}}),Ae=W(Ve,[["__scopeId","data-v-9f5ef1a0"]]);X(Ae).use(Y).mount("#app"); diff --git a/app/assets/dedupe-BHE_BCAJ.css b/app/assets/dedupe-BHE_BCAJ.css deleted file mode 100644 index b0c3125..0000000 --- a/app/assets/dedupe-BHE_BCAJ.css +++ /dev/null @@ -1 +0,0 @@ -.module-page[data-v-09011d0a]{min-height:100vh;background:#1a1a1a}.main-content[data-v-09011d0a]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-09011d0a]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-09011d0a]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-09011d0a]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-09011d0a]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-09011d0a]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-09011d0a]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-09011d0a]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-09011d0a],.btn-run[data-v-09011d0a],.download[data-v-09011d0a],.btn-delete[data-v-09011d0a]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-09011d0a]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-09011d0a]{padding:6px 10px;font-size:12px}.opt-btn[data-v-09011d0a]:hover{color:#3498db;background:#333;border-color:#3498db}.selected-files[data-v-09011d0a]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-09011d0a]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-09011d0a]{color:#b8c1cc}.option-group[data-v-09011d0a]{margin-bottom:20px}.column-option-group[data-v-09011d0a]{padding:14px;border-radius:10px;background:#252525;border:1px solid #2a2a2a}.column-toolbar[data-v-09011d0a]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.column-count[data-v-09011d0a]{font-size:12px;color:#a9b4bf}.column-actions[data-v-09011d0a]{display:flex;gap:8px}.column-grid[data-v-09011d0a]{display:grid;grid-template-columns:1fr;gap:8px;max-height:280px;overflow-y:auto}.empty-column-state[data-v-09011d0a]{padding:16px 12px;border-radius:8px;border:1px dashed #3a3a3a;background:#202020;color:#7f8790;font-size:12px;line-height:1.6}.column-item[data-v-09011d0a]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid #2f2f2f;background:#202020;cursor:pointer;transition:all .2s ease;font-size:13px;color:#d7d7d7}.column-item[data-v-09011d0a]:hover,.column-item.active[data-v-09011d0a]{border-color:#3b6f98;background:#26313a}.column-item input[data-v-09011d0a]{margin:0}.column-item span[data-v-09011d0a]{word-break:break-all}.radio-item[data-v-09011d0a]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.radio-item[data-v-09011d0a]:hover,.radio-item.active[data-v-09011d0a]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-09011d0a]{margin-top:3px}.label[data-v-09011d0a]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-09011d0a]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.run-row[data-v-09011d0a]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-09011d0a]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-09011d0a]:hover{background:#2980b9}.btn-run[data-v-09011d0a]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-09011d0a]{color:#3498db;font-size:13px}.panel-header[data-v-09011d0a]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-09011d0a]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-09011d0a]{list-style:none;margin:0;padding:0}.task-item[data-v-09011d0a]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.left[data-v-09011d0a]{flex:1;min-width:0}.id[data-v-09011d0a]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-09011d0a]{font-size:12px;color:#888;margin-top:4px}.task-right[data-v-09011d0a]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.status[data-v-09011d0a]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-09011d0a]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-09011d0a]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-09011d0a]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-09011d0a]:hover{background:#3498db47}.btn-delete[data-v-09011d0a]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-09011d0a]:hover{background:#e74c3c38}.empty-tasks[data-v-09011d0a]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-09011d0a]{max-height:none}.clean-result-summary[data-v-09011d0a]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-09011d0a]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-09011d0a]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-09011d0a]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-09011d0a]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-09011d0a]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-09011d0a]{flex-direction:column;height:auto}.left-panel[data-v-09011d0a]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-09011d0a]{min-height:420px}.task-item[data-v-09011d0a]{flex-direction:column;align-items:flex-start}.task-right[data-v-09011d0a]{width:100%;justify-content:flex-start}.clean-result-summary[data-v-09011d0a]{grid-template-columns:1fr}} diff --git a/app/assets/dedupe-BKyfmsjj.css b/app/assets/dedupe-BKyfmsjj.css new file mode 100644 index 0000000..2a3afbc --- /dev/null +++ b/app/assets/dedupe-BKyfmsjj.css @@ -0,0 +1 @@ +.module-page[data-v-0548811c]{min-height:100vh;background:#1a1a1a}.main-content[data-v-0548811c]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-0548811c]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-0548811c]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-0548811c]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-0548811c]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-0548811c]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-0548811c]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-0548811c]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-0548811c],.btn-run[data-v-0548811c],.download[data-v-0548811c],.btn-delete[data-v-0548811c]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-0548811c]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-0548811c]{padding:6px 10px;font-size:12px}.opt-btn[data-v-0548811c]:hover{color:#3498db;background:#333;border-color:#3498db}.selected-files[data-v-0548811c]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-0548811c]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-0548811c]{color:#b8c1cc}.option-group[data-v-0548811c]{margin-bottom:20px}.column-option-group[data-v-0548811c]{padding:14px;border-radius:10px;background:#252525;border:1px solid #2a2a2a}.column-toolbar[data-v-0548811c]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.column-count[data-v-0548811c]{font-size:12px;color:#a9b4bf}.column-actions[data-v-0548811c]{display:flex;gap:8px}.column-grid[data-v-0548811c]{display:grid;grid-template-columns:1fr;gap:8px;max-height:280px;overflow-y:auto}.empty-column-state[data-v-0548811c]{padding:16px 12px;border-radius:8px;border:1px dashed #3a3a3a;background:#202020;color:#7f8790;font-size:12px;line-height:1.6}.column-item[data-v-0548811c]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid #2f2f2f;background:#202020;cursor:pointer;transition:all .2s ease;font-size:13px;color:#d7d7d7}.column-item[data-v-0548811c]:hover,.column-item.active[data-v-0548811c]{border-color:#3b6f98;background:#26313a}.column-item input[data-v-0548811c]{margin:0}.column-item span[data-v-0548811c]{word-break:break-all}.radio-item[data-v-0548811c]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.radio-item[data-v-0548811c]:hover,.radio-item.active[data-v-0548811c]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-0548811c]{margin-top:3px}.label[data-v-0548811c]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-0548811c]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.run-row[data-v-0548811c]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-0548811c]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-0548811c]:hover{background:#2980b9}.btn-run[data-v-0548811c]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-0548811c]{color:#3498db;font-size:13px}.panel-header[data-v-0548811c]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-0548811c]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-0548811c]{list-style:none;margin:0;padding:0}.task-item[data-v-0548811c]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.left[data-v-0548811c]{flex:1;min-width:0}.id[data-v-0548811c]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-0548811c]{font-size:12px;color:#888;margin-top:4px}.task-right[data-v-0548811c]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.status[data-v-0548811c]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-0548811c]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-0548811c]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-0548811c]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-0548811c]:hover{background:#3498db47}.btn-delete[data-v-0548811c]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-0548811c]:hover{background:#e74c3c38}.empty-tasks[data-v-0548811c]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-0548811c]{max-height:none}.clean-result-summary[data-v-0548811c]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-0548811c]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-0548811c]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-0548811c]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-0548811c]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-0548811c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-0548811c]{flex-direction:column;height:auto}.left-panel[data-v-0548811c]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-0548811c]{min-height:420px}.task-item[data-v-0548811c]{flex-direction:column;align-items:flex-start}.task-right[data-v-0548811c]{width:100%;justify-content:flex-start}.clean-result-summary[data-v-0548811c]{grid-template-columns:1fr}} diff --git a/app/assets/dedupe.js b/app/assets/dedupe.js index e705495..7980636 100644 --- a/app/assets/dedupe.js +++ b/app/assets/dedupe.js @@ -1 +1 @@ -import{d as N,o as T,a,c as n,b as j,B as M,e as s,F as b,r as E,t as i,f as w,n as k,w as D,v as F,g as d,h as z,i as C,E as o,j as q,k as J,l as L,m as O,p as G,_ as Q,q as W,s as X}from"./pywebview-Rm5Hhqpf.js";const Y={class:"page-shell module-page"},Z={class:"main-content"},ee={class:"left-panel"},se={class:"upload-zone"},le={class:"selected-files clean-placeholder"},te={key:0,class:"more-line"},ae={key:1},ne={class:"option-group column-option-group"},oe={class:"column-toolbar"},re={class:"column-count"},ie={key:0,class:"column-grid"},ce=["value"],ue={key:1,class:"empty-column-state"},de={class:"option-group"},ve={class:"run-row"},pe=["disabled"],_e={class:"loading-msg"},fe={class:"right-panel"},me={class:"task-list-wrap"},ge={class:"clean-result-summary"},ye={class:"summary-card"},he={class:"summary-card"},be={class:"summary-card"},we={class:"result-list-wrap"},ke={key:0,class:"empty-tasks"},Ce={key:1,class:"task-list clean-result-list"},xe={class:"left"},Ie=["title"],Ee={key:0,class:"files"},De={key:1,class:"files"},Fe={class:"task-right"},Ue=["onClick"],Be=["onClick"],Se=N({__name:"BrandDedupeTab",setup(He){const v=d([]),u=d([]),p=d([]),_=d([]),f=d(!0),m=d(!0),g=d(!1),h=d([]),y=d({total:0,successCount:0,failedCount:0,items:[]}),x=z(()=>p.value.slice(0,8));function B(){u.value=[...v.value]}function S(){u.value=[]}async function $(t){const e=C();if(!e?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const l=[];for(const r of t){const c=await e.upload_file_to_java(r);if(!c?.success||!c.data)throw new Error(c?.error||c?.message||`上传失败:${r}`);l.push(c.data)}return l}async function H(t){const e=await G(t);if(!e.headers?.length){o.error("读取 Excel 表头失败"),v.value=[],u.value=[];return}const l=["id","ASIN","国家","价格","卖家名称"],r=[...l.filter(c=>e.headers?.includes(c)),...(e.headers||[]).filter(c=>!l.includes(c))];v.value=r,u.value=l.filter(c=>r.includes(c))}async function U(t,e){p.value=t,_.value=await $(t),_.value.length>0&&await H(_.value[0].fileKey),o.success(e)}async function A(){const t=C();if(!t?.select_brand_xlsx_files){o.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const e=await t.select_brand_xlsx_files();if(!e?.length)return;await U(e,`已选择 ${e.length} 个待清洗文件`)}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function V(){const t=C();if(!t?.select_brand_folder){o.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const e=await t.select_brand_folder();if(!e)return;const l=await q(e);if(l.success&&l.paths?.length){await U(l.paths,`已选择文件夹内 ${l.paths.length} 个 xlsx 文件`);return}o.warning(l.error||"该文件夹下没有 xlsx 文件")}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function K(){if(!_.value.length){o.warning("请先选择待清洗 Excel 文件或文件夹");return}if(!u.value.length){o.warning("请至少选择一列保留列");return}if(!f.value&&!m.value){o.warning("请至少选择一种 ID 保留规则");return}try{g.value=!0;const t=await J({files:_.value.map(e=>({fileKey:e.fileKey,originalFilename:e.originalFilename})),selectedColumns:u.value,keepIntegerIds:f.value,keepUnderscoreIds:m.value});y.value=t,h.value=t.items||[],await I(),o.success("数据去重完成")}catch(t){o.error(t instanceof Error?t.message:"去重失败")}finally{g.value=!1}}async function I(){try{const t=await L();h.value=t.items||[],y.value={total:t.items?.length||0,successCount:t.items?.filter(e=>e.success).length||0,failedCount:t.items?.filter(e=>!e.success).length||0,items:t.items||[]}}catch{}}async function P(t){try{await O(t),await I(),o.success("已删除")}catch(e){o.error(e instanceof Error?e.message:"删除失败")}}async function R(t){const e=C();if(!t.downloadUrl){o.warning("当前结果没有下载地址");return}const l=t.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}_cleaned.xlsx`;if(e?.save_file_from_url){const r=await e.save_file_from_url(t.downloadUrl,l);r.success?o.success(`已保存:${r.path||l}`):r.error&&r.error!=="用户取消"&&o.error(r.error);return}window.open(t.downloadUrl,"_blank")}return T(()=>{I().catch(()=>{})}),(t,e)=>(a(),n("div",Y,[j(M,{active:"dedupe"}),s("div",Z,[s("aside",ee,[e[7]||(e[7]=s("div",{class:"section-title"},"选择文件",-1)),s("div",se,[e[3]||(e[3]=s("div",{class:"hint"},"选择需要清洗的 Excel 文件或文件夹,后续将按所选规则输出处理结果。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:A},"选择 Excel 文件"),s("button",{type:"button",class:"opt-btn",onClick:V},"选择文件夹")]),s("div",le,[p.value.length?(a(),n(b,{key:0},[(a(!0),n(b,null,E(x.value,l=>(a(),n("span",{key:l},i(l),1))),128)),p.value.length>x.value.length?(a(),n("span",te," 还有 "+i(p.value.length-x.value.length)+" 个文件未展开显示 ",1)):w("",!0)],64)):(a(),n("span",ae,"暂未选择待清洗文件"))])]),e[8]||(e[8]=s("div",{class:"section-title"},"保留列设置",-1)),s("div",ne,[s("div",oe,[s("span",re,"已选择 "+i(u.value.length)+" / "+i(v.value.length)+" 列",1),s("div",{class:"column-actions"},[s("button",{type:"button",class:"opt-btn small",onClick:B},"全选"),s("button",{type:"button",class:"opt-btn small",onClick:S},"清空")])]),v.value.length?(a(),n("div",ie,[(a(!0),n(b,null,E(v.value,l=>(a(),n("label",{key:l,class:k(["column-item",{active:u.value.includes(l)}])},[D(s("input",{"onUpdate:modelValue":e[0]||(e[0]=r=>u.value=r),type:"checkbox",value:l},null,8,ce),[[F,u.value]]),s("span",null,i(l),1)],2))),128))])):(a(),n("div",ue,"请选择 Excel 文件后读取表头并填充可保留列")),e[4]||(e[4]=s("div",{class:"desc"},"读取首个 Excel 文件的第一行作为表头,用于动态选择需要保留的列。",-1))]),e[9]||(e[9]=s("div",{class:"section-title"},"ID 保留规则",-1)),s("div",de,[s("label",{class:k(["radio-item",{active:f.value}])},[D(s("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>f.value=l),type:"checkbox"},null,512),[[F,f.value]]),e[5]||(e[5]=s("div",null,[s("span",{class:"label"},"保留整数 ID"),s("div",{class:"desc"},"例如 1、2、3 这种纯数字 ID")],-1))],2),s("label",{class:k(["radio-item",{active:m.value}])},[D(s("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>m.value=l),type:"checkbox"},null,512),[[F,m.value]]),e[6]||(e[6]=s("div",null,[s("span",{class:"label"},"保留下划线 ID"),s("div",{class:"desc"},"例如 1_1、2_3 这种带下划线的子项 ID")],-1))],2)]),s("div",ve,[s("button",{type:"button",class:"btn-run",disabled:g.value,onClick:K},i(g.value?"清洗中...":"开始清洗"),9,pe),s("span",_e,i(g.value?"正在处理文件并上传结果,请稍候…":"选择文件、列和 ID 规则后即可执行清洗,结果会显示在右侧供下载"),1)])]),s("section",fe,[e[14]||(e[14]=s("div",{class:"panel-header"},"去重结果",-1)),s("div",me,[s("div",ge,[s("div",ye,[e[10]||(e[10]=s("span",{class:"summary-label"},"已处理文件",-1)),s("strong",null,i(y.value.total),1)]),s("div",he,[e[11]||(e[11]=s("span",{class:"summary-label"},"成功结果",-1)),s("strong",null,i(y.value.successCount),1)]),s("div",be,[e[12]||(e[12]=s("span",{class:"summary-label"},"失败文件",-1)),s("strong",null,i(y.value.failedCount),1)])]),s("div",we,[e[13]||(e[13]=s("div",{class:"result-list-header"},[s("span",null,"处理后的 Excel 列表")],-1)),h.value.length===0?(a(),n("div",ke," 暂无去重结果,完成数据去重后会在这里展示输出文件 ")):(a(),n("ul",Ce,[(a(!0),n(b,null,E(h.value,l=>(a(),n("li",{key:`${l.resultId||l.outputFilename||l.sourceFilename}`,class:"task-item"},[s("div",xe,[s("span",{class:"id",title:l.sourceFilename},i(l.sourceFilename||"-"),9,Ie),l.outputFilename?(a(),n("div",Ee,"输出文件:"+i(l.outputFilename),1)):l.error?(a(),n("div",De,"错误信息:"+i(l.error),1)):w("",!0)]),s("div",Fe,[s("span",{class:k(["status",l.success?"success":"failed"])},i(l.success?"已完成":"失败"),3),l.success&&l.downloadUrl?(a(),n("button",{key:0,type:"button",class:"download",onClick:r=>R(l)}," 下载文件 ",8,Ue)):w("",!0),l.resultId?(a(),n("button",{key:1,type:"button",class:"btn-delete",onClick:r=>P(l.resultId)}," 删除 ",8,Be)):w("",!0)])]))),128))]))])])])])]))}}),$e=Q(Se,[["__scopeId","data-v-09011d0a"]]);W($e).use(X).mount("#app"); +import{d as z,o as W,a as n,c as o,b as q,B as J,e as s,F as k,r as F,t as i,f as C,n as I,w as P,v as B,g as u,h as L,i as x,E as r,j as O,k as G,l as Q,m as X,p as Y,_ as Z,q as ee,s as se}from"./pywebview-DVgP2-kW.js";const te={class:"page-shell module-page"},le={class:"main-content"},ae={class:"left-panel"},ne={class:"upload-zone"},oe={class:"selected-files clean-placeholder"},re={key:0,class:"more-line"},ie={key:1},ue={class:"option-group column-option-group"},ce={class:"column-toolbar"},de={class:"column-count"},ve={key:0,class:"column-grid"},pe=["value"],fe={key:1,class:"empty-column-state"},_e={class:"option-group"},me={class:"run-row"},he=["disabled"],ge={class:"loading-msg"},ye={class:"right-panel"},be={class:"task-list-wrap"},we={class:"clean-result-summary"},ke={class:"summary-card"},Ce={class:"summary-card"},Ie={class:"summary-card"},xe={class:"result-list-wrap"},Ee={key:0,class:"empty-tasks"},De={key:1,class:"task-list clean-result-list"},Fe={class:"left"},Pe=["title"],Be={key:0,class:"files"},Se={key:1,class:"files"},Ue={class:"task-right"},Ne=["onClick"],$e=["onClick"],Ae=z({__name:"BrandDedupeTab",setup(Ke){const p=u([]),c=u([]),f=u([]),b=u(""),d=u([]),S=u(!1),_=u(!0),m=u(!0),h=u(!1),w=u([]),g=u({total:0,successCount:0,failedCount:0,items:[]}),E=L(()=>f.value.slice(0,8));function $(){c.value=[...p.value]}function A(){c.value=[]}async function U(l){const e=x();if(!e?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const a of l){const v=typeof a=="string"?a:a.absolutePath,j=typeof a=="string"?void 0:a.relativePath,y=await e.upload_file_to_java(v,j);if(!y?.success||!y.data)throw new Error(y?.error||y?.message||`上传失败:${v}`);t.push(y.data)}return t}async function N(l){const e=await Y(l);if(!e.headers?.length){r.error("读取 Excel 表头失败"),p.value=[],c.value=[];return}const t=["id","ASIN","国家","价格","卖家名称"],a=[...t.filter(v=>e.headers?.includes(v)),...(e.headers||[]).filter(v=>!t.includes(v))];p.value=a,c.value=t.filter(v=>a.includes(v))}async function H(l,e){f.value=l,b.value="",d.value=await U(l),d.value.length>0&&await N(d.value[0].fileKey),r.success(e)}async function K(){const l=x();if(!l?.select_brand_xlsx_files){r.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const e=await l.select_brand_xlsx_files();if(!e?.length)return;await H(e,`已选择 ${e.length} 个待清洗文件`)}catch(e){r.error(e instanceof Error?e.message:"选择失败")}}async function V(){const l=x();if(!l?.select_brand_folder){r.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const e=await l.select_brand_folder();if(!e)return;b.value=e.split(/[/\\]/).filter(Boolean).pop()||"";const t=await O(e);if(t.success&&t.items?.length){f.value=t.items.map(a=>a.relativePath),d.value=await U(t.items),d.value.length>0&&await N(d.value[0].fileKey),r.success(`已选择文件夹内 ${t.items.length} 个 xlsx 文件`);return}r.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(e){r.error(e instanceof Error?e.message:"选择失败")}}async function M(){if(!d.value.length){r.warning("请先选择待清洗 Excel 文件或文件夹");return}if(!c.value.length){r.warning("请至少选择一列保留列");return}if(!S.value&&!_.value&&!m.value){r.warning("请至少选择一种 ID 保留规则");return}try{h.value=!0;const l=await G({files:d.value.map(e=>({fileKey:e.fileKey,originalFilename:e.originalFilename,relativePath:e.relativePath})),selectedColumns:c.value,keepIntegerIds:S.value,keepUnderscoreIds:_.value,keepIntegerMainIdsWhenNoSubIds:m.value,archiveName:d.value.some(e=>!!e.relativePath)&&b.value?b.value:void 0});g.value=l,w.value=l.items||[],await D(),r.success("数据去重完成")}catch(l){r.error(l instanceof Error?l.message:"去重失败")}finally{h.value=!1}}async function D(){try{const l=await Q();w.value=l.items||[],g.value={total:l.items?.length||0,successCount:l.items?.filter(e=>e.success).length||0,failedCount:l.items?.filter(e=>!e.success).length||0,items:l.items||[]}}catch{}}async function R(l){try{await X(l),await D(),r.success("已删除")}catch(e){r.error(e instanceof Error?e.message:"删除失败")}}async function T(l){const e=x();if(!l.downloadUrl){r.warning("当前结果没有下载地址");return}const t=l.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}_cleaned.xlsx`;if(e?.save_file_from_url){const a=await e.save_file_from_url(l.downloadUrl,t);a.success?r.success(`已保存:${a.path||t}`):a.error&&a.error!=="用户取消"&&r.error(a.error);return}window.open(l.downloadUrl,"_blank")}return W(()=>{D().catch(()=>{})}),(l,e)=>(n(),o("div",te,[q(J,{active:"dedupe"}),s("div",le,[s("aside",ae,[e[7]||(e[7]=s("div",{class:"section-title"},"选择文件",-1)),s("div",ne,[e[3]||(e[3]=s("div",{class:"hint"},"选择需要清洗的 Excel 文件或文件夹,后续将按所选规则输出处理结果。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:K},"选择 Excel 文件"),s("button",{type:"button",class:"opt-btn",onClick:V},"选择文件夹")]),s("div",oe,[f.value.length?(n(),o(k,{key:0},[(n(!0),o(k,null,F(E.value,t=>(n(),o("span",{key:t},i(t),1))),128)),f.value.length>E.value.length?(n(),o("span",re," 还有 "+i(f.value.length-E.value.length)+" 个文件未展开显示 ",1)):C("",!0)],64)):(n(),o("span",ie,"暂未选择待清洗文件"))])]),e[8]||(e[8]=s("div",{class:"section-title"},"保留列设置",-1)),s("div",ue,[s("div",ce,[s("span",de,"已选择 "+i(c.value.length)+" / "+i(p.value.length)+" 列",1),s("div",{class:"column-actions"},[s("button",{type:"button",class:"opt-btn small",onClick:$},"全选"),s("button",{type:"button",class:"opt-btn small",onClick:A},"清空")])]),p.value.length?(n(),o("div",ve,[(n(!0),o(k,null,F(p.value,t=>(n(),o("label",{key:t,class:I(["column-item",{active:c.value.includes(t)}])},[P(s("input",{"onUpdate:modelValue":e[0]||(e[0]=a=>c.value=a),type:"checkbox",value:t},null,8,pe),[[B,c.value]]),s("span",null,i(t),1)],2))),128))])):(n(),o("div",fe,"请选择 Excel 文件后读取表头并填充可保留列")),e[4]||(e[4]=s("div",{class:"desc"},"读取首个 Excel 文件的第一行作为表头,用于动态选择需要保留的列。",-1))]),e[9]||(e[9]=s("div",{class:"section-title"},"ID 保留规则",-1)),s("div",_e,[s("label",{class:I(["radio-item",{active:_.value}])},[P(s("input",{"onUpdate:modelValue":e[1]||(e[1]=t=>_.value=t),type:"checkbox"},null,512),[[B,_.value]]),e[5]||(e[5]=s("div",null,[s("span",{class:"label"},"保留子链接"),s("div",{class:"desc"},"例如 1_1、2_3 这种带下划线的子项 ID")],-1))],2),s("label",{class:I(["radio-item",{active:m.value}])},[P(s("input",{"onUpdate:modelValue":e[2]||(e[2]=t=>m.value=t),type:"checkbox"},null,512),[[B,m.value]]),e[6]||(e[6]=s("div",null,[s("span",{class:"label"},"仅剩主链接无子链接"),s("div",{class:"desc"},"当某个主链接只有 13 这类主 ID、没有 13_1 这类对应子 ID 时,自动保留该主 ID")],-1))],2)]),s("div",me,[s("button",{type:"button",class:"btn-run",disabled:h.value,onClick:M},i(h.value?"清洗中...":"开始清洗"),9,he),s("span",ge,i(h.value?"正在处理文件并上传结果,请稍候…":"选择文件、列和 ID 规则后即可执行清洗,结果会显示在右侧供下载"),1)])]),s("section",ye,[e[14]||(e[14]=s("div",{class:"panel-header"},"去重结果",-1)),s("div",be,[s("div",we,[s("div",ke,[e[10]||(e[10]=s("span",{class:"summary-label"},"已处理文件",-1)),s("strong",null,i(g.value.total),1)]),s("div",Ce,[e[11]||(e[11]=s("span",{class:"summary-label"},"成功结果",-1)),s("strong",null,i(g.value.successCount),1)]),s("div",Ie,[e[12]||(e[12]=s("span",{class:"summary-label"},"失败文件",-1)),s("strong",null,i(g.value.failedCount),1)])]),s("div",xe,[e[13]||(e[13]=s("div",{class:"result-list-header"},[s("span",null,"处理后的 Excel 列表")],-1)),w.value.length===0?(n(),o("div",Ee," 暂无去重结果,完成数据去重后会在这里展示输出文件 ")):(n(),o("ul",De,[(n(!0),o(k,null,F(w.value,t=>(n(),o("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}`,class:"task-item"},[s("div",Fe,[s("span",{class:"id",title:t.sourceFilename},i(t.sourceFilename||"-"),9,Pe),t.outputFilename?(n(),o("div",Be,"输出文件:"+i(t.outputFilename),1)):t.error?(n(),o("div",Se,"错误信息:"+i(t.error),1)):C("",!0)]),s("div",Ue,[s("span",{class:I(["status",t.success?"success":"failed"])},i(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(n(),o("button",{key:0,type:"button",class:"download",onClick:a=>T(t)}," 下载文件 ",8,Ne)):C("",!0),t.resultId?(n(),o("button",{key:1,type:"button",class:"btn-delete",onClick:a=>R(t.resultId)}," 删除 ",8,$e)):C("",!0)])]))),128))]))])])])])]))}}),He=Z(Ae,[["__scopeId","data-v-0548811c"]]);ee(He).use(se).mount("#app"); diff --git a/app/assets/pywebview-Rm5Hhqpf.js b/app/assets/pywebview-DVgP2-kW.js similarity index 99% rename from app/assets/pywebview-Rm5Hhqpf.js rename to app/assets/pywebview-DVgP2-kW.js index 5c75890..573afa1 100644 --- a/app/assets/pywebview-Rm5Hhqpf.js +++ b/app/assets/pywebview-DVgP2-kW.js @@ -47,9 +47,9 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:o,curr "rowHeight" must be passed as function, instead ${typeof t} was given. `)}}),Em=Symbol("ElSelectV2Injection"),M9=Se({allowCreate:Boolean,autocomplete:{type:G(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:Vt,default:_a},effect:{type:G(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,tagTooltip:{type:G(Object),default:()=>({})},maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:{type:Boolean,default:void 0},estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:{type:G(Function)},height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:G([Array,String,Number,Boolean,Object]),default:void 0},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:{type:G(Function)},reserveKeyword:{type:Boolean,default:!0},options:{type:G(Array),required:!0},placeholder:{type:String},teleported:Bt.teleported,persistent:{type:Boolean,default:!0},popperClass:Bt.popperClass,popperStyle:Bt.popperStyle,popperOptions:{type:G(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},size:wn,props:{type:G(Object),default:()=>Zc},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},placement:{type:G(String),values:Ma,default:"bottom-start"},fallbackPlacements:{type:G(Array),default:["bottom-start","top-start","right","left"]},tagType:{...al.type,default:"info"},tagEffect:{...al.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:Bt.appendTo,fitInputWidth:{type:[Boolean,Number],default:!0,validator(e){return Ft(e)||He(e)}},suffixIcon:{type:Vt,default:Aa},...Ts,...Jn(["ariaLabel"])}),P9=Se({data:Array,disabled:Boolean,hovering:Boolean,item:{type:G(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),A9={[et]:e=>!0,[ht]:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},_9={hover:e=>He(e),select:(e,t)=>!0};var L9=le({props:{item:{type:Object,required:!0},style:{type:Object},height:Number},setup(){return{ns:fe("select")}}});function D9(e,t,n,o,a,l){return x(),B("div",{class:T(e.ns.be("group","title")),style:Ke({...e.style,lineHeight:`${e.height}px`})},ke(e.item.label),7)}var B9=Sn(L9,[["render",D9]]);function F9(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}var V9=le({props:P9,emits:_9,setup(e,{emit:t}){const n=Ae(Em),o=fe("select"),{hoverItem:a,selectOptionClick:l}=F9(e,{emit:t}),{getLabel:s}=pu(n.props);return{ns:o,contentId:n.contentId,hoverItem:a,selectOptionClick:l,getLabel:s}}});const z9=["id","aria-selected","aria-disabled"];function H9(e,t,n,o,a,l){return x(),B("li",{id:`${e.contentId}-${e.index}`,role:"option","aria-selected":e.selected,"aria-disabled":e.disabled||void 0,style:Ke(e.style),class:T([e.ns.be("dropdown","item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),e.ns.is("hovering",e.hovering)]),onMousemove:t[0]||(t[0]=(...s)=>e.hoverItem&&e.hoverItem(...s)),onClick:t[1]||(t[1]=Ge((...s)=>e.selectOptionClick&&e.selectOptionClick(...s),["stop"]))},[ee(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[H("span",null,ke(e.getLabel(e.item)),1)])],46,z9)}var K9=Sn(V9,[["render",H9]]);const W9={loading:Boolean,data:{type:Array,required:!0},hoveringIndex:Number,width:Number,id:String,ariaLabel:String};var j9=le({name:"ElSelectDropdown",props:W9,setup(e,{slots:t,expose:n}){const o=Ae(Em),a=fe("select"),{getLabel:l,getValue:s,getDisabled:r}=pu(o.props),u=P([]),c=P(),d=w(()=>e.data.length);re(()=>d.value,()=>{o.tooltipRef.value?.updatePopper?.()});const f=w(()=>kt(o.props.estimatedOptionHeight)),h=w(()=>f.value?{itemSize:o.props.itemHeight}:{estimatedSize:o.props.estimatedOptionHeight,itemSize:N=>u.value[N]}),g=(N=[],_)=>{const{props:{valueKey:A}}=o;return tt(_)?N&&N.some(V=>Wt(vn(V,A))===vn(_,A)):N.includes(_)},p=(N,_)=>{if(tt(_)){const{valueKey:A}=o.props;return vn(N,A)===vn(_,A)}else return N===_},v=(N,_)=>o.props.multiple?g(N,s(_)):p(N,s(_)),m=(N,_)=>{const{disabled:A,multiple:V,multipleLimit:z}=o.props;return A||!_&&(V?z>0&&N.length>=z:!1)},b=N=>e.hoveringIndex===N;n({listRef:c,isSized:f,isItemDisabled:m,isItemHovering:b,isItemSelected:v,scrollToItem:N=>{const _=c.value;_&&_.scrollToItem(N)},resetScrollTop:()=>{const N=c.value;N&&N.resetScrollTop()}});const S=N=>{const{index:_,data:A,style:V}=N,z=i(f),{itemSize:U,estimatedSize:W}=i(h),{modelValue:M}=o.props,{onSelect:I,onHover:L}=o,D=A[_];if(D.type==="Group")return Y(B9,{item:D,style:V,height:z?U:W},null);const F=v(M,D),q=m(M,F),j=b(_);return Y(K9,it(N,{selected:F,disabled:r(D)||q,created:!!D.created,hovering:j,item:D,onSelect:I,onHover:L}),{default:X=>t.default?.(X)||Y("span",null,[l(D)])})},{onKeyboardNavigate:C,onKeyboardSelect:E}=o,$=()=>{C("forward")},O=()=>{C("backward")},R=N=>{const _=Ht(N),{tab:A,esc:V,down:z,up:U,enter:W,numpadEnter:M}=we;switch([V,z,U,W,M].includes(_)&&(N.preventDefault(),N.stopPropagation()),_){case A:case V:break;case z:$();break;case U:O();break;case W:case M:E();break}};return()=>{const{data:N,width:_}=e,{height:A,multiple:V,scrollbarAlwaysOn:z}=o.props,U=w(()=>Wc?!0:z),W=i(f)?j2:E9;return Y("div",{class:[a.b("dropdown"),a.is("multiple",V)],style:{width:`${_}px`}},[t.header?.(),t.loading?.()||t.empty?.()||Y(W,it({ref:c},i(h),{className:a.be("dropdown","list"),scrollbarAlwaysOn:U.value,data:N,height:A,width:_,total:N.length,innerElement:"ul",innerProps:{id:e.id,role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},onKeydown:R}),{default:M=>Y(S,M,null)}),t.footer?.()])}}});function U9(e,t){const{aliasProps:n,getLabel:o,getValue:a}=pu(e),l=P(0),s=P(),r=w(()=>e.allowCreate&&e.filterable);re(()=>e.options,g=>{const p=new Set(g.map(v=>o(v)));t.createdOptions=t.createdOptions.filter(v=>!p.has(o(v)))});function u(g){const p=v=>o(v)===g;return e.options&&e.options.some(p)||t.createdOptions.some(p)}function c(g){r.value&&(e.multiple&&g.created?l.value++:s.value=g)}function d(g){if(r.value)if(g&&g.length>0){if(u(g)){t.createdOptions=t.createdOptions.filter(v=>o(v)!==t.previousQuery);return}const p={[n.value.value]:g,[n.value.label]:g,created:!0,[n.value.disabled]:!1};t.createdOptions.length>=l.value?t.createdOptions[l.value]=p:t.createdOptions.push(p)}else if(e.multiple)t.createdOptions.length=l.value;else{const p=s.value;t.createdOptions.length=0,p&&p.created&&t.createdOptions.push(p)}}function f(g){if(!r.value||!g||!g.created||g.created&&e.reserveKeyword&&t.inputValue===o(g))return;const p=t.createdOptions.findIndex(v=>a(v)===a(g));~p&&(t.createdOptions.splice(p,1),l.value--)}function h(){r.value&&(t.createdOptions.length=0,l.value=0)}return{createNewOption:d,removeNewOption:f,selectNewOption:c,clearAllNewOption:h}}const q9=(e,t)=>{const{t:n}=yt(),o=un(),a=fe("select"),l=fe("input"),{form:s,formItem:r}=In(),{inputId:u}=To(e,{formItemContext:r}),{aliasProps:c,getLabel:d,getValue:f,getDisabled:h,getOptions:g}=pu(e),{valueOnClear:p,isEmptyValue:v}=iu(e),m=Mt({inputValue:"",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,collapseItemWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:"",menuVisibleOnFocus:!1,isBeforeHide:!1}),b=P(-1),k=P(!1),y=P(),S=P(),C=P(),E=P(),$=P(),O=P(),R=P(),N=P(),_=P(),A=P(),{isComposing:V,handleCompositionStart:z,handleCompositionEnd:U,handleCompositionUpdate:W}=ru({afterComposition:Oe=>jt(Oe)}),M=on(),{wrapperRef:I,isFocused:L,handleBlur:D}=dl($,{disabled:M,afterFocus(){e.automaticDropdown&&!X.value&&(X.value=!0,m.menuVisibleOnFocus=!0)},beforeBlur(Oe){return C.value?.isFocusInsideContent(Oe)||E.value?.isFocusInsideContent(Oe)},afterBlur(){X.value=!1,m.menuVisibleOnFocus=!1,e.validateEvent&&r?.validate?.("blur").catch(Oe=>ct(Oe))}}),F=w(()=>Re("")),q=w(()=>e.loading?!1:e.options.length>0||m.createdOptions.length>0),j=P([]),X=P(!1),Q=w(()=>s?.statusIcon??!1),ve=w(()=>{const Oe=j.value.length*e.itemHeight;return Oe>e.height?e.height:Oe}),ue=w(()=>e.multiple?ye(e.modelValue)&&e.modelValue.length>0:!v(e.modelValue)),ge=w(()=>e.clearable&&!M.value&&ue.value&&(L.value||m.inputHovering)),ie=w(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),oe=w(()=>ie.value&&a.is("reverse",X.value)),ne=w(()=>r?.validateState||""),K=w(()=>{if(ne.value)return Xd[ne.value]}),Z=w(()=>e.remote?e.debounce:0),se=w(()=>e.remote&&!m.inputValue&&!q.value),ce=w(()=>e.loading?e.loadingText||n("el.select.loading"):e.filterable&&m.inputValue&&q.value&&j.value.length===0?e.noMatchText||n("el.select.noMatch"):q.value?null:e.noDataText||n("el.select.noData")),he=w(()=>e.filterable&&Fe(e.filterMethod)),Ce=w(()=>e.filterable&&e.remote&&Fe(e.remoteMethod)),Re=Oe=>{const xt=new RegExp(Th(Oe),"i"),St=Ct=>he.value||Ce.value?!0:Oe?xt.test(d(Ct)||""):!0;return e.loading?[]:[...m.createdOptions,...e.options].reduce((Ct,Mn)=>{const mo=g(Mn);if(ye(mo)){const Tu=mo.filter(St);Tu.length>0&&Ct.push({label:d(Mn),type:"Group"},...Tu)}else(e.remote||St(Mn))&&Ct.push(Mn);return Ct},[])},Ie=()=>{j.value=Re(m.inputValue)},$e=w(()=>{const Oe=new Map;return F.value.forEach((xt,St)=>{Oe.set(Ze(f(xt)),{option:xt,index:St})}),Oe}),pe=w(()=>{const Oe=new Map;return j.value.forEach((xt,St)=>{Oe.set(Ze(f(xt)),{option:xt,index:St})}),Oe}),Ee=w(()=>j.value.every(Oe=>h(Oe))),me=mn(),Pe=w(()=>me.value==="small"?"small":"default"),We=()=>{if(He(e.fitInputWidth)){b.value=e.fitInputWidth;return}const Oe=y.value?.offsetWidth||200;!e.fitInputWidth&&q.value?Ne(()=>{b.value=Math.max(Oe,Xe())}):b.value=Oe},Xe=()=>{const Oe=document.createElement("canvas").getContext("2d"),xt=a.be("dropdown","item"),St=(N.value?.listRef?.innerRef||document).querySelector(`.${xt}`);if(St===null||Oe===null)return 0;const Ct=getComputedStyle(St),Mn=Number.parseFloat(Ct.paddingLeft)+Number.parseFloat(Ct.paddingRight);return Oe.font=`bold ${Ct.font.replace(new RegExp(`\\b${Ct.fontWeight}\\b`),"")}`,j.value.reduce((mo,Tu)=>{const Ox=Oe.measureText(d(Tu));return Math.max(Ox.width,mo)},0)+Mn},Me=()=>{if(!S.value)return 0;const Oe=window.getComputedStyle(S.value);return Number.parseFloat(Oe.gap||"6px")},_e=w(()=>{const Oe=Me(),xt=e.filterable?Oe+Nd:0;return{maxWidth:`${A.value&&e.maxCollapseTags===1?m.selectionWidth-m.collapseItemWidth-Oe-xt:m.selectionWidth-xt}px`}}),je=w(()=>({maxWidth:`${m.selectionWidth}px`})),Tt=w(()=>ye(e.modelValue)?e.modelValue.length===0&&!m.inputValue:e.filterable?!m.inputValue:!0),Ue=w(()=>{const Oe=e.placeholder??n("el.select.placeholder");return e.multiple||!ue.value?Oe:m.selectedLabel}),at=w(()=>C.value?.popperRef?.contentRef),pt=w(()=>{if(e.multiple){const Oe=e.modelValue.length;if(Oe>0&&pe.value.has(e.modelValue[Oe-1])){const{index:xt}=pe.value.get(e.modelValue[Oe-1]);return xt}}else if(!v(e.modelValue)&&pe.value.has(e.modelValue)){const{index:Oe}=pe.value.get(e.modelValue);return Oe}return-1}),wt=w({get(){return X.value&&(e.loading||!se.value||e.remote&&!!o.empty)&&(!k.value||!no(m.previousQuery))},set(Oe){X.value=Oe}}),be=w(()=>e.multiple?e.collapseTags?m.cachedOptions.slice(0,e.maxCollapseTags):m.cachedOptions:[]),ze=w(()=>e.multiple?e.collapseTags?m.cachedOptions.slice(e.maxCollapseTags):[]:[]),{createNewOption:de,removeNewOption:Ye,selectNewOption:Et,clearAllNewOption:Xt}=U9(e,m),On=Oe=>{M.value||e.filterable&&X.value&&Oe&&!R.value?.contains(Oe.target)||(m.menuVisibleOnFocus?m.menuVisibleOnFocus=!1:X.value=!X.value)},Be=()=>{m.inputValue.length>0&&!X.value&&(X.value=!0),de(m.inputValue),Ne(()=>{st(m.inputValue)})},Qe=Zi(()=>{Be(),k.value=!1},Z),st=Oe=>{m.previousQuery===Oe||V.value||(m.previousQuery=Oe,e.filterable&&Fe(e.filterMethod)?e.filterMethod(Oe):e.filterable&&e.remote&&Fe(e.remoteMethod)&&e.remoteMethod(Oe),e.defaultFirstOption&&(e.filterable||e.remote)&&j.value.length?Ne(gn):Ne(Pt))},gn=()=>{const Oe=j.value.filter(Ct=>!Ct.disabled&&Ct.type!=="Group"),xt=Oe.find(Ct=>Ct.created),St=Oe[0];m.hoveringIndex=Je(j.value,xt||St)},zt=Oe=>{en(e.modelValue,Oe)||t(ht,Oe)},pn=Oe=>{t(et,Oe),zt(Oe),m.previousValue=e.multiple?String(Oe):Oe,Ne(()=>{if(e.multiple&&ye(e.modelValue)){const xt=m.cachedOptions.slice(),St=e.modelValue.map(Ct=>ng(Ct,xt));en(m.cachedOptions,St)||(m.cachedOptions=St)}else xu(!0)})},Je=(Oe=[],xt)=>{if(!tt(xt))return Oe.indexOf(xt);const St=e.valueKey;let Ct=-1;return Oe.some((Mn,mo)=>vn(Mn,St)===vn(xt,St)?(Ct=mo,!0):!1),Ct},Ze=Oe=>tt(Oe)?vn(Oe,e.valueKey):Oe,vt=()=>{We()},Zn=()=>{m.selectionWidth=Number.parseFloat(window.getComputedStyle(S.value).width)},ua=()=>{m.collapseItemWidth=A.value.getBoundingClientRect().width},Bo=()=>{C.value?.updatePopper?.()},ku=()=>{E.value?.updatePopper?.()},Fl=Oe=>{const xt=f(Oe);if(e.multiple){let St=e.modelValue.slice();const Ct=Je(St,xt);Ct>-1?(St=[...St.slice(0,Ct),...St.slice(Ct+1)],m.cachedOptions.splice(Ct,1),Ye(Oe)):(e.multipleLimit<=0||St.length{let St=e.modelValue.slice();const Ct=Je(St,f(xt));Ct>-1&&!M.value&&(St=[...e.modelValue.slice(0,Ct),...e.modelValue.slice(Ct+1)],m.cachedOptions.splice(Ct,1),pn(St),t("remove-tag",f(xt)),Ye(xt)),Oe.stopPropagation(),La()},La=()=>{$.value?.focus()},pf=()=>{if(X.value){X.value=!1,Ne(()=>$.value?.blur());return}$.value?.blur()},vf=()=>{m.inputValue.length>0?m.inputValue="":X.value=!1},hf=Oe=>kS(Oe,xt=>!m.cachedOptions.some(St=>f(St)===xt&&h(St))),mf=Oe=>{const xt=Ht(Oe);if(e.multiple&&xt!==we.delete&&m.inputValue.length===0){Oe.preventDefault();const St=e.modelValue.slice(),Ct=hf(St);if(Ct<0)return;const Mn=St[Ct];St.splice(Ct,1);const mo=m.cachedOptions[Ct];m.cachedOptions.splice(Ct,1),Ye(mo),pn(St),t("remove-tag",Mn)}},gf=()=>{let Oe;ye(e.modelValue)?Oe=[]:Oe=p.value,m.selectedLabel="",X.value=!1,pn(Oe),t("clear"),Xt(),La()},Os=(Oe,xt=void 0)=>{const St=j.value;if(!["forward","backward"].includes(Oe)||M.value||St.length<=0||Ee.value||V.value)return;if(!X.value)return On();kt(xt)&&(xt=m.hoveringIndex);let Ct=-1;Oe==="forward"?(Ct=xt+1,Ct>=St.length&&(Ct=0)):Oe==="backward"&&(Ct=xt-1,(Ct<0||Ct>=St.length)&&(Ct=St.length-1));const Mn=St[Ct];if(h(Mn)||Mn.type==="Group")return Os(Oe,Ct);m.hoveringIndex=Ct,Ns(Ct)},Te=()=>{if(X.value)~m.hoveringIndex&&j.value[m.hoveringIndex]&&Fl(j.value[m.hoveringIndex]);else return On()},ft=Oe=>{m.hoveringIndex=Oe??-1},Pt=()=>{if(!e.multiple)m.hoveringIndex=j.value.findIndex(Oe=>Ze(f(Oe))===Ze(e.modelValue));else{const Oe=e.modelValue.length;if(Oe>0){const xt=e.modelValue[Oe-1];m.hoveringIndex=j.value.findIndex(St=>Ze(xt)===Ze(f(St)))}else m.hoveringIndex=-1}},jt=Oe=>{if(m.inputValue=Oe.target.value,e.remote)k.value=!0,Qe();else return Be()},bn=Oe=>{X.value=!1,L.value&&D(new FocusEvent("blur",Oe))},ca=()=>(m.isBeforeHide=!1,Ne(()=>{~pt.value&&Ns(pt.value)})),Ns=Oe=>{N.value.scrollToItem(Oe)},ng=(Oe,xt)=>{const St=Ze(Oe);if($e.value.has(St)){const{option:Ct}=$e.value.get(St);return Ct}if(xt&&xt.length){const Ct=xt.find(Mn=>Ze(f(Mn))===St);if(Ct)return Ct}return{[c.value.value]:Oe,[c.value.label]:Oe}},$x=Oe=>$e.value.get(f(Oe))?.index??-1,xu=(Oe=!1)=>{if(e.multiple)if(e.modelValue.length>0){const xt=m.cachedOptions.slice();m.cachedOptions.length=0,m.previousValue=e.modelValue.toString();for(const St of e.modelValue){const Ct=ng(St,xt);m.cachedOptions.push(Ct)}}else m.cachedOptions=[],m.previousValue=void 0;else if(ue.value){m.previousValue=e.modelValue;const xt=j.value,St=xt.findIndex(Ct=>Ze(f(Ct))===Ze(e.modelValue));~St?m.selectedLabel=d(xt[St]):(!m.selectedLabel||Oe)&&(m.selectedLabel=Ze(e.modelValue))}else m.selectedLabel="",m.previousValue=void 0;Xt(),We()};re(()=>e.fitInputWidth,()=>{We()}),re(X,Oe=>{Oe?(e.persistent||We(),st("")):(m.inputValue="",m.previousQuery=null,m.isBeforeHide=!0,m.menuVisibleOnFocus=!1,de(""))}),re(()=>e.modelValue,(Oe,xt)=>{(!Oe||ye(Oe)&&Oe.length===0||e.multiple&&!en(Oe.toString(),m.previousValue)||!e.multiple&&Ze(Oe)!==Ze(m.previousValue))&&xu(!0),!en(Oe,xt)&&e.validateEvent&&r?.validate?.("change").catch(St=>ct(St))},{deep:!0}),re(()=>e.options,()=>{const Oe=$.value;(!Oe||Oe&&document.activeElement!==Oe)&&xu()},{deep:!0,flush:"post"}),re(()=>j.value,()=>(We(),N.value&&Ne(N.value.resetScrollTop))),ho(()=>{m.isBeforeHide||Ie()}),ho(()=>{const{valueKey:Oe,options:xt}=e,St=new Map;for(const Ct of xt){const Mn=f(Ct);let mo=Mn;if(tt(mo)&&(mo=vn(Mn,Oe)),St.get(mo)){ct("ElSelectV2","The option values you provided seem to be duplicated, which may cause some problems, please check.");break}else St.set(mo,!0)}}),dt(()=>{xu()}),Gt(y,vt),Gt(S,Zn),Gt(I,Bo),Gt(_,ku),Gt(A,ua);let bf;return re(()=>wt.value,Oe=>{Oe?bf=Gt(N,Bo).stop:(bf?.(),bf=void 0),t("visible-change",Oe)}),{inputId:u,collapseTagSize:Pe,currentPlaceholder:Ue,expanded:X,emptyText:ce,popupHeight:ve,debounce:Z,allOptions:F,allOptionsValueMap:$e,filteredOptions:j,iconComponent:ie,iconReverse:oe,tagStyle:_e,collapseTagStyle:je,popperSize:b,dropdownMenuVisible:wt,hasModelValue:ue,shouldShowPlaceholder:Tt,selectDisabled:M,selectSize:me,needStatusIcon:Q,showClearBtn:ge,states:m,isFocused:L,nsSelect:a,nsInput:l,inputRef:$,menuRef:N,tagMenuRef:_,tooltipRef:C,tagTooltipRef:E,selectRef:y,wrapperRef:I,selectionRef:S,prefixRef:O,suffixRef:R,collapseItemRef:A,popperRef:at,validateState:ne,validateIcon:K,showTagList:be,collapseTagList:ze,debouncedOnInputChange:Qe,deleteTag:Eu,getLabel:d,getValue:f,getDisabled:h,getValueKey:Ze,getIndex:$x,handleClear:gf,handleClickOutside:bn,handleDel:mf,handleEsc:vf,focus:La,blur:pf,handleMenuEnter:ca,handleResize:vt,resetSelectionWidth:Zn,updateTooltip:Bo,updateTagTooltip:ku,updateOptions:Ie,toggleMenu:On,scrollTo:Ns,onInput:jt,onKeyboardNavigate:Os,onKeyboardSelect:Te,onSelect:Fl,onHover:ft,handleCompositionStart:z,handleCompositionEnd:U,handleCompositionUpdate:W}};var Y9=le({name:"ElSelectV2",components:{ElSelectMenu:j9,ElTag:Xa,ElTooltip:Rn,ElIcon:De},directives:{ClickOutside:Ll},props:M9,emits:A9,setup(e,{emit:t}){const n=w(()=>{const{modelValue:u,multiple:c}=e,d=c?[]:void 0;return ye(u)?c?u:d:c?d:u}),o=q9(Mt({...$n(e),modelValue:n}),t),{calculatorRef:a,inputStyle:l}=xh(),s=_n();bt(Em,{props:Mt({...$n(e),height:o.popupHeight,modelValue:n}),expanded:o.expanded,tooltipRef:o.tooltipRef,contentId:s,onSelect:o.onSelect,onHover:o.onHover,onKeyboardNavigate:o.onKeyboardNavigate,onKeyboardSelect:o.onKeyboardSelect});const r=w(()=>e.multiple?o.states.cachedOptions.map(u=>o.getLabel(u)):o.states.selectedLabel);return{...o,modelValue:n,selectedLabel:r,calculatorRef:a,inputStyle:l,contentId:s,BORDER_HORIZONTAL_WIDTH:z1}}});const G9=["id","value","autocomplete","tabindex","aria-expanded","aria-label","disabled","aria-controls","aria-activedescendant","readonly","name"],X9=["textContent"],J9={key:1};function Z9(e,t,n,o,a,l){const s=Ot("el-tag"),r=Ot("el-tooltip"),u=Ot("el-icon"),c=Ot("el-select-menu"),d=eh("click-outside");return rt((x(),B("div",{ref:"selectRef",class:T([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),onMouseenter:t[15]||(t[15]=f=>e.states.inputHovering=!0),onMouseleave:t[16]||(t[16]=f=>e.states.inputHovering=!1)},[Y(r,{ref:"tooltipRef",visible:e.dropdownMenuVisible,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,placement:e.placement,pure:"",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:t[14]||(t[14]=f=>e.states.isBeforeHide=!1)},{default:J(()=>[H("div",{ref:"wrapperRef",class:T([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:t[11]||(t[11]=Ge((...f)=>e.toggleMenu&&e.toggleMenu(...f),["prevent"]))},[e.$slots.prefix?(x(),B("div",{key:0,ref:"prefixRef",class:T(e.nsSelect.e("prefix"))},[ee(e.$slots,"prefix")],2)):te("v-if",!0),H("div",{ref:"selectionRef",class:T([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.modelValue.length)])},[e.multiple?ee(e.$slots,"tag",{key:0,data:e.states.cachedOptions,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>[(x(!0),B(Ve,null,mt(e.showTagList,f=>(x(),B("div",{key:e.getValueKey(e.getValue(f)),class:T(e.nsSelect.e("selected-item"))},[Y(s,{closable:!e.selectDisabled&&!e.getDisabled(f),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Ke(e.tagStyle),onClose:h=>e.deleteTag(h,f)},{default:J(()=>[H("span",{class:T(e.nsSelect.e("tags-text"))},[ee(e.$slots,"label",{index:e.getIndex(f),label:e.getLabel(f),value:e.getValue(f)},()=>[gt(ke(e.getLabel(f)),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.states.cachedOptions.length>e.maxCollapseTags?(x(),ae(r,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":e.tagTooltip?.fallbackPlacements??["bottom","top","right","left"],effect:e.tagTooltip?.effect??e.effect,placement:e.tagTooltip?.placement??"bottom","popper-class":e.tagTooltip?.popperClass??e.popperClass,"popper-style":e.tagTooltip?.popperStyle??e.popperStyle,teleported:e.tagTooltip?.teleported??e.teleported,"append-to":e.tagTooltip?.appendTo??e.appendTo,"popper-options":e.tagTooltip?.popperOptions??e.popperOptions,transition:e.tagTooltip?.transition,"show-after":e.tagTooltip?.showAfter,"hide-after":e.tagTooltip?.hideAfter,"auto-close":e.tagTooltip?.autoClose,offset:e.tagTooltip?.offset},{default:J(()=>[H("div",{ref:"collapseItemRef",class:T(e.nsSelect.e("selected-item"))},[Y(s,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,style:Ke(e.collapseTagStyle),"disable-transitions":""},{default:J(()=>[H("span",{class:T(e.nsSelect.e("tags-text"))}," + "+ke(e.states.cachedOptions.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:J(()=>[H("div",{ref:"tagMenuRef",class:T(e.nsSelect.e("selection"))},[(x(!0),B(Ve,null,mt(e.collapseTagList,f=>(x(),B("div",{key:e.getValueKey(e.getValue(f)),class:T(e.nsSelect.e("selected-item"))},[Y(s,{class:"in-tooltip",closable:!e.selectDisabled&&!e.getDisabled(f),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:h=>e.deleteTag(h,f)},{default:J(()=>[H("span",{class:T(e.nsSelect.e("tags-text"))},[ee(e.$slots,"label",{index:e.getIndex(f),label:e.getLabel(f),value:e.getValue(f)},()=>[gt(ke(e.getLabel(f)),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","fallback-placements","effect","placement","popper-class","popper-style","teleported","append-to","popper-options","transition","show-after","hide-after","auto-close","offset"])):te("v-if",!0)]):te("v-if",!0),H("div",{class:T([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled||!e.states.inputValue&&!e.isFocused)])},[H("input",{id:e.inputId,ref:"inputRef",value:e.states.inputValue,style:Ke(e.inputStyle),autocomplete:e.autocomplete,tabindex:e.tabindex,"aria-autocomplete":"none","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-label":e.ariaLabel,class:T([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,role:"combobox","aria-controls":e.contentId,"aria-activedescendant":e.states.hoveringIndex>=0?`${e.contentId}-${e.states.hoveringIndex}`:"",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,onInput:t[0]||(t[0]=(...f)=>e.onInput&&e.onInput(...f)),onChange:t[1]||(t[1]=Ge(()=>{},["stop"])),onCompositionstart:t[2]||(t[2]=(...f)=>e.handleCompositionStart&&e.handleCompositionStart(...f)),onCompositionupdate:t[3]||(t[3]=(...f)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...f)),onCompositionend:t[4]||(t[4]=(...f)=>e.handleCompositionEnd&&e.handleCompositionEnd(...f)),onKeydown:[t[5]||(t[5]=Qt(Ge(f=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),t[6]||(t[6]=Qt(Ge(f=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),t[7]||(t[7]=Qt(Ge((...f)=>e.onKeyboardSelect&&e.onKeyboardSelect(...f),["stop","prevent"]),["enter"])),t[8]||(t[8]=Qt(Ge((...f)=>e.handleEsc&&e.handleEsc(...f),["stop","prevent"]),["esc"])),t[9]||(t[9]=Qt(Ge((...f)=>e.handleDel&&e.handleDel(...f),["stop"]),["delete"]))],onClick:t[10]||(t[10]=Ge((...f)=>e.toggleMenu&&e.toggleMenu(...f),["stop"]))},null,46,G9),e.filterable?(x(),B("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:T(e.nsSelect.e("input-calculator")),textContent:ke(e.states.inputValue)},null,10,X9)):te("v-if",!0)],2),e.shouldShowPlaceholder?(x(),B("div",{key:1,class:T([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?ee(e.$slots,"label",{key:0,index:e.allOptionsValueMap.get(e.modelValue)?.index??-1,label:e.currentPlaceholder,value:e.modelValue},()=>[H("span",null,ke(e.currentPlaceholder),1)]):(x(),B("span",J9,ke(e.currentPlaceholder),1))],2)):te("v-if",!0)],2),H("div",{ref:"suffixRef",class:T(e.nsSelect.e("suffix"))},[e.iconComponent?rt((x(),ae(u,{key:0,class:T([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:J(()=>[(x(),ae(lt(e.iconComponent)))]),_:1},8,["class"])),[[Nt,!e.showClearBtn]]):te("v-if",!0),e.showClearBtn&&e.clearIcon?(x(),ae(u,{key:1,class:T([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.nsSelect.e("clear")]),onClick:Ge(e.handleClear,["prevent","stop"])},{default:J(()=>[(x(),ae(lt(e.clearIcon)))]),_:1},8,["class","onClick"])):te("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(x(),ae(u,{key:2,class:T([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:J(()=>[(x(),ae(lt(e.validateIcon)))]),_:1},8,["class"])):te("v-if",!0)],2)],2)]),content:J(()=>[Y(c,{id:e.contentId,ref:"menuRef",data:e.filteredOptions,width:e.popperSize-e.BORDER_HORIZONTAL_WIDTH,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn,"aria-label":e.ariaLabel},oo({default:J(f=>[ee(e.$slots,"default",Ua(qa(f)))]),_:2},[e.$slots.header?{name:"header",fn:J(()=>[H("div",{class:T(e.nsSelect.be("dropdown","header")),onClick:t[12]||(t[12]=Ge(()=>{},["stop"]))},[ee(e.$slots,"header")],2)]),key:"0"}:void 0,e.$slots.loading&&e.loading?{name:"loading",fn:J(()=>[H("div",{class:T(e.nsSelect.be("dropdown","loading"))},[ee(e.$slots,"loading")],2)]),key:"1"}:e.loading||e.filteredOptions.length===0?{name:"empty",fn:J(()=>[H("div",{class:T(e.nsSelect.be("dropdown","empty"))},[ee(e.$slots,"empty",{},()=>[H("span",null,ke(e.emptyText),1)])],2)]),key:"2"}:void 0,e.$slots.footer?{name:"footer",fn:J(()=>[H("div",{class:T(e.nsSelect.be("dropdown","footer")),onClick:t[13]||(t[13]=Ge(()=>{},["stop"]))},[ee(e.$slots,"footer")],2)]),key:"3"}:void 0]),1032,["id","data","width","hovering-index","scrollbar-always-on","aria-label"])]),_:3},8,["visible","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","placement","transition","persistent","append-to","show-arrow","offset","onBeforeShow"])],34)),[[d,e.handleClickOutside,e.popperRef]])}var Q9=Sn(Y9,[["render",Z9]]);const e7=ot(Q9),t7=Se({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:G([Number,Object])}}),n7=Se({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}});var o7=le({name:"ElSkeletonItem",__name:"skeleton-item",props:n7,setup(e){const t=fe("skeleton");return(n,o)=>(x(),B("div",{class:T([i(t).e("item"),i(t).e(e.variant)])},[e.variant==="image"?(x(),ae(i(r3),{key:0})):te("v-if",!0)],2))}}),dd=o7,a7=le({name:"ElSkeleton",__name:"skeleton",props:t7,setup(e,{expose:t}){const n=e,o=fe("skeleton"),a=d_(Dt(n,"loading"),n.throttle);return t({uiLoading:a}),(l,s)=>i(a)?(x(),B("div",it({key:0,class:[i(o).b(),i(o).is("animated",e.animated)]},l.$attrs),[(x(!0),B(Ve,null,mt(e.count,r=>(x(),B(Ve,{key:r},[i(a)?ee(l.$slots,"template",{key:r},()=>[Y(dd,{class:T(i(o).is("first")),variant:"p"},null,8,["class"]),(x(!0),B(Ve,null,mt(e.rows,u=>(x(),ae(dd,{key:u,class:T([i(o).e("paragraph"),i(o).is("last",u===e.rows&&e.rows>1)]),variant:"p"},null,8,["class"]))),128))]):te("v-if",!0)],64))),128))],16)):ee(l.$slots,"default",Ua(it({key:1},l.$attrs)))}}),l7=a7;const s7=ot(l7,{SkeletonItem:dd}),r7=Zt(dd),Q2=Symbol("sliderContextKey"),i7=Se({modelValue:{type:G([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:wn,inputSize:wn,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:G(Function),default:void 0},disabled:{type:Boolean,default:void 0},range:Boolean,vertical:Boolean,height:String,rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:G(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:Ma,default:"top"},marks:{type:G(Object)},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},...Jn(["ariaLabel"])}),ep=e=>He(e)||ye(e)&&e.every(He),u7={[et]:ep,[hn]:ep,[ht]:ep},c7=(e,t,n)=>{const o=P();return dt(async()=>{e.range?(ye(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue]):(!He(e.modelValue)||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue),Lt(window,"resize",n),await Ne(),n()}),{sliderWrapper:o}},d7=e=>w(()=>e.marks?Object.keys(e.marks).map(Number.parseFloat).sort((t,n)=>t-n).filter(t=>t<=e.max&&t>=e.min).map(t=>({point:t,position:(t-e.min)*100/(e.max-e.min),mark:e.marks[t]})):[]),f7=(e,t,n)=>{const{formItem:o}=In(),a=qt(),l=P(),s=P(),r={firstButton:l,secondButton:s},u=on(),c=w(()=>Math.min(t.firstValue,t.secondValue)),d=w(()=>Math.max(t.firstValue,t.secondValue)),f=w(()=>e.range?`${100*(d.value-c.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),h=w(()=>e.range?`${100*(c.value-e.min)/(e.max-e.min)}%`:"0%"),g=w(()=>e.vertical?{height:e.height}:{}),p=w(()=>e.vertical?{height:f.value,bottom:h.value}:{width:f.value,left:h.value}),v=()=>{a.value&&(t.sliderSize=a.value.getBoundingClientRect()[e.vertical?"height":"width"])},m=_=>{const A=e.min+_*(e.max-e.min)/100;if(!e.range)return l;let V;return Math.abs(c.value-A)t.secondValue?"firstButton":"secondButton",r[V]},b=_=>{const A=m(_);return A.value.setPosition(_),A},k=_=>{t.firstValue=_??e.min,S(e.range?[c.value,d.value]:_??e.min)},y=_=>{t.secondValue=_,e.range&&S([c.value,d.value])},S=_=>{n(et,_),n(hn,_)},C=async()=>{await Ne(),n(ht,e.range?[c.value,d.value]:e.modelValue)},E=_=>{if(u.value||t.dragging)return;v();let A=0;if(e.vertical){const V=_.touches?.item(0)?.clientY??_.clientY;A=(a.value.getBoundingClientRect().bottom-V)/t.sliderSize*100}else A=((_.touches?.item(0)?.clientX??_.clientX)-a.value.getBoundingClientRect().left)/t.sliderSize*100;if(!(A<0||A>100))return b(A)};return{elFormItem:o,slider:a,firstButton:l,secondButton:s,sliderDisabled:u,minValue:c,maxValue:d,runwayStyle:g,barStyle:p,resetSize:v,setPosition:b,emitChange:C,onSliderWrapperPrevent:_=>{(r.firstButton.value?.dragging||r.secondButton.value?.dragging)&&_.preventDefault()},onSliderClick:_=>{E(_)&&C()},onSliderDown:async _=>{const A=E(_);A&&(await Ne(),A.value.onButtonDown(_))},onSliderMarkerDown:_=>{u.value||t.dragging||b(_)&&C()},setFirstValue:k,setSecondValue:y}},p7=(e,t,n,o)=>({stops:w(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return ct("ElSlider","step should not be 0."),[];const s=Math.ceil((e.max-e.min)/e.step),r=100*e.step/(e.max-e.min),u=Array.from({length:s-1}).map((c,d)=>(d+1)*r);return e.range?u.filter(c=>c<100*(n.value-e.min)/(e.max-e.min)||c>100*(o.value-e.min)/(e.max-e.min)):u.filter(c=>c>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:s=>e.vertical?{bottom:`${s}%`}:{left:`${s}%`}}),v7=(e,t,n,o,a,l)=>{const s=c=>{a(et,c),a(hn,c)},r=()=>e.range?![n.value,o.value].every((c,d)=>c===t.oldValue[d]):e.modelValue!==t.oldValue,u=()=>{e.min>e.max&&Jt("Slider","min should not be greater than max.");const c=e.modelValue;e.range&&ye(c)?c[1]e.max?s([e.max,e.max]):c[0]e.max?s([c[0],e.max]):(t.firstValue=c[0],t.secondValue=c[1],r()&&(e.validateEvent&&l?.validate?.("change").catch(d=>ct(d)),t.oldValue=c.slice())):!e.range&&He(c)&&!Number.isNaN(c)&&(ce.max?s(e.max):(t.firstValue=c,r()&&(e.validateEvent&&l?.validate?.("change").catch(d=>ct(d)),t.oldValue=c)))};u(),re(()=>t.dragging,c=>{c||u()}),re(()=>e.modelValue,(c,d)=>{t.dragging||ye(c)&&ye(d)&&c.every((f,h)=>f===d[h])&&t.firstValue===c[0]&&t.secondValue===c[1]||u()},{deep:!0}),re(()=>[e.min,e.max],()=>{u()})},h7=(e,t,n)=>{const o=P(),a=P(!1),l=w(()=>t.value instanceof Function);return{tooltip:o,tooltipVisible:a,formatValue:w(()=>l.value&&t.value(e.modelValue)||e.modelValue),displayTooltip:Oa(()=>{n.value&&(a.value=!0)},50),hideTooltip:Oa(()=>{n.value&&(a.value=!1)},50)}},m7=(e,t,n)=>{const{disabled:o,min:a,max:l,step:s,showTooltip:r,persistent:u,precision:c,sliderSize:d,formatTooltip:f,emitChange:h,resetSize:g,updateDragging:p}=Ae(Q2),{tooltip:v,tooltipVisible:m,formatValue:b,displayTooltip:k,hideTooltip:y}=h7(e,f,r),S=P(),C=w(()=>`${(e.modelValue-a.value)/(l.value-a.value)*100}%`),E=w(()=>e.vertical?{bottom:C.value}:{left:C.value}),$=()=>{t.hovering=!0,k()},O=()=>{t.hovering=!1,t.dragging||y()},R=j=>{o.value||(j.preventDefault(),L(j),window.addEventListener("mousemove",D),window.addEventListener("touchmove",D),window.addEventListener("mouseup",F),window.addEventListener("touchend",F),window.addEventListener("contextmenu",F),S.value.focus())},N=j=>{o.value||(t.newPosition=Number.parseFloat(C.value)+j/(l.value-a.value)*100,q(t.newPosition),h())},_=()=>{N(-s.value)},A=()=>{N(s.value)},V=()=>{N(-s.value*4)},z=()=>{N(s.value*4)},U=()=>{o.value||(q(0),h())},W=()=>{o.value||(q(100),h())},M=j=>{const X=Ht(j);let Q=!0;switch(X){case we.left:case we.down:_();break;case we.right:case we.up:A();break;case we.home:U();break;case we.end:W();break;case we.pageDown:V();break;case we.pageUp:z();break;default:Q=!1;break}Q&&j.preventDefault()},I=j=>{let X,Q;return j.type.startsWith("touch")?(Q=j.touches[0].clientY,X=j.touches[0].clientX):(Q=j.clientY,X=j.clientX),{clientX:X,clientY:Q}},L=j=>{t.dragging=!0,t.isClick=!0;const{clientX:X,clientY:Q}=I(j);e.vertical?t.startY=Q:t.startX=X,t.startPosition=Number.parseFloat(C.value),t.newPosition=t.startPosition},D=j=>{if(t.dragging){t.isClick=!1,k(),g();let X;const{clientX:Q,clientY:ve}=I(j);e.vertical?(t.currentY=ve,X=(t.startY-t.currentY)/d.value*100):(t.currentX=Q,X=(t.currentX-t.startX)/d.value*100),t.newPosition=t.startPosition+X,q(t.newPosition)}},F=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||y(),t.isClick||q(t.newPosition),h()},0),window.removeEventListener("mousemove",D),window.removeEventListener("touchmove",D),window.removeEventListener("mouseup",F),window.removeEventListener("touchend",F),window.removeEventListener("contextmenu",F))},q=async j=>{if(j===null||Number.isNaN(+j))return;j=Jl(j,0,100);const X=Math.floor((l.value-a.value)/s.value),Q=X*s.value/(l.value-a.value)*100,ve=Q+(100-Q)/2;let ue;if(jt.dragging,j=>{p(j)}),Lt(S,"touchstart",R,{passive:!1}),{disabled:o,button:S,tooltip:v,tooltipVisible:m,showTooltip:r,persistent:u,wrapperStyle:E,formatValue:b,handleMouseEnter:$,handleMouseLeave:O,onButtonDown:R,onKeyDown:M,setPosition:q}},g7=Se({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:Ma,default:"top"}}),b7={[et]:e=>He(e)},y7=["tabindex"];var w7=le({name:"ElSliderButton",__name:"button",props:g7,emits:b7,setup(e,{expose:t,emit:n}){const o=e,a=n,l=fe("slider"),s=Mt({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:o.modelValue}),r=w(()=>f.value?h.value:!1),{disabled:u,button:c,tooltip:d,showTooltip:f,persistent:h,tooltipVisible:g,wrapperStyle:p,formatValue:v,handleMouseEnter:m,handleMouseLeave:b,onButtonDown:k,onKeyDown:y,setPosition:S}=m7(o,s,a),{hovering:C,dragging:E}=$n(s);return t({onButtonDown:k,onKeyDown:y,setPosition:S,hovering:C,dragging:E}),($,O)=>(x(),B("div",{ref_key:"button",ref:c,class:T([i(l).e("button-wrapper"),{hover:i(C),dragging:i(E)}]),style:Ke(i(p)),tabindex:i(u)?void 0:0,onMouseenter:O[0]||(O[0]=(...R)=>i(m)&&i(m)(...R)),onMouseleave:O[1]||(O[1]=(...R)=>i(b)&&i(b)(...R)),onMousedown:O[2]||(O[2]=(...R)=>i(k)&&i(k)(...R)),onFocus:O[3]||(O[3]=(...R)=>i(m)&&i(m)(...R)),onBlur:O[4]||(O[4]=(...R)=>i(b)&&i(b)(...R)),onKeydown:O[5]||(O[5]=(...R)=>i(y)&&i(y)(...R))},[Y(i(Rn),{ref_key:"tooltip",ref:d,visible:i(g),placement:$.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":$.tooltipClass,disabled:!i(f),persistent:r.value},{content:J(()=>[H("span",null,ke(i(v)),1)]),default:J(()=>[H("div",{class:T([i(l).e("button"),{hover:i(C),dragging:i(E)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled","persistent"])],46,y7))}}),y0=w7;const S7=Se({mark:{type:G([String,Object]),default:void 0}});var C7=le({name:"ElSliderMarker",props:S7,setup(e){const t=fe("slider"),n=w(()=>Le(e.mark)?e.mark:e.mark.label),o=w(()=>Le(e.mark)?void 0:e.mark.style);return()=>qe("div",{class:t.e("marks-text"),style:o.value},n.value)}});const k7=["id","role","aria-label","aria-labelledby"],E7={key:1};var x7=le({name:"ElSlider",__name:"slider",props:i7,emits:u7,setup(e,{expose:t,emit:n}){const o=e,a=n,l=fe("slider"),{t:s}=yt(),r=Mt({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:u,slider:c,firstButton:d,secondButton:f,sliderDisabled:h,minValue:g,maxValue:p,runwayStyle:v,barStyle:m,resetSize:b,emitChange:k,onSliderWrapperPrevent:y,onSliderClick:S,onSliderDown:C,onSliderMarkerDown:E,setFirstValue:$,setSecondValue:O}=f7(o,r,a),{stops:R,getStopStyle:N}=p7(o,r,g,p),{inputId:_,isLabeledByFormItem:A}=To(o,{formItemContext:u}),V=mn(),z=w(()=>o.inputSize||V.value),U=w(()=>o.ariaLabel||s("el.slider.defaultLabel",{min:o.min,max:o.max})),W=w(()=>o.range?o.rangeStartLabel||s("el.slider.defaultRangeStartLabel"):U.value),M=w(()=>o.formatValueText?o.formatValueText(X.value):`${X.value}`),I=w(()=>o.rangeEndLabel||s("el.slider.defaultRangeEndLabel")),L=w(()=>o.formatValueText?o.formatValueText(Q.value):`${Q.value}`),D=w(()=>[l.b(),l.m(V.value),l.is("vertical",o.vertical),{[l.m("with-input")]:o.showInput}]),F=d7(o);v7(o,r,g,p,a,u);const q=w(()=>{const ge=[o.min,o.max,o.step].map(ie=>{const oe=`${ie}`.split(".")[1];return oe?oe.length:0});return Math.max.apply(null,ge)}),{sliderWrapper:j}=c7(o,r,b),{firstValue:X,secondValue:Q,sliderSize:ve}=$n(r),ue=ge=>{r.dragging=ge};return Lt(j,"touchstart",y,{passive:!1}),Lt(j,"touchmove",y,{passive:!1}),bt(Q2,{...$n(o),sliderSize:ve,disabled:h,precision:q,emitChange:k,resetSize:b,updateDragging:ue}),t({onSliderClick:S}),(ge,ie)=>(x(),B("div",{id:ge.range?i(_):void 0,ref_key:"sliderWrapper",ref:j,class:T(D.value),role:ge.range?"group":void 0,"aria-label":ge.range&&!i(A)?U.value:void 0,"aria-labelledby":ge.range&&i(A)?i(u)?.labelId:void 0},[H("div",{ref_key:"slider",ref:c,class:T([i(l).e("runway"),{"show-input":ge.showInput&&!ge.range},i(l).is("disabled",i(h))]),style:Ke(i(v)),onMousedown:ie[0]||(ie[0]=(...oe)=>i(C)&&i(C)(...oe)),onTouchstartPassive:ie[1]||(ie[1]=(...oe)=>i(C)&&i(C)(...oe))},[H("div",{class:T(i(l).e("bar")),style:Ke(i(m))},null,6),Y(y0,{id:ge.range?void 0:i(_),ref_key:"firstButton",ref:d,"model-value":i(X),vertical:ge.vertical,"tooltip-class":ge.tooltipClass,placement:ge.placement,role:"slider","aria-label":ge.range||!i(A)?W.value:void 0,"aria-labelledby":!ge.range&&i(A)?i(u)?.labelId:void 0,"aria-valuemin":ge.min,"aria-valuemax":ge.range?i(Q):ge.max,"aria-valuenow":i(X),"aria-valuetext":M.value,"aria-orientation":ge.vertical?"vertical":"horizontal","aria-disabled":i(h),"onUpdate:modelValue":i($)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),ge.range?(x(),ae(y0,{key:0,ref_key:"secondButton",ref:f,"model-value":i(Q),vertical:ge.vertical,"tooltip-class":ge.tooltipClass,placement:ge.placement,role:"slider","aria-label":I.value,"aria-valuemin":i(X),"aria-valuemax":ge.max,"aria-valuenow":i(Q),"aria-valuetext":L.value,"aria-orientation":ge.vertical?"vertical":"horizontal","aria-disabled":i(h),"onUpdate:modelValue":i(O)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):te("v-if",!0),ge.showStops?(x(),B("div",E7,[(x(!0),B(Ve,null,mt(i(R),(oe,ne)=>(x(),B("div",{key:ne,class:T(i(l).e("stop")),style:Ke(i(N)(oe))},null,6))),128))])):te("v-if",!0),i(F).length>0?(x(),B(Ve,{key:2},[H("div",null,[(x(!0),B(Ve,null,mt(i(F),(oe,ne)=>(x(),B("div",{key:ne,style:Ke(i(N)(oe.position)),class:T([i(l).e("stop"),i(l).e("marks-stop")])},null,6))),128))]),H("div",{class:T(i(l).e("marks"))},[(x(!0),B(Ve,null,mt(i(F),(oe,ne)=>(x(),ae(i(C7),{key:ne,mark:oe.mark,style:Ke(i(N)(oe.position)),onMousedown:Ge(K=>i(E)(oe.position),["stop"])},null,8,["mark","style","onMousedown"]))),128))],2)],64)):te("v-if",!0)],38),ge.showInput&&!ge.range?(x(),ae(i(O2),{key:0,ref:"input","model-value":i(X),class:T(i(l).e("input")),step:ge.step,disabled:i(h),controls:ge.showInputControls,min:ge.min,max:ge.max,precision:q.value,size:z.value,"onUpdate:modelValue":i($),onChange:i(k)},null,8,["model-value","class","step","disabled","controls","min","max","precision","size","onUpdate:modelValue","onChange"])):te("v-if",!0)],10,k7))}}),T7=x7;const $7=ot(T7),O7=Se({prefixCls:{type:String}}),w0=le({name:"ElSpaceItem",props:O7,setup(e,{slots:t}){const n=fe("space"),o=w(()=>`${e.prefixCls||n.b()}__item`);return()=>qe("div",{class:o.value},ee(t,"default"))}}),S0={small:8,default:12,large:16};function N7(e){const t=fe("space"),n=w(()=>[t.b(),t.m(e.direction),e.class]),o=P(0),a=P(0),l=w(()=>[e.wrap||e.fill?{flexWrap:"wrap"}:{},{alignItems:e.alignment},{rowGap:`${a.value}px`,columnGap:`${o.value}px`},e.style]),s=w(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return ho(()=>{const{size:r="small",wrap:u,direction:c,fill:d}=e;if(ye(r)){const[f=0,h=0]=r;o.value=f,a.value=h}else{let f;He(r)?f=r:f=S0[r||"small"]||S0.small,(u||d)&&c==="horizontal"?o.value=a.value=f:c==="horizontal"?(o.value=f,a.value=0):(a.value=f,o.value=0)}}),{classes:n,containerStyle:l,itemStyle:s}}const R7=Se({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:G([String,Object,Array]),default:""},style:{type:G([String,Array,Object]),default:""},alignment:{type:G(String),default:"center"},prefixCls:{type:String},spacer:{type:G([Object,String,Number,Array]),default:null,validator:e=>Kt(e)||He(e)||Le(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:ta,validator:e=>He(e)||ye(e)&&e.length===2&&e.every(He)}}),I7=le({name:"ElSpace",props:R7,setup(e,{slots:t}){const{classes:n,containerStyle:o,itemStyle:a}=N7(e);function l(s,r="",u=[]){const{prefixCls:c}=e;return s.forEach((d,f)=>{Bp(d)?ye(d.children)&&d.children.forEach((h,g)=>{Bp(h)&&ye(h.children)?l(h.children,`${r+g}-`,u):Kt(h)&&h?.type===dn?u.push(h):u.push(Y(w0,{style:a.value,prefixCls:c,key:`nested-${r+g}`},{default:()=>[h]},Fo.PROPS|Fo.STYLE,["style","prefixCls"]))}):c4(d)&&u.push(Y(w0,{style:a.value,prefixCls:c,key:`LoopKey${r+f}`},{default:()=>[d]},Fo.PROPS|Fo.STYLE,["style","prefixCls"]))}),u}return()=>{const{spacer:s,direction:r}=e,u=ee(t,"default",{key:0},()=>[]);if((u.children??[]).length===0)return null;if(ye(u.children)){let c=l(u.children);if(s){const d=c.length-1;c=c.reduce((f,h,g)=>{const p=[...f,h];return g!==d&&p.push(Y("span",{style:[a.value,r==="vertical"?"width: 100%":null],key:g},[Kt(s)?s:gt(s,Fo.TEXT)],Fo.STYLE)),p},[])}return Y("div",{class:n.value,style:o.value},c,Fo.STYLE|Fo.CLASS)}return u.children}}}),M7=ot(I7),P7=Se({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),A7={[ht]:(e,t)=>[e,t].every(He)},eE="ElSteps",_7=Se({title:{type:String,default:""},icon:{type:Vt},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}});var L7=le({name:"ElSteps",__name:"steps",props:P7,emits:A7,setup(e,{emit:t}){const n=e,o=t,a=fe("steps"),{children:l,addChild:s,removeChild:r,ChildrenSorter:u}=qd(ut(),"ElStep");return re(l,()=>{l.value.forEach((c,d)=>{c.setIndex(d)})}),bt(eE,{props:n,steps:l,addStep:s,removeStep:r}),re(()=>n.active,(c,d)=>{o(ht,c,d)}),(c,d)=>(x(),B("div",{class:T([i(a).b(),i(a).m(e.simple?"simple":e.direction)])},[ee(c.$slots,"default"),Y(i(u))],2))}}),D7=L7,B7=le({name:"ElStep",__name:"item",props:_7,setup(e){const t=e,n=fe("step"),o=P(-1),a=P({}),l=P(""),s=Ae(eE),r=ut();let u=0,c=0;dt(()=>{re([()=>s.props.active,()=>s.props.processStatus,()=>s.props.finishStatus],([O],[R])=>{c=R||0,u=O-c,E(O)},{immediate:!0})});const d=w(()=>t.status||l.value),f=w(()=>{const O=s.steps.value[o.value-1];return O?O.internalStatus.value:"wait"}),h=w(()=>s.props.alignCenter),g=w(()=>s.props.direction==="vertical"),p=w(()=>s.props.simple),v=w(()=>s.steps.value.length),m=w(()=>s.steps.value[v.value-1]?.uid===r.uid),b=w(()=>p.value?"":s.props.space),k=w(()=>[n.b(),n.is(p.value?"simple":s.props.direction),n.is("flex",m.value&&!b.value&&!h.value),n.is("center",h.value&&!g.value&&!p.value)]),y=w(()=>{const O={flexBasis:He(b.value)?`${b.value}px`:b.value?b.value:`${100/(v.value-(h.value?0:1))}%`};return g.value||m.value&&(O.maxWidth=`${100/v.value}%`),O}),S=O=>{o.value=O},C=O=>{const R=O==="wait",N={transitionDelay:`${Math.abs(u)===1?0:u>0?(o.value+1-c)*150:-(o.value+1-s.props.active)*150}ms`},_=O===s.props.processStatus||R?0:100;N.borderWidth=_&&!p.value?"1px":0,N[s.props.direction==="vertical"?"height":"width"]=`${_}%`,a.value=N},E=O=>{O>o.value?l.value=s.props.finishStatus:O===o.value&&f.value!=="error"?l.value=s.props.processStatus:l.value="wait";const R=s.steps.value[o.value-1];R&&R.calcProgress(l.value)},$={uid:r.uid,getVnode:()=>r.vnode,currentStatus:d,internalStatus:l,setIndex:S,calcProgress:C};return s.addStep($),_t(()=>{s.removeStep($)}),(O,R)=>(x(),B("div",{style:Ke(y.value),class:T(k.value)},[te(" icon & line "),H("div",{class:T([i(n).e("head"),i(n).is(d.value)])},[p.value?te("v-if",!0):(x(),B("div",{key:0,class:T(i(n).e("line"))},[H("i",{class:T(i(n).e("line-inner")),style:Ke(a.value)},null,6)],2)),H("div",{class:T([i(n).e("icon"),i(n).is(e.icon||O.$slots.icon?"icon":"text")])},[ee(O.$slots,"icon",{},()=>[e.icon?(x(),ae(i(De),{key:0,class:T(i(n).e("icon-inner"))},{default:J(()=>[(x(),ae(lt(e.icon)))]),_:1},8,["class"])):d.value==="success"?(x(),ae(i(De),{key:1,class:T([i(n).e("icon-inner"),i(n).is("status")])},{default:J(()=>[Y(i(uu))]),_:1},8,["class"])):d.value==="error"?(x(),ae(i(De),{key:2,class:T([i(n).e("icon-inner"),i(n).is("status")])},{default:J(()=>[Y(i(Do))]),_:1},8,["class"])):p.value?te("v-if",!0):(x(),B("div",{key:3,class:T(i(n).e("icon-inner"))},ke(o.value+1),3))])],2)],2),te(" title & description "),H("div",{class:T(i(n).e("main"))},[H("div",{class:T([i(n).e("title"),i(n).is(d.value)])},[ee(O.$slots,"title",{},()=>[gt(ke(e.title),1)])],2),p.value?(x(),B("div",{key:0,class:T(i(n).e("arrow"))},null,2)):(x(),B("div",{key:1,class:T([i(n).e("description"),i(n).is(d.value)])},[ee(O.$slots,"description",{},()=>[gt(ke(e.description),1)])],2))],2)],6))}}),tE=B7;const F7=ot(D7,{Step:tE}),V7=Zt(tE),nE=e=>["",...ta].includes(e),z7=Se({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:void 0},loading:Boolean,size:{type:String,validator:nE},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:Vt},activeActionIcon:{type:Vt},activeIcon:{type:Vt},inactiveIcon:{type:Vt},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:G(Function)},id:String,tabindex:{type:[String,Number]},...Jn(["ariaLabel"])}),H7={[et]:e=>Ft(e)||Le(e)||He(e),[ht]:e=>Ft(e)||Le(e)||He(e),[hn]:e=>Ft(e)||Le(e)||He(e)},K7=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex"],W7=["aria-hidden"],j7={key:1},U7={key:1},q7=["aria-hidden"],tp="ElSwitch";var Y7=le({name:tp,__name:"switch",props:z7,emits:H7,setup(e,{expose:t,emit:n}){const o=e,a=n,{formItem:l}=In(),s=mn(),r=fe("switch"),{inputId:u}=To(o,{formItemContext:l}),c=on(w(()=>{if(o.loading)return!0})),d=P(o.modelValue!==!1),f=qt(),h=w(()=>[r.b(),r.m(s.value),r.is("disabled",c.value),r.is("checked",b.value)]),g=w(()=>[r.e("label"),r.em("label","left"),r.is("active",!b.value)]),p=w(()=>[r.e("label"),r.em("label","right"),r.is("active",b.value)]),v=w(()=>({width:nn(o.width)}));re(()=>o.modelValue,()=>{d.value=!0});const m=w(()=>d.value?o.modelValue:!1),b=w(()=>m.value===o.activeValue);[o.activeValue,o.inactiveValue].includes(m.value)||(a(et,o.inactiveValue),a(ht,o.inactiveValue),a(hn,o.inactiveValue)),re(b,C=>{f.value.checked=C,o.validateEvent&&l?.validate?.("change").catch(E=>ct(E))});const k=()=>{const C=b.value?o.inactiveValue:o.activeValue;a(et,C),a(ht,C),a(hn,C),Ne(()=>{f.value.checked=b.value})},y=()=>{if(c.value)return;const{beforeChange:C}=o;if(!C){k();return}const E=C();[cs(E),Ft(E)].includes(!0)||Jt(tp,"beforeChange must return type `Promise` or `boolean`"),cs(E)?E.then($=>{$&&k()}).catch($=>{ct(tp,`some error occurred: ${$}`)}):E&&k()},S=()=>{f.value?.focus?.()};return dt(()=>{f.value.checked=b.value}),t({focus:S,checked:b}),(C,E)=>(x(),B("div",{class:T(h.value),onClick:Ge(y,["prevent"])},[H("input",{id:i(u),ref_key:"input",ref:f,class:T(i(r).e("input")),type:"checkbox",role:"switch","aria-checked":b.value,"aria-disabled":i(c),"aria-label":e.ariaLabel,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:i(c),tabindex:e.tabindex,onChange:k,onKeydown:Qt(y,["enter"])},null,42,K7),!e.inlinePrompt&&(e.inactiveIcon||e.inactiveText||C.$slots.inactive)?(x(),B("span",{key:0,class:T(g.value)},[ee(C.$slots,"inactive",{},()=>[e.inactiveIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.inactiveIcon)))]),_:1})):te("v-if",!0),!e.inactiveIcon&&e.inactiveText?(x(),B("span",{key:1,"aria-hidden":b.value},ke(e.inactiveText),9,W7)):te("v-if",!0)])],2)):te("v-if",!0),H("span",{class:T(i(r).e("core")),style:Ke(v.value)},[e.inlinePrompt?(x(),B("div",{key:0,class:T(i(r).e("inner"))},[b.value?(x(),B("div",{key:1,class:T(i(r).e("inner-wrapper"))},[ee(C.$slots,"active",{},()=>[e.activeIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.activeIcon)))]),_:1})):te("v-if",!0),!e.activeIcon&&e.activeText?(x(),B("span",U7,ke(e.activeText),1)):te("v-if",!0)])],2)):(x(),B("div",{key:0,class:T(i(r).e("inner-wrapper"))},[ee(C.$slots,"inactive",{},()=>[e.inactiveIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.inactiveIcon)))]),_:1})):te("v-if",!0),!e.inactiveIcon&&e.inactiveText?(x(),B("span",j7,ke(e.inactiveText),1)):te("v-if",!0)])],2))],2)):te("v-if",!0),H("div",{class:T(i(r).e("action"))},[e.loading?(x(),ae(i(De),{key:0,class:T(i(r).is("loading"))},{default:J(()=>[Y(i(Ra))]),_:1},8,["class"])):b.value?ee(C.$slots,"active-action",{key:1},()=>[e.activeActionIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.activeActionIcon)))]),_:1})):te("v-if",!0)]):b.value?te("v-if",!0):ee(C.$slots,"inactive-action",{key:2},()=>[e.inactiveActionIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.inactiveActionIcon)))]),_:1})):te("v-if",!0)])],2)],6),!e.inlinePrompt&&(e.activeIcon||e.activeText||C.$slots.active)?(x(),B("span",{key:1,class:T(p.value)},[ee(C.$slots,"active",{},()=>[e.activeIcon?(x(),ae(i(De),{key:0},{default:J(()=>[(x(),ae(lt(e.activeIcon)))]),_:1})):te("v-if",!0),!e.activeIcon&&e.activeText?(x(),B("span",{key:1,"aria-hidden":!b.value},ke(e.activeText),9,q7)):te("v-if",!0)])],2)):te("v-if",!0)],2))}}),G7=Y7;const X7=ot(G7),np=function(e){return e.target?.closest("td")},J7=function(e,t,n,o,a){if(!t&&!o&&(!a||ye(a)&&!a.length))return e;Le(n)?n=n==="descending"?-1:1:n=n&&n<0?-1:1;const l=o?null:function(r,u){return a?ES(En(a),c=>Le(c)?vn(r,c):c(r,u,e)):(t!=="$key"&&tt(r)&&"$value"in r&&(r=r.$value),[tt(r)?t?vn(r,t):null:r])},s=function(r,u){if(o)return o(r.value,u.value);for(let c=0,d=r.key?.length??0;cu.key?.[c])return 1}return 0};return e.map((r,u)=>({value:r,index:u,key:l?l(r,u):null})).sort((r,u)=>{let c=s(r,u);return c||(c=r.index-u.index),c*+n}).map(r=>r.value)},oE=function(e,t){let n=null;return e.columns.forEach(o=>{o.id===t&&(n=o)}),n},Z7=function(e,t){let n=null;for(let o=0;o{if(!e)throw new Error("Row is required when get row identity");if(Le(t)){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let o=e;for(const a of n)o=o[a];return`${o}`}else if(Fe(t))return t.call(null,e);return""},Zs=function(e,t,n=!1,o="children"){const a=e||[],l={};return a.forEach((s,r)=>{if(l[Ln(s,t)]={row:s,index:r},n){const u=s[o];ye(u)&&Object.assign(l,Zs(u,t,!0,o))}}),l};function Q7(e,t){const n={};let o;for(o in e)n[o]=e[o];for(o in t)if($t(t,o)){const a=t[o];kt(a)||(n[o]=a)}return n}function xm(e){return e===""||kt(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function aE(e){return e===""||kt(e)||(e=xm(e),Number.isNaN(e)&&(e=80)),e}function eU(e){return He(e)?e:Le(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function tU(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...o)=>t(n(...o)))}function fd(e,t,n,o,a,l,s){let r=l??0,u=!1;const d=(()=>{if(!s)return e.indexOf(t);const v=Ln(t,s);return e.findIndex(m=>Ln(m,s)===v)})(),f=d!==-1,h=a?.call(null,t,r),g=v=>{v==="add"?e.push(t):e.splice(d,1),u=!0},p=v=>{let m=0;const b=o?.children&&v[o.children];return b&&ye(b)&&(m+=b.length,b.forEach(k=>{m+=p(k)})),m};return(!a||h)&&(Ft(n)?n&&!f?g("add"):!n&&f&&g("remove"):g(f?"remove":"add")),!o?.checkStrictly&&o?.children&&ye(t[o.children])&&t[o.children].forEach(v=>{const m=fd(e,v,n??!f,o,a,r+1,s);r+=p(v)+1,m&&(u=m)}),u}function nU(e,t,n="children",o="hasChildren",a=!1){const l=r=>!(ye(r)&&r.length);function s(r,u,c){t(r,u,c),u.forEach(d=>{if(d[o]&&a){t(d,null,c+1);return}const f=d[n];l(f)||s(d,f,c+1)})}e.forEach(r=>{if(r[o]&&a){t(r,null,0);return}const u=r[n];l(u)||s(r,u,0)})}const oU=(e,t,n,o)=>{const a={strategy:"fixed",...e.popperOptions},l=Fe(o?.tooltipFormatter)?o.tooltipFormatter({row:n,column:o,cellValue:Ol(n,o.property).value}):void 0;return Kt(l)?{slotContent:l,content:null,...e,popperOptions:a}:{slotContent:null,content:l??t,...e,popperOptions:a}};let ro=null;function aU(e,t,n,o,a,l){const s=oU(e,t,n,o),r={...s,slotContent:void 0};if(ro?.trigger===a){const g=ro.vm?.component;xS(g?.props,r),g&&s.slotContent&&(g.slots.content=()=>[s.slotContent]);return}ro?.();const u=l?.refs.tableWrapper,c=u?.dataset.prefix,d=Y(Rn,{virtualTriggering:!0,virtualRef:a,appendTo:u,placement:"top",transition:"none",offset:0,hideAfter:0,...r},s.slotContent?{content:()=>s.slotContent}:void 0);d.appContext={...l.appContext,...l};const f=document.createElement("div");Il(d,f),d.component.exposed.onOpen();const h=u?.querySelector(`.${c}-scrollbar__wrap`);ro=()=>{d.component?.exposed?.onClose&&d.component.exposed.onClose(),Il(null,f);const g=ro;h?.removeEventListener("scroll",g),g.trigger=void 0,g.vm=void 0,ro=null},ro.trigger=a??void 0,ro.vm=d,h?.addEventListener("scroll",ro)}function lE(e){return e.children?ES(e.children,lE):[e]}function k0(e,t){return e+t.colSpan}const sE=(e,t,n,o)=>{let a=0,l=e;const s=n.states.columns.value;if(o){const u=lE(o[e]);a=s.slice(0,s.indexOf(u[0])).reduce(k0,0),l=a+u.reduce(k0,0)-1}else a=e;let r;switch(t){case"left":l=s.length-n.states.rightFixedLeafColumnsLength.value&&(r="right");break;default:l=s.length-n.states.rightFixedLeafColumnsLength.value&&(r="right")}return r?{direction:r,start:a,after:l}:{}},Tm=(e,t,n,o,a,l=0)=>{const s=[],{direction:r,start:u,after:c}=sE(t,n,o,a);if(r){const d=r==="left";s.push(`${e}-fixed-column--${r}`),d&&c+l===o.states.fixedLeafColumnsLength.value-1?s.push("is-last-column"):!d&&u-l===o.states.columns.value.length-o.states.rightFixedLeafColumnsLength.value&&s.push("is-first-column")}return s};function E0(e,t){return e+(Dd(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const $m=(e,t,n,o)=>{const{direction:a,start:l=0,after:s=0}=sE(e,t,n,o);if(!a)return;const r={},u=a==="left",c=n.states.columns.value;return u?r.left=c.slice(0,l).reduce(E0,0):r.right=c.slice(s+1).reverse().reduce(E0,0),r},br=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function rE(e){return e.some(t=>Kt(t)?!(t.type===dn||t.type===Ve&&!rE(t.children)):!0)?e:null}function lU(e){const t=ut(),n=P(!1),o=P([]),a=(c,d)=>{const f=t.store.states.rowExpandable.value;return f?.(c,d)??!0};return{updateExpandRows:()=>{const c=e.data.value||[],d=e.rowKey.value;if(n.value)o.value=t.store.states.rowExpandable.value?c.filter(a):c.slice();else if(d){const f=Zs(o.value,d);o.value=c.filter((h,g)=>!!f[Ln(h,d)]&&a(h,g))}else o.value=[]},toggleRowExpansion:(c,d)=>{const f=(e.data.value||[]).indexOf(c);f>-1&&!a(c,f)||fd(o.value,c,d,void 0,void 0,void 0,e.rowKey.value)&&t.emit("expand-change",c,o.value.slice())},setExpandRowKeys:c=>{t.store.assertRowKey();const d=e.data.value||[],f=e.rowKey.value,h=Zs(d,f);o.value=c.reduce((g,p)=>{const v=h[p];return v&&a(v.row,v.index)&&g.push(v.row),g},[])},isRowExpanded:c=>{const d=e.rowKey.value;return d?!!Zs(o.value,d)[Ln(c,d)]:o.value.includes(c)},states:{expandRows:o,defaultExpandAll:n}}}function sU(e){const t=ut(),n=P(null),o=P(null),a=c=>{t.store.assertRowKey(),n.value=c,s(c)},l=()=>{n.value=null},s=c=>{const{data:d,rowKey:f}=e,h=o.value;let g=null;f.value&&(g=(i(d)||[]).find(p=>Ln(p,f.value)===c)??null),o.value=g??null,t.emit("current-change",o.value,h)};return{setCurrentRowKey:a,restoreCurrentRowKey:l,setCurrentRowByKey:s,updateCurrentRow:c=>{const d=o.value;if(c&&c!==d){o.value=c,t.emit("current-change",o.value,d);return}!c&&d&&(o.value=null,t.emit("current-change",null,d))},updateCurrentRowData:()=>{const c=e.rowKey.value,d=e.data.value||[],f=o.value;f&&!d.includes(f)?c?s(Ln(f,c)):(o.value=null,t.emit("current-change",null,f)):n.value&&(s(n.value),l())},states:{_currentRowKey:n,currentRow:o}}}function rU(e){const t=P([]),n=P({}),o=P(16),a=P(!1),l=P({}),s=P("hasChildren"),r=P("children"),u=P(!1),c=ut(),d=w(()=>e.rowKey.value?h(e.data.value||[]):{}),f=w(()=>{const S=e.rowKey.value,C=Object.keys(l.value),E={};return C.length&&C.forEach($=>{if(l.value[$].length){const O={children:[]};l.value[$].forEach(R=>{const N=Ln(R,S);O.children.push(N),R[s.value]&&!E[N]&&(E[N]={children:[]})}),E[$]=O}}),E}),h=S=>{const C=e.rowKey.value,E={};return nU(S,($,O,R)=>{const N=Ln($,C);ye(O)?E[N]={children:O.map(_=>Ln(_,C)),level:R}:a.value&&(E[N]={children:[],lazy:!0,level:R})},r.value,s.value,a.value),E},g=(S=!1,C)=>{C||=c.store?.states.defaultExpandAll.value;const E=d.value,$=f.value,O=Object.keys(E),R={};if(O.length){const N=i(n),_=[],A=(z,U)=>{if(S)return t.value?C||t.value.includes(U):!!(C||z?.expanded);{const W=C||t.value&&t.value.includes(U);return!!(z?.expanded||W)}};O.forEach(z=>{const U=N[z],W={...E[z]};if(W.expanded=A(U,z),W.lazy){const{loaded:M=!1,loading:I=!1}=U||{};W.loaded=!!M,W.loading=!!I,_.push(z)}R[z]=W});const V=Object.keys($);a.value&&V.length&&_.length&&V.forEach(z=>{const U=N[z],W=$[z].children;if(_.includes(z)){if(R[z].children?.length!==0)throw new Error("[ElTable]children must be an empty array.");R[z].children=W}else{const{loaded:M=!1,loading:I=!1}=U||{};R[z]={lazy:!0,loaded:!!M,loading:!!I,expanded:A(U,z),children:W,level:void 0}}})}n.value=R,c.store?.updateTableScrollY()};re(()=>t.value,()=>{g(!0)}),re(()=>d.value,()=>{g()}),re(()=>f.value,()=>{g()});const p=S=>{t.value=S,g()},v=S=>a.value&&S&&"loaded"in S&&!S.loaded,m=(S,C)=>{c.store.assertRowKey();const E=e.rowKey.value,$=Ln(S,E),O=$&&n.value[$];if($&&O&&"expanded"in O){const R=O.expanded;C=kt(C)?!O.expanded:C,n.value[$].expanded=C,R!==C&&c.emit("expand-change",S,C),C&&v(O)&&k(S,$,O),c.store.updateTableScrollY()}},b=S=>{c.store.assertRowKey();const C=e.rowKey.value,E=Ln(S,C),$=n.value[E];v($)?k(S,E,$):m(S,void 0)},k=(S,C,E)=>{const{load:$}=c.props;$&&!n.value[C].loaded&&(n.value[C].loading=!0,$(S,E,O=>{if(!ye(O))throw new TypeError("[ElTable] data must be an array");n.value[C].loading=!1,n.value[C].loaded=!0,n.value[C].expanded=!0,O.length&&(l.value[C]=O),c.emit("expand-change",S,!0)}))};return{loadData:k,loadOrToggle:b,toggleTreeExpansion:m,updateTreeExpandKeys:p,updateTreeData:g,updateKeyChildren:(S,C)=>{const{lazy:E,rowKey:$}=c.props;if(E){if(!$)throw new Error("[Table] rowKey is required in updateKeyChild");l.value[S]&&(l.value[S]=C)}},normalize:h,states:{expandRowKeys:t,treeData:n,indent:o,lazy:a,lazyTreeNodeMap:l,lazyColumnIdentifier:s,childrenColumnName:r,checkStrictly:u}}}const iU=(e,t)=>{const n=t.sortingColumn;return!n||Le(n.sortable)?e:J7(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},Cc=e=>{const t=[];return e.forEach(n=>{n.children&&n.children.length>0?t.push.apply(t,Cc(n.children)):t.push(n)}),t};function uU(){const e=ut(),{size:t}=$n(e.proxy?.$props),n=P(null),o=P([]),a=P([]),l=P(!1),s=P([]),r=P([]),u=P([]),c=P([]),d=P([]),f=P([]),h=P([]),g=P([]),p=[],v=P(0),m=P(0),b=P(0),k=P(!1),y=P([]),S=P(!1),C=P(!1),E=P(null),$=P(null),O=P({}),R=P(null),N=P(null),_=P(null),A=P(null),V=P(null),z=w(()=>n.value?Zs(y.value,n.value):void 0);re(o,()=>{e.state&&(I(!1),e.props.tableLayout==="auto"&&e.refs.tableHeaderRef?.updateFixedColumnStyle())},{deep:!0});const U=()=>{if(!n.value)throw new Error("[ElTable] prop row-key is required")},W=Ue=>{Ue.children?.forEach(at=>{at.fixed=Ue.fixed,W(at)})},M=()=>{s.value.forEach(de=>{W(de)}),c.value=s.value.filter(de=>[!0,"left"].includes(de.fixed));const Ue=s.value.find(de=>de.type==="selection");let at;Ue&&Ue.fixed!=="right"&&!c.value.includes(Ue)&&s.value.indexOf(Ue)===0&&c.value.length&&(c.value.unshift(Ue),at=!0),d.value=s.value.filter(de=>de.fixed==="right");const pt=s.value.filter(de=>(at?de.type!=="selection":!0)&&!de.fixed);r.value=Array.from(c.value).concat(pt).concat(d.value);const wt=Cc(pt),be=Cc(c.value),ze=Cc(d.value);v.value=wt.length,m.value=be.length,b.value=ze.length,u.value=Array.from(be).concat(wt).concat(ze),l.value=c.value.length>0||d.value.length>0},I=(Ue,at=!1)=>{Ue&&M(),at?e.state.doLayout():e.state.debouncedUpdateLayout()},L=Ue=>z.value?!!z.value[Ln(Ue,n.value)]:y.value.includes(Ue),D=()=>{k.value=!1;const Ue=y.value;y.value=[],Ue.length&&e.emit("selection-change",[])},F=()=>{let Ue;if(n.value){Ue=[];const at=e?.store?.states?.childrenColumnName.value,pt=Zs(o.value,n.value,!0,at);for(const wt in z.value)$t(z.value,wt)&&!pt[wt]&&Ue.push(z.value[wt].row)}else Ue=y.value.filter(at=>!o.value.includes(at));if(Ue.length){const at=y.value.filter(pt=>!Ue.includes(pt));y.value=at,e.emit("selection-change",at.slice())}},q=()=>(y.value||[]).slice(),j=(Ue,at,pt=!0,wt=!1)=>{const be={children:e?.store?.states?.childrenColumnName.value,checkStrictly:e?.store?.states?.checkStrictly.value};if(fd(y.value,Ue,at,be,wt?void 0:E.value,o.value.indexOf(Ue),n.value)){const ze=(y.value||[]).slice();pt&&e.emit("select",ze,Ue),e.emit("selection-change",ze)}},X=()=>{const Ue=C.value?!k.value:!(k.value||y.value.length);k.value=Ue;let at=!1,pt=0;const wt=e?.store?.states?.rowKey.value,{childrenColumnName:be}=e.store.states,ze={children:be.value,checkStrictly:!1};o.value.forEach((de,Ye)=>{const Et=Ye+pt;fd(y.value,de,Ue,ze,E.value,Et,wt)&&(at=!0),pt+=ve(Ln(de,wt))}),at&&e.emit("selection-change",y.value?y.value.slice():[]),e.emit("select-all",(y.value||[]).slice())},Q=()=>{if(o.value?.length===0){k.value=!1;return}const{childrenColumnName:Ue}=e.store.states;let at=0,pt=0;const wt=ze=>{for(const de of ze){const Ye=E.value&&E.value.call(null,de,at);if(L(de))pt++;else if(!E.value||Ye)return!1;if(at++,de[Ue.value]?.length&&!wt(de[Ue.value]))return!1}return!0},be=wt(o.value||[]);k.value=pt===0?!1:be},ve=Ue=>{if(!e||!e.store)return 0;const{treeData:at}=e.store.states;let pt=0;const wt=at.value[Ue]?.children;return wt&&(pt+=wt.length,wt.forEach(be=>{pt+=ve(be)})),pt},ue=(Ue,at)=>{const pt={};return En(Ue).forEach(wt=>{O.value[wt.id]=at,pt[wt.columnKey||wt.id]=at}),pt},ge=(Ue,at,pt)=>{N.value&&N.value!==Ue&&(N.value.order=null),N.value=Ue,_.value=at,A.value=pt},ie=()=>{let Ue=i(a);Object.keys(O.value).forEach(at=>{const pt=O.value[at];if(!pt||pt.length===0)return;const wt=oE({columns:u.value},at);wt&&wt.filterMethod&&(Ue=Ue.filter(be=>pt.some(ze=>wt.filterMethod.call(null,ze,be,wt))))}),R.value=Ue},oe=()=>{o.value=iU(R.value??[],{sortingColumn:N.value,sortProp:_.value,sortOrder:A.value})},ne=(Ue=void 0)=>{Ue?.filter||ie(),oe()},K=Ue=>{const{tableHeaderRef:at}=e.refs;if(!at)return;const pt=Object.assign({},at.filterPanels),wt=Object.keys(pt);if(wt.length)if(Le(Ue)&&(Ue=[Ue]),ye(Ue)){const be=Ue.map(ze=>Z7({columns:u.value},ze));wt.forEach(ze=>{const de=be.find(Ye=>Ye.id===ze);de&&(de.filteredValue=[])}),e.store.commit("filterChange",{column:be,values:[],silent:!0,multi:!0})}else wt.forEach(be=>{const ze=u.value.find(de=>de.id===be);ze&&(ze.filteredValue=[])}),O.value={},e.store.commit("filterChange",{column:{},values:[],silent:!0})},Z=()=>{N.value&&(ge(null,null,null),e.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:se,toggleRowExpansion:ce,updateExpandRows:he,states:Ce,isRowExpanded:Re}=lU({data:o,rowKey:n}),{updateTreeExpandKeys:Ie,toggleTreeExpansion:$e,updateTreeData:pe,updateKeyChildren:Ee,loadOrToggle:me,states:Pe}=rU({data:o,rowKey:n}),{updateCurrentRowData:We,updateCurrentRow:Xe,setCurrentRowKey:Me,states:_e}=sU({data:o,rowKey:n});return{assertRowKey:U,updateColumns:M,scheduleLayout:I,isSelected:L,clearSelection:D,cleanSelection:F,getSelectionRows:q,toggleRowSelection:j,_toggleAllSelection:X,toggleAllSelection:null,updateAllSelected:Q,updateFilters:ue,updateCurrentRow:Xe,updateSort:ge,execFilter:ie,execSort:oe,execQuery:ne,clearFilter:K,clearSort:Z,toggleRowExpansion:ce,setExpandRowKeysAdapter:Ue=>{se(Ue),Ie(Ue)},setCurrentRowKey:Me,toggleRowExpansionAdapter:(Ue,at)=>{u.value.some(({type:pt})=>pt==="expand")?ce(Ue,at):$e(Ue,at)},isRowExpanded:Re,updateExpandRows:he,updateCurrentRowData:We,loadOrToggle:me,updateTreeData:pe,updateKeyChildren:Ee,states:{tableSize:t,rowKey:n,data:o,_data:a,isComplex:l,_columns:s,originColumns:r,columns:u,fixedColumns:c,rightFixedColumns:d,leafColumns:f,fixedLeafColumns:h,rightFixedLeafColumns:g,updateOrderFns:p,leafColumnsLength:v,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:b,isAllSelected:k,selection:y,reserveSelection:S,selectOnIndeterminate:C,selectable:E,rowExpandable:$,filters:O,filteredData:R,sortingColumn:N,sortProp:_,sortOrder:A,hoverRow:V,...Ce,...Pe,..._e}}}function yv(e,t){return e.map(n=>n.id===t.id?t:(n.children?.length&&(n.children=yv(n.children,t)),n))}function wv(e){e.forEach(t=>{t.no=t.getColumnIndex?.(),t.children?.length&&wv(t.children)}),e.sort((t,n)=>t.no-n.no)}function cU(){const e=ut(),t=uU(),n=fe("table"),{t:o}=yt();return{ns:n,t:o,...t,mutations:{setData(r,u){const c=i(r._data)!==u;r.data.value=u,r._data.value=u,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),i(r.reserveSelection)?e.store.assertRowKey():c?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(r,u,c,d){const f=i(r._columns);let h=[];c?(c&&!c.children&&(c.children=[]),c.children?.push(u),h=yv(f,c)):(f.push(u),h=f),wv(h),r._columns.value=h,r.updateOrderFns.push(d),u.type==="selection"&&(r.selectable.value=u.selectable,r.reserveSelection.value=u.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(r,u){u.getColumnIndex?.()!==u.no&&(wv(r._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(r,u,c,d){const f=i(r._columns)||[];if(c)c.children?.splice(c.children.findIndex(g=>g.id===u.id),1),Ne(()=>{c.children?.length===0&&delete c.children}),r._columns.value=yv(f,c);else{const g=f.indexOf(u);g>-1&&(f.splice(g,1),r._columns.value=f)}const h=r.updateOrderFns.indexOf(d);h>-1&&r.updateOrderFns.splice(h,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(r,u){const{prop:c,order:d,init:f}=u;if(c){const h=i(r.columns).find(g=>g.property===c);h&&(h.order=d,e.store.updateSort(h,c,d),e.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(r,u){const{sortingColumn:c,sortProp:d,sortOrder:f}=r,h=i(c),g=i(d),p=i(f);Dd(p)&&(r.sortingColumn.value=null,r.sortProp.value=null),e.store.execQuery({filter:!0}),(!u||!(u.silent||u.init))&&e.emit("sort-change",{column:h,prop:g,order:p}),e.store.updateTableScrollY()},filterChange(r,u){const{column:c,values:d,silent:f}=u,h=e.store.updateFilters(c,d);e.store.execQuery(),f||e.emit("filter-change",h),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection?.()},rowSelectedChanged(r,u){e.store.toggleRowSelection(u),e.store.updateAllSelected()},setHoverRow(r,u){r.hoverRow.value=u},setCurrentRow(r,u){e.store.updateCurrentRow(u)}},commit:function(r,...u){const c=e.store.mutations;if(c[r])c[r].apply(e,[e.store.states,...u]);else throw new Error(`Action not found: ${r}`)},updateTableScrollY:function(){Ne(()=>e.layout.updateScrollY.apply(e.layout))}}}const Om={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",rowExpandable:"rowExpandable",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function dU(e,t){if(!e)throw new Error("Table is required.");const n=cU();return n.toggleAllSelection=Oa(n._toggleAllSelection,10),Object.keys(Om).forEach(o=>{iE(uE(t,o),o,n)}),fU(n,t),n}function fU(e,t){Object.keys(Om).forEach(n=>{re(()=>uE(t,n),o=>{iE(o,n,e)})})}function iE(e,t,n){let o=e,a=Om[t];tt(a)&&(o=o||a.default,a=a.key),n.states[a].value=o}function uE(e,t){if(t.includes(".")){const n=t.split(".");let o=e;return n.forEach(a=>{o=o[a]}),o}else return e[t]}var pU=class{constructor(e){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=P(null),this.scrollX=P(!1),this.scrollY=P(!1),this.bodyWidth=P(null),this.fixedWidth=P(null),this.rightFixedWidth=P(null),this.gutterWidth=0;for(const t in e)$t(e,t)&&(Yt(this[t])?this[t].value=e[t]:this[t]=e[t]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const e=this.height.value;if(Dd(e))return!1;const t=this.table.refs.scrollBarRef;if(this.table.vnode.el&&t?.wrapRef){let n=!0;const o=this.scrollY.value;return n=t.wrapRef.scrollHeight>t.wrapRef.clientHeight,this.scrollY.value=n,o!==n}return!1}setHeight(e,t="height"){if(!Rt)return;const n=this.table.vnode.el;if(e=eU(e),this.height.value=Number(e),!n&&(e||e===0)){Ne(()=>this.setHeight(e,t));return}n&&He(e)?(n.style[t]=`${e}px`,this.updateElsHeight()):n&&Le(e)&&(n.style[t]=e,this.updateElsHeight())}setMaxHeight(e){this.setHeight(e,"max-height")}getFlattenColumns(){const e=[];return this.table.store.states.columns.value.forEach(t=>{t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(e){if(!e)return!0;let t=e;for(;t.tagName!=="DIV";){if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}updateColumnsWidth(){if(!Rt)return;const e=this.fit,t=this.table.vnode.el?.clientWidth;let n=0;const o=this.getFlattenColumns(),a=o.filter(r=>!He(r.width));if(o.forEach(r=>{He(r.width)&&r.realWidth&&(r.realWidth=null)}),a.length>0&&e){if(o.forEach(r=>{n+=Number(r.width||r.minWidth||80)}),n<=t){this.scrollX.value=!1;const r=t-n;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+r;else{const u=r/a.reduce((d,f)=>d+Number(f.minWidth||80),0);let c=0;a.forEach((d,f)=>{if(f===0)return;const h=Math.floor(Number(d.minWidth||80)*u);c+=h,d.realWidth=Number(d.minWidth||80)+h}),a[0].realWidth=Number(a[0].minWidth||80)+r-c}}else this.scrollX.value=!0,a.forEach(r=>{r.realWidth=Number(r.minWidth)});this.bodyWidth.value=Math.max(n,t),this.table.state.resizeState.value.width=this.bodyWidth.value}else o.forEach(r=>{!r.width&&!r.minWidth?r.realWidth=80:r.realWidth=Number(r.width||r.minWidth),n+=r.realWidth}),this.scrollX.value=n>t,this.bodyWidth.value=n;const l=this.store.states.fixedColumns.value;if(l.length>0){let r=0;l.forEach(u=>{r+=Number(u.realWidth||u.width)}),this.fixedWidth.value=r}const s=this.store.states.rightFixedColumns.value;if(s.length>0){let r=0;s.forEach(u=>{r+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=r}this.notifyObservers("columns")}addObserver(e){this.observers.push(e)}removeObserver(e){const t=this.observers.indexOf(e);t!==-1&&this.observers.splice(t,1)}notifyObservers(e){this.observers.forEach(t=>{switch(e){case"columns":t.state?.onColumnsChange(this);break;case"scrollable":t.state?.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${e}.`)}})}};const la=Symbol("ElTable"),cE=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,cE(n.children))):t.push(n)}),t},dE=e=>{let t=1;const n=(a,l)=>{if(l&&(a.level=l.level+1,t{n(r,a),s+=r.colSpan}),a.colSpan=s}else a.colSpan=1};e.forEach(a=>{a.level=1,n(a,void 0)});const o=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(l=>l.isSubColumn=!0)):a.rowSpan=t-a.level+1,o[a.level-1].push(a)}),o};function vU(e){const t=Ae(la),n=w(()=>dE(e.store.states.originColumns.value));return{isGroup:w(()=>{const l=n.value.length>1;return l&&t&&(t.state.isGroup.value=!0),l}),toggleAllSelection:l=>{l.stopPropagation(),t?.store.commit("toggleAllSelection")},columnRows:n}}var hU=le({name:"ElTableFilterPanel",components:{ElCheckbox:Qo,ElCheckboxGroup:rm,ElScrollbar:Jo,ElTooltip:Rn,ElIcon:De,ArrowDown:Aa,ArrowUp:Yd},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:Bt.appendTo},setup(e){const t=ut(),{t:n}=yt(),o=fe("table-filter"),a=t?.parent;e.column&&!a.filterPanels.value[e.column.id]&&(a.filterPanels.value[e.column.id]=t);const l=P(null),s=P(null),r=P(0),u=w(()=>e.column&&e.column.filters),c=w(()=>e.column&&e.column.filterClassName?`${o.b()} ${e.column.filterClassName}`:o.b()),d=w({get:()=>(e.column?.filteredValue||[])[0],set:$=>{f.value&&(uo($)?f.value.splice(0,1):f.value.splice(0,1,$))}}),f=w({get(){return e.column?e.column.filteredValue||[]:[]},set($){e.column&&e.upDataColumn?.("filteredValue",$)}}),h=w(()=>e.column?e.column.filterMultiple:!0),g=$=>$.value===d.value,p=()=>{l.value?.onClose()},v=()=>{k(f.value),p()},m=()=>{f.value=[],k(f.value),p()},b=($,O)=>{d.value=$,r.value=O,uo($)?k([]):k(f.value),p()},k=$=>{e.store?.commit("filterChange",{column:e.column,values:$}),e.store?.updateAllSelected()},y=()=>{s.value?.focus(),!h.value&&C(),e.column&&e.upDataColumn?.("filterOpened",!0)},S=()=>{e.column&&e.upDataColumn?.("filterOpened",!1)},C=()=>{if(uo(d)){r.value=0;return}const $=(u.value||[]).findIndex(O=>O.value===d.value);r.value=$>=0?$+1:0};return{multiple:h,filterClassName:c,filteredValue:f,filterValue:d,filters:u,handleConfirm:v,handleReset:m,handleSelect:b,isPropAbsent:uo,isActive:g,t:n,ns:o,tooltipRef:l,rootRef:s,checkedIndex:r,handleShowTooltip:y,handleHideTooltip:S,handleKeydown:$=>{const O=Ht($),R=(u.value?u.value.length:0)+1;let N=r.value,_=!0;switch(O){case we.down:case we.right:N=(N+1)%R;break;case we.up:case we.left:N=(N-1+R)%R;break;case we.tab:p(),_=!1;break;case we.enter:case we.space:if(N===0)b(null,0);else{const A=(u.value||[])[N-1];A.value&&b(A.value,N)}break;default:_=!1;break}_&&$.preventDefault(),r.value=N,s.value?.querySelector(`.${o.e("list-item")}:nth-child(${N+1})`)?.focus()}}}});const mU=["disabled"],gU=["tabindex","aria-checked"],bU=["tabindex","aria-checked","onClick"],yU=["aria-label"];function wU(e,t,n,o,a,l){const s=Ot("el-checkbox"),r=Ot("el-checkbox-group"),u=Ot("el-scrollbar"),c=Ot("arrow-up"),d=Ot("arrow-down"),f=Ot("el-icon"),h=Ot("el-tooltip");return x(),ae(h,{ref:"tooltipRef",offset:0,placement:e.placement,"show-arrow":!1,trigger:"click",role:"dialog",teleported:"",effect:"light",pure:"",loop:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo,onShow:e.handleShowTooltip,onHide:e.handleHideTooltip},{content:J(()=>[e.multiple?(x(),B("div",{key:0,ref:"rootRef",tabindex:"-1",class:T(e.ns.e("multiple"))},[H("div",{class:T(e.ns.e("content"))},[Y(u,{"wrap-class":e.ns.e("wrap")},{default:J(()=>[Y(r,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=g=>e.filteredValue=g),class:T(e.ns.e("checkbox-group"))},{default:J(()=>[(x(!0),B(Ve,null,mt(e.filters,g=>(x(),ae(s,{key:g.value,value:g.value},{default:J(()=>[gt(ke(g.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),H("div",{class:T(e.ns.e("bottom"))},[H("button",{class:T(e.ns.is("disabled",e.filteredValue.length===0)),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...g)=>e.handleConfirm&&e.handleConfirm(...g))},ke(e.t("el.table.confirmFilter")),11,mU),H("button",{type:"button",onClick:t[2]||(t[2]=(...g)=>e.handleReset&&e.handleReset(...g))},ke(e.t("el.table.resetFilter")),1)],2)],2)):(x(),B("ul",{key:1,ref:"rootRef",tabindex:"-1",role:"radiogroup",class:T(e.ns.e("list")),onKeydown:t[4]||(t[4]=(...g)=>e.handleKeydown&&e.handleKeydown(...g))},[H("li",{role:"radio",class:T([e.ns.e("list-item"),e.ns.is("active",e.isPropAbsent(e.filterValue))]),tabindex:e.checkedIndex===0?0:-1,"aria-checked":e.isPropAbsent(e.filterValue),onClick:t[3]||(t[3]=g=>e.handleSelect(null,0))},ke(e.t("el.table.clearFilter")),11,gU),(x(!0),B(Ve,null,mt(e.filters,(g,p)=>(x(),B("li",{key:g.value,role:"radio",class:T([e.ns.e("list-item"),e.ns.is("active",e.isActive(g))]),tabindex:e.checkedIndex===p+1?0:-1,"aria-checked":e.isActive(g),onClick:v=>e.handleSelect(g.value,p+1)},ke(g.text),11,bU))),128))],34))]),default:J(()=>[H("button",{type:"button",class:T(`${e.ns.namespace.value}-table__column-filter-trigger`),"aria-label":e.t("el.table.filterLabel",{column:e.column?.label||""})},[Y(f,null,{default:J(()=>[ee(e.$slots,"filter-icon",{},()=>[e.column?.filterOpened?(x(),ae(c,{key:0})):(x(),ae(d,{key:1}))])]),_:3})],10,yU)]),_:3},8,["placement","popper-class","append-to","onShow","onHide"])}var SU=Sn(hU,[["render",wU]]);function Nm(e){const t=ut();Td(()=>{n.value.addObserver(t)}),dt(()=>{o(n.value),a(n.value)}),ea(()=>{o(n.value),a(n.value)}),Sr(()=>{n.value.removeObserver(t)});const n=w(()=>{const l=e.layout;if(!l)throw new Error("Can not find table layout.");return l}),o=l=>{const s=e.vnode.el?.querySelectorAll("colgroup > col")||[];if(!s.length)return;const r=l.getFlattenColumns(),u={};r.forEach(c=>{u[c.id]=c});for(let c=0,d=s.length;c{const s=e.vnode.el?.querySelectorAll("colgroup > col[name=gutter]")||[];for(let u=0,c=s.length;u{v.stopPropagation()},l=(v,m)=>{!m.filters&&m.sortable?p(v,m,!1):m.filterable&&!m.sortable&&a(v),o?.emit("header-click",m,v)},s=(v,m)=>{o?.emit("header-contextmenu",m,v)},r=P(null),u=P(!1),c=P(),d=(v,m)=>{if(Rt&&!(m.children&&m.children.length>0)&&r.value&&e.border&&r.value.id===m.id){u.value=!0;const b=o;t("set-drag-visible",!0);const k=b?.vnode.el?.getBoundingClientRect().left,y=n?.vnode?.el?.querySelector(`th.${m.id}`),S=y.getBoundingClientRect(),C=S.left-k+30;Io(y,"noclick"),c.value={startMouseLeft:v.clientX,startLeft:S.right-k,startColumnLeft:S.left-k,tableLeft:k};const E=b?.refs.resizeProxy;E.style.left=`${c.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const $=R=>{const N=R.clientX-c.value.startMouseLeft,_=c.value.startLeft+N;E.style.left=`${Math.max(C,_)}px`},O=()=>{if(u.value){const{startColumnLeft:R,startLeft:N}=c.value;m.width=m.realWidth=Number.parseInt(E.style.left,10)-R,b?.emit("header-dragend",m.width,N-R,m,v),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",u.value=!1,r.value=null,c.value=void 0,t("set-drag-visible",!1)}document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",O),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{Gn(y,"noclick")},0)};document.addEventListener("mousemove",$),document.addEventListener("mouseup",O)}},f=(v,m)=>{if(!e.border||m.children&&m.children.length>0)return;const b=v.target,k=io(b)?b.closest("th"):null;if(!k)return;const y=Ca(k,"is-sortable");if(y){const R=u.value?"col-resize":"";k.style.cursor=R;const N=k.querySelector(".caret-wrapper");N&&(N.style.cursor=R)}if(!m.resizable||u.value){r.value=null;return}const S=k.getBoundingClientRect(),C=k.parentNode?.lastElementChild===k,E=e.allowDragLastColumn||!C,$=S.width>12&&S.right-v.clientX<8&&E,O=$?"col-resize":"";document.body.style.cursor=O,r.value=$?m:null,y&&(k.style.cursor=O)},h=()=>{!Rt||u.value||(document.body.style.cursor="")},g=({order:v,sortOrders:m})=>{if(v==="")return m[0];const b=m.indexOf(v||null);return m[b>m.length-2?0:b+1]},p=(v,m,b)=>{v.stopPropagation();const k=m.order===b?null:b||g(m),y=v.target?.closest("th");if(y&&Ca(y,"noclick")){Gn(y,"noclick");return}if(!m.sortable)return;const S=v.currentTarget;if(["ascending","descending"].some(R=>Ca(S,R)&&!m.sortOrders.includes(R)))return;const C=e.store.states;let E=C.sortProp.value,$;const O=C.sortingColumn.value;(O!==m||O===m&&Dd(O.order))&&(O&&(O.order=null),C.sortingColumn.value=m,E=m.property),k?$=m.order=k:$=m.order=null,C.sortProp.value=E,C.sortOrder.value=$,o?.store.commit("changeSortCondition")};return{handleHeaderClick:l,handleHeaderContextMenu:s,handleMouseDown:d,handleMouseMove:f,handleMouseOut:h,handleSortClick:p,handleFilterClick:a}}function kU(e){const t=Ae(la),n=fe("table");return{getHeaderRowStyle:r=>{const u=t?.props.headerRowStyle;return Fe(u)?u.call(null,{rowIndex:r}):u},getHeaderRowClass:r=>{const u=[],c=t?.props.headerRowClassName;return Le(c)?u.push(c):Fe(c)&&u.push(c.call(null,{rowIndex:r})),u.join(" ")},getHeaderCellStyle:(r,u,c,d)=>{let f=t?.props.headerCellStyle??{};Fe(f)&&(f=f.call(null,{rowIndex:r,columnIndex:u,row:c,column:d}));const h=$m(u,d.fixed,e.store,c);return br(h,"left"),br(h,"right"),Object.assign({},f,h)},getHeaderCellClass:(r,u,c,d)=>{const f=Tm(n.b(),u,d.fixed,e.store,c),h=[d.id,d.order,d.headerAlign,d.className,d.labelClassName,...f];d.children||h.push("is-leaf"),d.sortable&&h.push("is-sortable");const g=t?.props.headerCellClassName;return Le(g)?h.push(g):Fe(g)&&h.push(g.call(null,{rowIndex:r,columnIndex:u,row:c,column:d})),h.push(n.e("cell")),h.filter(p=>!!p).join(" ")}}}var EU=le({name:"ElTableHeader",components:{ElCheckbox:Qo},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})},appendFilterPanelTo:{type:String},allowDragLastColumn:{type:Boolean}},setup(e,{emit:t}){const n=ut(),o=Ae(la),a=fe("table"),l=P({}),{onColumnsChange:s,onScrollableChange:r}=Nm(o),u=o?.props.tableLayout==="auto",c=Mt(new Map),d=P();let f;const h=()=>{f=setTimeout(()=>{c.size>0&&(c.forEach((A,V)=>{const z=d.value.querySelector(`.${V.replace(/\s/g,".")}`);z&&(A.width=z.getBoundingClientRect().width||A.width)}),c.clear())})};re(c,h),_t(()=>{f&&(clearTimeout(f),f=void 0)}),dt(async()=>{await Ne(),await Ne();const{prop:A,order:V}=e.defaultSort;o?.store.commit("sort",{prop:A,order:V,init:!0}),h()});const{handleHeaderClick:g,handleHeaderContextMenu:p,handleMouseDown:v,handleMouseMove:m,handleMouseOut:b,handleSortClick:k,handleFilterClick:y}=CU(e,t),{getHeaderRowStyle:S,getHeaderRowClass:C,getHeaderCellStyle:E,getHeaderCellClass:$}=kU(e),{isGroup:O,toggleAllSelection:R,columnRows:N}=vU(e),{t:_}=yt();return n.state={onColumnsChange:s,onScrollableChange:r},n.filterPanels=l,{ns:a,t:_,filterPanels:l,onColumnsChange:s,onScrollableChange:r,columnRows:N,getHeaderRowClass:C,getHeaderRowStyle:S,getHeaderCellClass:$,getHeaderCellStyle:E,handleHeaderClick:g,handleHeaderContextMenu:p,handleMouseDown:v,handleMouseMove:m,handleMouseOut:b,handleSortClick:k,handleFilterClick:y,isGroup:O,toggleAllSelection:R,saveIndexSelection:c,isTableLayoutAuto:u,theadRef:d,updateFixedColumnStyle:h}},render(){const{ns:e,t,isGroup:n,columnRows:o,getHeaderCellStyle:a,getHeaderCellClass:l,getHeaderRowClass:s,getHeaderRowStyle:r,handleHeaderClick:u,handleHeaderContextMenu:c,handleMouseDown:d,handleMouseMove:f,handleSortClick:h,handleMouseOut:g,store:p,$parent:v,saveIndexSelection:m,isTableLayoutAuto:b}=this;let k=1;return qe("thead",{ref:"theadRef",class:e.is("group",n)},o.map((y,S)=>qe("tr",{class:s(S),key:S,style:r(S)},y.map((C,E)=>{C.rowSpan>k&&(k=C.rowSpan);const $=l(S,E,y,C);return b&&C.fixed&&m.set($,C),qe("th",{class:$,colspan:C.colSpan,key:`${C.id}-thead`,rowspan:C.rowSpan,scope:C.colSpan>1?"colgroup":"col",ariaSort:C.sortable?C.order:void 0,style:a(S,E,y,C),onClick:O=>{O.currentTarget?.classList.contains("noclick")||u(O,C)},onContextmenu:O=>c(O,C),onMousedown:O=>d(O,C),onMousemove:O=>f(O,C),onMouseout:g},[qe("div",{class:["cell",C.filteredValue&&C.filteredValue.length>0?"highlight":""]},[C.renderHeader?C.renderHeader({column:C,$index:E,store:p,_self:v}):C.label,C.sortable&&qe("button",{type:"button",class:"caret-wrapper","aria-label":t("el.table.sortLabel",{column:C.label||""}),onClick:O=>h(O,C)},[qe("i",{onClick:O=>h(O,C,"ascending"),class:"sort-caret ascending"}),qe("i",{onClick:O=>h(O,C,"descending"),class:"sort-caret descending"})]),C.filterable&&qe(SU,{store:p,placement:C.filterPlacement||"bottom-start",appendTo:v?.appendFilterPanelTo,column:C,upDataColumn:(O,R)=>{C[O]=R}},{"filter-icon":()=>C.renderFilterIcon?C.renderFilterIcon({filterOpened:C.filterOpened}):null})])])}))))}});function op(e,t,n=.03){return e-t>n}function xU(e){const t=Ae(la),n=P(""),o=P(qe("div")),a=(p,v,m)=>{const b=t,k=np(p);let y=null;const S=b?.vnode.el?.dataset.prefix;k&&(y=C0({columns:e.store?.states.columns.value??[]},k,S),y&&b?.emit(`cell-${m}`,v,y,k,p)),b?.emit(`row-${m}`,v,y,p)},l=(p,v)=>{a(p,v,"dblclick")},s=(p,v)=>{e.store?.commit("setCurrentRow",v),a(p,v,"click")},r=(p,v)=>{a(p,v,"contextmenu")},u=Oa(p=>{e.store?.commit("setHoverRow",p)},30),c=Oa(()=>{e.store?.commit("setHoverRow",null)},30),d=p=>{const v=window.getComputedStyle(p,null);return{left:Number.parseInt(v.paddingLeft,10)||0,right:Number.parseInt(v.paddingRight,10)||0,top:Number.parseInt(v.paddingTop,10)||0,bottom:Number.parseInt(v.paddingBottom,10)||0}},f=(p,v,m)=>{let b=v?.target?.parentNode;for(;p>1&&(b=b?.nextSibling,!(!b||b.nodeName!=="TR"));)m(b,"hover-row hover-fixed-row"),p--};return{handleDoubleClick:l,handleClick:s,handleContextMenu:r,handleMouseEnter:u,handleMouseLeave:c,handleCellMouseEnter:(p,v,m)=>{if(!t)return;const b=t,k=np(p),y=b?.vnode.el?.dataset.prefix;let S=null;if(k){if(S=C0({columns:e.store?.states.columns.value??[]},k,y),!S)return;k.rowSpan>1&&f(k.rowSpan,p,Io);const M=b.hoverState={cell:k,column:S,row:v};b?.emit("cell-mouse-enter",M.row,M.column,M.cell,p)}if(!m){ro?.trigger===k&&ro?.();return}const C=p.target.querySelector(".cell");if(!(Ca(C,`${y}-tooltip`)&&C.childNodes.length&&C.textContent?.trim()))return;const E=document.createRange();E.setStart(C,0),E.setEnd(C,C.childNodes.length);const{width:$,height:O}=E.getBoundingClientRect(),{width:R,height:N}=C.getBoundingClientRect(),{top:_,left:A,right:V,bottom:z}=d(C),U=A+V,W=_+z;op($+U,R)||op(O+W,N)||op(C.scrollWidth,R)?aU(m,(k?.innerText||k?.textContent)??"",v,S,k,b):ro?.trigger===k&&ro?.()},handleCellMouseLeave:p=>{const v=np(p);if(!v)return;v.rowSpan>1&&f(v.rowSpan,p,Gn);const m=t?.hoverState;t?.emit("cell-mouse-leave",m?.row,m?.column,m?.cell,p)},tooltipContent:n,tooltipTrigger:o}}function TU(e){const t=Ae(la),n=fe("table");return{getRowStyle:(c,d)=>{const f=t?.props.rowStyle;return Fe(f)?f.call(null,{row:c,rowIndex:d}):f||null},getRowClass:(c,d,f)=>{const h=[n.e("row")];t?.props.highlightCurrentRow&&c===e.store?.states.currentRow.value&&h.push("current-row"),e.stripe&&f%2===1&&h.push(n.em("row","striped"));const g=t?.props.rowClassName;return Le(g)?h.push(g):Fe(g)&&h.push(g.call(null,{row:c,rowIndex:d})),h},getCellStyle:(c,d,f,h)=>{const g=t?.props.cellStyle;let p=g??{};Fe(g)&&(p=g.call(null,{rowIndex:c,columnIndex:d,row:f,column:h}));const v=$m(d,e?.fixed,e.store);return br(v,"left"),br(v,"right"),Object.assign({},p,v)},getCellClass:(c,d,f,h,g)=>{const p=Tm(n.b(),d,e?.fixed,e.store,void 0,g),v=[h.id,h.align,h.className,...p],m=t?.props.cellClassName;return Le(m)?v.push(m):Fe(m)&&v.push(m.call(null,{rowIndex:c,columnIndex:d,row:f,column:h})),v.push(n.e("cell")),v.filter(b=>!!b).join(" ")},getSpan:(c,d,f,h)=>{let g=1,p=1;const v=t?.props.spanMethod;if(Fe(v)){const m=v({row:c,column:d,rowIndex:f,columnIndex:h});ye(m)?(g=m[0],p=m[1]):tt(m)&&(g=m.rowspan,p=m.colspan)}return{rowspan:g,colspan:p}},getColspanRealWidth:(c,d,f)=>{if(d<1)return c[f].realWidth;const h=c.map(({realWidth:g,width:p})=>g||p).slice(f,f+d);return Number(h.reduce((g,p)=>Number(g)+Number(p),-1))}}}const $U=["colspan","rowspan"];var OU=le({name:"TableTdWrapper",__name:"td-wrapper",props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,n)=>(x(),B("td",{colspan:e.colspan,rowspan:e.rowspan},[ee(t.$slots,"default")],8,$U))}}),NU=OU;function RU(e){const t=Ae(la),n=fe("table"),{handleDoubleClick:o,handleClick:a,handleContextMenu:l,handleMouseEnter:s,handleMouseLeave:r,handleCellMouseEnter:u,handleCellMouseLeave:c,tooltipContent:d,tooltipTrigger:f}=xU(e),{getRowStyle:h,getRowClass:g,getCellStyle:p,getCellClass:v,getSpan:m,getColspanRealWidth:b}=TU(e);let k=-1;const y=w(()=>e.store?.states.columns.value.findIndex(({type:O})=>O==="default")),S=(O,R)=>{const N=t?.props?.rowKey;return N?Ln(O,N):R},C=(O,R,N,_=!1)=>{const{tooltipEffect:A,tooltipOptions:V,store:z}=e,{indent:U,columns:W}=z.states,M=[];let I=!0;return N&&(M.push(n.em("row",`level-${N.level}`)),I=!!N.display),R===0&&(k=-1),e.stripe&&I&&k++,M.push(...g(O,R,k)),qe("tr",{style:[I?null:{display:"none"},h(O,R)],class:M,key:S(O,R),onDblclick:L=>o(L,O),onClick:L=>a(L,O),onContextmenu:L=>l(L,O),onMouseenter:()=>s(R),onMouseleave:r},W.value.map((L,D)=>{const{rowspan:F,colspan:q}=m(O,L,R,D);if(!F||!q)return null;const j=Object.assign({},L);j.realWidth=b(W.value,q,D);const X={store:z,_self:e.context||t,column:j,row:O,$index:R,cellIndex:D,expanded:_};D===y.value&&N&&(X.treeNode={indent:N.level&&N.level*U.value,level:N.level},Ft(N.expanded)&&(X.treeNode.expanded=N.expanded,"loading"in N&&(X.treeNode.loading=N.loading),"noLazyChildren"in N&&(X.treeNode.noLazyChildren=N.noLazyChildren)));const Q=`${S(O,R)},${D}`,ve=j.columnKey||j.rawColumnKey||"",ue=L.showOverflowTooltip&&xS({effect:A},V,L.showOverflowTooltip);return qe(NU,{style:p(R,D,O,L),class:v(R,D,O,L,q-1),key:`${ve}${Q}`,rowspan:F,colspan:q,onMouseenter:ge=>u(ge,O,ue),onMouseleave:c},{default:()=>E(D,L,X)})}))},E=(O,R,N)=>R.renderCell(N);return{wrappedRowRender:(O,R)=>{const N=e.store,{isRowExpanded:_,assertRowKey:A}=N,{treeData:V,lazyTreeNodeMap:z,childrenColumnName:U,rowKey:W}=N.states,M=N.states.columns.value;if(M.some(({type:I})=>I==="expand")){const I=_(O),L=C(O,R,void 0,I),D=t?.renderExpanded;if(!D)return console.error("[Element Error]renderExpanded is required."),L;const F=[[L]];return(t.props.preserveExpandedContent||I)&&F[0].push(qe("tr",{key:`expanded-row__${L.key}`,style:{display:I?"":"none"}},[qe("td",{colspan:M.length,class:`${n.e("cell")} ${n.e("expanded-cell")}`},[D({row:O,$index:R,store:N,expanded:I})])])),F}else if(Object.keys(V.value).length){A();const I=Ln(O,W.value);let L=V.value[I],D=null;L&&(D={expanded:L.expanded,level:L.level,display:!0,noLazyChildren:void 0,loading:void 0},Ft(L.lazy)&&(D&&Ft(L.loaded)&&L.loaded&&(D.noLazyChildren=!(L.children&&L.children.length)),D.loading=L.loading));const F=[C(O,R,D??void 0)];if(L){let q=0;const j=(X,Q)=>{X&&X.length&&Q&&X.forEach(ve=>{const ue={display:Q.display&&Q.expanded,level:Q.level+1,expanded:!1,noLazyChildren:!1,loading:!1},ge=Ln(ve,W.value);if(uo(ge))throw new Error("For nested data item, row-key is required.");L={...V.value[ge]},L&&(ue.expanded=L.expanded,L.level=L.level||ue.level,L.display=!!(L.expanded&&ue.display),Ft(L.lazy)&&(Ft(L.loaded)&&L.loaded&&(ue.noLazyChildren=!(L.children&&L.children.length)),ue.loading=L.loading)),q++,F.push(C(ve,R+q,ue)),L&&j(z.value[ge]||ve[U.value],L)})};L.display=!0,j(z.value[I]||O[U.value],L)}return F}else return C(O,R,void 0)},tooltipContent:d,tooltipTrigger:f}}const IU={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var MU=le({name:"ElTableBody",props:IU,setup(e){const t=ut(),n=Ae(la),o=fe("table"),{wrappedRowRender:a,tooltipContent:l,tooltipTrigger:s}=RU(e),{onColumnsChange:r,onScrollableChange:u}=Nm(n),c=[];return re(e.store?.states.hoverRow,(d,f)=>{const h=t?.vnode.el,g=Array.from(h?.children||[]).filter(m=>m?.classList.contains(`${o.e("row")}`));let p=d;const v=g[p]?.childNodes;if(v?.length){let m=0;Array.from(v).reduce((b,k,y)=>(v[y]?.colSpan>1&&(m=v[y]?.colSpan),k.nodeName!=="TD"&&m===0&&b.push(y),m>0&&m--,b),[]).forEach(b=>{for(p=d;p>0;){const k=g[p-1]?.childNodes;if(k[b]&&k[b].nodeName==="TD"&&k[b].rowSpan>1){Io(k[b],"hover-cell"),c.push(k[b]);break}p--}})}else c.forEach(m=>Gn(m,"hover-cell")),c.length=0;!e.store?.states.isComplex.value||!Rt||Yo(()=>{const m=g[f],b=g[d];m&&!m.classList.contains("hover-fixed-row")&&Gn(m,"hover-row"),b&&Io(b,"hover-row")})}),Sr(()=>{ro?.()}),{ns:o,onColumnsChange:r,onScrollableChange:u,wrappedRowRender:a,tooltipContent:l,tooltipTrigger:s}},render(){const{wrappedRowRender:e,store:t}=this;return qe("tbody",{tabIndex:-1},[(t?.states.data.value||[]).reduce((n,o)=>n.concat(e(o,n.length)),[])])}});function PU(){const e=Ae(la)?.store;return{leftFixedLeafCount:w(()=>e?.states.fixedLeafColumnsLength.value??0),rightFixedLeafCount:w(()=>e?.states.rightFixedColumns.value.length??0),columnsCount:w(()=>e?.states.columns.value.length??0),leftFixedCount:w(()=>e?.states.fixedColumns.value.length??0),rightFixedCount:w(()=>e?.states.rightFixedColumns.value.length??0),columns:w(()=>e?.states.columns.value??[])}}function AU(e){const{columns:t}=PU(),n=fe("table");return{getCellClasses:(l,s)=>{const r=l[s],u=[n.e("cell"),r.id,r.align,r.labelClassName,...Tm(n.b(),s,r.fixed,e.store)];return r.className&&u.push(r.className),r.children||u.push(n.is("leaf")),u},getCellStyles:(l,s)=>{const r=$m(s,l.fixed,e.store);return br(r,"left"),br(r,"right"),r},columns:t}}var _U=le({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const t=Ae(la),n=fe("table"),{getCellClasses:o,getCellStyles:a,columns:l}=AU(e),{onScrollableChange:s,onColumnsChange:r}=Nm(t);return{ns:n,onScrollableChange:s,onColumnsChange:r,getCellClasses:o,getCellStyles:a,columns:l}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:o,sumText:a}=this,l=this.store.states.data.value;let s=[];return o?s=o({columns:e,data:l}):e.forEach((r,u)=>{if(u===0){s[u]=a;return}const c=l.map(g=>Number(g[r.property])),d=[];let f=!0;c.forEach(g=>{if(!Number.isNaN(+g)){f=!1;const p=`${g}`.split(".")[1];d.push(p?p.length:0)}});const h=Math.max.apply(null,d);f?s[u]="":s[u]=c.reduce((g,p)=>{const v=Number(p);return Number.isNaN(+v)?g:Number.parseFloat((g+p).toFixed(Math.min(h,20)))},0)}),qe(qe("tfoot",[qe("tr",{},[...e.map((r,u)=>qe("td",{key:u,colspan:r.colSpan,rowspan:r.rowSpan,class:n(e,u),style:t(r,u)},[qe("div",{class:["cell",r.labelClassName]},[s[u]])]))])]))}});function LU(e){return{setCurrentRow:f=>{e.commit("setCurrentRow",f)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(f,h,g=!0)=>{e.toggleRowSelection(f,h,!1,g),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:f=>{e.clearFilter(f)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(f,h)=>{e.toggleRowExpansionAdapter(f,h)},clearSort:()=>{e.clearSort()},sort:(f,h)=>{e.commit("sort",{prop:f,order:h})},updateKeyChildren:(f,h)=>{e.updateKeyChildren(f,h)}}}function DU(e,t,n,o){const a=P(!1),l=P(null),s=P(!1),r=U=>{s.value=U},u=P({width:null,height:null,headerHeight:null}),c=P(!1),d={display:"inline-block",verticalAlign:"middle"},f=P(),h=P(0),g=P(0),p=P(0),v=P(0),m=P(0);re(()=>e.height,U=>{t.setHeight(U??null)},{immediate:!0}),re(()=>e.maxHeight,U=>{t.setMaxHeight(U??null)},{immediate:!0}),re(()=>[e.currentRowKey,n.states.rowKey],([U,W])=>{!i(W)||!i(U)||n.setCurrentRowKey(`${U}`)},{immediate:!0}),re(()=>e.data,U=>{o.store.commit("setData",U)},{immediate:!0,deep:!0}),ho(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const b=()=>{o.store.commit("setHoverRow",null),o.hoverState&&(o.hoverState=null)},k=(U,W)=>{const{pixelX:M,pixelY:I}=W;Math.abs(M)>=Math.abs(I)&&(o.refs.bodyWrapper.scrollLeft+=W.pixelX/5)},y=w(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),S=w(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),C=()=>{y.value&&t.updateElsHeight(),t.updateColumnsWidth(),!(typeof window>"u")&&requestAnimationFrame(R)};dt(async()=>{await Ne(),n.updateColumns(),N(),requestAnimationFrame(C);const U=o.vnode.el,W=o.refs.headerWrapper;e.flexible&&U&&U.parentElement&&(U.parentElement.style.minWidth="0"),u.value={width:f.value=U.offsetWidth,height:U.offsetHeight,headerHeight:e.showHeader&&W?W.offsetHeight:null},n.states.columns.value.forEach(M=>{M.filteredValue&&M.filteredValue.length&&o.store.commit("filterChange",{column:M,values:M.filteredValue,silent:!0})}),o.$ready=!0});const E=(U,W)=>{if(!U)return;const M=Array.from(U.classList).filter(I=>!I.startsWith("is-scrolling-"));M.push(t.scrollX.value?W:"is-scrolling-none"),U.className=M.join(" ")},$=U=>{const{tableWrapper:W}=o.refs;E(W,U)},O=U=>{const{tableWrapper:W}=o.refs;return!!(W&&W.classList.contains(U))},R=function(){if(!o.refs.scrollBarRef)return;if(!t.scrollX.value){const F="is-scrolling-none";O(F)||$(F);return}const U=o.refs.scrollBarRef.wrapRef;if(!U)return;const{scrollLeft:W,offsetWidth:M,scrollWidth:I}=U,{headerWrapper:L,footerWrapper:D}=o.refs;L&&(L.scrollLeft=W),D&&(D.scrollLeft=W),W>=I-M-1?$("is-scrolling-right"):$(W===0?"is-scrolling-left":"is-scrolling-middle")},N=()=>{o.refs.scrollBarRef&&(o.refs.scrollBarRef.wrapRef&&Lt(o.refs.scrollBarRef.wrapRef,"scroll",R,{passive:!0}),e.fit?Gt(o.vnode.el,_):Lt(window,"resize",_),Gt(o.refs.tableInnerWrapper,()=>{_(),o.refs?.scrollBarRef?.update()}))},_=()=>{const U=o.vnode.el;if(!o.$ready||!U)return;let W=!1;const{width:M,height:I,headerHeight:L}=u.value,D=f.value=U.offsetWidth;M!==D&&(W=!0);const F=U.offsetHeight;(e.height||y.value)&&I!==F&&(W=!0);const q=e.tableLayout==="fixed"?o.refs.headerWrapper:o.refs.tableHeaderRef?.$el;e.showHeader&&q?.offsetHeight!==L&&(W=!0),h.value=o.refs.tableWrapper?.scrollHeight||0,p.value=q?.scrollHeight||0,v.value=o.refs.footerWrapper?.offsetHeight||0,m.value=o.refs.appendWrapper?.offsetHeight||0,g.value=h.value-p.value-v.value-m.value,W&&(u.value={width:D,height:F,headerHeight:e.showHeader&&q?.offsetHeight||0},C())},A=mn(),V=w(()=>{const{bodyWidth:U,scrollY:W,gutterWidth:M}=t;return U.value?`${U.value-(W.value?M:0)}px`:""}),z=w(()=>e.maxHeight?"fixed":e.tableLayout);return{isHidden:a,renderExpanded:l,setDragVisible:r,isGroup:c,handleMouseLeave:b,handleHeaderFooterMousewheel:k,tableSize:A,emptyBlockStyle:w(()=>{if(e.data&&e.data.length)return;let U="100%";e.height&&g.value&&(U=`${g.value}px`);const W=f.value;return{width:W?`${W}px`:"",height:U}}),resizeProxyVisible:s,bodyWidth:V,resizeState:u,doLayout:C,tableBodyStyles:S,tableLayout:z,scrollbarViewStyle:d,scrollbarStyle:w(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${p.value+v.value}px)`}:{maxHeight:`${+e.maxHeight-p.value-v.value}px`}:{})}}function BU(e){let t;const n=()=>{const o=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},l=e.store.states.updateOrderFns;t=new MutationObserver(()=>{l.forEach(s=>s())}),t.observe(o,a)};dt(()=>{n()}),Sr(()=>{t?.disconnect()})}var FU={data:{type:Array,default:()=>[]},size:wn,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,rowExpandable:{type:Function},defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:[String,Object,Array],default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:Boolean,nativeScrollbar:Boolean};function fE(e){const t=e.tableLayout==="auto";let n=e.columns||[];t&&n.every(({width:a})=>kt(a))&&(n=[]);const o=a=>{const l={key:`${e.tableLayout}_${a.id}`,style:{},name:void 0};return t?l.style={width:`${a.width}px`}:l.name=a.id,l};return qe("colgroup",{},n.map(a=>qe("col",o(a))))}fE.props=["columns","tableLayout"];const VU=()=>{const e=P(),t=(l,s)=>{const r=e.value;r&&r.scrollTo(l,s)},n=(l,s)=>{const r=e.value;r&&He(s)&&["Top","Left"].includes(l)&&r[`setScroll${l}`](s)};return{scrollBarRef:e,scrollTo:t,setScrollTop:l=>n("Top",l),setScrollLeft:l=>n("Left",l)}};let zU=1;var HU=le({name:"ElTable",directives:{Mousewheel:v8},components:{TableHeader:EU,TableBody:MU,TableFooter:_U,ElScrollbar:Jo,hColgroup:fE},props:FU,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t}=yt(),n=fe("table"),o=fl("table"),a=ut();bt(la,a);const l=dU(a,e);a.store=l;const s=new pU({store:a.store,table:a,fit:e.fit,showHeader:e.showHeader});a.layout=s;const r=w(()=>(l.states.data.value||[]).length===0),{setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:h,toggleAllSelection:g,toggleRowExpansion:p,clearSort:v,sort:m,updateKeyChildren:b}=LU(l),{isHidden:k,renderExpanded:y,setDragVisible:S,isGroup:C,handleMouseLeave:E,handleHeaderFooterMousewheel:$,tableSize:O,emptyBlockStyle:R,resizeProxyVisible:N,bodyWidth:_,resizeState:A,doLayout:V,tableBodyStyles:z,tableLayout:U,scrollbarViewStyle:W,scrollbarStyle:M}=DU(e,s,l,a),{scrollBarRef:I,scrollTo:L,setScrollLeft:D,setScrollTop:F}=VU(),q=Oa(V,50),j=`${n.namespace.value}-table_${zU++}`;a.tableId=j,a.state={isGroup:C,resizeState:A,doLayout:V,debouncedUpdateLayout:q};const X=w(()=>e.sumText??t("el.table.sumText")),Q=w(()=>e.emptyText??t("el.table.emptyText")),ve=w(()=>e.tooltipEffect??o.value?.tooltipEffect),ue=w(()=>e.tooltipOptions??o.value?.tooltipOptions),ge=w(()=>dE(l.states.originColumns.value)[0]);return BU(a),_t(()=>{q.cancel()}),{ns:n,layout:s,store:l,columns:ge,handleHeaderFooterMousewheel:$,handleMouseLeave:E,tableId:j,tableSize:O,isHidden:k,isEmpty:r,renderExpanded:y,resizeProxyVisible:N,resizeState:A,isGroup:C,bodyWidth:_,tableBodyStyles:z,emptyBlockStyle:R,debouncedUpdateLayout:q,setCurrentRow:u,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:h,toggleAllSelection:g,toggleRowExpansion:p,clearSort:v,doLayout:V,sort:m,updateKeyChildren:b,t,setDragVisible:S,context:a,computedSumText:X,computedEmptyText:Q,computedTooltipEffect:ve,computedTooltipOptions:ue,tableLayout:U,scrollbarViewStyle:W,scrollbarStyle:M,scrollBarRef:I,scrollTo:L,setScrollLeft:D,setScrollTop:F,allowDragLastColumn:e.allowDragLastColumn}}});const KU=["data-prefix"],WU={ref:"hiddenColumns",class:"hidden-columns"};function jU(e,t,n,o,a,l){const s=Ot("hColgroup"),r=Ot("table-header"),u=Ot("table-body"),c=Ot("table-footer"),d=Ot("el-scrollbar"),f=eh("mousewheel");return x(),B("div",{ref:"tableWrapper",class:T([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Ke(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[1]||(t[1]=(...h)=>e.handleMouseLeave&&e.handleMouseLeave(...h))},[H("div",{ref:"tableInnerWrapper",class:T(e.ns.e("inner-wrapper"))},[H("div",WU,[ee(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?rt((x(),B("div",{key:0,ref:"headerWrapper",class:T(e.ns.e("header-wrapper"))},[H("table",{ref:"tableHeader",class:T(e.ns.e("header")),style:Ke(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Y(s,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Y(r,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[f,e.handleHeaderFooterMousewheel]]):te("v-if",!0),H("div",{ref:"bodyWrapper",class:T(e.ns.e("body-wrapper"))},[Y(d,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:t[0]||(t[0]=h=>e.$emit("scroll",h))},{default:J(()=>[H("table",{ref:"tableBody",class:T(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Ke({width:e.bodyWidth,tableLayout:e.tableLayout})},[Y(s,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(x(),ae(r,{key:0,ref:"tableHeaderRef",class:T(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):te("v-if",!0),Y(u,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.computedTooltipEffect,"tooltip-options":e.computedTooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(x(),ae(c,{key:1,class:T(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):te("v-if",!0)],6),e.isEmpty?(x(),B("div",{key:0,ref:"emptyBlock",style:Ke(e.emptyBlockStyle),class:T(e.ns.e("empty-block"))},[H("span",{class:T(e.ns.e("empty-text"))},[ee(e.$slots,"empty",{},()=>[gt(ke(e.computedEmptyText),1)])],2)],6)):te("v-if",!0),e.$slots.append?(x(),B("div",{key:1,ref:"appendWrapper",class:T(e.ns.e("append-wrapper"))},[ee(e.$slots,"append")],2)):te("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native"])],2),e.showSummary&&e.tableLayout==="fixed"?rt((x(),B("div",{key:1,ref:"footerWrapper",class:T(e.ns.e("footer-wrapper"))},[H("table",{class:T(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:Ke(e.tableBodyStyles)},[Y(s,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Y(c,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[Nt,!e.isEmpty],[f,e.handleHeaderFooterMousewheel]]):te("v-if",!0),e.border||e.isGroup?(x(),B("div",{key:2,class:T(e.ns.e("border-left-patch"))},null,2)):te("v-if",!0)],2),rt(H("div",{ref:"resizeProxy",class:T(e.ns.e("column-resize-proxy"))},null,2),[[Nt,e.resizeProxyVisible]])],46,KU)}var UU=Sn(HU,[["render",jU]]);const qU={selection:"table-column--selection",expand:"table__expand-column"},YU={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},GU=e=>qU[e]||"",XU={selection:{renderHeader({store:e}){function t(){return e.states.data.value&&e.states.data.value.length===0}return qe(Qo,{disabled:t(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection??void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:n,$index:o}){return qe(Qo,{disabled:t.selectable?!t.selectable.call(null,e,o):!1,size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:a=>a.stopPropagation(),modelValue:n.isSelected(e),ariaLabel:n.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const o=e.index;return He(o)?n=t+o:Fe(o)&&(n=o(t)),qe("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:n,expanded:o,$index:a}){const{ns:l}=n,s=[l.e("expand-icon")];!e.renderExpand&&o&&s.push(l.em("expand-icon","expanded"));const r=function(c){c.stopPropagation(),n.toggleRowExpansion(t)},u=n.states.rowExpandable.value?.(t,a)??!0;return u||s.push(l.is("disabled")),qe("button",{type:"button",disabled:!u,"aria-label":n.t(o?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":o,class:s,onClick:r},{default:()=>e.renderExpand?[e.renderExpand({expanded:o,expandable:u})]:[qe(De,null,{default:()=>[qe(Xn)]})]})},sortable:!1,resizable:!1}};function JU({row:e,column:t,$index:n}){const o=t.property,a=o&&Ol(e,o).value;return t&&t.formatter?t.formatter(e,t,a,n):a?.toString?.()||""}function ZU({row:e,treeNode:t,store:n},o=!1){const{ns:a}=n;if(!t)return o?[qe("span",{class:a.e("placeholder")})]:null;const l=[],s=function(r){r.stopPropagation(),!t.loading&&n.loadOrToggle(e)};if(t.indent&&l.push(qe("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),Ft(t.expanded)&&!t.noLazyChildren){const r=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let u=Xn;t.loading&&(u=Ra),l.push(qe("button",{type:"button","aria-label":n.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:r,onClick:s},{default:()=>[qe(De,{class:a.is("loading",t.loading)},{default:()=>[qe(u)]})]}))}else l.push(qe("span",{class:a.e("placeholder")}));return l}function x0(e,t){return e.reduce((n,o)=>(n[o]=o,n),t)}function QU(e,t){const n=ut();return{registerComplexWatchers:()=>{const l=["fixed"],s={realWidth:"width",realMinWidth:"minWidth"},r=x0(l,s);Object.keys(r).forEach(u=>{const c=s[u];$t(t,c)&&re(()=>t[c],d=>{let f=d;c==="width"&&u==="realWidth"&&(f=xm(d)),c==="minWidth"&&u==="realMinWidth"&&(f=aE(d)),n.columnConfig.value[c]=f,n.columnConfig.value[u]=f;const h=c==="fixed";e.value.store.scheduleLayout(h)})})},registerNormalWatchers:()=>{const l=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],s=["showOverflowTooltip"],r={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},u=x0(l,r);Object.keys(u).forEach(d=>{const f=r[d];$t(t,f)&&re(()=>t[f],h=>{n.columnConfig.value[d]=h,(d==="filters"||d==="filterMethod")&&(n.columnConfig.value.filterable=!!(n.columnConfig.value.filters||n.columnConfig.value.filterMethod))})}),s.forEach(d=>{$t(e.value.props,d)&&re(()=>e.value.props[d],f=>{n.columnConfig.value.type!=="selection"&&kt(t[d])&&(n.columnConfig.value[d]=f)})});const c=fl("table");c.value&&$t(c.value,"showOverflowTooltip")&&re(()=>c.value?.showOverflowTooltip,d=>{n.columnConfig.value.type!=="selection"&&(!kt(t.showOverflowTooltip)||!kt(e.value.props.showOverflowTooltip)||(n.columnConfig.value.showOverflowTooltip=d))})}}}function eq(e,t,n){const o=ut(),a=P(""),l=P(!1),s=P(),r=P(),u=fe("table");ho(()=>{s.value=e.align?`is-${e.align}`:null,s.value}),ho(()=>{r.value=e.headerAlign?`is-${e.headerAlign}`:s.value,r.value});const c=w(()=>{let S=o.vnode.vParent||o.parent;for(;S&&!S.tableId&&!S.columnId;)S=S.vnode.vParent||S.parent;return S}),d=w(()=>{const{store:S}=o.parent;if(!S)return!1;const{treeData:C}=S.states,E=C.value;return E&&Object.keys(E).length>0}),f=P(xm(e.width)),h=P(aE(e.minWidth)),g=S=>(f.value&&(S.width=f.value),h.value&&(S.minWidth=h.value),!f.value&&h.value&&(S.width=void 0),S.minWidth||(S.minWidth=80),S.realWidth=Number(kt(S.width)?S.minWidth:S.width),S),p=S=>{const C=S.type,E=XU[C]||{};Object.keys(E).forEach(O=>{const R=E[O];O!=="className"&&!kt(R)&&(S[O]=R)});const $=GU(C);if($){const O=`${i(u.namespace)}-${$}`;S.className=S.className?`${S.className} ${O}`:O}return S},v=S=>{ye(S)?S.forEach(E=>C(E)):C(S);function C(E){E?.type?.name==="ElTableColumn"&&(E.vParent=o)}};return{columnId:a,realAlign:s,isSubColumn:l,realHeaderAlign:r,columnOrTableParent:c,setColumnWidth:g,setColumnForcedProps:p,setColumnRenders:S=>{e.renderHeader?ct("TableColumn","Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):S.type!=="selection"&&(S.renderHeader=E=>{if(o.columnConfig.value.label,t.header){const $=t.header(E);if(rE($))return qe(Ve,$)}return gt(S.label)}),t["filter-icon"]&&(S.renderFilterIcon=E=>ee(t,"filter-icon",E)),t.expand&&(S.renderExpand=E=>ee(t,"expand",E));let C=S.renderCell;return S.type==="expand"?(S.renderCell=E=>qe("div",{class:"cell"},[C(E)]),n.value.renderExpanded=E=>t.default?t.default(E):t.default):(C=C||JU,S.renderCell=E=>{let $=null;if(t.default){const A=t.default(E);$=A.some(V=>V.type!==dn)?A:C(E)}else $=C(E);const{columns:O}=n.value.store.states,R=O.value.findIndex(A=>A.type==="default"),N=ZU(E,d.value&&E.cellIndex===R),_={class:"cell",style:{}};return S.showOverflowTooltip&&(_.class=`${_.class} ${i(u.namespace)}-tooltip`,_.style={width:`${(E.column.realWidth||Number(E.column.width))-1}px`}),v($),qe("div",_,[N,$])}),S},getPropsData:(...S)=>S.reduce((C,E)=>(ye(E)&&E.forEach($=>{C[$]=e[$]}),C),{}),getColumnElIndex:(S,C)=>Array.prototype.indexOf.call(S,C),updateColumnOrder:()=>{n.value.store.commit("updateColumnOrder",o.columnConfig.value)}}}var tq={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let nq=1;var oq=le({name:"ElTableColumn",components:{ElCheckbox:Qo},props:tq,setup(e,{slots:t}){const n=ut(),o=fl("table"),a=P({}),l=w(()=>{let S=n.parent;for(;S&&!S.tableId;)S=S.parent;return S}),{registerNormalWatchers:s,registerComplexWatchers:r}=QU(l,e),{columnId:u,isSubColumn:c,realHeaderAlign:d,columnOrTableParent:f,setColumnWidth:h,setColumnForcedProps:g,setColumnRenders:p,getPropsData:v,getColumnElIndex:m,realAlign:b,updateColumnOrder:k}=eq(e,t,l),y=f.value;u.value=`${"tableId"in y&&y.tableId||"columnId"in y&&y.columnId}_column_${nq++}`,Td(()=>{c.value=l.value!==y;const S=e.type||"default",C=e.sortable===""?!0:e.sortable,E=S==="selection"?!1:kt(e.showOverflowTooltip)?y.props.showOverflowTooltip??o.value?.showOverflowTooltip:e.showOverflowTooltip,$=kt(e.tooltipFormatter)?y.props.tooltipFormatter??o.value?.tooltipFormatter:e.tooltipFormatter,O={...YU[S],id:u.value,type:S,property:e.prop||e.property,align:b,headerAlign:d,showOverflowTooltip:E,tooltipFormatter:$,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:C,index:e.index,rawColumnKey:n.vnode.key};let R=v(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);R=Q7(O,R),R=tU(p,h,g)(R),a.value=R,s(),r()}),dt(()=>{const S=f.value,C=c.value?S.vnode.el?.children:S.refs.hiddenColumns?.children,E=()=>m(C||[],n.vnode.el);a.value.getColumnIndex=E,E()>-1&&l.value.store.commit("insertColumn",a.value,c.value?"columnConfig"in S&&S.columnConfig.value:null,k)}),_t(()=>{const S=a.value.getColumnIndex;(S?S():-1)>-1&&l.value.store.commit("removeColumn",a.value,c.value?"columnConfig"in y&&y.columnConfig.value:null,k)}),n.columnId=u.value,n.columnConfig=a},render(){try{const e=this.$slots.default?.({row:{},column:{},$index:-1}),t=[];if(ye(e))for(const n of e)n.type?.name==="ElTableColumn"||n.shapeFlag&2?t.push(n):n.type===Ve&&ye(n.children)&&n.children.forEach(o=>{o?.patchFlag!==1024&&!Le(o?.children)&&t.push(o)});return qe("div",t)}catch{return qe("div",[])}}}),pE=oq;const aq=ot(UU,{TableColumn:pE}),lq=Zt(pE);let ya=(function(e){return e.ASC="asc",e.DESC="desc",e})({}),pd=(function(e){return e.LEFT="left",e.CENTER="center",e.RIGHT="right",e})({}),sq=(function(e){return e.LEFT="left",e.RIGHT="right",e})({});const Sv={[ya.ASC]:ya.DESC,[ya.DESC]:ya.ASC},Bi=Symbol("placeholder"),vE=String,hu={type:G(Array),required:!0},Rm={type:G(Array)},hE={...Rm,required:!0},rq=String,T0={type:G(Array),default:()=>tn([])},Xl={type:Number,required:!0},mE={type:G([String,Number,Symbol]),default:"id"},$0={type:G(Object)},ns=Se({class:String,columns:hu,columnsStyles:{type:G(Object),required:!0},depth:Number,expandColumnKey:rq,estimatedRowHeight:{...is.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:G(Function)},onRowHover:{type:G(Function)},onRowHeightChange:{type:G(Function)},rowData:{type:G(Object),required:!0},rowEventHandlers:{type:G(Object)},rowIndex:{type:Number,required:!0},rowKey:mE,style:{type:G(Object)}}),ap={type:Number,required:!0},Im=Se({class:String,columns:hu,fixedHeaderData:{type:G(Array)},headerData:{type:G(Array),required:!0},headerHeight:{type:G([Number,Array]),default:50},rowWidth:ap,rowHeight:{type:Number,default:50},height:ap,width:ap}),kc=Se({columns:hu,data:hE,fixedData:Rm,estimatedRowHeight:ns.estimatedRowHeight,width:Xl,height:Xl,headerWidth:Xl,headerHeight:Im.headerHeight,bodyWidth:Xl,rowHeight:Xl,cache:B2.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:is.scrollbarAlwaysOn,scrollbarStartGap:is.scrollbarStartGap,scrollbarEndGap:is.scrollbarEndGap,class:vE,style:$0,containerStyle:$0,getRowHeight:{type:G(Function),required:!0},rowKey:ns.rowKey,onRowsRendered:{type:G(Function)},onScroll:{type:G(Function)}}),iq=Se({cache:kc.cache,estimatedRowHeight:ns.estimatedRowHeight,rowKey:mE,headerClass:{type:G([String,Function])},headerProps:{type:G([Object,Function])},headerCellProps:{type:G([Object,Function])},headerHeight:Im.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:G([String,Function])},rowProps:{type:G([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:G([Object,Function])},columns:hu,data:hE,dataGetter:{type:G(Function)},fixedData:Rm,expandColumnKey:ns.expandColumnKey,expandedRowKeys:T0,defaultExpandedRowKeys:T0,class:vE,fixed:Boolean,style:{type:G(Object)},width:Xl,height:Xl,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:is.hScrollbarSize,vScrollbarSize:is.vScrollbarSize,scrollbarAlwaysOn:z2.alwaysOn,sortBy:{type:G(Object),default:()=>({})},sortState:{type:G(Object),default:void 0},onColumnSort:{type:G(Function)},onExpandedRowsChange:{type:G(Function)},onEndReached:{type:G(Function)},onRowExpand:ns.onRowExpand,onScroll:kc.onScroll,onRowsRendered:kc.onRowsRendered,rowEventHandlers:ns.rowEventHandlers}),uq=(e,t,n)=>{const o={flexGrow:0,flexShrink:0,...n?{}:{flexGrow:e.flexGrow??0,flexShrink:e.flexShrink??1}},a={...e.style??{},...o,flexBasis:"auto",width:e.width};return t||(e.maxWidth&&(a.maxWidth=e.maxWidth),e.minWidth&&(a.minWidth=e.minWidth)),a};function cq(e,t,n){const o=w(()=>i(t).map((m,b)=>({...m,key:m.key??m.dataKey??b}))),a=w(()=>i(o).filter(m=>!m.hidden)),l=w(()=>i(a).filter(m=>m.fixed==="left"||m.fixed===!0)),s=w(()=>i(a).filter(m=>m.fixed==="right")),r=w(()=>i(a).filter(m=>!m.fixed)),u=w(()=>{const m=[];return i(l).forEach(b=>{m.push({...b,placeholderSign:Bi})}),i(r).forEach(b=>{m.push(b)}),i(s).forEach(b=>{m.push({...b,placeholderSign:Bi})}),m}),c=w(()=>i(l).length||i(s).length),d=w(()=>i(o).reduce((m,b)=>(m[b.key]=uq(b,i(n),e.fixed),m),{})),f=w(()=>i(a).reduce((m,b)=>m+b.width,0)),h=m=>i(o).find(b=>b.key===m),g=m=>i(d)[m],p=(m,b)=>{m.width=b};function v(m){const{key:b}=m.currentTarget.dataset;if(!b)return;const{sortState:k,sortBy:y}=e;let S=ya.ASC;tt(k)?S=Sv[k[b]]:S=Sv[y.order],e.onColumnSort?.({column:h(b),key:b,order:S})}return{columns:o,columnsStyles:d,columnsTotalWidth:f,fixedColumnsOnLeft:l,fixedColumnsOnRight:s,hasFixedColumns:c,mainColumns:u,normalColumns:r,visibleColumns:a,getColumn:h,getColumnStyle:g,updateColumnWidth:p,onColumnSorted:v}}const dq=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:o,onMaybeEndReached:a})=>{const l=P({scrollLeft:0,scrollTop:0});function s(g){const{scrollTop:p}=g;t.value?.scrollTo(g),n.value?.scrollToTop(p),o.value?.scrollToTop(p)}function r(g){l.value=g,s(g)}function u(g){l.value.scrollTop=g,s(i(l))}function c(g){l.value.scrollLeft=g,t.value?.scrollTo?.(i(l))}function d(g){r(g),e.onScroll?.(g)}function f({scrollTop:g}){const{scrollTop:p}=i(l);g!==p&&u(g)}function h(g,p="auto"){t.value?.scrollToRow(g,p)}return re(()=>i(l).scrollTop,(g,p)=>{g>p&&a()}),{scrollPos:l,scrollTo:r,scrollToLeft:c,scrollToTop:u,scrollToRow:h,onScroll:d,onVerticalScroll:f}},fq=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:o,tableInstance:a,ns:l,isScrolling:s})=>{const r=ut(),{emit:u}=r,c=qt(!1),d=P(e.defaultExpandedRowKeys||[]),f=P(-1),h=qt(null),g=P({}),p=P({}),v=qt({}),m=qt({}),b=qt({}),k=w(()=>He(e.estimatedRowHeight));function y(N){e.onRowsRendered?.(N),N.rowCacheEnd>i(f)&&(f.value=N.rowCacheEnd)}function S({hovered:N,rowKey:_}){s.value||a.vnode.el.querySelectorAll(`[rowkey="${String(_)}"]`).forEach(A=>{N?A.classList.add(l.is("hovered")):A.classList.remove(l.is("hovered"))})}function C({expanded:N,rowData:_,rowIndex:A,rowKey:V}){const z=[...i(d)],U=z.indexOf(V);N?U===-1&&z.push(V):U>-1&&z.splice(U,1),d.value=z,u("update:expandedRowKeys",z),e.onRowExpand?.({expanded:N,rowData:_,rowIndex:A,rowKey:V}),e.onExpandedRowsChange?.(z),a.vnode.el.querySelector(`.${l.is("hovered")}[rowkey="${String(V)}"]`)&&Ne(()=>S({hovered:!0,rowKey:V}))}const E=Oa(()=>{c.value=!0,g.value={...i(g),...i(p)},$(i(h),!1),p.value={},h.value=null,t.value?.forceUpdate(),n.value?.forceUpdate(),o.value?.forceUpdate(),r.proxy?.$forceUpdate(),c.value=!1},0);function $(N,_=!1){i(k)&&[t,n,o].forEach(A=>{const V=i(A);V&&V.resetAfterRowIndex(N,_)})}function O(N,_,A){const V=i(h);(V===null||V>A)&&(h.value=A),p.value[N]=_}function R({rowKey:N,height:_,rowIndex:A},V){V?V===sq.RIGHT?b.value[N]=_:v.value[N]=_:m.value[N]=_;const z=Math.max(...[v,b,m].map(U=>U.value[N]||0));i(g)[N]!==z&&(O(N,z,A),E())}return{expandedRowKeys:d,lastRenderedRowIndex:f,isDynamic:k,isResetting:c,rowHeights:g,resetAfterIndex:$,onRowExpanded:C,onRowHovered:S,onRowsRendered:y,onRowHeightChange:R}},pq=(e,{expandedRowKeys:t,lastRenderedRowIndex:n,resetAfterIndex:o})=>{const a=P({}),l=w(()=>{const r={},{data:u,rowKey:c}=e,d=i(t);if(!d||!d.length)return u;const f=[],h=new Set;d.forEach(p=>h.add(p));let g=u.slice();for(g.forEach(p=>r[p[c]]=0);g.length>0;){const p=g.shift();f.push(p),h.has(p[c])&&ye(p.children)&&p.children.length>0&&(g=[...p.children,...g],p.children.forEach(v=>r[v[c]]=r[p[c]]+1))}return a.value=r,f}),s=w(()=>{const{data:r,expandColumnKey:u}=e;return u?i(l):r});return re(s,(r,u)=>{r!==u&&(n.value=-1,o(0,!0))}),{data:s,depthMap:a}},vq=(e,t)=>e+t,Ec=e=>ye(e)?e.reduce(vq,0):e,bs=(e,t,n={})=>Fe(e)?e(t):e??n,$l=e=>(["width","maxWidth","minWidth","height"].forEach(t=>{e[t]=nn(e[t])}),e),gE=e=>Kt(e)?t=>qe(e,t):e,hq=(e,{columnsTotalWidth:t,rowsHeight:n,fixedColumnsOnLeft:o,fixedColumnsOnRight:a})=>{const l=w(()=>{const{fixed:v,width:m,vScrollbarSize:b}=e,k=m-b;return v?Math.max(Math.round(i(t)),k):k}),s=w(()=>{const{height:v=0,maxHeight:m=0,footerHeight:b,hScrollbarSize:k}=e;if(m>0){const y=i(h),S=i(n),C=i(f)+y+S+k;return Math.min(C,m-b)}return v-b}),r=w(()=>{const{maxHeight:v}=e,m=i(s);if(He(v)&&v>0)return m;const b=i(n)+i(f)+i(h);return Math.min(m,b)}),u=v=>v.width,c=w(()=>Ec(i(o).map(u))),d=w(()=>Ec(i(a).map(u))),f=w(()=>Ec(e.headerHeight)),h=w(()=>(e.fixedData?.length||0)*e.rowHeight),g=w(()=>i(s)-i(f)-i(h)),p=w(()=>{const{style:v={},height:m,width:b}=e;return $l({...v,height:m,width:b})});return{bodyWidth:l,fixedTableHeight:r,mainTableHeight:s,leftTableWidth:c,rightTableWidth:d,windowHeight:g,footerHeight:w(()=>$l({height:e.footerHeight})),emptyStyle:w(()=>({top:nn(i(f)),bottom:nn(e.footerHeight),width:nn(e.width)})),rootStyle:p,headerHeight:f}};function mq(e){const t=P(),n=P(),o=P(),{columns:a,columnsStyles:l,columnsTotalWidth:s,fixedColumnsOnLeft:r,fixedColumnsOnRight:u,hasFixedColumns:c,mainColumns:d,onColumnSorted:f}=cq(e,Dt(e,"columns"),Dt(e,"fixed")),{scrollTo:h,scrollToLeft:g,scrollToTop:p,scrollToRow:v,onScroll:m,onVerticalScroll:b,scrollPos:k}=dq(e,{mainTableRef:t,leftTableRef:n,rightTableRef:o,onMaybeEndReached:Z}),y=fe("table-v2"),S=ut(),C=qt(!1),{expandedRowKeys:E,lastRenderedRowIndex:$,isDynamic:O,isResetting:R,rowHeights:N,resetAfterIndex:_,onRowExpanded:A,onRowHeightChange:V,onRowHovered:z,onRowsRendered:U}=fq(e,{mainTableRef:t,leftTableRef:n,rightTableRef:o,tableInstance:S,ns:y,isScrolling:C}),{data:W,depthMap:M}=pq(e,{expandedRowKeys:E,lastRenderedRowIndex:$,resetAfterIndex:_}),I=w(()=>{const{estimatedRowHeight:se,rowHeight:ce}=e,he=i(W);return He(se)?Object.values(i(N)).reduce((Ce,Re)=>Ce+Re,0):he.length*ce}),{bodyWidth:L,fixedTableHeight:D,mainTableHeight:F,leftTableWidth:q,rightTableWidth:j,windowHeight:X,footerHeight:Q,emptyStyle:ve,rootStyle:ue,headerHeight:ge}=hq(e,{columnsTotalWidth:s,fixedColumnsOnLeft:r,fixedColumnsOnRight:u,rowsHeight:I}),ie=P(),oe=w(()=>{const se=i(W).length===0;return ye(e.fixedData)?e.fixedData.length===0&&se:se});function ne(se){const{estimatedRowHeight:ce,rowHeight:he,rowKey:Ce}=e;return ce?i(N)[i(W)[se][Ce]]||ce:he}const K=P(!1);function Z(){const{onEndReached:se}=e;if(!se)return;const{scrollTop:ce}=i(k),he=i(I),Ce=he-(ce+i(X))+e.hScrollbarSize;!K.value&&i($)>=0&&he<=ce+i(F)-i(ge)?(K.value=!0,se(Ce)):K.value=!1}return re(()=>i(I),()=>K.value=!1),re(()=>e.expandedRowKeys,se=>E.value=se,{deep:!0}),{columns:a,containerRef:ie,mainTableRef:t,leftTableRef:n,rightTableRef:o,isDynamic:O,isResetting:R,isScrolling:C,hasFixedColumns:c,columnsStyles:l,columnsTotalWidth:s,data:W,expandedRowKeys:E,depthMap:M,fixedColumnsOnLeft:r,fixedColumnsOnRight:u,mainColumns:d,bodyWidth:L,emptyStyle:ve,rootStyle:ue,footerHeight:Q,mainTableHeight:F,fixedTableHeight:D,leftTableWidth:q,rightTableWidth:j,showEmpty:oe,getRowHeight:ne,onColumnSorted:f,onRowHovered:z,onRowExpanded:A,onRowsRendered:U,onRowHeightChange:V,scrollTo:h,scrollToLeft:g,scrollToTop:p,scrollToRow:v,onScroll:m,onVerticalScroll:b}}const Mm=Symbol("tableV2"),bE="tableV2GridScrollLeft",gq=le({name:"ElTableV2Header",props:Im,setup(e,{slots:t,expose:n}){const o=fe("table-v2"),a=Ae(bE),l=P(),s=w(()=>$l({width:e.width,height:e.height})),r=w(()=>$l({width:e.rowWidth,height:e.height})),u=w(()=>En(i(e.headerHeight))),c=h=>{const g=i(l);Ne(()=>{g?.scroll&&g.scroll({left:h})})},d=()=>{const h=o.e("fixed-header-row"),{columns:g,fixedHeaderData:p,rowHeight:v}=e;return p?.map((m,b)=>{const k=$l({height:v,width:"100%"});return t.fixed?.({class:h,columns:g,rowData:m,rowIndex:-(b+1),style:k})})},f=()=>{const h=o.e("dynamic-header-row"),{columns:g}=e;return i(u).map((p,v)=>{const m=$l({width:"100%",height:p});return t.dynamic?.({class:h,columns:g,headerIndex:v,style:m})})};return ea(()=>{a?.value&&c(a.value)}),n({scrollToLeft:c}),()=>{if(!(e.height<=0))return Y("div",{ref:l,class:e.class,style:i(s),role:"rowgroup"},[Y("div",{style:i(r),class:o.e("header")},[f(),d()])])}}}),bq="ElTableV2Grid",yq=e=>{const t=P(),n=P(),o=P(0),a=w(()=>{const{data:m,rowHeight:b,estimatedRowHeight:k}=e;if(!k)return m.length*b}),l=w(()=>{const{fixedData:m,rowHeight:b}=e;return(m?.length||0)*b}),s=w(()=>Ec(e.headerHeight)),r=w(()=>{const{height:m}=e;return Math.max(0,m-i(s)-i(l))}),u=w(()=>i(s)+i(l)>0),c=({data:m,rowIndex:b})=>m[b][e.rowKey];function d({rowCacheStart:m,rowCacheEnd:b,rowVisibleStart:k,rowVisibleEnd:y}){e.onRowsRendered?.({rowCacheStart:m,rowCacheEnd:b,rowVisibleStart:k,rowVisibleEnd:y})}function f(m,b){n.value?.resetAfterRowIndex(m,b)}function h(m,b){const k=i(t),y=i(n);tt(m)?(k?.scrollToLeft(m.scrollLeft),o.value=m.scrollLeft,y?.scrollTo(m)):(k?.scrollToLeft(m),o.value=m,y?.scrollTo({scrollLeft:m,scrollTop:b}))}function g(m){i(n)?.scrollTo({scrollTop:m})}function p(m,b){const k=i(n);if(!k)return;const y=o.value;k.scrollToItem(m,0,b),y&&h({scrollLeft:y})}function v(){i(n)?.$forceUpdate(),i(t)?.$forceUpdate()}return re(()=>e.bodyWidth,()=>{He(e.estimatedRowHeight)&&n.value?.resetAfter({columnIndex:0},!1)}),{bodyRef:n,forceUpdate:v,fixedRowHeight:l,gridHeight:r,hasHeader:u,headerHeight:s,headerRef:t,totalHeight:a,itemKey:c,onItemRendered:d,resetAfterRowIndex:f,scrollTo:h,scrollToTop:g,scrollToRow:p,scrollLeft:o}},Pm=le({name:bq,props:kc,setup(e,{slots:t,expose:n}){const{ns:o}=Ae(Mm),{bodyRef:a,fixedRowHeight:l,gridHeight:s,hasHeader:r,headerRef:u,headerHeight:c,totalHeight:d,forceUpdate:f,itemKey:h,onItemRendered:g,resetAfterRowIndex:p,scrollTo:v,scrollToTop:m,scrollToRow:b,scrollLeft:k}=yq(e);bt(bE,k),Ki(async()=>{await Ne();const S=a.value?.states.scrollTop;S&&m(Math.round(S)+1)}),n({forceUpdate:f,totalHeight:d,scrollTo:v,scrollToTop:m,scrollToRow:b,resetAfterRowIndex:p});const y=()=>e.bodyWidth;return()=>{const{cache:S,columns:C,data:E,fixedData:$,useIsScrolling:O,scrollbarAlwaysOn:R,scrollbarEndGap:N,scrollbarStartGap:_,style:A,rowHeight:V,bodyWidth:z,estimatedRowHeight:U,headerWidth:W,height:M,width:I,getRowHeight:L,onScroll:D}=e,F=He(U),q=F?I9:$9,j=i(c);return Y("div",{role:"table",class:[o.e("table"),e.class],style:A},[Y(q,{ref:a,data:E,useIsScrolling:O,itemKey:h,columnCache:0,columnWidth:F?y:z,totalColumn:1,totalRow:E.length,rowCache:S,rowHeight:F?L:V,width:I,height:i(s),class:o.e("body"),role:"rowgroup",scrollbarStartGap:_,scrollbarEndGap:N,scrollbarAlwaysOn:R,onScroll:D,onItemRendered:g,perfMode:!1},{default:X=>{const Q=E[X.rowIndex];return t.row?.({...X,columns:C,rowData:Q})}}),i(r)&&Y(gq,{ref:u,class:o.e("header-wrapper"),columns:C,headerData:E,headerHeight:e.headerHeight,fixedHeaderData:$,rowWidth:W,rowHeight:V,width:I,height:Math.min(j+i(l),M)},{dynamic:t.header,fixed:t.row})])}}});function wq(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const Sq=(e,{slots:t})=>{const{mainTableRef:n,...o}=e;return Y(Pm,it({ref:n},o),wq(t)?t:{default:()=>[t]})};function Cq(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const kq=(e,{slots:t})=>{if(!e.columns.length)return;const{leftTableRef:n,...o}=e;return Y(Pm,it({ref:n},o),Cq(t)?t:{default:()=>[t]})};function Eq(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const xq=(e,{slots:t})=>{if(!e.columns.length)return;const{rightTableRef:n,...o}=e;return Y(Pm,it({ref:n},o),Eq(t)?t:{default:()=>[t]})},Tq=e=>{const{isScrolling:t}=Ae(Mm),n=P(!1),o=P(),a=w(()=>He(e.estimatedRowHeight)&&e.rowIndex>=0),l=(u=!1)=>{const c=i(o);if(!c)return;const{columns:d,onRowHeightChange:f,rowKey:h,rowIndex:g,style:p}=e,{height:v}=c.getBoundingClientRect();n.value=!0,Ne(()=>{if(u||v!==Number.parseInt(p.height)){const m=d[0],b=m?.placeholderSign===Bi;f?.({rowKey:h,height:v,rowIndex:g},m&&!b&&m.fixed)}})},s=w(()=>{const{rowData:u,rowIndex:c,rowKey:d,onRowHover:f}=e,h=e.rowEventHandlers||{},g={};return Object.entries(h).forEach(([p,v])=>{Fe(v)&&(g[p]=m=>{v({event:m,rowData:u,rowIndex:c,rowKey:d})})}),f&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:p,hovered:v})=>{const m=g[p];g[p]=b=>{f({event:b,hovered:v,rowData:u,rowIndex:c,rowKey:d}),m?.(b)}}),g}),r=u=>{const{onRowExpand:c,rowData:d,rowIndex:f,rowKey:h}=e;c?.({expanded:u,rowData:d,rowIndex:f,rowKey:h})};return dt(()=>{i(a)&&l(!0)}),{isScrolling:t,measurable:a,measured:n,rowRef:o,eventHandlers:s,onExpand:r}},$q=le({name:"ElTableV2TableRow",props:ns,setup(e,{expose:t,slots:n,attrs:o}){const{eventHandlers:a,isScrolling:l,measurable:s,measured:r,rowRef:u,onExpand:c}=Tq(e);return t({onExpand:c}),()=>{const{columns:d,columnsStyles:f,expandColumnKey:h,depth:g,rowData:p,rowIndex:v,style:m}=e;let b=d.map((k,y)=>{const S=ye(p.children)&&p.children.length>0&&k.key===h;return n.cell({column:k,columns:d,columnIndex:y,depth:g,style:f[k.key],rowData:p,rowIndex:v,isScrolling:i(l),expandIconProps:S?{rowData:p,rowIndex:v,onExpand:c}:void 0})});if(n.row&&(b=n.row({cells:b.map(k=>ye(k)&&k.length===1?k[0]:k),style:m,columns:d,depth:g,rowData:p,rowIndex:v,isScrolling:i(l)})),i(s)){const{height:k,...y}=m||{},S=i(r);return Y("div",it({ref:u,class:e.class,style:S?m:y,role:"row"},o,i(a)),[b])}return Y("div",it(o,{ref:u,class:e.class,style:m,role:"row"},i(a)),[b])}}});function Oq(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const Nq=(e,{slots:t})=>{const{columns:n,columnsStyles:o,depthMap:a,expandColumnKey:l,expandedRowKeys:s,estimatedRowHeight:r,hasFixedColumns:u,rowData:c,rowIndex:d,style:f,isScrolling:h,rowProps:g,rowClass:p,rowKey:v,rowEventHandlers:m,ns:b,onRowHovered:k,onRowExpanded:y}=e,S=bs(p,{columns:n,rowData:c,rowIndex:d},""),C=bs(g,{columns:n,rowData:c,rowIndex:d}),E=c[v],$=a[E]||0,O=!!l,R=d<0,N=[b.e("row"),S,b.is("expanded",O&&s.includes(E)),b.is("fixed",!$&&R),b.is("customized",!!t.row),{[b.e(`row-depth-${$}`)]:O&&d>=0}],_=u?k:void 0,A={...C,columns:n,columnsStyles:o,class:N,depth:$,expandColumnKey:l,estimatedRowHeight:R?void 0:r,isScrolling:h,rowIndex:d,rowData:c,rowKey:E,rowEventHandlers:m,style:f};return Y($q,it(A,{onRowExpand:y,onMouseenter:U=>{_?.({hovered:!0,rowKey:E,event:U,rowData:c,rowIndex:d})},onMouseleave:U=>{_?.({hovered:!1,rowKey:E,event:U,rowData:c,rowIndex:d})},rowkey:E}),Oq(t)?t:{default:()=>[t]})},Am=(e,{slots:t})=>{const{cellData:n,style:o}=e,a=n?.toString?.()||"",l=ee(t,"default",e,()=>[a]);return Y("div",{class:e.class,title:a,style:o},[l])};Am.displayName="ElTableV2Cell";Am.inheritAttrs=!1;const yE=e=>{const{expanded:t,expandable:n,onExpand:o,style:a,size:l,ariaLabel:s}=e;return Y("button",it({onClick:n?()=>o(!t):void 0,ariaLabel:s,ariaExpanded:t,class:e.class},{type:"button"}),[Y(De,{size:l,style:a},{default:()=>[Y(Xn,null,null)]})])};yE.inheritAttrs=!1;const Cv=({columns:e,column:t,columnIndex:n,depth:o,expandIconProps:a,isScrolling:l,rowData:s,rowIndex:r,style:u,expandedRowKeys:c,ns:d,t:f,cellProps:h,expandColumnKey:g,indentSize:p,iconSize:v,rowKey:m},{slots:b})=>{const k=$l(u);if(t.placeholderSign===Bi)return Y("div",{class:d.em("row-cell","placeholder"),style:k},null);const{cellRenderer:y,dataKey:S,dataGetter:C}=t,E=Fe(C)?C({columns:e,column:t,columnIndex:n,rowData:s,rowIndex:r}):vn(s,S??""),$=bs(h,{cellData:E,columns:e,column:t,columnIndex:n,rowIndex:r,rowData:s}),O={class:d.e("cell-text"),columns:e,column:t,columnIndex:n,cellData:E,isScrolling:l,rowData:s,rowIndex:r},R=gE(y),N=R?R(O):ee(b,"default",O,()=>[Y(Am,O,null)]),_=[d.e("row-cell"),t.class,t.align===pd.CENTER&&d.is("align-center"),t.align===pd.RIGHT&&d.is("align-right")],A=r>=0&&g&&t.key===g,V=r>=0&&c.includes(s[m]);let z;const U=`margin-inline-start: ${o*p}px;`;return A&&(tt(a)?z=Y(yE,it(a,{class:[d.e("expand-icon"),d.is("expanded",V)],size:v,expanded:V,ariaLabel:f(V?"el.table.collapseRowLabel":"el.table.expandRowLabel"),style:U,expandable:!0}),null):z=Y("div",{style:[U,`width: ${v}px; height: ${v}px;`].join(" ")},null)),Y("div",it({class:_,style:k},$,{role:"cell"}),[z,N])};Cv.inheritAttrs=!1;const Rq=Se({class:String,columns:hu,columnsStyles:{type:G(Object),required:!0},headerIndex:Number,style:{type:G(Object)}}),Iq=le({name:"ElTableV2HeaderRow",props:Rq,setup(e,{slots:t}){return()=>{const{columns:n,columnsStyles:o,headerIndex:a,style:l}=e;let s=n.map((r,u)=>t.cell({columns:n,column:r,columnIndex:u,headerIndex:a,style:o[r.key]}));return t.header&&(s=t.header({cells:s.map(r=>ye(r)&&r.length===1?r[0]:r),columns:n,headerIndex:a})),Y("div",{class:e.class,style:l,role:"row"},[s])}}});function Mq(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const Pq=({columns:e,columnsStyles:t,headerIndex:n,style:o,headerClass:a,headerProps:l,ns:s},{slots:r})=>{const u={columns:e,headerIndex:n},c=[s.e("header-row"),bs(a,u,""),s.is("customized",!!r.header)];return Y(Iq,{...bs(l,u),columnsStyles:t,class:c,columns:e,headerIndex:n,style:o},Mq(r)?r:{default:()=>[r]})},_m=(e,{slots:t})=>ee(t,"default",e,()=>[Y("div",{class:e.class,title:e.column?.title},[e.column?.title])]);_m.displayName="ElTableV2HeaderCell";_m.inheritAttrs=!1;const Aq=e=>{const{sortOrder:t}=e;return Y("button",{type:"button","aria-label":e.ariaLabel,class:e.class},[Y(De,{size:14},{default:()=>[t===ya.ASC?Y(C3,null,null):Y(w3,null,null)]})])},O0=(e,{slots:t})=>{const{column:n,ns:o,t:a,style:l,onColumnSorted:s}=e,r=$l(l);if(n.placeholderSign===Bi)return Y("div",{class:o.em("header-row-cell","placeholder"),style:r},null);const{headerCellRenderer:u,headerClass:c,sortable:d}=n,f={...e,class:o.e("header-cell-text")},h=gE(u),g=h?h(f):ee(t,"default",f,()=>[Y(_m,f,null)]),{sortBy:p,sortState:v,headerCellProps:m}=e;let b,k,y;if(v){const C=v[n.key];b=!!Sv[C],k=b?C:ya.ASC}else b=n.key===p.key,k=b?p.order:ya.ASC;k===ya.ASC?y="ascending":k===ya.DESC?y="descending":y=void 0;const S=[o.e("header-cell"),bs(c,e,""),n.align===pd.CENTER&&o.is("align-center"),n.align===pd.RIGHT&&o.is("align-right"),d&&o.is("sortable")];return Y("div",it({...bs(m,e),onClick:n.sortable?s:void 0,ariaSort:d?y:void 0,class:S,style:r,"data-key":n.key},{role:"columnheader"}),[g,d&&Y(Aq,{class:[o.e("sort-icon"),b&&o.is("sorting")],sortOrder:k,ariaLabel:a("el.table.sortLabel",{column:n.title||""})},null)])},wE=(e,{slots:t})=>Y("div",{class:e.class,style:e.style},[t.default?.()]);wE.displayName="ElTableV2Footer";const SE=(e,{slots:t})=>{const n=ee(t,"default",{},()=>[Y(T2,null,null)]);return Y("div",{class:e.class,style:e.style},[n])};SE.displayName="ElTableV2Empty";const CE=(e,{slots:t})=>Y("div",{class:e.class,style:e.style},[t.default?.()]);CE.displayName="ElTableV2Overlay";function Hr(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Kt(e)}const _q=le({name:"ElTableV2",props:iq,setup(e,{slots:t,expose:n}){const o=fe("table-v2"),{t:a}=yt(),{columnsStyles:l,fixedColumnsOnLeft:s,fixedColumnsOnRight:r,mainColumns:u,mainTableHeight:c,fixedTableHeight:d,leftTableWidth:f,rightTableWidth:h,data:g,depthMap:p,expandedRowKeys:v,hasFixedColumns:m,mainTableRef:b,leftTableRef:k,rightTableRef:y,isDynamic:S,isResetting:C,isScrolling:E,bodyWidth:$,emptyStyle:O,rootStyle:R,footerHeight:N,showEmpty:_,scrollTo:A,scrollToLeft:V,scrollToTop:z,scrollToRow:U,getRowHeight:W,onColumnSorted:M,onRowHeightChange:I,onRowHovered:L,onRowExpanded:D,onRowsRendered:F,onScroll:q,onVerticalScroll:j}=mq(e);return n({scrollTo:A,scrollToLeft:V,scrollToTop:z,scrollToRow:U}),bt(Mm,{ns:o,isResetting:C,isScrolling:E}),()=>{const{cache:X,cellProps:Q,estimatedRowHeight:ve,expandColumnKey:ue,fixedData:ge,headerHeight:ie,headerClass:oe,headerProps:ne,headerCellProps:K,sortBy:Z,sortState:se,rowHeight:ce,rowClass:he,rowEventHandlers:Ce,rowKey:Re,rowProps:Ie,scrollbarAlwaysOn:$e,indentSize:pe,iconSize:Ee,useIsScrolling:me,vScrollbarSize:Pe,width:We}=e,Xe=i(g),Me={cache:X,class:o.e("main"),columns:i(u),data:Xe,fixedData:ge,estimatedRowHeight:ve,bodyWidth:i($),headerHeight:ie,headerWidth:i($),height:i(c),mainTableRef:b,rowKey:Re,rowHeight:ce,scrollbarAlwaysOn:$e,scrollbarStartGap:2,scrollbarEndGap:Pe,useIsScrolling:me,width:We,getRowHeight:W,onRowsRendered:F,onScroll:q},_e=i(f),je=i(d),Tt={cache:X,class:o.e("left"),columns:i(s),data:Xe,fixedData:ge,estimatedRowHeight:ve,leftTableRef:k,rowHeight:ce,bodyWidth:_e,headerWidth:_e,headerHeight:ie,height:je,rowKey:Re,scrollbarAlwaysOn:$e,scrollbarStartGap:2,scrollbarEndGap:Pe,useIsScrolling:me,width:_e,getRowHeight:W,onScroll:j},Ue=i(h),at={cache:X,class:o.e("right"),columns:i(r),data:Xe,fixedData:ge,estimatedRowHeight:ve,rightTableRef:y,rowHeight:ce,bodyWidth:Ue,headerWidth:Ue,headerHeight:ie,height:je,rowKey:Re,scrollbarAlwaysOn:$e,scrollbarStartGap:2,scrollbarEndGap:Pe,width:Ue,style:`${o.cssVarName("table-scrollbar-size")}: ${Pe}px`,useIsScrolling:me,getRowHeight:W,onScroll:j},pt=i(l),wt={ns:o,depthMap:i(p),columnsStyles:pt,expandColumnKey:ue,expandedRowKeys:i(v),estimatedRowHeight:ve,hasFixedColumns:i(m),rowProps:Ie,rowClass:he,rowKey:Re,rowEventHandlers:Ce,onRowHovered:L,onRowExpanded:D,onRowHeightChange:I},be={cellProps:Q,expandColumnKey:ue,indentSize:pe,iconSize:Ee,rowKey:Re,expandedRowKeys:i(v),ns:o,t:a},ze={ns:o,headerClass:oe,headerProps:ne,columnsStyles:pt},de={ns:o,t:a,sortBy:Z,sortState:se,headerCellProps:K,onColumnSorted:M},Ye={row:On=>Y(Nq,it(On,wt),{row:t.row,cell:Be=>{let Qe;return t.cell?Y(Cv,it(Be,be,{style:pt[Be.column.key]}),Hr(Qe=t.cell(Be))?Qe:{default:()=>[Qe]}):Y(Cv,it(Be,be,{style:pt[Be.column.key]}),null)}}),header:On=>Y(Pq,it(On,ze),{header:t.header,cell:Be=>{let Qe;return t["header-cell"]?Y(O0,it(Be,de,{style:pt[Be.column.key]}),Hr(Qe=t["header-cell"](Be))?Qe:{default:()=>[Qe]}):Y(O0,it(Be,de,{style:pt[Be.column.key]}),null)}})},Et=[e.class,o.b(),o.e("root"),o.is("dynamic",i(S))],Xt={class:o.e("footer"),style:i(N)};return Y("div",{class:Et,style:i(R)},[Y(Sq,Me,Hr(Ye)?Ye:{default:()=>[Ye]}),Y(kq,Tt,Hr(Ye)?Ye:{default:()=>[Ye]}),Y(xq,at,Hr(Ye)?Ye:{default:()=>[Ye]}),t.footer&&Y(wE,Xt,{default:t.footer}),i(_)&&Y(SE,{class:o.e("empty"),style:i(O)},{default:t.empty}),t.overlay&&Y(CE,{class:o.e("overlay")},{default:t.overlay})])}}}),Lq=Se({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:G(Function)}}),Dq=e=>{const t=P(),n=P(0),o=P(0);let a;return dt(()=>{a=Gt(t,([l])=>{const{width:s,height:r}=l.contentRect,{paddingLeft:u,paddingRight:c,paddingTop:d,paddingBottom:f}=getComputedStyle(l.target),h=Number.parseInt(u)||0,g=Number.parseInt(c)||0,p=Number.parseInt(d)||0,v=Number.parseInt(f)||0;n.value=s-h-g,o.value=r-p-v}).stop}),_t(()=>{a?.()}),re([n,o],([l,s])=>{e.onResize?.({width:l,height:s})}),{sizer:t,width:n,height:o}},Bq=le({name:"ElAutoResizer",props:Lq,setup(e,{slots:t}){const n=fe("auto-resizer"),{height:o,width:a,sizer:l}=Dq(e),s={width:"100%",height:"100%"};return()=>Y("div",{ref:l,class:n.b(),style:s},[t.default?.({height:o.value,width:a.value})])}}),Fq=ot(_q),Vq=ot(Bq),af=Symbol("tabsRootContextKey"),zq=Se({tabs:{type:G(Array),default:()=>tn([])},tabRefs:{type:G(Object),default:()=>tn({})}}),N0="ElTabBar";var Hq=le({name:N0,__name:"tab-bar",props:zq,setup(e,{expose:t}){const n=e,o=Ae(af);o||Jt(N0,"");const a=fe("tabs"),l=P(),s=P(),r=w(()=>kt(o.props.defaultValue)||!!s.value?.transform),u=()=>{let g=0,p=0;const v=["top","bottom"].includes(o.props.tabPosition)?"width":"height",m=v==="width"?"x":"y",b=m==="x"?"left":"top";return n.tabs.every(k=>{if(kt(k.paneName))return!1;const y=n.tabRefs[k.paneName];if(!y)return!1;if(!k.active)return!0;g=y[`offset${Cl(b)}`],p=y[`client${Cl(v)}`];const S=window.getComputedStyle(y);return v==="width"&&(p-=Number.parseFloat(S.paddingLeft)+Number.parseFloat(S.paddingRight),g+=Number.parseFloat(S.paddingLeft)),!1}),{[v]:`${p}px`,transform:`translate${Cl(m)}(${g}px)`}},c=()=>s.value=u(),d=[],f=()=>{d.forEach(g=>g.stop()),d.length=0,Object.values(n.tabRefs).forEach(g=>{d.push(Gt(g,c))})};re(()=>n.tabs,async()=>{await Ne(),c(),f()},{immediate:!0});const h=Gt(l,()=>c());return _t(()=>{d.forEach(g=>g.stop()),d.length=0,h.stop()}),t({ref:l,update:c}),(g,p)=>r.value?(x(),B("div",{key:0,ref_key:"barRef",ref:l,class:T([i(a).e("active-bar"),i(a).is(i(o).props.tabPosition)]),style:Ke(s.value)},null,6)):te("v-if",!0)}}),Kq=Hq;const Wq=Se({panes:{type:G(Array),default:()=>tn([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean,tabindex:{type:[String,Number],default:void 0}}),jq={tabClick:(e,t,n)=>n instanceof Event,tabRemove:(e,t)=>t instanceof Event},R0="ElTabNav",Uq=le({name:R0,props:Wq,emits:jq,setup(e,{expose:t,emit:n}){const o=Ae(af);o||Jt(R0,"");const a=fe("tabs"),l=WP(),s=UP(),r=P(),u=P(),c=P(),d=P({}),f=P(),h=P(!1),g=P(0),p=P(!1),v=P(!0),m=qt(),b=w(()=>["top","bottom"].includes(o.props.tabPosition)),k=w(()=>b.value?"width":"height"),y=w(()=>({transform:`translate${k.value==="width"?"X":"Y"}(-${g.value}px)`})),{width:S,height:C}=Ip(r),{width:E,height:$}=Ip(u,{width:0,height:0},{box:"border-box"}),O=w(()=>b.value?S.value:C.value),R=w(()=>b.value?E.value:$.value),{onWheel:N}=K2({atStartEdge:w(()=>g.value<=0),atEndEdge:w(()=>R.value-g.value<=O.value),layout:w(()=>b.value?"horizontal":"vertical")},D=>{g.value=Jl(g.value+D,0,R.value-O.value)}),_=()=>{if(!r.value)return;const D=r.value[`offset${Cl(k.value)}`],F=g.value;F&&(g.value=F>D?F-D:0)},A=()=>{if(!r.value||!u.value)return;const D=u.value[`offset${Cl(k.value)}`],F=r.value[`offset${Cl(k.value)}`],q=g.value;D-q<=F||(g.value=D-q>F*2?q+F:D-F)},V=async()=>{const D=u.value;if(!h.value||!c.value||!r.value||!D)return;await Ne();const F=d.value[e.currentName];if(!F)return;const q=r.value,j=F.getBoundingClientRect(),X=q.getBoundingClientRect(),Q=b.value?D.offsetWidth-X.width:D.offsetHeight-X.height,ve=g.value;let ue=ve;b.value?(j.leftX.right&&(ue=ve+j.right-X.right)):(j.topX.bottom&&(ue=ve+(j.bottom-X.bottom))),ue=Math.max(ue,0),g.value=Math.min(ue,Q)},z=()=>{if(!u.value||!r.value)return;e.stretch&&f.value?.update();const D=u.value[`offset${Cl(k.value)}`],F=r.value[`offset${Cl(k.value)}`],q=g.value;F0&&(g.value=0))},U=D=>{const F=Ht(D);let q=0;switch(F){case we.left:case we.up:q=-1;break;case we.right:case we.down:q=1;break;default:return}const j=Array.from(D.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let X=j.indexOf(D.target)+q;X<0?X=j.length-1:X>=j.length&&(X=0),j[X].focus({preventScroll:!0}),j[X].click(),W()},W=()=>{v.value&&(p.value=!0)},M=()=>p.value=!1,I=(D,F)=>{d.value[F]=D},L=async()=>{await Ne(),d.value[e.currentName]?.focus({preventScroll:!0})};return re(l,D=>{D==="hidden"?v.value=!1:D==="visible"&&setTimeout(()=>v.value=!0,50)}),re(s,D=>{D?setTimeout(()=>v.value=!0,50):v.value=!1}),Gt(c,()=>{Yo(z)}),dt(()=>setTimeout(()=>V(),0)),ea(()=>z()),t({scrollToActiveTab:V,removeFocus:M,focusActiveTab:L,tabListRef:u,tabBarRef:f,scheduleRender:()=>Qu(m)}),()=>{const D=h.value?[Y("span",{class:[a.e("nav-prev"),a.is("disabled",!h.value.prev)],onClick:_},[Y(De,null,{default:()=>[Y(ol,null,null)]})]),Y("span",{class:[a.e("nav-next"),a.is("disabled",!h.value.next)],onClick:A},[Y(De,null,{default:()=>[Y(Xn,null,null)]})])]:null,F=e.panes.map((q,j)=>{const X=q.uid,Q=q.props.disabled,ve=q.props.name??q.index??`${j}`,ue=!Q&&(q.isClosable||q.props.closable!==!1&&e.editable);q.index=`${j}`;const ge=ue?Y(De,{class:"is-icon-close",onClick:ne=>n("tabRemove",q,ne)},{default:()=>[Y(Do,null,null)]}):null,ie=q.slots.label?.()||q.props.label,oe=!Q&&q.active?e.tabindex??o.props.tabindex:-1;return Y("div",{ref:ne=>I(ne,ve),class:[a.e("item"),a.is(o.props.tabPosition),a.is("active",q.active),a.is("disabled",Q),a.is("closable",ue),a.is("focus",p.value)],id:`tab-${ve}`,key:`tab-${X}`,"aria-controls":`pane-${ve}`,role:"tab","aria-selected":q.active,tabindex:oe,onFocus:()=>W(),onBlur:()=>M(),onClick:ne=>{M(),n("tabClick",q,ve,ne)},onKeydown:ne=>{const K=Ht(ne);ue&&(K===we.delete||K===we.backspace)&&n("tabRemove",q,ne)}},[ie,ge])});return m.value,Y("div",{ref:c,class:[a.e("nav-wrap"),a.is("scrollable",!!h.value),a.is(o.props.tabPosition)]},[D,Y("div",{class:a.e("nav-scroll"),ref:r},[e.panes.length>0?Y("div",{class:[a.e("nav"),a.is(o.props.tabPosition),a.is("stretch",e.stretch&&["top","bottom"].includes(o.props.tabPosition))],ref:u,style:y.value,role:"tablist",onKeydown:U,onWheel:N},[e.type?null:Y(Kq,{ref:f,tabs:[...e.panes],tabRefs:d.value},null),F]):null])])}}}),qq=Se({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},defaultValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:G(Function),default:()=>!0},stretch:Boolean,tabindex:{type:[String,Number],default:0}}),lp=e=>Le(e)||He(e),Yq={[et]:e=>lp(e),tabClick:(e,t)=>t instanceof Event,tabChange:e=>lp(e),edit:(e,t)=>["remove","add"].includes(t),tabRemove:e=>lp(e),tabAdd:()=>!0},Gq=le({name:"ElTabs",props:qq,emits:Yq,setup(e,{emit:t,slots:n,expose:o}){const a=fe("tabs"),l=w(()=>["left","right"].includes(e.tabPosition)),{children:s,addChild:r,removeChild:u,ChildrenSorter:c}=qd(ut(),"ElTabPane"),d=P(),f=P((kt(e.modelValue)?e.defaultValue:e.modelValue)??"0"),h=async(k,y=!1)=>{if(!(f.value===k||kt(k)))try{let S;if(e.beforeLeave){const C=e.beforeLeave(k,f.value);S=C instanceof Promise?await C:C}else S=!0;if(S!==!1){const C=s.value.find(E=>E.paneName===f.value)?.isFocusInsidePane();f.value=k,y&&(t(et,k),t("tabChange",k)),d.value?.removeFocus?.(),C&&d.value?.focusActiveTab()}}catch{}},g=(k,y,S)=>{k.props.disabled||(t("tabClick",k,S),h(y,!0))},p=(k,y)=>{k.props.disabled||kt(k.props.name)||(y.stopPropagation(),t("edit",k.props.name,"remove"),t("tabRemove",k.props.name))},v=()=>{t("edit",void 0,"add"),t("tabAdd")},m=k=>{const y=Ht(k);[we.enter,we.numpadEnter].includes(y)&&v()},b=k=>{const y=k.el.firstChild,S=["bottom","right"].includes(e.tabPosition)?k.children[0].el:k.children[1].el;y!==S&&y.before(S)};return re(()=>e.modelValue,k=>h(k)),re(f,async()=>{await Ne(),d.value?.scrollToActiveTab()}),bt(af,{props:e,currentName:f,registerPane:r,unregisterPane:u,nav$:d}),o({currentName:f,get tabNavRef(){return Gi(d.value,["scheduleRender"])}}),()=>{const k=n["add-icon"],y=e.editable||e.addable?Y("div",{class:[a.e("new-tab"),l.value&&a.e("new-tab-vertical")],tabindex:e.tabindex,onClick:v,onKeydown:m},[k?ee(n,"add-icon"):Y(De,{class:a.is("icon-plus")},{default:()=>[Y(NC,null,null)]})]):null,S=()=>Y(Uq,{ref:d,currentName:f.value,editable:e.editable,type:e.type,panes:s.value,stretch:e.stretch,onTabClick:g,onTabRemove:p},null),C=Y("div",{class:[a.e("header"),l.value&&a.e("header-vertical"),a.is(e.tabPosition)]},[Y(c,null,{default:S,$stable:!0}),y]),E=Y("div",{class:a.e("content")},[ee(n,"default")]);return Y("div",{class:[a.b(),a.m(e.tabPosition),{[a.m("card")]:e.type==="card",[a.m("border-card")]:e.type==="border-card"}],onVnodeMounted:b,onVnodeUpdated:b},[E,C])}}}),Xq=Se({label:{type:String,default:""},name:{type:[String,Number]},closable:{type:Boolean,default:void 0},disabled:Boolean,lazy:Boolean}),Jq=["id","aria-hidden","aria-labelledby"],I0="ElTabPane";var Zq=le({name:I0,__name:"tab-pane",props:Xq,setup(e){const t=e,n=ut(),o=un(),a=Ae(af);a||Jt(I0,"usage: ");const l=fe("tab-pane"),s=P(),r=P(),u=w(()=>t.closable??a.props.closable),c=w(()=>a.currentName.value===(t.name??r.value)),d=P(c.value),f=w(()=>t.name??r.value),h=w(()=>!t.lazy||d.value||c.value),g=()=>s.value?.contains(document.activeElement);re(c,v=>{v&&(d.value=!0)});const p=Mt({uid:n.uid,getVnode:()=>n.vnode,slots:o,props:t,paneName:f,active:c,index:r,isClosable:u,isFocusInsidePane:g});return a.registerPane(p),_t(()=>{a.unregisterPane(p)}),Zv(()=>{o.label&&a.nav$.value?.scheduleRender()}),(v,m)=>h.value?rt((x(),B("div",{key:0,id:`pane-${f.value}`,ref_key:"paneRef",ref:s,class:T(i(l).b()),role:"tabpanel","aria-hidden":!c.value,"aria-labelledby":`tab-${f.value}`},[ee(v.$slots,"default")],10,Jq)),[[Nt,c.value]]):te("v-if",!0)}}),kE=Zq;const Qq=ot(Gq,{TabPane:kE}),eY=Zt(kE),tY=Se({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:ta,default:""},truncated:Boolean,lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}});var nY=le({name:"ElText",__name:"text",props:tY,setup(e){const t=e,n=P(),o=mn(),a=fe("text"),l=w(()=>[a.b(),a.m(t.type),a.m(o.value),a.is("truncated",t.truncated),a.is("line-clamp",!kt(t.lineClamp))]),s=()=>{if(rl().title)return;let r=!1;const u=n.value?.textContent||"";if(t.truncated){const c=n.value?.offsetWidth,d=n.value?.scrollWidth;c&&d&&d>c&&(r=!0)}else if(!kt(t.lineClamp)){const c=n.value?.offsetHeight,d=n.value?.scrollHeight;c&&d&&d>c&&(r=!0)}r?n.value?.setAttribute("title",u):n.value?.removeAttribute("title")};return dt(s),ea(s),(r,u)=>(x(),ae(lt(e.tag),{ref_key:"textRef",ref:n,class:T(l.value),style:Ke({"-webkit-line-clamp":e.lineClamp})},{default:J(()=>[ee(r.$slots,"default")]),_:3},8,["class","style"]))}}),oY=nY;const Lm=ot(oY),kv="00:30",aY=Se({format:{type:String,default:"HH:mm"},modelValue:{type:G(String)},disabled:{type:Boolean,default:void 0},editable:{type:Boolean,default:!0},effect:{type:G(String),default:"light"},clearable:{type:Boolean,default:!0},size:wn,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:kv},minTime:{type:G(String)},maxTime:{type:G(String)},includeEndTime:Boolean,name:String,prefixIcon:{type:G([String,Object]),default:()=>OC},clearIcon:{type:G([String,Object]),default:()=>_a},popperClass:{type:String,default:""},popperStyle:{type:G([String,Object])},...Ts}),Wa=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const o=Number.parseInt(t[1],10),a=e.toUpperCase();return a.includes("AM")&&n===12?n=0:a.includes("PM")&&n!==12&&(n+=12),{hours:n,minutes:o}}return null},sp=(e,t)=>{const n=Wa(e);if(!n)return-1;const o=Wa(t);if(!o)return-1;const a=n.minutes+n.hours*60,l=o.minutes+o.hours*60;return a===l?0:a>l?1:-1},M0=e=>`${e}`.padStart(2,"0"),Vs=e=>`${M0(e.hours)}:${M0(e.minutes)}`,lY=(e,t)=>{const n=Wa(e);if(!n)return"";const o=Wa(t);if(!o)return"";const a={hours:n.hours,minutes:n.minutes};return a.minutes+=o.minutes,a.hours+=o.hours,a.hours+=Math.floor(a.minutes/60),a.minutes=a.minutes%60,Vs(a)};var sY=le({name:"ElTimeSelect",__name:"time-select",props:aY,emits:[ht,"blur","focus","clear",et],setup(e,{expose:t}){nt.extend(om);const{Option:n}=Dl,o=e,a=fe("input"),l=P(),s=on(),{lang:r}=yt(),u=w(()=>o.modelValue),c=w(()=>{const b=Wa(o.start);return b?Vs(b):null}),d=w(()=>{const b=Wa(o.end);return b?Vs(b):null}),f=w(()=>{const b=Wa(o.minTime||"");return b?Vs(b):null}),h=w(()=>{const b=Wa(o.maxTime||"");return b?Vs(b):null}),g=w(()=>{const b=Wa(o.step),k=!b||b.hours<0||b.minutes<0||Number.isNaN(b.hours)||Number.isNaN(b.minutes)||b.hours===0&&b.minutes===0;return k&&ct("ElTimeSelect",`invalid step, fallback to default step (${kv}).`),k?kv:Vs(b)}),p=w(()=>{const b=[],k=(y,S)=>{b.push({value:y,rawValue:S,disabled:sp(S,f.value||"-1:-1")<=0||sp(S,h.value||"100:100")>=0})};if(o.start&&o.end&&o.step){let y=c.value,S;for(;y&&d.value&&sp(y,d.value)<=0;)S=nt(y,"HH:mm").locale(r.value).format(o.format),k(S,y),y=lY(y,g.value);o.includeEndTime&&d.value&&b[b.length-1]?.rawValue!==d.value&&k(nt(d.value,"HH:mm").locale(r.value).format(o.format),d.value)}return b});return t({blur:()=>{l.value?.blur?.()},focus:()=>{l.value?.focus?.()}}),(b,k)=>(x(),ae(i(Dl),{ref_key:"select",ref:l,name:e.name,"model-value":u.value,disabled:i(s),clearable:e.clearable,"clear-icon":e.clearIcon,size:e.size,effect:e.effect,placeholder:e.placeholder,"default-first-option":"",filterable:e.editable,"empty-values":e.emptyValues,"value-on-clear":e.valueOnClear,"popper-class":e.popperClass,"popper-style":e.popperStyle,"onUpdate:modelValue":k[0]||(k[0]=y=>b.$emit(i(et),y)),onChange:k[1]||(k[1]=y=>b.$emit(i(ht),y)),onBlur:k[2]||(k[2]=y=>b.$emit("blur",y)),onFocus:k[3]||(k[3]=y=>b.$emit("focus",y)),onClear:k[4]||(k[4]=()=>b.$emit("clear"))},{prefix:J(()=>[e.prefixIcon?(x(),ae(i(De),{key:0,class:T(i(a).e("prefix-icon"))},{default:J(()=>[(x(),ae(lt(e.prefixIcon)))]),_:1},8,["class"])):te("v-if",!0)]),default:J(()=>[(x(!0),B(Ve,null,mt(p.value,y=>(x(),ae(i(n),{key:y.value,label:y.value,value:y.value,disabled:y.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["name","model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable","empty-values","value-on-clear","popper-class","popper-style"]))}}),rY=sY;const iY=ot(rY),EE="timeline",uY=Se({mode:{type:String,values:["start","alternate","alternate-reverse","end"],default:"start"},reverse:Boolean}),cY=le({name:"ElTimeline",props:uY,setup(e,{slots:t}){const n=fe("timeline");bt(EE,{props:e,slots:t});const o=w(()=>[n.b(),n.is(e.mode)]);return()=>{const a=So(t.default?.()??[]);return qe("ul",{class:o.value},e.reverse?a.reverse():a)}}}),dY=Se({timestamp:{type:String,default:""},hideTimestamp:Boolean,center:Boolean,placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:Vt},hollow:Boolean});var fY=le({name:"ElTimelineItem",__name:"timeline-item",props:dY,setup(e){const t=e,{props:n}=Ae(EE),o=fe("timeline-item"),a=w(()=>[o.e("node"),o.em("node",t.size||""),o.em("node",t.type||""),o.is("hollow",t.hollow)]),l=w(()=>[o.b(),{[o.e("center")]:t.center},o.is(n.mode)]);return(s,r)=>(x(),B("li",{class:T(l.value)},[H("div",{class:T(i(o).e("tail"))},null,2),s.$slots.dot?te("v-if",!0):(x(),B("div",{key:0,class:T(a.value),style:Ke({backgroundColor:e.color})},[e.icon?(x(),ae(i(De),{key:0,class:T(i(o).e("icon"))},{default:J(()=>[(x(),ae(lt(e.icon)))]),_:1},8,["class"])):te("v-if",!0)],6)),s.$slots.dot?(x(),B("div",{key:1,class:T(i(o).e("dot"))},[ee(s.$slots,"dot")],2)):te("v-if",!0),H("div",{class:T(i(o).e("wrapper"))},[!e.hideTimestamp&&e.placement==="top"?(x(),B("div",{key:0,class:T([i(o).e("timestamp"),i(o).is("top")])},ke(e.timestamp),3)):te("v-if",!0),H("div",{class:T(i(o).e("content"))},[ee(s.$slots,"default")],2),!e.hideTimestamp&&e.placement==="bottom"?(x(),B("div",{key:1,class:T([i(o).e("timestamp"),i(o).is("bottom")])},ke(e.timestamp),3)):te("v-if",!0)],2)],2))}}),xE=fY;const pY=ot(cY,{TimelineItem:xE}),vY=Zt(xE),TE="left-check-change",$E="right-check-change",zs=Se({data:{type:G(Array),default:()=>[]},titles:{type:G(Array),default:()=>[]},buttonTexts:{type:G(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:G(Function)},leftDefaultChecked:{type:G(Array),default:()=>[]},rightDefaultChecked:{type:G(Array),default:()=>[]},renderContent:{type:G(Function)},modelValue:{type:G(Array),default:()=>[]},format:{type:G(Object),default:()=>({})},filterable:Boolean,props:{type:G(Object),default:()=>tn({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),Ev=(e,t)=>[e,t].every(ye)||ye(e)&&fn(t),hY={[ht]:(e,t,n)=>[e,n].every(ye)&&["left","right"].includes(t),[et]:e=>ye(e),[TE]:Ev,[$E]:Ev},mu=e=>{const t={label:"label",key:"key",disabled:"disabled"};return w(()=>({...t,...e.props}))},mY=(e,t)=>({onSourceCheckedChange:(a,l)=>{e.leftChecked=a,l&&t(TE,a,l)},onTargetCheckedChange:(a,l)=>{e.rightChecked=a,l&&t($E,a,l)}}),gY=e=>{const t=mu(e),n=w(()=>e.data.reduce((o,a)=>(o[a[t.value.key]]=a)&&o,{}));return{sourceData:w(()=>e.data.filter(o=>!e.modelValue.includes(o[t.value.key]))),targetData:w(()=>e.targetOrder==="original"?e.data.filter(o=>e.modelValue.includes(o[t.value.key])):e.modelValue.reduce((o,a)=>{const l=n.value[a];return l&&o.push(l),o},[]))}},bY=(e,t,n)=>{const o=mu(e),a=(r,u,c)=>{n(et,r),n(ht,r,u,c)};return{addToLeft:()=>{const r=e.modelValue.slice();t.rightChecked.forEach(u=>{const c=r.indexOf(u);c>-1&&r.splice(c,1)}),a(r,"left",t.rightChecked)},addToRight:()=>{let r=e.modelValue.slice();const u=e.data.filter(c=>{const d=c[o.value.key];return t.leftChecked.includes(d)&&!e.modelValue.includes(d)}).map(c=>c[o.value.key]);r=e.targetOrder==="unshift"?u.concat(r):r.concat(u),e.targetOrder==="original"&&(r=e.data.filter(c=>r.includes(c[o.value.key])).map(c=>c[o.value.key])),a(r,"right",t.leftChecked)}}},xv="checked-change",yY=Se({data:zs.data,optionRender:{type:G(Function)},placeholder:String,title:String,filterable:Boolean,format:zs.format,filterMethod:zs.filterMethod,defaultChecked:zs.leftDefaultChecked,props:zs.props}),wY={[xv]:Ev},SY=(e,t,n)=>{const o=mu(e),a=w(()=>e.data.filter(d=>Fe(e.filterMethod)?e.filterMethod(t.query,d):String(d[o.value.label]||d[o.value.key]).toLowerCase().includes(t.query.toLowerCase()))),l=w(()=>a.value.filter(d=>!d[o.value.disabled])),s=w(()=>{const d=t.checked.length,f=e.data.length,{noChecked:h,hasChecked:g}=e.format;return h&&g?d>0?g.replace(/\${checked}/g,d.toString()).replace(/\${total}/g,f.toString()):h.replace(/\${total}/g,f.toString()):`${d}/${f}`}),r=w(()=>{const d=t.checked.length;return d>0&&d{const d=l.value.map(f=>f[o.value.key]);t.allChecked=d.length>0&&d.every(f=>t.checked.includes(f))},c=d=>{t.checked=d?l.value.map(f=>f[o.value.key]):[]};return re(()=>t.checked,(d,f)=>{u(),t.checkChangeByUser?n(xv,d,d.concat(f).filter(h=>!d.includes(h)||!f.includes(h))):(n(xv,d),t.checkChangeByUser=!0)}),re(l,()=>{u()}),re(()=>e.data,()=>{const d=[],f=a.value.map(h=>h[o.value.key]);t.checked.forEach(h=>{f.includes(h)&&d.push(h)}),t.checkChangeByUser=!1,t.checked=d}),re(()=>e.defaultChecked,(d,f)=>{if(f&&d.length===f.length&&d.every(p=>f.includes(p)))return;const h=[],g=l.value.map(p=>p[o.value.key]);d.forEach(p=>{g.includes(p)&&h.push(p)}),t.checkChangeByUser=!1,t.checked=h},{immediate:!0}),{filteredData:a,checkableData:l,checkedSummary:s,isIndeterminate:r,updateAllChecked:u,handleAllCheckedChange:c}};var CY=le({name:"ElTransferPanel",__name:"transfer-panel",props:yY,emits:wY,setup(e,{expose:t,emit:n}){const o=e,a=n,l=un(),s=({option:S})=>S,{t:r}=yt(),u=fe("transfer"),c=Mt({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),d=mu(o),{filteredData:f,checkedSummary:h,isIndeterminate:g,handleAllCheckedChange:p}=SY(o,c,a),v=w(()=>!no(c.query)&&no(f.value)),m=w(()=>!no(l.default()[0].children)),{checked:b,allChecked:k,query:y}=$n(c);return t({query:y}),(S,C)=>(x(),B("div",{class:T(i(u).b("panel"))},[H("p",{class:T(i(u).be("panel","header"))},[Y(i(Qo),{modelValue:i(k),"onUpdate:modelValue":C[0]||(C[0]=E=>Yt(k)?k.value=E:null),indeterminate:i(g),"validate-event":!1,onChange:i(p)},{default:J(()=>[H("span",{class:T(i(u).be("panel","header-title"))},ke(e.title),3),H("span",{class:T(i(u).be("panel","header-count"))},ke(i(h)),3)]),_:1},8,["modelValue","indeterminate","onChange"])],2),H("div",{class:T([i(u).be("panel","body"),i(u).is("with-footer",m.value)])},[e.filterable?(x(),ae(i(Yn),{key:0,modelValue:i(y),"onUpdate:modelValue":C[1]||(C[1]=E=>Yt(y)?y.value=E:null),class:T(i(u).be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":i(b3),clearable:"","validate-event":!1},null,8,["modelValue","class","placeholder","prefix-icon"])):te("v-if",!0),rt(Y(i(rm),{modelValue:i(b),"onUpdate:modelValue":C[2]||(C[2]=E=>Yt(b)?b.value=E:null),"validate-event":!1,class:T([i(u).is("filterable",e.filterable),i(u).be("panel","list")])},{default:J(()=>[(x(!0),B(Ve,null,mt(i(f),E=>(x(),ae(i(Qo),{key:E[i(d).key],class:T(i(u).be("panel","item")),value:E[i(d).key],disabled:E[i(d).disabled],"validate-event":!1},{default:J(()=>[Y(s,{option:e.optionRender?.(E)},null,8,["option"])]),_:2},1032,["class","value","disabled"]))),128))]),_:1},8,["modelValue","class"]),[[Nt,!v.value&&!i(no)(e.data)]]),rt(H("div",{class:T(i(u).be("panel","empty"))},[ee(S.$slots,"empty",{},()=>[gt(ke(v.value?i(r)("el.transfer.noMatch"):i(r)("el.transfer.noData")),1)])],2),[[Nt,v.value||i(no)(e.data)]])],2),m.value?(x(),B("p",{key:0,class:T(i(u).be("panel","footer"))},[ee(S.$slots,"default")],2)):te("v-if",!0)],2))}}),P0=CY;const kY={key:0},EY={key:0};var xY=le({name:"ElTransfer",__name:"transfer",props:zs,emits:hY,setup(e,{expose:t,emit:n}){const o=e,a=n,l=un(),{t:s}=yt(),r=fe("transfer"),{formItem:u}=In(),c=Mt({leftChecked:[],rightChecked:[]}),d=mu(o),{sourceData:f,targetData:h}=gY(o),{onSourceCheckedChange:g,onTargetCheckedChange:p}=mY(c,a),{addToLeft:v,addToRight:m}=bY(o,c,a),b=P(),k=P(),y=R=>{switch(R){case"left":b.value.query="";break;case"right":k.value.query="";break}},S=w(()=>o.buttonTexts.length===2),C=w(()=>o.titles[0]||s("el.transfer.titles.0")),E=w(()=>o.titles[1]||s("el.transfer.titles.1")),$=w(()=>o.filterPlaceholder||s("el.transfer.filterPlaceholder"));re(()=>o.modelValue,()=>{o.validateEvent&&u?.validate?.("change").catch(R=>ct(R))});const O=w(()=>R=>{if(o.renderContent)return o.renderContent(qe,R);const N=(l.default?.({option:R})||[]).filter(_=>_.type!==dn);return N.length?N:qe("span",R[d.value.label]||R[d.value.key])});return t({clearQuery:y,leftPanel:b,rightPanel:k}),(R,N)=>(x(),B("div",{class:T(i(r).b())},[Y(P0,{ref_key:"leftPanel",ref:b,data:i(f),"option-render":O.value,placeholder:$.value,title:C.value,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:o.props,onCheckedChange:i(g)},{empty:J(()=>[ee(R.$slots,"left-empty")]),default:J(()=>[ee(R.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),H("div",{class:T(i(r).e("buttons"))},[Y(i(xn),{type:"primary",class:T([i(r).e("button"),i(r).is("with-texts",S.value)]),disabled:i(no)(c.rightChecked),onClick:i(v)},{default:J(()=>[Y(i(De),null,{default:J(()=>[Y(i(ol))]),_:1}),i(kt)(e.buttonTexts[0])?te("v-if",!0):(x(),B("span",kY,ke(e.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),Y(i(xn),{type:"primary",class:T([i(r).e("button"),i(r).is("with-texts",S.value)]),disabled:i(no)(c.leftChecked),onClick:i(m)},{default:J(()=>[i(kt)(e.buttonTexts[1])?te("v-if",!0):(x(),B("span",EY,ke(e.buttonTexts[1]),1)),Y(i(De),null,{default:J(()=>[Y(i(Xn))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),Y(P0,{ref_key:"rightPanel",ref:k,data:i(h),"option-render":O.value,placeholder:$.value,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:E.value,"default-checked":e.rightDefaultChecked,props:o.props,onCheckedChange:i(p)},{empty:J(()=>[ee(R.$slots,"right-empty")]),default:J(()=>[ee(R.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}}),TY=xY;const $Y=ot(TY),Dm="RootTree",OE="NodeInstance",A0="TreeNodeMap",NE=Se({data:{type:G(Array),default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},checkDescendants:Boolean,autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:{type:Array},defaultExpandedKeys:{type:Array},currentNodeKey:{type:[String,Number]},renderContent:{type:G(Function)},showCheckbox:Boolean,draggable:Boolean,allowDrag:{type:G(Function)},allowDrop:{type:G(Function)},props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:Boolean,highlightCurrent:Boolean,load:{type:Function},filterNodeMethod:{type:Function},accordion:Boolean,indent:{type:Number,default:18},icon:{type:Vt}}),OY={"check-change":(e,t,n)=>e&&Ft(t)&&Ft(n),"current-change":(e,t)=>!0,"node-click":(e,t,n,o)=>e&&t&&o instanceof Event,"node-contextmenu":(e,t,n,o)=>e instanceof Event&&t&&n,"node-collapse":(e,t,n)=>e&&t,"node-expand":(e,t,n)=>e&&t,check:(e,t)=>e&&t,"node-drag-start":(e,t)=>e&&t,"node-drag-end":(e,t,n,o)=>e&&o,"node-drop":(e,t,n,o)=>e&&t&&o,"node-drag-leave":(e,t,n)=>e&&t&&n,"node-drag-enter":(e,t,n)=>e&&t&&n,"node-drag-over":(e,t,n)=>e&&t&&n},Qs="$treeNodeId",_0=function(e,t){!t||t[Qs]||Object.defineProperty(t,Qs,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Bm=(e,t)=>t?.[e||Qs],Tv=(e,t,n)=>{const o=e.value.currentNode;n();const a=e.value.currentNode;o!==a&&t("current-change",a?a.data:null,a)},RE=e=>{let t=!0,n=!0,o=!0,a=!0;for(let l=0,s=e.length;l{n.canFocus=t,$v(n.childNodes,t)})};let NY=0;var Ov=class xc{constructor(t){this.isLeafByUser=void 0,this.isLeaf=void 0,this.isEffectivelyChecked=!1,this.id=NY++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,this.canFocus=!1;for(const n in t)$t(t,n)&&(this[n]=t[n]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1)}initialize(){const t=this.store;if(!t)throw new Error("[Node]store is required!");t.registerNode(this);const n=t.props;if(n&&typeof n.isLeaf<"u"){const l=Yu(this,"isLeaf");Ft(l)&&(this.isLeafByUser=l)}if(t.lazy!==!0&&this.data?(this.setData(this.data),t.defaultExpandAll&&(this.expanded=!0,this.canFocus=!0)):this.level>0&&t.lazy&&t.defaultExpandAll&&!this.isLeafByUser&&this.expand(),ye(this.data)||_0(this,this.data),!this.data)return;const o=t.defaultExpandedKeys,a=t.key;a&&!fn(this.key)&&o&&o.includes(this.key)&&this.expand(null,t.autoExpandParent),a&&t.currentNodeKey!==void 0&&this.key===t.currentNodeKey&&(t.currentNode&&(t.currentNode.isCurrent=!1),t.currentNode=this,t.currentNode.isCurrent=!0),t.lazy&&t._initDefaultCheckedNode(this),this.updateLeafState(),(this.level===1||this.parent?.expanded===!0)&&(this.canFocus=!0)}setData(t){ye(t)||_0(this,t),this.data=t,this.childNodes=[];let n;this.level===0&&ye(this.data)?n=this.data:n=Yu(this,"children")||[];for(let o=0,a=n.length;o-1)return t.childNodes[n+1]}return null}get previousSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return n>0?t.childNodes[n-1]:null}return null}contains(t,n=!0){return(this.childNodes||[]).some(o=>o===t||n&&o.contains(t))}remove(){const t=this.parent;t&&t.removeChild(this)}insertChild(t,n,o){if(!t)throw new Error("InsertChild error: child is required.");if(!(t instanceof xc)){if(!o){const a=this.getChildren(!0);a?.includes(t.data)||(kt(n)||n<0?a?.push(t.data):a?.splice(n,0,t.data))}Object.assign(t,{parent:this,store:this.store}),t=Mt(new xc(t)),t instanceof xc&&t.initialize()}t.level=this.level+1,kt(n)||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()}insertBefore(t,n){let o;n&&(o=this.childNodes.indexOf(n)),this.insertChild(t,o)}insertAfter(t,n){let o;n&&(o=this.childNodes.indexOf(n),o!==-1&&(o+=1)),this.insertChild(t,o)}removeChild(t){const n=this.getChildren()||[],o=n.indexOf(t.data);o>-1&&n.splice(o,1);const a=this.childNodes.indexOf(t);a>-1&&(this.store&&this.store.deregisterNode(t),t.parent=null,this.childNodes.splice(a,1)),this.updateLeafState()}removeChildByData(t){const n=this.childNodes.find(o=>o.data===t);n&&this.removeChild(n)}expand(t,n){const o=()=>{if(n){let a=this.parent;for(;a&&a.level>0;)a.expanded=!0,a=a.parent}this.expanded=!0,t&&t(),$v(this.childNodes,!0)};this.shouldLoadData()?this.loadData(a=>{ye(a)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||Ur(this),o())}):o()}doCreateChildren(t,n={}){t.forEach(o=>{this.insertChild(Object.assign({data:o},n),void 0,!0)})}collapse(){this.expanded=!1,$v(this.childNodes,!1)}shouldLoadData(){return!!(this.store.lazy===!0&&this.store.load&&!this.loaded)}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser<"u"){this.isLeaf=this.isLeafByUser,this.isEffectivelyChecked=this.isLeaf&&this.disabled;return}const t=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!t||t.length===0,this.isEffectivelyChecked=this.isLeaf&&this.disabled;return}this.isLeaf=!1}setChecked(t,n,o,a){if(this.indeterminate=t==="half",this.checked=t===!0,this.isEffectivelyChecked=!this.childNodes.length&&(this.disabled||this.checked),this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const s=()=>{if(n){const r=this.childNodes;for(let f=0,h=r.length;f{s(),Ur(this)},{checked:t!==!1});return}else s()}const l=this.parent;!l||l.level===0||o||Ur(l)}getChildren(t=!1){if(this.level===0)return this.data;const n=this.data;if(!n)return null;const o=this.store.props;let a="children";return o&&(a=o.children||"children"),kt(n[a])&&(n[a]=null),t&&!n[a]&&(n[a]=[]),n[a]}updateChildren(){const t=this.getChildren()||[],n=this.childNodes.map(l=>l.data),o={},a=[];t.forEach((l,s)=>{const r=l[Qs];r&&n.some(u=>u?.[Qs]===r)?o[r]={index:s,data:l}:a.push({index:s,data:l})}),this.store.lazy||n.forEach(l=>{o[l?.[Qs]]||this.removeChildByData(l)}),a.forEach(({index:l,data:s})=>{this.insertChild({data:s},l)}),this.updateLeafState()}loadData(t,n={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(n).length)){this.loading=!0;const o=l=>{this.childNodes=[],this.doCreateChildren(l,n),this.loaded=!0,this.loading=!1,this.updateLeafState(),t&&t.call(this,l)},a=()=>{this.loading=!1};this.store.load(this,o,a)}else t&&t.call(this)}eachNode(t){const n=[this];for(;n.length;){const o=n.shift();n.unshift(...o.childNodes),t(o)}}reInitChecked(){this.store.checkStrictly||Ur(this)}},RY=class{constructor(e){this.lazy=!1,this.checkStrictly=!1,this.autoExpandParent=!1,this.defaultExpandAll=!1,this.checkDescendants=!1,this.currentNode=null,this.currentNodeKey=null;for(const t in e)$t(e,t)&&(this[t]=e[t]);this.nodesMap={}}initialize(){if(this.root=new Ov({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){const e=this.load;e(this.root,t=>{this.root.doCreateChildren(t),this._initDefaultCheckedNodes()},At)}else this._initDefaultCheckedNodes()}filter(e){const t=this.filterNodeMethod,n=this.lazy,o=async function(a){const l=a.root?a.root.childNodes:a.childNodes;for(const[s,r]of l.entries())r.visible=!!t?.call(r,e,r.data,r),s%80===0&&s>0&&await Ne(),await o(r);if(!a.visible&&l.length){let s=!0;s=!l.some(r=>r.visible),a.root?a.root.visible=s===!1:a.visible=s===!1}e&&a.visible&&!a.isLeaf&&(!n||a.loaded)&&a.expand()};o(this)}setData(e){e!==this.root.data?(this.nodesMap={},this.root.setData(e),this._initDefaultCheckedNodes(),this.setCurrentNodeKey(this.currentNodeKey)):this.root.updateChildren()}getNode(e){if(e instanceof Ov)return e;const t=tt(e)?Bm(this.key,e):e;return this.nodesMap[t]||null}insertBefore(e,t){const n=this.getNode(t);n.parent?.insertBefore({data:e},n)}insertAfter(e,t){const n=this.getNode(t);n.parent?.insertAfter({data:e},n)}remove(e){const t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))}append(e,t){const n=uo(t)?this.root:this.getNode(t);n&&n.insertChild({data:e})}_initDefaultCheckedNodes(){const e=this.defaultCheckedKeys||[],t=this.nodesMap;e.forEach(n=>{const o=t[n];o&&o.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(e){const t=this.defaultCheckedKeys||[];!fn(e.key)&&t.includes(e.key)&&e.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())}registerNode(e){const t=this.key;if(!(!e||!e.data))if(!t)this.nodesMap[e.id]=e;else{const n=e.key;fn(n)||(this.nodesMap[n]=e)}}deregisterNode(e){!this.key||!e||!e.data||(e.childNodes.forEach(t=>{this.deregisterNode(t)}),delete this.nodesMap[e.key])}getCheckedNodes(e=!1,t=!1){const n=[],o=function(a){(a.root?a.root.childNodes:a.childNodes).forEach(l=>{(l.checked||t&&l.indeterminate)&&(!e||e&&l.isLeaf)&&n.push(l.data),o(l)})};return o(this),n}getCheckedKeys(e=!1){return this.getCheckedNodes(e).map(t=>(t||{})[this.key])}getHalfCheckedNodes(){const e=[],t=function(n){(n.root?n.root.childNodes:n.childNodes).forEach(o=>{o.indeterminate&&e.push(o.data),t(o)})};return t(this),e}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(e=>(e||{})[this.key])}_getAllNodes(){const e=[],t=this.nodesMap;for(const n in t)$t(t,n)&&e.push(t[n]);return e}updateChildren(e,t){const n=this.nodesMap[e];if(!n)return;const o=n.childNodes;for(let a=o.length-1;a>=0;a--){const l=o[a];this.remove(l.data)}for(let a=0,l=t.length;ar.level-u.level),a=Object.create(null),l=Object.keys(n);o.forEach(r=>r.setChecked(!1,!1));const s=r=>{r.childNodes.forEach(u=>{a[u.data[e]]=!0,u.childNodes?.length&&s(u)})};for(let r=0,u=o.length;r{g.isLeaf||g.setChecked(!1,!1,!0),f(g)}),h.reInitChecked()};f(c)}}}setCheckedNodes(e,t=!1){const n=this.key,o={};e.forEach(a=>{o[(a||{})[n]]=!0}),this._setCheckedKeys(n,t,o)}setCheckedKeys(e,t=!1){this.defaultCheckedKeys=e;const n=this.key,o={};e.forEach(a=>{o[a]=!0}),this._setCheckedKeys(n,t,o)}setDefaultExpandedKeys(e){e=e||[],this.defaultExpandedKeys=e,e.forEach(t=>{const n=this.getNode(t);n&&n.expand(null,this.autoExpandParent)})}setChecked(e,t,n){const o=this.getNode(e);o&&o.setChecked(!!t,n)}getCurrentNode(){return this.currentNode}setCurrentNode(e){const t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0}setUserCurrentNode(e,t=!0){const n=e[this.key],o=this.nodesMap[n];this.setCurrentNode(o),t&&this.currentNode&&this.currentNode.level>1&&this.currentNode.parent?.expand(null,!0)}setCurrentNodeKey(e,t=!0){if(this.currentNodeKey=e,uo(e)){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const n=this.getNode(e);n&&(this.setCurrentNode(n),t&&this.currentNode&&this.currentNode.level>1&&this.currentNode.parent?.expand(null,!0))}};function IE(e){const t=Ae(A0,null);let n={treeNodeExpand:o=>{e.node!==o&&e.node?.collapse()},children:new Set};return t&&t.children.add(n),_t(()=>{t&&t.children.delete(n),n=null}),bt(A0,n),{broadcastExpanded:o=>{if(e.accordion)for(const a of n.children)a.treeNodeExpand(o)}}}const ME=Symbol("dragEvents");function IY({props:e,ctx:t,el$:n,dropIndicator$:o,store:a}){const l=fe("tree"),s=P({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return bt(ME,{treeNodeDragStart:({event:d,treeNode:f})=>{if(d.dataTransfer){if(Fe(e.allowDrag)&&!e.allowDrag(f.node))return d.preventDefault(),!1;d.dataTransfer.effectAllowed="move";try{d.dataTransfer.setData("text/plain","")}catch{}s.value.draggingNode=f,t.emit("node-drag-start",f.node,d)}},treeNodeDragOver:({event:d,treeNode:f})=>{if(!d.dataTransfer)return;const h=f,g=s.value.dropNode;g&&g.node.id!==h.node.id&&Gn(g.$el,l.is("drop-inner"));const p=s.value.draggingNode;if(!p||!h)return;let v=!0,m=!0,b=!0,k=!0;Fe(e.allowDrop)&&(v=e.allowDrop(p.node,h.node,"prev"),k=m=e.allowDrop(p.node,h.node,"inner"),b=e.allowDrop(p.node,h.node,"next")),d.dataTransfer.dropEffect=m||v||b?"move":"none",(v||m||b)&&g?.node.id!==h.node.id&&(g&&t.emit("node-drag-leave",p.node,g.node,d),t.emit("node-drag-enter",p.node,h.node,d)),v||m||b?s.value.dropNode=h:s.value.dropNode=null,h.node.nextSibling===p.node&&(b=!1),h.node.previousSibling===p.node&&(v=!1),h.node.contains(p.node,!1)&&(m=!1),(p.node===h.node||p.node.contains(h.node))&&(v=!1,m=!1,b=!1);const y=h.$el,S=y.querySelector(`.${l.be("node","content")}`).getBoundingClientRect(),C=n.value.getBoundingClientRect(),E=n.value.scrollTop;let $;const O=v?m?.25:b?.45:1:Number.NEGATIVE_INFINITY,R=b?m?.75:v?.55:0:Number.POSITIVE_INFINITY;let N=-9999;const _=d.clientY-S.top;_S.height*R?$="after":m?$="inner":$="none";const A=y.querySelector(`.${l.be("node","expand-icon")}`).getBoundingClientRect(),V=o.value;$==="before"?N=A.top-C.top+E:$==="after"&&(N=A.bottom-C.top+E),V.style.top=`${N}px`,V.style.left=`${A.right-C.left}px`,$==="inner"?Io(y,l.is("drop-inner")):Gn(y,l.is("drop-inner")),s.value.showDropIndicator=$==="before"||$==="after",s.value.allowDrop=s.value.showDropIndicator||k,s.value.dropType=$,t.emit("node-drag-over",p.node,h.node,d)},treeNodeDragEnd:d=>{const{draggingNode:f,dropType:h,dropNode:g}=s.value;if(d.preventDefault(),d.dataTransfer&&(d.dataTransfer.dropEffect="move"),f?.node.data&&g){const p={data:f.node.data};h!=="none"&&f.node.remove(),h==="before"?g.node.parent?.insertBefore(p,g.node):h==="after"?g.node.parent?.insertAfter(p,g.node):h==="inner"&&g.node.insertChild(p),h!=="none"&&(a.value.registerNode(p),a.value.key&&f.node.eachNode(v=>{a.value.nodesMap[v.data[a.value.key]]?.setChecked(v.checked,!a.value.checkStrictly)})),Gn(g.$el,l.is("drop-inner")),t.emit("node-drag-end",f.node,g.node,h,d),h!=="none"&&t.emit("node-drop",f.node,g.node,h,d)}f&&!g&&t.emit("node-drag-end",f.node,null,h,d),s.value.showDropIndicator=!1,s.value.draggingNode=null,s.value.dropNode=null,s.value.allowDrop=!0}}),{dragState:s}}var MY=le({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=fe("tree"),n=Ae(OE),o=Ae(Dm);return()=>{const a=e.node,{data:l,store:s}=a;return e.renderContent?e.renderContent(qe,{_self:n,node:a,data:l,store:s}):ee(o.ctx.slots,"default",{node:a,data:l},()=>[qe(Lm,{tag:"span",truncated:!0,class:t.be("node","label")},()=>[a.label])])}}}),PY=MY,AY=le({name:"ElTreeNode",components:{ElCollapseTransition:ef,ElCheckbox:Qo,NodeContent:PY,ElIcon:De,Loading:Ra},props:{node:{type:Ov,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:Boolean},emits:["node-expand"],setup(e,t){const n=fe("tree"),{broadcastExpanded:o}=IE(e),a=Ae(Dm),l=P(!1),s=P(!1),r=P(),u=P(),c=P(),d=Ae(ME),f=ut();bt(OE,f),a||ct("Tree","Can not find node's tree."),e.node.expanded&&(l.value=!0,s.value=!0);const h=a.props.props.children||"children";re(()=>{const R=e.node.data?.[h];return R&&[...R]},()=>{e.node.updateChildren()}),re(()=>e.node.indeterminate,R=>{v(e.node.checked,R)}),re(()=>e.node.checked,R=>{v(R,e.node.indeterminate)}),re(()=>e.node.childNodes.length,()=>e.node.reInitChecked()),re(()=>e.node.expanded,R=>{Ne(()=>l.value=R),R&&(s.value=!0)});const g=R=>a.props.nodeKey?Bm(a.props.nodeKey,R.data):R.id,p=R=>{const N=e.props.class;if(!N)return{};let _;if(Fe(N)){const{data:A}=R;_=N(A,R)}else _=N;return Le(_)?{[_]:!0}:_},v=(R,N)=>{(r.value!==R||u.value!==N)&&a.ctx.emit("check-change",e.node.data,R,N),r.value=R,u.value=N},m=R=>{Tv(a.store,a.ctx.emit,()=>{if(a?.props?.nodeKey){const N=g(e.node);a.store.value.setCurrentNodeKey(N)}else a.store.value.setCurrentNode(e.node)}),a.currentNode.value=e.node,a.props.expandOnClickNode&&k(),(a.props.checkOnClickNode||e.node.isLeaf&&a.props.checkOnClickLeaf&&e.showCheckbox)&&!e.node.disabled&&y(!e.node.checked),a.ctx.emit("node-click",e.node.data,e.node,f,R)},b=R=>{a.instance.vnode.props?.onNodeContextmenu&&(R.stopPropagation(),R.preventDefault()),a.ctx.emit("node-contextmenu",R,e.node.data,e.node,f)},k=()=>{e.node.isLeaf||(l.value?(a.ctx.emit("node-collapse",e.node.data,e.node,f),e.node.collapse()):e.node.expand(()=>{t.emit("node-expand",e.node.data,e.node,f)}))},y=R=>{const N=a?.props.checkStrictly,_=e.node.childNodes;!N&&_.length&&(R=_.some(A=>!A.isEffectivelyChecked)),e.node.setChecked(R,!N),Ne(()=>{const A=a.store.value;a.ctx.emit("check",e.node.data,{checkedNodes:A.getCheckedNodes(),checkedKeys:A.getCheckedKeys(),halfCheckedNodes:A.getHalfCheckedNodes(),halfCheckedKeys:A.getHalfCheckedKeys()})})};return{ns:n,node$:c,tree:a,expanded:l,childNodeRendered:s,oldChecked:r,oldIndeterminate:u,getNodeKey:g,getNodeClass:p,handleSelectChange:v,handleClick:m,handleContextMenu:b,handleExpandIconClick:k,handleCheckChange:y,handleChildNodeExpand:(R,N,_)=>{o(N),a.ctx.emit("node-expand",R,N,_)},handleDragStart:R=>{a.props.draggable&&d.treeNodeDragStart({event:R,treeNode:e})},handleDragOver:R=>{R.preventDefault(),a.props.draggable&&d.treeNodeDragOver({event:R,treeNode:{$el:c.value,node:e.node}})},handleDrop:R=>{R.preventDefault()},handleDragEnd:R=>{a.props.draggable&&d.treeNodeDragEnd(R)},CaretRight:$C}}});const _Y=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],LY=["aria-expanded"];function DY(e,t,n,o,a,l){const s=Ot("el-icon"),r=Ot("el-checkbox"),u=Ot("loading"),c=Ot("node-content"),d=Ot("el-tree-node"),f=Ot("el-collapse-transition");return rt((x(),B("div",{ref:"node$",class:T([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:t[2]||(t[2]=Ge((...h)=>e.handleClick&&e.handleClick(...h),["stop"])),onContextmenu:t[3]||(t[3]=(...h)=>e.handleContextMenu&&e.handleContextMenu(...h)),onDragstart:t[4]||(t[4]=Ge((...h)=>e.handleDragStart&&e.handleDragStart(...h),["stop"])),onDragover:t[5]||(t[5]=Ge((...h)=>e.handleDragOver&&e.handleDragOver(...h),["stop"])),onDragend:t[6]||(t[6]=Ge((...h)=>e.handleDragEnd&&e.handleDragEnd(...h),["stop"])),onDrop:t[7]||(t[7]=Ge((...h)=>e.handleDrop&&e.handleDrop(...h),["stop"]))},[H("div",{class:T(e.ns.be("node","content")),style:Ke({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(x(),ae(s,{key:0,class:T([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:Ge(e.handleExpandIconClick,["stop"])},{default:J(()=>[(x(),ae(lt(e.tree.props.icon||e.CaretRight)))]),_:1},8,["class","onClick"])):te("v-if",!0),e.showCheckbox?(x(),ae(r,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:t[0]||(t[0]=Ge(()=>{},["stop"])),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):te("v-if",!0),e.node.loading?(x(),ae(s,{key:2,class:T([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:J(()=>[Y(u)]),_:1},8,["class"])):te("v-if",!0),Y(c,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),Y(f,null,{default:J(()=>[!e.renderAfterExpand||e.childNodeRendered?rt((x(),B("div",{key:0,class:T(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded,onClick:t[1]||(t[1]=Ge(()=>{},["stop"]))},[(x(!0),B(Ve,null,mt(e.node.childNodes,h=>(x(),ae(d,{key:e.getNodeKey(h),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:h,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,LY)),[[Nt,e.expanded]]):te("v-if",!0)]),_:1})],42,_Y)),[[Nt,e.node.visible]])}var BY=Sn(AY,[["render",DY]]);function FY({el$:e},t){const n=fe("tree");dt(()=>{l()}),ea(()=>{e.value?.querySelectorAll("input[type=checkbox]").forEach(s=>{s.setAttribute("tabindex","-1")})});function o(s,r){const u=t.value.getNode(s[r].dataset.key);return u.canFocus&&u.visible&&(u.parent?.expanded||u.parent?.level===0)}Lt(e,"keydown",s=>{const r=s.target;if(!r.className.includes(n.b("node")))return;const u=Ht(s),c=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`)),d=c.indexOf(r);let f;if([we.up,we.down].includes(u)){if(s.preventDefault(),u===we.up){f=d===-1?0:d!==0?d-1:c.length-1;const g=f;for(;!o(c,f);){if(f--,f===g){f=-1;break}f<0&&(f=c.length-1)}}else{f=d===-1?0:d=c.length&&(f=0)}}f!==-1&&c[f].focus()}[we.left,we.right].includes(u)&&(s.preventDefault(),r.click());const h=r.querySelector('[type="checkbox"]');[we.enter,we.numpadEnter,we.space].includes(u)&&h&&(s.preventDefault(),h.click())});const l=()=>{if(!e.value)return;const s=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`));Array.from(e.value.querySelectorAll("input[type=checkbox]")).forEach(u=>{u.setAttribute("tabindex","-1")});const r=e.value.querySelectorAll(`.${n.is("checked")}[role=treeitem]`);if(r.length){r[0].setAttribute("tabindex","0");return}s[0]?.setAttribute("tabindex","0")}}var VY=le({name:"ElTree",components:{ElTreeNode:BY},props:NE,emits:OY,setup(e,t){const{t:n}=yt(),o=fe("tree"),a=P(new RY({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));a.value.initialize();const l=P(a.value.root),s=P(null),r=P(null),u=P(null),{broadcastExpanded:c}=IE(e),{dragState:d}=IY({props:e,ctx:t,el$:r,dropIndicator$:u,store:a});FY({el$:r},a);const f=ut(),h=w(()=>{let D=f?.parent;for(;D;){if(D.type.name==="ElTreeSelect")return!0;D=D.parent}return!1}),g=w(()=>{const{childNodes:D}=l.value;return(!D||D.length===0||D.every(({visible:F})=>!F))&&!h.value});re(()=>e.currentNodeKey,D=>{a.value.setCurrentNodeKey(D??null)}),re(()=>e.defaultCheckedKeys,(D,F)=>{en(D,F)||a.value.setDefaultCheckedKey(D??[])}),re(()=>e.defaultExpandedKeys,D=>{a.value.setDefaultExpandedKeys(D??[])}),re(()=>e.data,D=>{a.value.setData(D)},{deep:!0}),re(()=>e.checkStrictly,D=>{a.value.checkStrictly=D});const p=D=>{if(!e.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");a.value.filter(D)},v=D=>e.nodeKey?Bm(e.nodeKey,D.data):D.id,m=D=>{if(!e.nodeKey)throw new Error(`[Tree] nodeKey is required in ${D}`)},b=D=>{m("getNodePath");const F=a.value.getNode(D);if(!F)return[];const q=[F.data];let j=F.parent;for(;j&&j!==l.value;)q.push(j.data),j=j.parent;return q.reverse()},k=(D,F)=>a.value.getCheckedNodes(D,F),y=D=>a.value.getCheckedKeys(D),S=()=>{const D=a.value.getCurrentNode();return D?D.data:null},C=()=>{m("getCurrentKey");const D=S();return D?D[e.nodeKey]:null},E=(D,F)=>{m("setCheckedNodes"),a.value.setCheckedNodes(D,F)},$=(D,F)=>{m("setCheckedKeys"),a.value.setCheckedKeys(D,F)},O=(D,F,q)=>{a.value.setChecked(D,F,q)},R=()=>a.value.getHalfCheckedNodes(),N=()=>a.value.getHalfCheckedKeys(),_=(D,F=!0)=>{m("setCurrentNode"),Tv(a,t.emit,()=>{c(D),a.value.setUserCurrentNode(D,F)})},A=(D=null,F=!0)=>{m("setCurrentKey"),Tv(a,t.emit,()=>{c(),a.value.setCurrentNodeKey(D,F)})},V=D=>a.value.getNode(D),z=D=>{a.value.remove(D)},U=(D,F)=>{a.value.append(D,F)},W=(D,F)=>{a.value.insertBefore(D,F)},M=(D,F)=>{a.value.insertAfter(D,F)},I=(D,F,q)=>{c(F),t.emit("node-expand",D,F,q)},L=(D,F)=>{m("updateKeyChildren"),a.value.updateChildren(D,F)};return bt(Dm,{ctx:t,props:e,store:a,root:l,currentNode:s,instance:f}),bt(Ia,void 0),{ns:o,store:a,root:l,currentNode:s,dragState:d,el$:r,dropIndicator$:u,isEmpty:g,filter:p,getNodeKey:v,getNodePath:b,getCheckedNodes:k,getCheckedKeys:y,getCurrentNode:S,getCurrentKey:C,setCheckedNodes:E,setCheckedKeys:$,setChecked:O,getHalfCheckedNodes:R,getHalfCheckedKeys:N,setCurrentNode:_,setCurrentKey:A,t:n,getNode:V,remove:z,append:U,insertBefore:W,insertAfter:M,handleNodeExpand:I,updateKeyChildren:L}}});function zY(e,t,n,o,a,l){const s=Ot("el-tree-node");return x(),B("div",{ref:"el$",class:T([e.ns.b(),e.ns.is("dragging",!!e.dragState.draggingNode),e.ns.is("drop-not-allow",!e.dragState.allowDrop),e.ns.is("drop-inner",e.dragState.dropType==="inner"),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(x(!0),B(Ve,null,mt(e.root.childNodes,r=>(x(),ae(s,{key:e.getNodeKey(r),node:r,props:e.props,accordion:e.accordion,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),e.isEmpty?(x(),B("div",{key:0,class:T(e.ns.e("empty-block"))},[ee(e.$slots,"empty",{},()=>[H("span",{class:T(e.ns.e("empty-text"))},ke(e.emptyText??e.t("el.tree.emptyText")),3)])],2)):te("v-if",!0),rt(H("div",{ref:"dropIndicator$",class:T(e.ns.e("drop-indicator"))},null,2),[[Nt,e.dragState.showDropIndicator]])],2)}var HY=Sn(VY,[["render",zY]]);const Fm=ot(HY),KY=(e,{attrs:t,emit:n},{select:o,tree:a,key:l})=>{const s=fe("tree-select");re(()=>e.data,()=>{e.filterable&&Ne(()=>{a.value?.filter(o.value?.states.inputValue)})},{flush:"post"});const r=u=>{const c=u.at(-1);if(c.expanded&&c.childNodes.at(-1))r([c.childNodes.at(-1)]);else{a.value.el$?.querySelector(`[data-key="${u.at(-1).key}"]`)?.focus({preventScroll:!0});return}};return dt(()=>{Lt(()=>o.value?.$el,"keydown",async u=>{const c=Ht(u),{dropdownMenuVisible:d}=o.value;[we.down,we.up].includes(c)&&d&&(await Ne(),setTimeout(()=>{if(we.up===c){const f=a.value.store.root.childNodes;r(f);return}o.value.optionsArray[o.value.states.hoveringIndex].$el?.parentNode?.parentNode?.focus({preventScroll:!0})}))},{capture:!0})}),{...el($n(e),Object.keys(Dl.props)),...t,class:w(()=>t.class),style:w(()=>t.style),"onUpdate:modelValue":u=>n(et,u),valueKey:l,popperClass:w(()=>{const u=[s.e("popper")];return e.popperClass&&u.push(e.popperClass),u.join(" ")}),filterMethod:(u="")=>{e.filterMethod?e.filterMethod(u):e.remoteMethod?e.remoteMethod(u):a.value?.filter(u)}}},WY=le({extends:Qc,setup(e,t){const n=Qc.setup(e,t);delete n.selectOptionClick;const o=ut().proxy;return Ne(()=>{n.select.states.cachedOptions.get(o.value)||n.select.onOptionCreate(o)}),re(()=>t.attrs.visible,a=>{Ne(()=>{n.states.visible=a})},{immediate:!0}),n},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function Nv(e){return e||e===0}function Vm(e){return ye(e)&&e.length}function Ds(e){return ye(e)?e:Nv(e)?[e]:[]}function Tc(e,t,n,o,a){for(let l=0;l{re([()=>e.modelValue,l],()=>{e.showCheckbox&&Ne(()=>{const p=l.value;p&&!en(p.getCheckedKeys(),Ds(e.modelValue))&&p.setCheckedKeys(Ds(e.modelValue))})},{immediate:!0,deep:!0});const r=w(()=>({value:s.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props})),u=(p,v)=>{const m=r.value[p];return Fe(m)?m(v,l.value?.getNode(u("value",v))):v[m]},c=Ds(e.modelValue).map(p=>Tc(e.data||[],v=>u("value",v)===p,v=>u("children",v),(v,m,b,k)=>k&&u("value",k))).filter(p=>Nv(p)),d=w(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const p=[];return $c(e.data.concat(e.cacheData),v=>{const m=u("value",v);p.push({value:m,currentLabel:u("label",v),isDisabled:u("disabled",v)})},v=>u("children",v)),p}),f=()=>l.value?.getCheckedKeys().filter(p=>{const v=l.value?.getNode(p);return!fn(v)&&no(v.childNodes)}),h=p=>{en(e.modelValue,p)||o(ht,p)};function g(p){o(et,p),h(p)}return{...el($n(e),Object.keys(Fm.props)),...t,nodeKey:s,expandOnClickNode:w(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:w(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(c):c),renderContent:(p,{node:v,data:m,store:b})=>p(WY,{value:u("value",m),label:u("label",m),disabled:u("disabled",m),visible:v.visible},e.renderContent?()=>e.renderContent(p,{node:v,data:m,store:b}):n.default?()=>n.default({node:v,data:m,store:b}):void 0),filterNodeMethod:(p,v,m)=>e.filterNodeMethod?e.filterNodeMethod(p,v,m):p?new RegExp(Th(p),"i").test(u("label",v)||""):!0,onNodeClick:(p,v,m)=>{if(t.onNodeClick?.(p,v,m),!(e.showCheckbox&&e.checkOnClickNode))if(!e.showCheckbox&&(e.checkStrictly||v.isLeaf)){if(!u("disabled",p)){const b=a.value?.states.options.get(u("value",p));a.value?.handleOptionSelect(b)}}else e.expandOnClickNode&&m.proxy.handleExpandIconClick()},onCheck:(p,v)=>{if(!e.showCheckbox)return;const m=u("value",p),b={};$c([l.value.store.root],C=>b[C.key]=C,C=>C.childNodes);const k=v.checkedKeys,y=e.multiple?Ds(e.modelValue).filter(C=>!(C in b)&&!k.includes(C)):[],S=y.concat(k);if(e.checkStrictly)g(e.multiple?S:S.includes(m)?m:void 0);else if(e.multiple){const C=f();g(y.concat(C))}else{const C=Tc([p],O=>!Vm(u("children",O))&&!u("disabled",O),O=>u("children",O)),E=C?u("value",C):void 0,$=Nv(e.modelValue)&&!!Tc([p],O=>u("value",O)===e.modelValue,O=>u("children",O));g(E===e.modelValue||$?void 0:E)}Ne(()=>{const C=Ds(e.modelValue);l.value.setCheckedKeys(C),t.onCheck?.(p,{checkedKeys:l.value.getCheckedKeys(),checkedNodes:l.value.getCheckedNodes(),halfCheckedKeys:l.value.getHalfCheckedKeys(),halfCheckedNodes:l.value.getHalfCheckedNodes()})}),a.value?.focus()},onNodeExpand:(p,v,m)=>{t.onNodeExpand?.(p,v,m),Ne(()=>{if(!e.checkStrictly&&e.lazy&&e.multiple&&v.checked){const b={},k=l.value.getCheckedKeys();$c([l.value.store.root],C=>b[C.key]=C,C=>C.childNodes);const y=Ds(e.modelValue).filter(C=>!(C in b)&&!k.includes(C)),S=f();g(y.concat(S))}})},cacheOptions:d}};var UY=le({props:{data:{type:Array,default:()=>[]}},setup(e){const t=Ae(fu);return re(()=>e.data,()=>{e.data.forEach(o=>{t.states.cachedOptions.has(o.value)||t.states.cachedOptions.set(o.value,o)});const n=t.selectRef?.querySelectorAll("input")||[];Rt&&!Array.from(n).includes(document.activeElement)&&t.setSelected()},{flush:"post",immediate:!0}),()=>{}}}),qY=le({name:"ElTreeSelect",inheritAttrs:!1,props:{...xk,...NE,cacheData:{type:Array,default:()=>[]}},setup(e,t){const{slots:n,expose:o,emit:a,attrs:l}=t,s={...l,onChange:void 0},r=P(),u=P(),c=w(()=>e.nodeKey||e.valueKey||"value"),d=KY(e,{attrs:l,emit:a},{select:r,tree:u,key:c}),{cacheOptions:f,...h}=jY(e,{attrs:s,slots:n,emit:a},{select:r,tree:u,key:c}),g=Mt({});return o(g),dt(()=>{Object.assign(g,{...el(u.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...el(r.value,["focus","blur","selectedLabel"]),treeRef:u.value,selectRef:r.value})}),()=>qe(Dl,Mt({...d,ref:p=>r.value=p}),{...n,default:()=>[qe(UY,{data:f.value}),qe(Fm,Mt({...h,ref:p=>u.value=p}))]})}}),YY=qY;const GY=ot(YY),zm=Symbol(),XY={key:-1,level:-1,data:{}};let ja=(function(e){return e.KEY="id",e.LABEL="label",e.CHILDREN="children",e.DISABLED="disabled",e.CLASS="",e})({}),L0=(function(e){return e.ADD="add",e.DELETE="delete",e})({});const PE={type:Number,default:26},JY=Se({data:{type:G(Array),default:()=>tn([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:G(Object),default:()=>tn({children:ja.CHILDREN,label:ja.LABEL,disabled:ja.DISABLED,value:ja.KEY,class:ja.CLASS})},highlightCurrent:Boolean,showCheckbox:Boolean,defaultCheckedKeys:{type:G(Array),default:()=>tn([])},checkStrictly:Boolean,defaultExpandedKeys:{type:G(Array),default:()=>tn([])},indent:{type:Number,default:16},itemSize:PE,icon:{type:Vt},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},currentNodeKey:{type:G([String,Number])},accordion:Boolean,filterMethod:{type:G(Function)},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:Boolean}),ZY=Se({node:{type:G(Object),default:()=>tn(XY)},expanded:Boolean,checked:Boolean,indeterminate:Boolean,showCheckbox:Boolean,disabled:Boolean,current:Boolean,hiddenExpandIcon:Boolean,itemSize:PE}),QY=Se({node:{type:G(Object),required:!0}}),AE="node-click",_E="node-drop",LE="node-expand",DE="node-collapse",BE="current-change",FE="check",VE="check-change",zE="node-contextmenu",eG={[AE]:(e,t,n)=>e&&t&&n,[_E]:(e,t,n)=>e&&t&&n,[LE]:(e,t)=>e&&t,[DE]:(e,t)=>e&&t,[BE]:(e,t)=>e&&t,[FE]:(e,t)=>e&&t,[VE]:(e,t)=>e&&Ft(t),[zE]:(e,t,n)=>e&&t&&n},tG={click:(e,t)=>!!(e&&t),drop:(e,t)=>!!(e&&t),toggle:e=>!!e,check:(e,t)=>e&&Ft(t)};function nG(e,t){const n=P(new Set),o=P(new Set),{emit:a}=ut();re([()=>t.value,()=>e.defaultCheckedKeys],()=>Ne(()=>{k(e.defaultCheckedKeys)}),{immediate:!0});const l=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:y,maxLevel:S}=t.value,C=n.value,E=new Set;for(let $=S;$>=1;--$){const O=y.get($);O&&O.forEach(R=>{const N=R.children;let _=!R.isLeaf||R.disabled||C.has(R.key);if(N){let A=!0,V=!1;for(const z of N){const U=z.key;if(z.isEffectivelyChecked||(_=!1),C.has(U))V=!0;else if(E.has(U)){A=!1,V=!0;break}else A=!1}A?C.add(R.key):V?(E.add(R.key),C.delete(R.key)):(C.delete(R.key),E.delete(R.key))}R.isEffectivelyChecked=_})}o.value=E},s=y=>n.value.has(y.key),r=y=>o.value.has(y.key),u=(y,S,C=!0,E=!0)=>{const $=n.value,O=y.children;!e.checkStrictly&&C&&O?.length&&(S=O.some(N=>!N.isEffectivelyChecked));const R=(N,_)=>{$[_?L0.ADD:L0.DELETE](N.key);const A=N.children;!e.checkStrictly&&A&&A.forEach(V=>{(!V.disabled||V.children)&&R(V,_)})};R(y,S),E&&l(),C&&c(y,S)},c=(y,S)=>{const{checkedNodes:C,checkedKeys:E}=p(),{halfCheckedNodes:$,halfCheckedKeys:O}=v();a(FE,y.data,{checkedKeys:E,checkedNodes:C,halfCheckedKeys:O,halfCheckedNodes:$}),a(VE,y.data,S)};function d(y=!1){return p(y).checkedKeys}function f(y=!1){return p(y).checkedNodes}function h(){return v().halfCheckedKeys}function g(){return v().halfCheckedNodes}function p(y=!1){const S=[],C=[];if(t?.value&&e.showCheckbox){const{treeNodeMap:E}=t.value;n.value.forEach($=>{const O=E.get($);O&&(!y||y&&O.isLeaf)&&(C.push($),S.push(O.data))})}return{checkedKeys:C,checkedNodes:S}}function v(){const y=[],S=[];if(t?.value&&e.showCheckbox){const{treeNodeMap:C}=t.value;o.value.forEach(E=>{const $=C.get(E);$&&(S.push(E),y.push($.data))})}return{halfCheckedNodes:y,halfCheckedKeys:S}}function m(y){n.value.clear(),o.value.clear(),Ne(()=>{k(y)})}function b(y,S){if(t?.value&&e.showCheckbox){const C=t.value.treeNodeMap.get(y);C&&u(C,S,!1)}}function k(y){if(t?.value){const{treeNodeMap:S}=t.value;if(e.showCheckbox&&S&&y?.length>0){for(const C of y){const E=S.get(C);E&&!s(E)&&u(E,!0,!1,!1)}l()}}}return{updateCheckedKeys:l,toggleCheckbox:u,isChecked:s,isIndeterminate:r,getCheckedKeys:d,getCheckedNodes:f,getHalfCheckedKeys:h,getHalfCheckedNodes:g,setChecked:b,setCheckedKeys:m}}function oG(e,t){const n=P(new Set([])),o=P(new Set([])),a=w(()=>Fe(e.filterMethod));function l(r){if(!a.value)return;const u=new Set,c=o.value,d=n.value,f=[],h=t.value?.treeNodes||[],g=e.filterMethod;d.clear();function p(v){v.forEach(m=>{f.push(m),g?.(r,m.data,m)?f.forEach(k=>{u.add(k.key),k.expanded=!0}):(m.expanded=!1,m.isLeaf&&d.add(m.key));const b=m.children;if(b&&p(b),!m.isLeaf){if(!u.has(m.key))d.add(m.key);else if(b){let k=!0;for(const y of b)if(!d.has(y.key)){k=!1;break}k?c.add(m.key):c.delete(m.key)}}f.pop()})}return p(h),u}function s(r){return o.value.has(r.key)}return{hiddenExpandIconKeySet:o,hiddenNodeKeySet:n,doFilter:l,isForceHiddenExpandIcon:s}}function aG(e,t){const n=P(new Set),o=P(),a=qt(),l=P(),{isIndeterminate:s,isChecked:r,toggleCheckbox:u,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:h,setChecked:g,setCheckedKeys:p}=nG(e,a),{doFilter:v,hiddenNodeKeySet:m,isForceHiddenExpandIcon:b}=oG(e,a),k=w(()=>e.props?.value||ja.KEY),y=w(()=>e.props?.children||ja.CHILDREN),S=w(()=>e.props?.disabled||ja.DISABLED),C=w(()=>e.props?.label||ja.LABEL),E=w(()=>{const ne=n.value,K=m.value,Z=[],se=a.value?.treeNodes||[],ce=[];for(let he=se.length-1;he>=0;--he)ce.push(se[he]);for(;ce.length;){const he=ce.pop();if(!K.has(he.key)&&(Z.push(he),he.children&&ne.has(he.key)))for(let Ce=he.children.length-1;Ce>=0;--Ce)ce.push(he.children[Ce])}return Z}),$=w(()=>E.value.length>0);function O(ne){const K=new Map,Z=new Map;let se=1;function ce(Ce,Re=1,Ie=void 0){const $e=[];for(const pe of Ce){const Ee=_(pe),me={level:Re,key:Ee,data:pe};me.label=V(pe),me.parent=Ie;const Pe=N(pe);me.disabled=A(pe),me.isLeaf=!Pe||Pe.length===0,me.expanded=n.value.has(Ee),Pe&&Pe.length&&(me.children=ce(Pe,Re+1,me)),$e.push(me),K.set(Ee,me),Z.has(Re)||Z.set(Re,[]),Z.get(Re)?.push(me)}return Re>se&&(se=Re),$e}const he=ce(ne);return{treeNodeMap:K,levelTreeNodeMap:Z,maxLevel:se,treeNodes:he}}function R(ne){const K=v(ne);K&&(n.value=K)}function N(ne){return ne[y.value]}function _(ne){return ne?ne[k.value]:""}function A(ne){return ne[S.value]}function V(ne){return ne[C.value]}function z(ne){n.value.has(ne.key)?F(ne):D(ne)}function U(ne){const K=new Set,Z=a.value.treeNodeMap;n.value.forEach(se=>{const ce=Z.get(se);n.value.delete(ce.key),ce.expanded=!1}),ne.forEach(se=>{let ce=Z.get(se);for(;ce&&!K.has(ce.key);)K.add(ce.key),ce.expanded=!0,ce=ce.parent}),n.value=K}function W(ne,K){t(AE,ne.data,ne,K),I(ne),e.expandOnClickNode&&z(ne),e.showCheckbox&&(e.checkOnClickNode||ne.isLeaf&&e.checkOnClickLeaf)&&!ne.disabled&&u(ne,!r(ne),!0)}function M(ne,K){t(_E,ne.data,ne,K)}function I(ne){j(ne)||(o.value=ne.key,t(BE,ne.data,ne))}function L(ne,K){u(ne,K)}function D(ne){const K=n.value;if(a.value&&e.accordion){const{treeNodeMap:se}=a.value;K.forEach(ce=>{const he=se.get(ce);ne&&ne.level===he?.level&&(K.delete(ce),he.expanded=!1)})}K.add(ne.key);const Z=ge(ne.key);Z&&(Z.expanded=!0,t(LE,Z.data,Z))}function F(ne){n.value.delete(ne.key);const K=ge(ne.key);K&&(K.expanded=!1,t(DE,K.data,K))}function q(ne){return!!ne.disabled}function j(ne){const K=o.value;return K!==void 0&&K===ne.key}function X(){if(o.value)return a.value?.treeNodeMap.get(o.value)?.data}function Q(){return o.value}function ve(ne){o.value=ne}function ue(ne){a.value=O(ne)}function ge(ne){const K=tt(ne)?_(ne):ne;return a.value?.treeNodeMap.get(K)}function ie(ne,K="auto"){const Z=ge(ne);Z&&l.value&&l.value.scrollToItem(E.value.indexOf(Z),K)}function oe(ne){l.value?.scrollTo(ne)}return re(()=>e.currentNodeKey,ne=>{o.value=ne},{immediate:!0}),re(()=>e.defaultExpandedKeys,ne=>{n.value=new Set(ne)},{immediate:!0}),re(()=>e.data,ne=>{ue(ne)},{immediate:!0}),{tree:a,flattenTree:E,isNotEmpty:$,listRef:l,getKey:_,getChildren:N,toggleExpand:z,toggleCheckbox:u,isChecked:r,isIndeterminate:s,isDisabled:q,isCurrent:j,isForceHiddenExpandIcon:b,handleNodeClick:W,handleNodeDrop:M,handleNodeCheck:L,getCurrentNode:X,getCurrentKey:Q,setCurrentKey:ve,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:h,setChecked:g,setCheckedKeys:p,filter:R,setData:ue,getNode:ge,expandNode:D,collapseNode:F,setExpandedKeys:U,scrollToNode:ie,scrollTo:oe}}var lG=le({name:"ElTreeNodeContent",props:QY,setup(e){const t=Ae(zm),n=fe("tree");return()=>{const o=e.node,{data:a}=o;return t?.ctx.slots.default?t.ctx.slots.default({node:o,data:a}):qe(Lm,{tag:"span",truncated:!0,class:n.be("node","label")},()=>[o?.label])}}});const sG=["aria-expanded","aria-disabled","aria-checked","data-key"];var rG=le({name:"ElTreeNode",__name:"tree-node",props:ZY,emits:tG,setup(e,{emit:t}){const n=e,o=t,a=Ae(zm),l=fe("tree"),s=w(()=>a?.props.indent??16),r=w(()=>a?.props.icon??$C),u=p=>{const v=a?.props.props?.class;if(!v)return{};let m;if(Fe(v)){const{data:b}=p;m=v(b,p)}else m=v;return Le(m)?{[m]:!0}:m},c=p=>{o("click",n.node,p)},d=p=>{o("drop",n.node,p)},f=()=>{o("toggle",n.node)},h=p=>{o("check",n.node,p)},g=p=>{a?.instance?.vnode?.props?.onNodeContextmenu&&(p.stopPropagation(),p.preventDefault()),a?.ctx.emit(zE,p,n.node?.data,n.node)};return(p,v)=>(x(),B("div",{ref:"node$",class:T([i(l).b("node"),i(l).is("expanded",e.expanded),i(l).is("current",e.current),i(l).is("focusable",!e.disabled),i(l).is("checked",!e.disabled&&e.checked),u(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.disabled,"aria-checked":e.checked,"data-key":e.node?.key,onClick:Ge(c,["stop"]),onContextmenu:g,onDragover:v[1]||(v[1]=Ge(()=>{},["prevent"])),onDragenter:v[2]||(v[2]=Ge(()=>{},["prevent"])),onDrop:Ge(d,["stop"])},[H("div",{class:T(i(l).be("node","content")),style:Ke({paddingLeft:`${(e.node.level-1)*s.value}px`,height:e.itemSize+"px"})},[r.value?(x(),ae(i(De),{key:0,class:T([i(l).is("leaf",!!e.node?.isLeaf),i(l).is("hidden",e.hiddenExpandIcon),{expanded:!e.node?.isLeaf&&e.expanded},i(l).be("node","expand-icon")]),onClick:Ge(f,["stop"])},{default:J(()=>[(x(),ae(lt(r.value)))]),_:1},8,["class"])):te("v-if",!0),e.showCheckbox?(x(),ae(i(Qo),{key:1,"model-value":e.checked,indeterminate:e.indeterminate,disabled:e.disabled,onChange:h,onClick:v[0]||(v[0]=Ge(()=>{},["stop"]))},null,8,["model-value","indeterminate","disabled"])):te("v-if",!0),Y(i(lG),{node:{...e.node,expanded:e.expanded}},null,8,["node"])],6)],42,sG))}}),iG=rG,uG=le({name:"ElTreeV2",__name:"tree",props:JY,emits:eG,setup(e,{expose:t,emit:n}){const o=e,a=n,l=un(),s=w(()=>o.itemSize);bt(zm,{ctx:{emit:a,slots:l},props:o,instance:ut()}),bt(Ia,void 0);const{t:r}=yt(),u=fe("tree"),{flattenTree:c,isNotEmpty:d,listRef:f,toggleExpand:h,isIndeterminate:g,isChecked:p,isDisabled:v,isCurrent:m,isForceHiddenExpandIcon:b,handleNodeClick:k,handleNodeDrop:y,handleNodeCheck:S,toggleCheckbox:C,getCurrentNode:E,getCurrentKey:$,setCurrentKey:O,getCheckedKeys:R,getCheckedNodes:N,getHalfCheckedKeys:_,getHalfCheckedNodes:A,setChecked:V,setCheckedKeys:z,filter:U,setData:W,getNode:M,expandNode:I,collapseNode:L,setExpandedKeys:D,scrollToNode:F,scrollTo:q}=aG(o,a);return t({toggleCheckbox:C,getCurrentNode:E,getCurrentKey:$,setCurrentKey:O,getCheckedKeys:R,getCheckedNodes:N,getHalfCheckedKeys:_,getHalfCheckedNodes:A,setChecked:V,setCheckedKeys:z,filter:U,setData:W,getNode:M,expandNode:I,collapseNode:L,setExpandedKeys:D,scrollToNode:F,scrollTo:q}),(j,X)=>(x(),B("div",{class:T([i(u).b(),{[i(u).m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[i(d)?(x(),ae(i(j2),{key:0,ref_key:"listRef",ref:f,"class-name":i(u).b("virtual-list"),data:i(c),total:i(c).length,height:e.height,"item-size":s.value,"perf-mode":e.perfMode,"scrollbar-always-on":e.scrollbarAlwaysOn},{default:J(({data:Q,index:ve,style:ue})=>[(x(),ae(iG,{key:Q[ve].key,style:Ke(ue),node:Q[ve],expanded:Q[ve].expanded,"show-checkbox":e.showCheckbox,checked:i(p)(Q[ve]),indeterminate:i(g)(Q[ve]),"item-size":s.value,disabled:i(v)(Q[ve]),current:i(m)(Q[ve]),"hidden-expand-icon":i(b)(Q[ve]),onClick:i(k),onToggle:i(h),onCheck:i(S),onDrop:i(y)},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","item-size","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck","onDrop"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode","scrollbar-always-on"])):(x(),B("div",{key:1,class:T(i(u).e("empty-block"))},[ee(j.$slots,"empty",{},()=>[H("span",{class:T(i(u).e("empty-text"))},ke(e.emptyText??i(r)("el.tree.emptyText")),3)])],2))],2))}}),cG=uG;const dG=ot(cG),fG="ElUpload";var pG=class extends Error{constructor(e,t,n,o){super(e),this.name="UploadAjaxError",this.status=t,this.method=n,this.url=o}};function D0(e,t,n){let o;return n.response?o=`${n.response.error||n.response}`:n.responseText?o=`${n.responseText}`:o=`fail to ${t.method} ${e} ${n.status}`,new pG(o,n.status,t.method,e)}function vG(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}const hG=e=>{typeof XMLHttpRequest>"u"&&Jt(fG,"XMLHttpRequest is undefined");const t=new XMLHttpRequest,n=e.action;t.upload&&t.upload.addEventListener("progress",l=>{const s=l;s.percent=l.total>0?l.loaded/l.total*100:0,e.onProgress(s)});const o=new FormData;if(e.data)for(const[l,s]of Object.entries(e.data))ye(s)?s.length===2&&s[0]instanceof Blob&&Le(s[1])?o.append(l,s[0],s[1]):s.forEach(r=>{o.append(l,r)}):o.append(l,s);o.append(e.filename,e.file,e.file.name),t.addEventListener("error",()=>{e.onError(D0(n,e,t))}),t.addEventListener("load",()=>{if(t.status<200||t.status>=300)return e.onError(D0(n,e,t));e.onSuccess(vG(t))}),t.open(e.method,n,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);const a=e.headers||{};if(a instanceof Headers)a.forEach((l,s)=>t.setRequestHeader(s,l));else for(const[l,s]of Object.entries(a))fn(s)||t.setRequestHeader(l,String(s));return t.send(o),t},HE=["text","picture","picture-card"];let mG=1;const Rv=()=>Date.now()+mG++,KE=Se({action:{type:String,default:"#"},headers:{type:G(Object)},method:{type:String,default:"post"},data:{type:G([Object,Function,Promise]),default:()=>tn({})},multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:G(Array),default:()=>tn([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:HE,default:"text"},httpRequest:{type:G(Function),default:hG},disabled:{type:Boolean,default:void 0},limit:Number,directory:Boolean}),gG=Se({...KE,beforeUpload:{type:G(Function),default:At},beforeRemove:{type:G(Function)},onRemove:{type:G(Function),default:At},onChange:{type:G(Function),default:At},onPreview:{type:G(Function),default:At},onSuccess:{type:G(Function),default:At},onProgress:{type:G(Function),default:At},onError:{type:G(Function),default:At},onExceed:{type:G(Function),default:At},crossorigin:{type:G(String)}}),WE=Symbol("uploadContextKey"),bG=Se({files:{type:G(Array),default:()=>tn([])},disabled:{type:Boolean,default:void 0},handlePreview:{type:G(Function),default:At},listType:{type:String,values:HE,default:"text"},crossorigin:{type:G(String)}}),yG={remove:e=>!!e},wG=Se({...KE,beforeUpload:{type:G(Function),default:At},onRemove:{type:G(Function),default:At},onStart:{type:G(Function),default:At},onSuccess:{type:G(Function),default:At},onProgress:{type:G(Function),default:At},onError:{type:G(Function),default:At},onExceed:{type:G(Function),default:At}}),SG=Se({disabled:{type:Boolean,default:void 0},directory:Boolean}),CG={file:e=>ye(e)},kG=["tabindex","aria-disabled","onKeydown"],EG=["src","crossorigin"],xG=["onClick"],TG=["title"],$G=["onClick"],OG=["onClick"];var NG=le({name:"ElUploadList",__name:"upload-list",props:bG,emits:yG,setup(e,{emit:t}){const n=e,o=t,{t:a}=yt(),l=fe("upload"),s=fe("icon"),r=fe("list"),u=on(),c=P(!1),d=w(()=>[l.b("list"),l.bm("list",n.listType),l.is("disabled",u.value)]),f=h=>{o("remove",h)};return(h,g)=>(x(),ae(P1,{tag:"ul",class:T(d.value),name:i(r).b()},{default:J(()=>[(x(!0),B(Ve,null,mt(e.files,(p,v)=>(x(),B("li",{key:p.uid||p.name,class:T([i(l).be("list","item"),i(l).is(p.status),{focusing:c.value}]),tabindex:i(u)?void 0:0,"aria-disabled":i(u),role:"button",onKeydown:Qt(m=>!i(u)&&f(p),["delete"]),onFocus:g[0]||(g[0]=m=>c.value=!0),onBlur:g[1]||(g[1]=m=>c.value=!1),onClick:g[2]||(g[2]=m=>c.value=!1)},[ee(h.$slots,"default",{file:p,index:v},()=>[e.listType==="picture"||p.status!=="uploading"&&e.listType==="picture-card"?(x(),B("img",{key:0,class:T(i(l).be("list","item-thumbnail")),src:p.url,crossorigin:e.crossorigin,alt:""},null,10,EG)):te("v-if",!0),p.status==="uploading"||e.listType!=="picture-card"?(x(),B("div",{key:1,class:T(i(l).be("list","item-info"))},[H("a",{class:T(i(l).be("list","item-name")),onClick:Ge(m=>e.handlePreview(p),["prevent"])},[Y(i(De),{class:T(i(s).m("document"))},{default:J(()=>[Y(i(Y4))]),_:1},8,["class"]),H("span",{class:T(i(l).be("list","item-file-name")),title:p.name},ke(p.name),11,TG)],10,xG),p.status==="uploading"?(x(),ae(i(A2),{key:0,type:e.listType==="picture-card"?"circle":"line","stroke-width":e.listType==="picture-card"?6:2,percentage:Number(p.percentage),style:Ke(e.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):te("v-if",!0)],2)):te("v-if",!0),H("label",{class:T(i(l).be("list","item-status-label"))},[e.listType==="text"?(x(),ae(i(De),{key:0,class:T([i(s).m("upload-success"),i(s).m("circle-check")])},{default:J(()=>[Y(i(jh))]),_:1},8,["class"])):["picture-card","picture"].includes(e.listType)?(x(),ae(i(De),{key:1,class:T([i(s).m("upload-success"),i(s).m("check")])},{default:J(()=>[Y(i(uu))]),_:1},8,["class"])):te("v-if",!0)],2),i(u)?te("v-if",!0):(x(),ae(i(De),{key:2,class:T(i(s).m("close")),"aria-label":i(a)("el.upload.delete"),role:"button",tabindex:"0",onClick:m=>f(p),onKeydown:Qt(Ge(m=>f(p),["prevent"]),["enter","space"])},{default:J(()=>[Y(i(Do))]),_:1},8,["class","aria-label","onClick","onKeydown"])),i(u)?te("v-if",!0):(x(),B("i",{key:3,class:T(i(s).m("close-tip"))},ke(i(a)("el.upload.deleteTip")),3)),e.listType==="picture-card"?(x(),B("span",{key:4,class:T(i(l).be("list","item-actions"))},[H("span",{class:T(i(l).be("list","item-preview")),onClick:m=>e.handlePreview(p)},[Y(i(De),{class:T(i(s).m("zoom-in"))},{default:J(()=>[Y(i(IC))]),_:1},8,["class"])],10,$G),i(u)?te("v-if",!0):(x(),B("span",{key:0,class:T(i(l).be("list","item-delete")),onClick:m=>f(p)},[Y(i(De),{class:T(i(s).m("delete"))},{default:J(()=>[Y(i(U4))]),_:1},8,["class"])],10,OG))],2)):te("v-if",!0)])],42,kG))),128)),ee(h.$slots,"append")]),_:3},8,["class","name"]))}}),B0=NG;const F0="ElUploadDrag";var RG=le({name:F0,__name:"upload-dragger",props:SG,emits:CG,setup(e,{emit:t}){const n=e,o=t;Ae(WE)||Jt(F0,"usage: ");const a=fe("upload"),l=P(!1),s=on(),r=h=>new Promise((g,p)=>h.file(g,p)),u=async h=>{try{if(h.isFile){const g=await r(h);return g.isDirectory=!1,[g]}if(h.isDirectory){const g=h.createReader(),p=()=>new Promise((k,y)=>g.readEntries(k,y)),v=[];let m=await p();for(;m.length>0;)v.push(...m),m=await p();const b=v.map(k=>u(k).catch(()=>[]));return Hc(await Promise.all(b))}}catch{return[]}return[]},c=async h=>{if(s.value)return;l.value=!1,h.stopPropagation();const g=Array.from(h.dataTransfer.files),p=h.dataTransfer.items||[];if(n.directory){const v=Array.from(p).map(m=>m?.webkitGetAsEntry?.()).filter(m=>m);o("file",Hc(await Promise.all(v.map(u))));return}g.forEach((v,m)=>{const b=p[m]?.webkitGetAsEntry?.();b&&(v.isDirectory=b.isDirectory)}),o("file",g)},d=()=>{s.value||(l.value=!0)},f=h=>{h.currentTarget.contains(h.relatedTarget)||(l.value=!1)};return(h,g)=>(x(),B("div",{class:T([i(a).b("dragger"),i(a).is("dragover",l.value)]),onDrop:Ge(c,["prevent"]),onDragover:Ge(d,["prevent"]),onDragleave:Ge(f,["prevent"])},[ee(h.$slots,"default")],34))}}),IG=RG;const MG=["tabindex","aria-disabled","onKeydown"],PG=["name","disabled","multiple","accept","webkitdirectory"];var AG=le({name:"ElUploadContent",inheritAttrs:!1,__name:"upload-content",props:wG,setup(e,{expose:t}){const n=e,o=fe("upload"),a=on(),l=qt({}),s=qt(),r=v=>{if(v.length===0)return;const{autoUpload:m,limit:b,fileList:k,multiple:y,onStart:S,onExceed:C}=n;if(b&&k.length+v.length>b){C(v,k);return}y||(v=v.slice(0,1));for(const E of v){const $=E;$.uid=Rv(),S($),m&&u($)}},u=async v=>{if(s.value.value="",!n.beforeUpload)return d(v);let m,b={};try{const y=n.data,S=n.beforeUpload(v);b=ci(n.data)?Ga(n.data):n.data,m=await S,ci(n.data)&&en(y,b)&&(b=Ga(n.data))}catch{m=!1}if(m===!1){n.onRemove(v);return}let k=v;m instanceof Blob&&(m instanceof File?k=m:k=new File([m],v.name,{type:v.type})),d(Object.assign(k,{uid:v.uid}),b)},c=async(v,m)=>Fe(v)?v(m):v,d=async(v,m)=>{const{headers:b,data:k,method:y,withCredentials:S,name:C,action:E,onProgress:$,onSuccess:O,onError:R,httpRequest:N}=n;try{m=await c(m??k,v)}catch{n.onRemove(v);return}const{uid:_}=v,A={headers:b||{},withCredentials:S,file:v,data:m,method:y,filename:C,action:E,onProgress:z=>{$(z,v)},onSuccess:z=>{O(z,v),delete l.value[_]},onError:z=>{R(z,v),delete l.value[_]}},V=N(A);l.value[_]=V,V instanceof Promise&&V.then(A.onSuccess,A.onError)},f=v=>{const m=v.target.files;m&&r(Array.from(m))},h=()=>{a.value||(s.value.value="",s.value.click())},g=()=>{h()};return t({abort:v=>{$S(l.value).filter(v?([m])=>String(v.uid)===m:()=>!0).forEach(([m,b])=>{b instanceof XMLHttpRequest&&b.abort(),delete l.value[m]})},upload:u}),(v,m)=>(x(),B("div",{class:T([i(o).b(),i(o).m(e.listType),i(o).is("drag",e.drag),i(o).is("disabled",i(a))]),tabindex:i(a)?void 0:0,"aria-disabled":i(a),role:"button",onClick:h,onKeydown:Qt(Ge(g,["self"]),["enter","space"])},[e.drag?(x(),ae(IG,{key:0,disabled:i(a),directory:e.directory,onFile:r},{default:J(()=>[ee(v.$slots,"default")]),_:3},8,["disabled","directory"])):ee(v.$slots,"default",{key:1}),H("input",{ref_key:"inputRef",ref:s,class:T(i(o).e("input")),name:e.name,disabled:i(a),multiple:e.multiple,accept:e.accept,webkitdirectory:e.directory||void 0,type:"file",onChange:f,onClick:m[0]||(m[0]=Ge(()=>{},["stop"]))},null,42,PG)],42,MG))}}),V0=AG;const z0="ElUpload",H0=e=>{e.url?.startsWith("blob:")&&URL.revokeObjectURL(e.url)},_G=(e,t)=>{const n=_S(e,"fileList",void 0,{passive:!0}),o=p=>n.value.find(v=>v.uid===p.uid);function a(p){t.value?.abort(p)}function l(p=["ready","uploading","success","fail"]){n.value=n.value.filter(v=>!p.includes(v.status))}function s(p){n.value=n.value.filter(v=>v.uid!==p.uid)}const r=p=>{Ne(()=>e.onChange(p,n.value))},u=(p,v)=>{const m=o(v);m&&(console.error(p),m.status="fail",s(m),e.onError(p,m,n.value),r(m))},c=(p,v)=>{const m=o(v);m&&(e.onProgress(p,m,n.value),m.status="uploading",m.percentage=Math.round(p.percent))},d=(p,v)=>{const m=o(v);m&&(m.status="success",m.response=p,e.onSuccess(p,m,n.value),r(m))},f=p=>{fn(p.uid)&&(p.uid=Rv());const v={name:p.name,percentage:0,status:"ready",size:p.size,raw:p,uid:p.uid};if(e.listType==="picture-card"||e.listType==="picture")try{v.url=URL.createObjectURL(p)}catch(m){ct(z0,m.message),e.onError(m,v,n.value)}n.value=[...n.value,v],r(v)},h=async p=>{const v=p instanceof File?o(p):p;v||Jt(z0,"file to be removed not found");const m=b=>{a(b),s(b),e.onRemove(b,n.value),H0(b)};e.beforeRemove?await e.beforeRemove(v,n.value)!==!1&&m(v):m(v)};function g(){n.value.filter(({status:p})=>p==="ready").forEach(({raw:p})=>p&&t.value?.upload(p))}return re(()=>e.listType,p=>{p!=="picture-card"&&p!=="picture"||(n.value=n.value.map(v=>{const{raw:m,url:b}=v;if(!b&&m)try{v.url=URL.createObjectURL(m)}catch(k){e.onError(k,v,n.value)}return v}))}),re(n,p=>{for(const v of p)v.uid||=Rv(),v.status||="success"},{immediate:!0,deep:!0}),{uploadFiles:n,abort:a,clearFiles:l,handleError:u,handleProgress:c,handleStart:f,handleSuccess:d,handleRemove:h,submit:g,revokeFileObjectURL:H0}};var LG=le({name:"ElUpload",__name:"upload",props:gG,setup(e,{expose:t}){const n=e,o=on(),a=qt(),{abort:l,submit:s,clearFiles:r,uploadFiles:u,handleStart:c,handleError:d,handleRemove:f,handleSuccess:h,handleProgress:g,revokeFileObjectURL:p}=_G(n,a),v=w(()=>n.listType==="picture-card"),m=w(()=>({...n,fileList:u.value,onStart:c,onProgress:g,onSuccess:h,onError:d,onRemove:f}));return _t(()=>{u.value.forEach(p)}),bt(WE,{accept:Dt(n,"accept")}),t({abort:l,submit:s,clearFiles:r,handleStart:c,handleRemove:f}),(b,k)=>(x(),B("div",null,[v.value&&e.showFileList?(x(),ae(B0,{key:0,disabled:i(o),"list-type":e.listType,files:i(u),crossorigin:e.crossorigin,"handle-preview":e.onPreview,onRemove:i(f)},oo({append:J(()=>[Y(V0,it({ref_key:"uploadRef",ref:a},m.value),{default:J(()=>[b.$slots.trigger?ee(b.$slots,"trigger",{key:0}):te("v-if",!0),!b.$slots.trigger&&b.$slots.default?ee(b.$slots,"default",{key:1}):te("v-if",!0)]),_:3},16)]),_:2},[b.$slots.file?{name:"default",fn:J(({file:y,index:S})=>[ee(b.$slots,"file",{file:y,index:S})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):te("v-if",!0),!v.value||v.value&&!e.showFileList?(x(),ae(V0,it({key:1,ref_key:"uploadRef",ref:a},m.value),{default:J(()=>[b.$slots.trigger?ee(b.$slots,"trigger",{key:0}):te("v-if",!0),!b.$slots.trigger&&b.$slots.default?ee(b.$slots,"default",{key:1}):te("v-if",!0)]),_:3},16)):te("v-if",!0),b.$slots.trigger?ee(b.$slots,"default",{key:2}):te("v-if",!0),ee(b.$slots,"tip"),!v.value&&e.showFileList?(x(),ae(B0,{key:3,disabled:i(o),"list-type":e.listType,files:i(u),crossorigin:e.crossorigin,"handle-preview":e.onPreview,onRemove:i(f)},oo({_:2},[b.$slots.file?{name:"default",fn:J(({file:y,index:S})=>[ee(b.$slots,"file",{file:y,index:S})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):te("v-if",!0)]))}}),DG=LG;const BG=ot(DG),FG=Se({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:G([String,Array]),default:"Element Plus"},font:{type:G(Object)},gap:{type:G(Array),default:()=>[100,100]},offset:{type:G(Array)}});function VG(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function zG(e){return Object.keys(e).map(t=>`${VG(t)}: ${e[t]};`).join(" ")}function HG(){return window.devicePixelRatio||1}const KG=(e,t)=>{let n=!1;return e.removedNodes.length&&t&&(n=Array.from(e.removedNodes).includes(t)),e.type==="attributes"&&e.target===t&&(n=!0),n},WG={left:[0,.5],start:[0,.5],center:[.5,0],right:[1,-.5],end:[1,-.5]};function rp(e,t,n=1){const o=document.createElement("canvas"),a=o.getContext("2d"),l=e*n,s=t*n;return o.setAttribute("width",`${l}px`),o.setAttribute("height",`${s}px`),a.save(),[a,o,l,s]}function jG(){function e(t,n,o,a,l,s,r,u,c){const[d,f,h,g]=rp(a,l,o);let p=0;if(t instanceof HTMLImageElement)d.drawImage(t,0,0,h,g);else{const{color:q,fontSize:j,fontStyle:X,fontWeight:Q,fontFamily:ve,textAlign:ue,textBaseline:ge}=s,ie=Number(j)*o;d.font=`${X} normal ${Q} ${ie}px/${l}px ${ve}`,d.fillStyle=q,d.textAlign=ue,d.textBaseline=ge;const oe=ye(t)?t:[t];if(ge!=="top"&&oe[0]){const ne=d.measureText(oe[0]);d.textBaseline="top";const K=d.measureText(oe[0]);p=ne.actualBoundingBoxAscent-K.actualBoundingBoxAscent}oe?.forEach((ne,K)=>{const[Z,se]=WG[ue];d.fillText(ne??"",h*Z+c*se,K*(ie+s.fontGap*o))})}const v=Math.PI/180*Number(n),m=Math.max(a,l),[b,k,y]=rp(m,m,o);b.translate(y/2,y/2),b.rotate(v),h>0&&g>0&&b.drawImage(f,-h/2,-g/2);function S(q,j){return[q*Math.cos(v)-j*Math.sin(v),q*Math.sin(v)+j*Math.cos(v)]}let C=0,E=0,$=0,O=0;const R=h/2,N=g/2;[[0-R,0-N],[0+R,0-N],[0+R,0+N],[0-R,0+N]].forEach(([q,j])=>{const[X,Q]=S(q,j);C=Math.min(C,X),E=Math.max(E,X),$=Math.min($,Q),O=Math.max(O,Q)});const _=C+y/2,A=$+y/2,V=E-C,z=O-$,U=r*o,W=u*o,M=(V+U)*2,I=z+W,[L,D]=rp(M,I);function F(q=0,j=0){L.drawImage(k,_,A,V,z,q,j+p,V,z)}return F(),F(V+U,-z/2-W/2),F(V+U,+z/2+W/2),[D.toDataURL(),M/o,I/o]}return e}var UG=le({name:"ElWatermark",__name:"watermark",props:FG,setup(e){const t={position:"relative"},n=e,o=w(()=>n.font?.fontGap??3),a=w(()=>n.font?.color??"rgba(0,0,0,.15)"),l=w(()=>n.font?.fontSize??16),s=w(()=>n.font?.fontWeight??"normal"),r=w(()=>n.font?.fontStyle??"normal"),u=w(()=>n.font?.fontFamily??"sans-serif"),c=w(()=>n.font?.textAlign??"center"),d=w(()=>n.font?.textBaseline??"hanging"),f=w(()=>n.gap[0]),h=w(()=>n.gap[1]),g=w(()=>f.value/2),p=w(()=>h.value/2),v=w(()=>n.offset?.[0]??g.value),m=w(()=>n.offset?.[1]??p.value),b=()=>{const _={zIndex:n.zIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat"};let A=v.value-g.value,V=m.value-p.value;return A>0&&(_.left=`${A}px`,_.width=`calc(100% - ${A}px)`,A=0),V>0&&(_.top=`${V}px`,_.height=`calc(100% - ${V}px)`,V=0),_.backgroundPosition=`${A}px ${V}px`,_},k=qt(null),y=qt(),S=P(!1),C=()=>{y.value&&(y.value.remove(),y.value=void 0)},E=(_,A)=>{k.value&&y.value&&(S.value=!0,y.value.setAttribute("style",zG({...b(),backgroundImage:`url('${_}')`,backgroundSize:`${Math.floor(A)}px`})),k.value?.append(y.value),setTimeout(()=>{S.value=!1}))},$=_=>{let A=120,V=64,z=0;const{image:U,content:W,width:M,height:I,rotate:L}=n;if(!U&&_.measureText){_.font=`${Number(l.value)}px ${u.value}`;const D=ye(W)?W:[W];let F=0,q=0;D.forEach(X=>{const{width:Q,fontBoundingBoxAscent:ve,fontBoundingBoxDescent:ue,actualBoundingBoxAscent:ge,actualBoundingBoxDescent:ie}=_.measureText(X),oe=kt(ve)?ge+ie:ve+ue;Q>F&&(F=Math.ceil(Q)),oe>q&&(q=Math.ceil(oe))}),A=F,V=q*D.length+(D.length-1)*o.value;const j=Math.PI/180*Number(L);z=Math.ceil(Math.abs(Math.sin(j)*V)/2),A+=z}return[M??A,I??V,z]},O=jG(),R=()=>{const _=document.createElement("canvas").getContext("2d"),A=n.image,V=n.content,z=n.rotate;if(_){y.value||(y.value=document.createElement("div"));const U=HG(),[W,M,I]=$(_),L=D=>{const[F,q]=O(D||"",z,U,W,M,{color:a.value,fontSize:l.value,fontStyle:r.value,fontWeight:s.value,fontFamily:u.value,fontGap:o.value,textAlign:c.value,textBaseline:d.value},f.value,h.value,I);E(F,q)};if(A){const D=new Image;D.onload=()=>{L(D)},D.onerror=()=>{L(V)},D.crossOrigin="anonymous",D.referrerPolicy="no-referrer",D.src=A}else L(V)}};return dt(()=>{R()}),re(()=>n,()=>{R()},{deep:!0,flush:"post"}),_t(()=>{C()}),Qi(k,_=>{S.value||_.forEach(A=>{KG(A,y.value)&&(C(),R())})},{attributes:!0,subtree:!0,childList:!0}),(_,A)=>(x(),B("div",{ref_key:"containerRef",ref:k,style:Ke([t])},[ee(_.$slots,"default")],4))}}),qG=UG;const YG=ot(qG),GG=["absolute","fixed"],XG=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],Hm=Se({placement:{type:G(String),values:XG,default:"bottom"},reference:{type:G(Object),default:null},strategy:{type:G(String),values:GG,default:"absolute"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),JG={close:()=>!0},ZG=Se({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:Vt},placement:Hm.placement,contentStyle:{type:G([Object])},mask:{type:G([Boolean,Object]),default:!0},gap:{type:G(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:G([Boolean,Object]),default:()=>({block:"center"})},type:{type:G(String)},appendTo:{type:Ji.to.type,default:"body"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),QG={[et]:e=>Ft(e),"update:current":e=>He(e),close:e=>He(e),finish:()=>!0,change:e=>He(e)},eX=Se({target:{type:G([String,Object,Function])},title:String,description:String,showClose:{type:Boolean,default:void 0},closeIcon:{type:Vt},showArrow:{type:Boolean,default:void 0},placement:Hm.placement,mask:{type:G([Boolean,Object]),default:void 0},contentStyle:{type:G([Object])},prevButtonProps:{type:G(Object)},nextButtonProps:{type:G(Object)},scrollIntoViewOptions:{type:G([Boolean,Object]),default:void 0},type:{type:G(String)}}),tX={close:()=>!0},nX=(e,t,n,o,a)=>{const l=P(null),s=()=>{let d;return Le(e.value)?d=document.querySelector(e.value):Fe(e.value)?d=e.value():d=e.value,d},r=()=>{const d=s();if(!d||!t.value){l.value=null;return}oX(d)||d.scrollIntoView(a.value);const{left:f,top:h,width:g,height:p}=d.getBoundingClientRect();l.value={left:f,top:h,width:g,height:p,radius:0}};dt(()=>{re([t,e],()=>{r()},{immediate:!0}),window.addEventListener("resize",r)}),_t(()=>{window.removeEventListener("resize",r)});const u=d=>(ye(n.value.offset)?n.value.offset[d]:n.value.offset)??6,c=w(()=>{if(!l.value)return l.value;const d=u(0),f=u(1),h=n.value?.radius||2;return{left:l.value.left-d,top:l.value.top-f,width:l.value.width+d*2,height:l.value.height+f*2,radius:h}});return{mergedPosInfo:c,triggerTarget:w(()=>{const d=s();return!o.value||!d||!window.DOMRect?d||void 0:{getBoundingClientRect(){return window.DOMRect.fromRect({width:c.value?.width||0,height:c.value?.height||0,x:c.value?.left||0,y:c.value?.top||0})}}})}},lf=Symbol("ElTour");function oX(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:o,right:a,bottom:l,left:s}=e.getBoundingClientRect();return o>=0&&s>=0&&a<=t&&l<=n}const aX=(e,t,n,o,a,l,s,r)=>{const u=P(),c=P(),d=P({}),f={x:u,y:c,placement:o,strategy:a,middlewareData:d},h=w(()=>{const b=[o4(i(l)),l4(),a4(),lX()];return i(r)&&i(n)&&b.push(s4({element:i(n)})),b}),g=async()=>{if(!Rt)return;const b=i(e),k=i(t);if(!b||!k)return;const y=await r4(b,k,{placement:i(o),strategy:i(a),middleware:i(h)});Ci(f).forEach(S=>{f[S].value=y[S]})},p=w(()=>{if(!i(e))return{position:"fixed",top:"50%",left:"50%",transform:"translate3d(-50%, -50%, 0)",maxWidth:"100vw",zIndex:i(s)};const{overflow:b}=i(d);return{position:i(a),zIndex:i(s),top:i(c)!=null?`${i(c)}px`:"",left:i(u)!=null?`${i(u)}px`:"",maxWidth:b?.maxWidth?`${b?.maxWidth}px`:""}}),v=w(()=>{if(!i(r))return{};const{arrow:b}=i(d);return{left:b?.x!=null?`${b?.x}px`:"",top:b?.y!=null?`${b?.y}px`:""}});let m;return dt(()=>{const b=i(e),k=i(t);b&&k&&(m=t4(b,k,g)),ho(()=>{g()})}),_t(()=>{m&&m()}),{update:g,contentStyle:p,arrowStyle:v}},lX=()=>({name:"overflow",async fn(e){const t=await n4(e);let n=0;return t.left>0&&(n=t.left),t.right>0&&(n=t.right),{data:{maxWidth:e.rects.floating.width-n}}}}),sX=Se({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:"rgba(0,0,0,0.5)"},pos:{type:G(Object)},targetAreaClickable:{type:Boolean,default:!0}}),rX={style:{width:"100%",height:"100%"}},iX=["d"];var uX=le({name:"ElTourMask",inheritAttrs:!1,__name:"mask",props:sX,setup(e){const t=e,{ns:n}=Ae(lf),o=w(()=>t.pos?.radius??2),a=w(()=>{const d=o.value,f=`a${d},${d} 0 0 1`;return{topRight:`${f} ${d},${d}`,bottomRight:`${f} ${-d},${d}`,bottomLeft:`${f} ${-d},${-d}`,topLeft:`${f} ${d},${-d}`}}),{width:l,height:s}=Eh(),r=w(()=>{const d=l.value,f=s.value,h=a.value,g=`M${d},0 L0,0 L0,${f} L${d},${f} L${d},0 Z`,p=o.value;return t.pos?`${g} M${t.pos.left+p},${t.pos.top} h${t.pos.width-p*2} ${h.topRight} v${t.pos.height-p*2} ${h.bottomRight} h${-t.pos.width+p*2} ${h.bottomLeft} v${-t.pos.height+p*2} ${h.topLeft} z`:g}),u=w(()=>({position:"fixed",left:0,right:0,top:0,bottom:0,zIndex:t.zIndex,pointerEvents:t.pos&&t.targetAreaClickable?"none":"auto"})),c=w(()=>({fill:t.fill,pointerEvents:"auto",cursor:"auto"}));return zd(Dt(t,"visible"),{ns:n}),(d,f)=>e.visible?(x(),B("div",it({key:0,class:i(n).e("mask"),style:u.value},d.$attrs),[(x(),B("svg",rX,[H("path",{class:T(i(n).e("hollow")),style:Ke(c.value),d:r.value},null,14,iX)]))],16)):te("v-if",!0)}}),cX=uX;const dX=["data-side"];var fX=le({name:"ElTourContent",__name:"content",props:Hm,emits:JG,setup(e,{emit:t}){const n=e,o=t,a=P(n.placement),l=P(n.strategy),s=P(null),r=P(null);re(()=>n.placement,()=>{a.value=n.placement});const{contentStyle:u,arrowStyle:c}=aX(Dt(n,"reference"),s,r,a,l,Dt(n,"offset"),Dt(n,"zIndex"),Dt(n,"showArrow")),d=w(()=>a.value.split("-")[0]),{ns:f}=Ae(lf),h=()=>{o("close")},g=p=>{p.detail.focusReason==="pointer"&&p.preventDefault()};return(p,v)=>(x(),B("div",{ref_key:"contentRef",ref:s,style:Ke(i(u)),class:T(i(f).e("content")),"data-side":d.value,tabindex:"-1"},[Y(i(Nr),{loop:"",trapped:"","focus-start-el":"container","focus-trap-el":s.value||void 0,onReleaseRequested:h,onFocusoutPrevented:g},{default:J(()=>[ee(p.$slots,"default")]),_:3},8,["focus-trap-el"]),e.showArrow?(x(),B("span",{key:0,ref_key:"arrowRef",ref:r,style:Ke(i(c)),class:T(i(f).e("arrow"))},null,6)):te("v-if",!0)],14,dX))}}),pX=fX,vX=le({name:"ElTourSteps",props:{current:{type:Number,default:0}},emits:["update-total"],setup(e,{slots:t,emit:n}){let o=0;return()=>{const a=t.default?.(),l=[];let s=0;function r(u){ye(u)&&u.forEach(c=>{(c?.type||{})?.name==="ElTourStep"&&(l.push(c),s+=1)})}return a.length&&r(So(a[0]?.children)),o!==s&&(o=s,n("update-total",s)),l.length?l[e.current]:null}}}),hX=le({name:"ElTour",inheritAttrs:!1,__name:"tour",props:ZG,emits:QG,setup(e,{emit:t}){const n=e,o=t,a=fe("tour"),l=P(0),s=P(),r=_S(n,"current",o,{passive:!0}),u=w(()=>s.value?.target),c=w(()=>[a.b(),b.value==="primary"?a.m("primary"):""]),d=w(()=>s.value?.placement||n.placement),f=w(()=>s.value?.contentStyle??n.contentStyle),h=w(()=>s.value?.mask??n.mask),g=w(()=>!!h.value&&n.modelValue),p=w(()=>Ft(h.value)?void 0:h.value),v=w(()=>!!u.value&&(s.value?.showArrow??n.showArrow)),m=w(()=>s.value?.scrollIntoViewOptions??n.scrollIntoViewOptions),b=w(()=>s.value?.type??n.type),{nextZIndex:k}=ou(),y=k(),S=w(()=>n.zIndex??y),{mergedPosInfo:C,triggerTarget:E}=nX(u,Dt(n,"modelValue"),Dt(n,"gap"),h,m);re(()=>n.modelValue,N=>{N||(r.value=0)});const $=()=>{n.closeOnPressEscape&&(o(et,!1),o("close",r.value))},O=N=>{l.value=N},R=un();return bt(lf,{currentStep:s,current:r,total:l,showClose:Dt(n,"showClose"),closeIcon:Dt(n,"closeIcon"),mergedType:b,ns:a,slots:R,updateModelValue(N){o(et,N)},onClose(){o("close",r.value)},onFinish(){o("finish")},onChange(){o(ht,r.value)}}),(N,_)=>(x(),B(Ve,null,[Y(i(Or),{to:e.appendTo},{default:J(()=>[H("div",it({class:c.value},N.$attrs),[Y(cX,{visible:g.value,fill:p.value?.color,style:Ke(p.value?.style),pos:i(C),"z-index":S.value,"target-area-clickable":e.targetAreaClickable},null,8,["visible","fill","style","pos","z-index","target-area-clickable"]),e.modelValue?(x(),ae(pX,{key:i(r),reference:i(E),placement:d.value,"show-arrow":v.value,"z-index":S.value,style:Ke(f.value),onClose:$},{default:J(()=>[Y(i(vX),{current:i(r),onUpdateTotal:O},{default:J(()=>[ee(N.$slots,"default")]),_:3},8,["current"])]),_:3},8,["reference","placement","show-arrow","z-index","style"])):te("v-if",!0)],16)]),_:3},8,["to"]),te(" just for IDE "),te("v-if",!0)],64))}}),mX=hX;const gX=["aria-label"];var bX=le({name:"ElTourStep",__name:"step",props:eX,emits:tX,setup(e,{emit:t}){const n=e,o=t,{Close:a}=MC,{t:l}=yt(),{currentStep:s,current:r,total:u,showClose:c,closeIcon:d,mergedType:f,ns:h,slots:g,updateModelValue:p,onClose:v,onFinish:m,onChange:b}=Ae(lf);re(n,N=>{s.value=N},{immediate:!0});const k=w(()=>n.showClose??c.value),y=w(()=>n.closeIcon??d.value??a),S=N=>{if(N)return Gi(N,["children","onClick"])},C=()=>{r.value-=1,n.prevButtonProps?.onClick&&n.prevButtonProps?.onClick(),b()},E=()=>{r.value>=u.value-1?$():r.value+=1,n.nextButtonProps?.onClick&&n.nextButtonProps.onClick(),b()},$=()=>{O(),m()},O=()=>{p(!1),v(),o("close")},R=N=>{if(!N.target?.isContentEditable)switch(Ht(N)){case we.left:N.preventDefault(),r.value>0&&C();break;case we.right:N.preventDefault(),E();break}};return dt(()=>{window.addEventListener("keydown",R)}),_t(()=>{window.removeEventListener("keydown",R)}),(N,_)=>(x(),B(Ve,null,[k.value?(x(),B("button",{key:0,"aria-label":i(l)("el.tour.close"),class:T(i(h).e("closebtn")),type:"button",onClick:O},[Y(i(De),{class:T(i(h).e("close"))},{default:J(()=>[(x(),ae(lt(y.value)))]),_:1},8,["class"])],10,gX)):te("v-if",!0),H("header",{class:T([i(h).e("header"),{"show-close":i(c)}])},[ee(N.$slots,"header",{},()=>[H("span",{role:"heading",class:T(i(h).e("title"))},ke(e.title),3)])],2),H("div",{class:T(i(h).e("body"))},[ee(N.$slots,"default",{},()=>[H("span",null,ke(e.description),1)])],2),H("footer",{class:T(i(h).e("footer"))},[H("div",{class:T(i(h).b("indicators"))},[i(g).indicators?(x(),ae(lt(i(g).indicators),{key:0,current:i(r),total:i(u)},null,8,["current","total"])):(x(!0),B(Ve,{key:1},mt(i(u),(A,V)=>(x(),B("span",{key:A,class:T([i(h).b("indicator"),i(h).is("active",V===i(r))])},null,2))),128))],2),H("div",{class:T(i(h).b("buttons"))},[i(r)>0?(x(),ae(i(xn),it({key:0,size:"small",type:i(f)},S(e.prevButtonProps),{onClick:C}),{default:J(()=>[gt(ke(e.prevButtonProps?.children??i(l)("el.tour.previous")),1)]),_:1},16,["type"])):te("v-if",!0),i(r)<=i(u)-1?(x(),ae(i(xn),it({key:1,size:"small",type:i(f)==="primary"?"default":"primary"},S(e.nextButtonProps),{onClick:E}),{default:J(()=>[gt(ke(e.nextButtonProps?.children??(i(r)===i(u)-1?i(l)("el.tour.finish"):i(l)("el.tour.next"))),1)]),_:1},16,["type"])):te("v-if",!0)],2)],2)],64))}}),jE=bX;const yX=ot(mX,{TourStep:jE}),wX=Zt(jE),SX=Se({container:{type:G([String,Object])},offset:{type:Number,default:0},bound:{type:Number,default:15},duration:{type:Number,default:300},marker:{type:Boolean,default:!0},type:{type:G(String),default:"default"},direction:{type:G(String),default:"vertical"},selectScrollTop:Boolean}),CX={change:e=>Le(e),click:(e,t)=>e instanceof MouseEvent&&(Le(t)||kt(t))},Gu=(e=>{if(!Rt||e==="")return null;if(Le(e))try{return document.querySelector(e)}catch{return null}return e});function kX(e){let t=0;const n=(...o)=>{t&&tl(t),t=Yo(()=>{e(...o),t=0})};return n.cancel=()=>{tl(t),t=0},n}const UE=Symbol("anchor");var EX=le({name:"ElAnchor",__name:"anchor",props:SX,emits:CX,setup(e,{expose:t,emit:n}){const o=e,a=n,l=un(),s=P(""),r=P({}),u=P(null),c=P(null),d=P(),f={};let h=!1,g=0;const p=fe("anchor"),v=w(()=>[p.b(),o.type==="underline"?p.m("underline"):"",p.m(o.direction)]),m=A=>{f[A.href]=A.el},b=A=>{delete f[A]},k=A=>{s.value!==A&&(s.value=A,a(ht,A))};let y=null,S="";const C=A=>{if(!d.value)return;const V=Gu(A);if(!V)return;if(y){if(S===A)return;y()}S=A,h=!0;const z=Tb(V,d.value),U=iv(V,z),W=z.scrollHeight-z.clientHeight,M=Math.min(U-o.offset,W);y=oA(d.value,g,M,o.duration,()=>{setTimeout(()=>{h=!1,S=""},20)})},E=A=>{A&&(k(A),C(A))},$=(A,V)=>{a("click",A,V),E(V)},O=kX(()=>{d.value&&(g=$b(d.value));const A=R();h||kt(A)||k(A)}),R=()=>{if(!d.value)return;const A=$b(d.value),V=[];for(const z of Object.keys(f)){const U=Gu(z);if(!U)continue;const W=iv(U,Tb(U,d.value));V.push({top:W-o.offset-o.bound,href:z})}V.sort((z,U)=>z.top-U.top);for(let z=0;zA))return U.href}},N=()=>{const A=Gu(o.container);!A||Xi(A)?d.value=window:d.value=A};Lt(d,"scroll",O);const _=()=>{Ne(()=>{if(!u.value||!c.value||!s.value){r.value={};return}const A=f[s.value];if(!A){r.value={};return}const V=u.value.getBoundingClientRect(),z=c.value.getBoundingClientRect(),U=A.getBoundingClientRect();o.direction==="horizontal"?r.value={left:`${U.left-V.left}px`,width:`${U.width}px`,opacity:1}:r.value={top:`${U.top-V.top+(U.height-z.height)/2}px`,opacity:1}})};return re(s,_),re(()=>l.default?.(),_),dt(()=>{N();const A=decodeURIComponent(window.location.hash);Gu(A)?E(A):O()}),re(()=>o.container,()=>{N()}),bt(UE,{ns:p,direction:o.direction,currentAnchor:s,addLink:m,removeLink:b,handleClick:$}),t({scrollTo:E}),(A,V)=>(x(),B("div",{ref_key:"anchorRef",ref:u,class:T(v.value)},[e.marker?(x(),B("div",{key:0,ref_key:"markerRef",ref:c,class:T(i(p).e("marker")),style:Ke(r.value)},null,6)):te("v-if",!0),H("div",{class:T(i(p).e("list"))},[ee(A.$slots,"default")],2)],2))}}),xX=EX;const TX=Se({title:String,href:String}),$X=["href"];var OX=le({name:"ElAnchorLink",__name:"anchor-link",props:TX,setup(e){const t=e,n=P(null),{ns:o,direction:a,currentAnchor:l,addLink:s,removeLink:r,handleClick:u}=Ae(UE),c=w(()=>[o.e("link"),o.is("active",l.value===t.href)]),d=f=>{u(f,t.href)};return re(()=>t.href,(f,h)=>{Ne(()=>{h&&r(h),f&&s({href:f,el:n.value})})}),dt(()=>{const{href:f}=t;f&&s({href:f,el:n.value})}),_t(()=>{const{href:f}=t;f&&r(f)}),(f,h)=>(x(),B("div",{class:T(i(o).e("item"))},[H("a",{ref_key:"linkRef",ref:n,class:T(c.value),href:e.href,onClick:d},[ee(f.$slots,"default",{},()=>[gt(ke(e.title),1)])],10,$X),f.$slots["sub-link"]&&i(a)==="vertical"?(x(),B("div",{key:0,class:T(i(o).e("list"))},[ee(f.$slots,"sub-link")],2)):te("v-if",!0)],2))}}),qE=OX;const NX=ot(xX,{AnchorLink:qE}),RX=Zt(qE),YE={label:"label",value:"value",disabled:"disabled"},IX=Se({direction:{type:G(String),default:"horizontal"},options:{type:G(Array),default:()=>[]},modelValue:{type:[String,Number,Boolean],default:void 0},props:{type:G(Object),default:()=>YE},block:Boolean,size:wn,disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},id:String,name:String,...Jn(["ariaLabel"])}),MX={[et]:e=>Le(e)||He(e)||Ft(e),[ht]:e=>Le(e)||He(e)||Ft(e)},PX=["id","aria-label","aria-labelledby"],AX=["name","disabled","checked","onChange"];var _X=le({name:"ElSegmented",__name:"segmented",props:IX,emits:MX,setup(e,{emit:t}){const n=e,o=t,a=fe("segmented"),l=_n(),s=mn(),r=on(),{formItem:u}=In(),{inputId:c,isLabeledByFormItem:d}=To(n,{formItemContext:u}),f=P(null),h=VP(),g=Mt({isInit:!1,width:0,height:0,translateX:0,translateY:0,focusVisible:!1}),p=(A,V)=>{const z=b(V);o(et,z),o(ht,z),A.target.checked=z===n.modelValue},v=w(()=>({...YE,...n.props})),m=A=>A,b=A=>tt(A)?A[v.value.value]:A,k=A=>tt(A)?A[v.value.label]:A,y=A=>!!(r.value||tt(A)&&A[v.value.disabled]),S=A=>n.modelValue===b(A),C=A=>n.options.find(V=>b(V)===A),E=A=>[a.e("item"),a.is("selected",S(A)),a.is("disabled",y(A))],$=()=>{if(!f.value)return;const A=f.value.querySelector(".is-selected"),V=f.value.querySelector(".is-selected input");if(!A||!V){g.width=0,g.height=0,g.translateX=0,g.translateY=0,g.focusVisible=!1;return}g.isInit=!0,n.direction==="vertical"?(g.height=A.offsetHeight,g.translateY=A.offsetTop):(g.width=A.offsetWidth,g.translateX=A.offsetLeft);try{g.focusVisible=V.matches(":focus-visible")}catch{}},O=w(()=>[a.b(),a.m(s.value),a.is("block",n.block)]),R=w(()=>({width:n.direction==="vertical"?"100%":`${g.width}px`,height:n.direction==="vertical"?`${g.height}px`:"100%",transform:n.direction==="vertical"?`translateY(${g.translateY}px)`:`translateX(${g.translateX}px)`,display:g.isInit?"block":"none"})),N=w(()=>[a.e("item-selected"),a.is("disabled",y(C(n.modelValue))),a.is("focus-visible",g.focusVisible)]),_=w(()=>n.name||l.value);return Gt(f,$),re(h,$),re(()=>n.modelValue,()=>{$(),n.validateEvent&&u?.validate?.("change").catch(A=>ct(A))},{flush:"post"}),(A,V)=>e.options.length?(x(),B("div",{key:0,id:i(c),ref_key:"segmentedRef",ref:f,class:T(O.value),role:"radiogroup","aria-label":i(d)?void 0:e.ariaLabel||"segmented","aria-labelledby":i(d)?i(u).labelId:void 0},[H("div",{class:T([i(a).e("group"),i(a).m(e.direction)])},[H("div",{style:Ke(R.value),class:T(N.value)},null,6),(x(!0),B(Ve,null,mt(e.options,(z,U)=>(x(),B("label",{key:U,class:T(E(z))},[H("input",{class:T(i(a).e("item-input")),type:"radio",name:_.value,disabled:y(z),checked:S(z),onChange:W=>p(W,z)},null,42,AX),H("div",{class:T(i(a).e("item-label"))},[ee(A.$slots,"default",{item:m(z)},()=>[gt(ke(k(z)),1)])],2)],2))),128))],2)],10,PX)):te("v-if",!0)}}),LX=_X;const DX=ot(LX),BX=(e,t)=>{const n=e.toLowerCase();return(t.label||t.value||"").toLowerCase().includes(n)},FX=(e,t,n)=>{const{selectionEnd:o}=e;if(o===null)return;const a=e.value,l=En(t);let s=-1,r;for(let u=o-1;u>=0;--u){const c=a[u];if(c===n||c===` -`||c==="\r"){s=u;continue}if(l.includes(c)){const d=s===-1?o:s;r={pattern:a.slice(u+1,d),start:u+1,end:d,prefix:c,prefixIndex:u,splitIndex:s,selectionEnd:o};break}}return r},VX=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=e.selectionStart!==null?e.selectionStart:0,o=e.selectionEnd!==null?e.selectionEnd:0,a=t.useSelectionEnd?o:n,l=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];if(t.debug){const h=document.querySelector("#input-textarea-caret-position-mirror-div");h?.parentNode&&h.parentNode.removeChild(h)}const s=document.createElement("div");s.id="input-textarea-caret-position-mirror-div",document.body.appendChild(s);const r=s.style,u=window.getComputedStyle(e),c=e.nodeName==="INPUT";r.whiteSpace=c?"nowrap":"pre-wrap",c||(r.wordWrap="break-word"),r.position="absolute",t.debug||(r.visibility="hidden"),l.forEach(h=>{if(c&&h==="lineHeight")if(u.boxSizing==="border-box"){const g=Number.parseInt(u.height),p=Number.parseInt(u.paddingTop)+Number.parseInt(u.paddingBottom)+Number.parseInt(u.borderTopWidth)+Number.parseInt(u.borderBottomWidth),v=p+Number.parseInt(u.lineHeight);g>v?r.lineHeight=`${g-p}px`:g===v?r.lineHeight=u.lineHeight:r.lineHeight="0"}else r.lineHeight=u.height;else r[h]=u[h]}),Vd()?e.scrollHeight>Number.parseInt(u.height)&&(r.overflowY="scroll"):r.overflow="hidden",s.textContent=e.value.slice(0,Math.max(0,a)),c&&s.textContent&&(s.textContent=s.textContent.replace(/\s/g," "));const d=document.createElement("span");d.textContent=e.value.slice(Math.max(0,a))||".",d.style.position="relative",d.style.left=`${-e.scrollLeft}px`,d.style.top=`${-e.scrollTop}px`,s.appendChild(d);const f={top:d.offsetTop+Number.parseInt(u.borderTopWidth),left:d.offsetLeft+Number.parseInt(u.borderLeftWidth),height:Number.parseInt(u.fontSize)*1.5};return t.debug?d.style.backgroundColor="#aaa":document.body.removeChild(s),f.left>=e.clientWidth&&(f.left=e.clientWidth),f},zX=Se({...du,options:{type:G(Array),default:()=>[]},prefix:{type:G([String,Array]),default:"@",validator:e=>Le(e)?e.length===1:e.every(t=>Le(t)&&t.length===1)},split:{type:String,default:" ",validator:e=>e.length===1},filterOption:{type:G([Boolean,Function]),default:()=>BX,validator:e=>e===!1?!0:Fe(e)},placement:{type:G(String),default:"bottom"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:G(Function)},modelValue:String,loading:Boolean,popperClass:Bt.popperClass,popperStyle:Bt.popperStyle,popperOptions:{type:G(Object),default:()=>({})},props:{type:G(Object),default:()=>GE}}),HX={[et]:e=>Le(e),"whole-remove":(e,t)=>Le(e)&&Le(t),input:e=>Le(e),search:(e,t)=>Le(e)&&Le(t),select:(e,t)=>tt(e)&&Le(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},GE={value:"value",label:"label",disabled:"disabled"},KX=Se({options:{type:G(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),WX={select:e=>Le(e.value)},jX=["id","aria-disabled","aria-selected","onMousemove","onClick"];var UX=le({name:"ElMentionDropdown",__name:"mention-dropdown",props:KX,emits:WX,setup(e,{expose:t,emit:n}){const o=e,a=n,l=fe("mention"),{t:s}=yt(),r=P(-1),u=P(),c=P(),d=P(),f=(S,C)=>[l.be("dropdown","item"),l.is("hovering",r.value===C),l.is("disabled",S.disabled||o.disabled)],h=S=>{S.disabled||o.disabled||a("select",S)},g=S=>{r.value=S},p=w(()=>o.disabled||o.options.every(S=>S.disabled)),v=w(()=>o.options[r.value]),m=()=>{!v.value||v.value.disabled||o.disabled||a("select",v.value)},b=S=>{const{options:C}=o;if(C.length===0||p.value)return;S==="next"?(r.value++,r.value===C.length&&(r.value=0)):S==="prev"&&(r.value--,r.value<0&&(r.value=C.length-1));const E=C[r.value];if(E.disabled){b(S);return}Ne(()=>k(E))},k=S=>{const{options:C}=o,E=C.findIndex(O=>O.value===S.value),$=c.value?.[E];if($){const O=d.value?.querySelector?.(`.${l.be("dropdown","wrap")}`);O&&Nh(O,$)}u.value?.handleScroll()};return re(()=>o.options,()=>{p.value||o.options.length===0?r.value=-1:r.value=o.options.findIndex(S=>!S.disabled)},{immediate:!0}),t({hoveringIndex:r,navigateOptions:b,selectHoverOption:m,hoverOption:v}),(S,C)=>(x(),B("div",{ref_key:"dropdownRef",ref:d,class:T(i(l).b("dropdown"))},[S.$slots.header?(x(),B("div",{key:0,class:T(i(l).be("dropdown","header"))},[ee(S.$slots,"header")],2)):te("v-if",!0),rt(Y(i(Jo),{id:e.contentId,ref_key:"scrollbarRef",ref:u,tag:"ul","wrap-class":i(l).be("dropdown","wrap"),"view-class":i(l).be("dropdown","list"),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},{default:J(()=>[(x(!0),B(Ve,null,mt(e.options,(E,$)=>(x(),B("li",{id:`${e.contentId}-${$}`,ref_for:!0,ref_key:"optionRefs",ref:c,key:$,class:T(f(E,$)),role:"option","aria-disabled":E.disabled||e.disabled||void 0,"aria-selected":r.value===$,onMousemove:O=>g($),onClick:Ge(O=>h(E),["stop"])},[ee(S.$slots,"label",{item:E,index:$},()=>[H("span",null,ke(E.label??E.value),1)])],42,jX))),128))]),_:3},8,["id","wrap-class","view-class","aria-label"]),[[Nt,e.options.length>0&&!e.loading]]),e.loading?(x(),B("div",{key:1,class:T(i(l).be("dropdown","loading"))},[ee(S.$slots,"loading",{},()=>[gt(ke(i(s)("el.mention.loading")),1)])],2)):te("v-if",!0),S.$slots.footer?(x(),B("div",{key:2,class:T(i(l).be("dropdown","footer"))},[ee(S.$slots,"footer")],2)):te("v-if",!0)],2))}}),qX=UX,YX=le({name:"ElMention",inheritAttrs:!1,__name:"mention",props:zX,emits:HX,setup(e,{expose:t,emit:n}){const o=e,a=n,l=w(()=>el(o,Object.keys(du))),s=fe("mention"),r=on(),u=_n(),c=P(),d=P(),f=P(),h=P(!1),g=P(),p=P(),v=w(()=>o.showArrow?o.placement:`${o.placement}-start`),m=w(()=>o.showArrow?["bottom","top"]:["bottom-start","top-start"]),b=w(()=>({...GE,...o.props})),k=M=>{const I={label:M[b.value.label],value:M[b.value.value],disabled:M[b.value.disabled]};return{...M,...I}},y=w(()=>o.options.map(k)),S=w(()=>{const{filterOption:M}=o;return!p.value||!M?y.value:y.value.filter(I=>M(p.value.pattern,I))}),C=w(()=>h.value&&(!!S.value.length||o.loading)),E=w(()=>`${u.value}-${f.value?.hoveringIndex}`),$=M=>{a(et,M),a(hn,M),z()},O=M=>{if(c.value?.isComposing)return;const I=Ht(M);switch(I){case we.left:case we.right:z();break;case we.up:case we.down:if(!h.value)return;M.preventDefault(),f.value?.navigateOptions(I===we.up?"prev":"next");break;case we.enter:case we.numpadEnter:if(!h.value){o.type!=="textarea"&&z();return}M.preventDefault(),f.value?.hoverOption?f.value?.selectHoverOption():h.value=!1;break;case we.esc:if(!h.value)return;M.preventDefault(),h.value=!1;break;case we.backspace:if(o.whole&&p.value){const{splitIndex:L,selectionEnd:D,pattern:F,prefixIndex:q,prefix:j}=p.value,X=V();if(!X)return;const Q=X.value,ve=y.value.find(ue=>ue.value===F);if((Fe(o.checkIsWhole)?o.checkIsWhole(F,j):ve)&&L!==-1&&L+1===D){M.preventDefault();const ue=Q.slice(0,q)+Q.slice(L+1);a(et,ue),a(hn,ue),a("whole-remove",F,j);const ge=q;Ne(()=>{X.selectionStart=ge,X.selectionEnd=ge,W()})}}}},{wrapperRef:R}=dl(c,{disabled:r,afterFocus(){z()},beforeBlur(M){return d.value?.isFocusInsideContent(M)},afterBlur(){h.value=!1}}),N=()=>{z()},_=M=>o.options.find(I=>M.value===I[b.value.value]),A=M=>{if(!p.value)return;const I=V();if(!I)return;const L=I.value,{split:D}=o,F=L.slice(p.value.end),q=F.startsWith(D),j=`${M.value}${q?"":D}`,X=L.slice(0,p.value.start)+j+F;a(et,X),a(hn,X),a("select",_(M),p.value.prefix);const Q=p.value.start+j.length+(q?1:0);Ne(()=>{I.selectionStart=Q,I.selectionEnd=Q,I.focus(),W()})},V=()=>o.type==="textarea"?c.value?.textarea:c.value?.input,z=()=>{setTimeout(()=>{U(),W(),Ne(()=>d.value?.updatePopper())},0)},U=()=>{const M=V();if(!M)return;const I=VX(M),L=M.getBoundingClientRect(),D=R.value.getBoundingClientRect();g.value={position:"absolute",width:0,height:`${I.height}px`,left:`${I.left+L.left-D.left}px`,top:`${I.top+L.top-D.top}px`}},W=()=>{const M=V();if(document.activeElement!==M){h.value=!1;return}const{prefix:I,split:L}=o;if(p.value=FX(M,I,L),p.value&&p.value.splitIndex===-1){h.value=!0,a("search",p.value.pattern,p.value.prefix);return}h.value=!1};return t({input:c,tooltip:d,dropdownVisible:C}),(M,I)=>(x(),B("div",{ref_key:"wrapperRef",ref:R,class:T(i(s).b())},[Y(i(Yn),it(it(l.value,M.$attrs),{ref_key:"elInputRef",ref:c,"model-value":e.modelValue,disabled:i(r),role:C.value?"combobox":void 0,"aria-activedescendant":C.value?E.value||"":void 0,"aria-controls":C.value?i(u):void 0,"aria-expanded":C.value||void 0,"aria-label":e.ariaLabel,"aria-autocomplete":C.value?"none":void 0,"aria-haspopup":C.value?"listbox":void 0,onInput:$,onKeydown:O,onMousedown:N}),oo({_:2},[mt(M.$slots,(L,D)=>({name:D,fn:J(F=>[ee(M.$slots,D,Ua(qa(F)))])}))]),1040,["model-value","disabled","role","aria-activedescendant","aria-controls","aria-expanded","aria-label","aria-autocomplete","aria-haspopup"]),Y(i(Rn),{ref_key:"tooltipRef",ref:d,visible:C.value,"popper-class":[i(s).e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,placement:v.value,"fallback-placements":m.value,effect:"light",pure:"",offset:e.offset,"show-arrow":e.showArrow},{default:J(()=>[H("div",{style:Ke(g.value)},null,4)]),content:J(()=>[Y(qX,{ref_key:"dropdownRef",ref:f,options:S.value,disabled:i(r),loading:e.loading,"content-id":i(u),"aria-label":e.ariaLabel,onSelect:A,onClick:I[0]||(I[0]=Ge(L=>c.value?.focus(),["stop"]))},oo({_:2},[mt(M.$slots,(L,D)=>({name:D,fn:J(F=>[ee(M.$slots,D,Ua(qa(F)))])}))]),1032,["options","disabled","loading","content-id","aria-label"])]),_:3},8,["visible","popper-class","popper-style","popper-options","placement","fallback-placements","offset","show-arrow"])],2))}}),GX=YX;const XX=ot(GX),JX=Se({layout:{type:String,default:"horizontal",values:["horizontal","vertical"]},lazy:Boolean}),ZX={resizeStart:(e,t)=>!0,resize:(e,t)=>!0,resizeEnd:(e,t)=>!0,collapse:(e,t,n)=>!0},QX=Se({min:{type:[String,Number]},max:{type:[String,Number]},size:{type:[String,Number]},resizable:{type:Boolean,default:!0},collapsible:Boolean}),eJ={"update:size":e=>typeof e=="number"||typeof e=="string"};function tJ(e){const t=P(),{width:n,height:o}=Ip(t);return{containerEl:t,containerSize:w(()=>e.value==="horizontal"?n.value:o.value)}}function Km(e){return Number(e.slice(0,-1))/100}function Wm(e){return Number(e.slice(0,-2))}function jm(e){return Le(e)&&e.endsWith("%")}function Um(e){return Le(e)&&e.endsWith("px")}function nJ(e,t){const n=w(()=>e.value.map(s=>s.size)),o=w(()=>e.value.length),a=P([]);re([n,o,t],()=>{let s=[],r=0;for(let c=0;cc+(d||0),0);if(u>1||!r){const c=1/u;s=s.map(d=>d===void 0?0:d*c)}else{const c=(1-u)/r;s=s.map(d=>d===void 0?c:d)}a.value=s});const l=s=>s*t.value;return{percentSizes:a,pxSizes:w(()=>a.value.map(l))}}function oJ(e,t,n,o){const a=m=>m*t.value||0;function l(m,b){return jm(m)?a(Km(m)):Um(m)?Wm(m):m??b}const s=P(0),r=P(null);let u=[],c=At;const d=w(()=>e.value.map(m=>[m.min,m.max]));re(o,()=>{if(s.value){const m=new MouseEvent("mouseup",{bubbles:!0});window.dispatchEvent(m)}});const f=m=>{s.value=0,r.value={index:m,confirmed:!1},u=n.value},h=(m,b)=>{let k=null;if((!r.value||!r.value.confirmed)&&b!==0){if(b>0)k=m,r.value={index:m,confirmed:!0};else for(let _=m;_>=0;_-=1)if(u[_]>0){k=_,r.value={index:_,confirmed:!0};break}}const y=k??r.value?.index??m,S=[...u],C=y+1,E=l(d.value[y][0],0),$=l(d.value[C][0],0),O=l(d.value[y][1],t.value||0),R=l(d.value[C][1],t.value||0);let N=b;S[y]+NO&&(N=O-S[y]),S[C]-N>R&&(N=S[C]-R),S[y]+=N,S[C]-=N,s.value=N,c=()=>{e.value.forEach((_,A)=>{_.size=S[A]}),c=At},o.value||c()},g=()=>{o.value&&c(),s.value=0,r.value=null,u=[]},p=[];return{lazyOffset:s,onMoveStart:f,onMoving:h,onMoveEnd:g,movingIndex:r,onCollapse:(m,b)=>{p.length||p.push(...n.value);const k=n.value,y=b==="start"?m:m+1,S=b==="start"?m+1:m,C=k[y],E=k[S];if(C!==0&&E!==0)k[y]=0,k[S]+=C,p[m]=C;else{const $=C+E,O=p[m],R=$-O;k[S]=O,k[y]=R}e.value.forEach(($,O)=>{$.size=k[O]})}}}const XE=Symbol("splitterRootContextKey");var aJ=le({name:"ElSplitter",__name:"splitter",props:JX,emits:ZX,setup(e,{emit:t}){const n=fe("splitter"),o=t,a=e,l=Dt(a,"layout"),s=Dt(a,"lazy"),{containerEl:r,containerSize:u}=tJ(l),{removeChild:c,children:d,addChild:f,ChildrenSorter:h}=qd(ut(),"ElSplitterPanel");re(d,()=>{m.value=null,d.value.forEach((N,_)=>{N.setIndex(_)})});const{percentSizes:g,pxSizes:p}=nJ(d,u),{lazyOffset:v,movingIndex:m,onMoveStart:b,onMoving:k,onMoveEnd:y,onCollapse:S}=oJ(d,u,p,s),C=w(()=>({[n.cssVarBlockName("bar-offset")]:s.value?`${v.value}px`:void 0}));return bt(XE,Mt({panels:d,percentSizes:g,pxSizes:p,layout:l,lazy:s,movingIndex:m,containerSize:u,onMoveStart:N=>{b(N),o("resizeStart",N,p.value)},onMoving:(N,_)=>{k(N,_),s.value||o("resize",N,p.value)},onMoveEnd:async N=>{y(),await Ne(),o("resizeEnd",N,p.value)},onCollapse:(N,_)=>{S(N,_),o("collapse",N,_,p.value)},registerPanel:f,unregisterPanel:c})),(N,_)=>(x(),B("div",{ref_key:"containerEl",ref:r,class:T([i(n).b(),i(n).e(l.value)]),style:Ke(C.value)},[ee(N.$slots,"default"),Y(i(h)),te(" Prevent iframe touch events from breaking "),i(m)?(x(),B("div",{key:0,class:T([i(n).e("mask"),i(n).e(`mask-${l.value}`)])},null,2)):te("v-if",!0)],6))}}),lJ=aJ;function sJ(e){return e&&tt(e)?e:{start:!!e,end:!!e}}function K0(e,t,n,o){return!!(e?.collapsible.end&&t>0||n?.collapsible.start&&o===0&&t>0)}var rJ=le({name:"ElSplitterBar",__name:"split-bar",props:{index:{type:Number,required:!0},layout:{type:String,values:["horizontal","vertical"],default:"horizontal"},resizable:{type:Boolean,default:!0},lazy:Boolean,startCollapsible:Boolean,endCollapsible:Boolean},emits:["moveStart","moving","moveEnd","collapse"],setup(e,{emit:t}){const n=fe("splitter-bar"),o=e,a=t,l=w(()=>o.layout==="horizontal"),s=w(()=>l.value?{width:0}:{height:0}),r=w(()=>({width:l.value?"16px":"100%",height:l.value?"100%":"16px",cursor:o.resizable?l.value?"ew-resize":"ns-resize":"auto",touchAction:"none"})),u=w(()=>{const k=n.e("dragger");return{[`${k}-horizontal`]:l.value,[`${k}-vertical`]:!l.value,[`${k}-active`]:!!c.value}}),c=P(null),d=k=>{o.resizable&&(c.value=[k.pageX,k.pageY],a("moveStart",o.index),window.addEventListener("mouseup",p),window.addEventListener("mousemove",h))},f=k=>{if(o.resizable&&k.touches.length===1){k.preventDefault();const y=k.touches[0];c.value=[y.pageX,y.pageY],a("moveStart",o.index),window.addEventListener("touchend",v),window.addEventListener("touchmove",g)}},h=k=>{const{pageX:y,pageY:S}=k,C=y-c.value[0],E=S-c.value[1],$=l.value?C:E;a("moving",o.index,$)},g=k=>{if(k.touches.length===1){k.preventDefault();const y=k.touches[0],S=y.pageX-c.value[0],C=y.pageY-c.value[1],E=l.value?S:C;a("moving",o.index,E)}},p=()=>{c.value=null,window.removeEventListener("mouseup",p),window.removeEventListener("mousemove",h),a("moveEnd",o.index)},v=()=>{c.value=null,window.removeEventListener("touchend",v),window.removeEventListener("touchmove",g),a("moveEnd",o.index)},m=w(()=>l.value?ol:Yd),b=w(()=>l.value?Xn:Aa);return(k,y)=>(x(),B("div",{class:T([i(n).b()]),style:Ke(s.value)},[e.startCollapsible?(x(),B("div",{key:0,class:T([i(n).e("collapse-icon"),i(n).e(`${e.layout}-collapse-icon-start`)]),onClick:y[0]||(y[0]=S=>a("collapse",e.index,"start"))},[ee(k.$slots,"start-collapsible",{},()=>[(x(),ae(lt(m.value),{style:{width:"12px",height:"12px"}}))])],2)):te("v-if",!0),H("div",{class:T([i(n).e("dragger"),u.value,i(n).is("disabled",!e.resizable),i(n).is("lazy",e.resizable&&e.lazy)]),style:Ke(r.value),onMousedown:d,onTouchstart:f},null,38),e.endCollapsible?(x(),B("div",{key:1,class:T([i(n).e("collapse-icon"),i(n).e(`${e.layout}-collapse-icon-end`)]),onClick:y[1]||(y[1]=S=>a("collapse",e.index,"end"))},[ee(k.$slots,"end-collapsible",{},()=>[(x(),ae(lt(b.value),{style:{width:"12px",height:"12px"}}))])],2)):te("v-if",!0)],6))}}),iJ=rJ;const W0="ElSplitterPanel";var uJ=le({name:W0,__name:"split-panel",props:QX,emits:eJ,setup(e,{expose:t,emit:n}){const o=fe("splitter-panel"),a=e,l=n,s=Ae(XE);s||Jt(W0,"usage: ");const{panels:r,layout:u,lazy:c,containerSize:d,pxSizes:f}=$n(s),{registerPanel:h,unregisterPanel:g,onCollapse:p,onMoveEnd:v,onMoveStart:m,onMoving:b}=s,k=P(),y=ut(),S=y.uid,C=P(0),E=w(()=>r.value[C.value]),$=I=>{C.value=I},O=w(()=>E.value?f.value[C.value]??0:0),R=w(()=>E.value?f.value[C.value+1]??0:0),N=w(()=>E.value?r.value[C.value+1]:null),_=w(()=>N.value?a.resizable&&N.value?.resizable&&(O.value!==0||!a.min)&&(R.value!==0||!N.value.min):!1),A=w(()=>E.value?C.value!==r.value.length-1:!1),V=w(()=>K0(E.value,O.value,N.value,R.value)),z=w(()=>K0(N.value,R.value,E.value,O.value));function U(I){return jm(I)?Km(I)*d.value||0:Um(I)?Wm(I):I??0}let W=!1;re(()=>a.size,()=>{if(!W&&E.value){if(!d.value){E.value.size=a.size;return}const I=U(a.size),L=U(a.max),D=U(a.min),F=Math.min(Math.max(I,D||0),L||I);F!==I&&l("update:size",F),E.value.size=F}}),re(()=>E.value?.size,I=>{I!==a.size&&(W=!0,l("update:size",I),Ne(()=>W=!1))}),re(()=>a.resizable,I=>{E.value&&(E.value.resizable=I)});const M=Mt({uid:S,getVnode:()=>y.vnode,setIndex:$,...a,collapsible:w(()=>sJ(a.collapsible))});return h(M),_t(()=>g(M)),t({splitterPanelRef:k}),(I,L)=>(x(),B(Ve,null,[H("div",it({ref_key:"panelEl",ref:k,class:[i(o).b()],style:{flexBasis:`${O.value}px`}},I.$attrs),[ee(I.$slots,"default")],16),A.value?(x(),ae(iJ,{key:0,index:C.value,layout:i(u),lazy:i(c),resizable:_.value,"start-collapsible":V.value,"end-collapsible":z.value,onMoveStart:i(m),onMoving:i(b),onMoveEnd:i(v),onCollapse:i(p)},{"start-collapsible":J(()=>[ee(I.$slots,"start-collapsible")]),"end-collapsible":J(()=>[ee(I.$slots,"end-collapsible")]),_:3},8,["index","layout","lazy","resizable","start-collapsible","end-collapsible","onMoveStart","onMoving","onMoveEnd","onCollapse"])):te("v-if",!0)],64))}}),JE=uJ;const cJ=ot(lJ,{SplitPanel:JE}),dJ=Zt(JE),yo="ElInfiniteScroll",fJ=50,pJ=200,vJ=0,hJ={delay:{type:Number,default:pJ},distance:{type:Number,default:vJ},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},qm=(e,t)=>Object.entries(hJ).reduce((n,[o,a])=>{const{type:l,default:s}=a,r=e.getAttribute(`infinite-scroll-${o}`);let u=t[r]??r??s;return u=u==="false"?!1:u,u=l(u),n[o]=Number.isNaN(u)?s:u,n},{}),ZE=e=>{const{observer:t}=e[yo];t&&(t.disconnect(),delete e[yo].observer)},mJ=(e,t)=>{const{container:n,containerEl:o,instance:a,observer:l,lastScrollTop:s}=e[yo],{disabled:r,distance:u}=qm(e,a),{clientHeight:c,scrollHeight:d,scrollTop:f}=o,h=f-s;if(e[yo].lastScrollTop=f,l||r||h<0)return;let g=!1;if(n===e)g=d-(c+f)<=u;else{const{clientTop:p,scrollHeight:v}=e,m=iv(e,o);g=f+c>=m+p+v-u}g&&t.call(a)};function ip(e,t){const{containerEl:n,instance:o}=e[yo],{disabled:a}=qm(e,o);a||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(o):ZE(e))}const gJ={async mounted(e,t){const{instance:n,value:o}=t;Sa({scope:yo,from:"the directive v-infinite-scroll",replacement:"the el-scrollbar infinite scroll",version:"3.0.0",ref:"https://element-plus.org/en-US/component/scrollbar#infinite-scroll"},!0),Fe(o)||Jt(yo,"'v-infinite-scroll' binding value must be a function"),await Ne();const{delay:a,immediate:l}=qm(e,n),s=Oh(e,!0),r=s===window?document.documentElement:s,u=El(mJ.bind(null,e,o),a);if(s){if(e[yo]={instance:n,container:s,containerEl:r,delay:a,cb:o,onScroll:u,lastScrollTop:r.scrollTop},l){const c=new MutationObserver(El(ip.bind(null,e,o),fJ));e[yo].observer=c,c.observe(e,{childList:!0,subtree:!0}),ip(e,o)}s.addEventListener("scroll",u)}},unmounted(e){if(!e[yo])return;const{container:t,onScroll:n}=e[yo];t?.removeEventListener("scroll",n),ZE(e)},async updated(e){if(!e[yo])await Ne();else{const{containerEl:t,cb:n,observer:o}=e[yo];t.clientHeight&&o&&ip(e,n)}}},Iv=gJ;Iv.install=e=>{e.directive("InfiniteScroll",Iv)};const bJ=Iv;function yJ(e,t){let n;const o=P(!1),a=Mt({...e,originalPosition:"",originalOverflow:"",visible:!1});function l(h){a.text=h}function s(){const h=a.parent,g=f.ns;if(!h.vLoadingAddClassList){let p=h.getAttribute("loading-number");p=Number.parseInt(p)-1,p?h.setAttribute("loading-number",p.toString()):(Gn(h,g.bm("parent","relative")),h.removeAttribute("loading-number")),Gn(h,g.bm("parent","hidden"))}r(),d.unmount()}function r(){f.$el?.parentNode?.removeChild(f.$el)}function u(){e.beforeClose&&!e.beforeClose()||(o.value=!0,clearTimeout(n),n=setTimeout(c,400),a.visible=!1,e.closed?.())}function c(){if(!o.value)return;const h=a.parent;o.value=!1,h.vLoadingAddClassList=void 0,s()}const d=Y$(le({name:"ElLoading",setup(h,{expose:g}){const{ns:p,zIndex:v}=Zd("loading");return g({ns:p,zIndex:v}),()=>{const m=a.spinner||a.svg,b=qe("svg",{class:"circular",viewBox:a.svgViewBox?a.svgViewBox:"0 0 50 50",...m?{innerHTML:m}:{}},[qe("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),k=a.text?qe("p",{class:p.b("text")},[a.text]):void 0;return qe(An,{name:p.b("fade"),onAfterLeave:c},{default:J(()=>[rt(Y("div",{style:{backgroundColor:a.background||""},class:[p.b("mask"),a.customClass,p.is("fullscreen",a.fullscreen)]},[qe("div",{class:p.b("spinner")},[b,k])]),[[Nt,a.visible]])])})}}}));Object.assign(d._context,t??{});const f=d.mount(document.createElement("div"));return{...$n(a),setText:l,removeElLoadingChild:r,close:u,handleAfterLeave:c,vm:f,get $el(){return f.$el}}}let Xu;const er=function(e={},t){if(!Rt)return;const n=wJ(e);if(n.fullscreen&&Xu)return Xu;const o=yJ({...n,closed:()=>{n.closed?.(),n.fullscreen&&(Xu=void 0)}},t??er._context);SJ(n,n.parent,o),j0(n,n.parent,o),n.parent.vLoadingAddClassList=()=>j0(n,n.parent,o);let a=n.parent.getAttribute("loading-number");return a?a=`${Number.parseInt(a)+1}`:a="1",n.parent.setAttribute("loading-number",a),n.parent.appendChild(o.$el),Ne(()=>o.visible.value=n.visible),n.fullscreen&&(Xu=o),o},wJ=e=>{let t;return Le(e.target)?t=document.querySelector(e.target)??document.body:t=e.target||document.body,{parent:t===document.body||e.body?document.body:t,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:t===document.body&&(e.fullscreen??!0),lock:e.lock??!1,customClass:e.customClass||"",visible:e.visible??!0,beforeClose:e.beforeClose,closed:e.closed,target:t}},SJ=async(e,t,n)=>{const{nextZIndex:o}=n.vm.zIndex||n.vm._.exposed.zIndex,a={};if(e.fullscreen)n.originalPosition.value=Ka(document.body,"position"),n.originalOverflow.value=Ka(document.body,"overflow"),a.zIndex=o();else if(e.parent===document.body){n.originalPosition.value=Ka(document.body,"position"),await Ne();for(const l of["top","left"]){const s=l==="top"?"scrollTop":"scrollLeft";a[l]=`${e.target.getBoundingClientRect()[l]+document.body[s]+document.documentElement[s]-Number.parseInt(Ka(document.body,`margin-${l}`),10)}px`}for(const l of["height","width"])a[l]=`${e.target.getBoundingClientRect()[l]}px`}else n.originalPosition.value=Ka(t,"position");for(const[l,s]of Object.entries(a))n.$el.style[l]=s},j0=(e,t,n)=>{const o=n.vm.ns||n.vm._.exposed.ns;["absolute","fixed","sticky"].includes(n.originalPosition.value)?Gn(t,o.bm("parent","relative")):Io(t,o.bm("parent","relative")),e.fullscreen&&e.lock?Io(t,o.bm("parent","hidden")):Gn(t,o.bm("parent","hidden"))};er._context=null;const qr=Symbol("ElLoading"),Ul=e=>`element-loading-${ll(e)}`,U0=(e,t)=>{const n=t.instance,o=c=>tt(t.value)?t.value[c]:void 0,a=c=>P(Le(c)&&n?.[c]||c),l=c=>a(o(c)||e.getAttribute(Ul(c))),s=o("fullscreen")??t.modifiers.fullscreen,r={text:l("text"),svg:l("svg"),svgViewBox:l("svgViewBox"),spinner:l("spinner"),background:l("background"),customClass:l("customClass"),fullscreen:s,target:o("target")??(s?void 0:e),body:o("body")??t.modifiers.body,lock:o("lock")??t.modifiers.lock},u=er(r);u._context=ui._context,e[qr]={options:r,instance:u}},CJ=(e,t)=>{for(const n of Object.keys(e))Yt(e[n])&&(e[n].value=t[n])},ui={mounted(e,t){t.value&&U0(e,t)},updated(e,t){const n=e[qr];if(!t.value){n?.instance.close(),e[qr]=null;return}n?CJ(n.options,tt(t.value)?t.value:{text:e.getAttribute(Ul("text")),svg:e.getAttribute(Ul("svg")),svgViewBox:e.getAttribute(Ul("svgViewBox")),spinner:e.getAttribute(Ul("spinner")),background:e.getAttribute(Ul("background")),customClass:e.getAttribute(Ul("customClass"))}):U0(e,t)},unmounted(e){e[qr]?.instance.close(),e[qr]=null}};ui._context=null;const kJ={install(e){er._context=e._context,ui._context=e._context,e.directive("loading",ui),e.config.globalProperties.$loading=er},directive:ui,service:er},QE=["primary","success","info","warning","error"],ex=["top","top-left","top-right","bottom","bottom-left","bottom-right"],tr="top",Vn=tn({customClass:"",dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,placement:void 0,zIndex:0,grouping:!1,repeatNum:1,appendTo:Rt?document.body:void 0}),EJ=Se({customClass:{type:String,default:Vn.customClass},dangerouslyUseHTMLString:{type:Boolean,default:Vn.dangerouslyUseHTMLString},duration:{type:Number,default:Vn.duration},icon:{type:Vt,default:Vn.icon},id:{type:String,default:Vn.id},message:{type:G([String,Object,Function]),default:Vn.message},onClose:{type:G(Function),default:Vn.onClose},showClose:{type:Boolean,default:Vn.showClose},type:{type:String,values:QE,default:Vn.type},plain:{type:Boolean,default:Vn.plain},offset:{type:Number,default:Vn.offset},placement:{type:String,values:ex,default:Vn.placement},zIndex:{type:Number,default:Vn.zIndex},grouping:{type:Boolean,default:Vn.grouping},repeatNum:{type:Number,default:Vn.repeatNum}}),xJ={destroy:()=>!0},Wo=Uv({}),TJ=e=>(Wo[e]||(Wo[e]=Uv([])),Wo[e]),$J=(e,t)=>{const n=Wo[t]||[],o=n.findIndex(s=>s.id===e),a=n[o];let l;return o>0&&(l=n[o-1]),{current:a,prev:l}},OJ=(e,t)=>{const{prev:n}=$J(e,t);return n?n.vm.exposed.bottom.value:0},NJ=(e,t,n)=>(Wo[n]||[]).findIndex(o=>o.id===e)>0?16:t,RJ=["id"],IJ=["innerHTML"];var MJ=le({name:"ElMessage",__name:"message",props:EJ,emits:xJ,setup(e,{expose:t,emit:n}){const{Close:o}=qh,a=e,l=n,s=P(!1),{ns:r,zIndex:u}=Zd("message"),{currentZIndex:c,nextZIndex:d}=u,f=P(),h=P(!1),g=P(0);let p;const v=w(()=>a.type?a.type==="error"?"danger":a.type:"info"),m=w(()=>{const V=a.type;return{[r.bm("icon",V)]:V&&_l[V]}}),b=w(()=>a.icon||_l[a.type]||""),k=w(()=>a.placement||tr),y=w(()=>OJ(a.id,k.value)),S=w(()=>NJ(a.id,a.offset,k.value)+y.value),C=w(()=>g.value+S.value),E=w(()=>k.value.includes("left")?r.is("left"):k.value.includes("right")?r.is("right"):r.is("center")),$=w(()=>k.value.startsWith("top")?"top":"bottom"),O=w(()=>({[$.value]:`${S.value}px`,zIndex:c.value}));function R(){a.duration!==0&&({stop:p}=rr(()=>{_()},a.duration))}function N(){p?.()}function _(){h.value=!1,Ne(()=>{s.value||(a.onClose?.(),l("destroy"))})}function A(V){Ht(V)===we.esc&&_()}return dt(()=>{R(),d(),h.value=!0}),re(()=>a.repeatNum,()=>{N(),R()}),Lt(document,"keydown",A),Gt(f,()=>{g.value=f.value.getBoundingClientRect().height}),t({visible:h,bottom:C,close:_}),(V,z)=>(x(),ae(An,{name:i(r).b("fade"),onBeforeEnter:z[0]||(z[0]=U=>s.value=!0),onBeforeLeave:e.onClose,onAfterLeave:z[1]||(z[1]=U=>V.$emit("destroy")),persisted:""},{default:J(()=>[rt(H("div",{id:e.id,ref_key:"messageRef",ref:f,class:T([i(r).b(),{[i(r).m(e.type)]:e.type},i(r).is("closable",e.showClose),i(r).is("plain",e.plain),i(r).is("bottom",$.value==="bottom"),E.value,e.customClass]),style:Ke(O.value),role:"alert",onMouseenter:N,onMouseleave:R},[e.repeatNum>1?(x(),ae(i(JC),{key:0,value:e.repeatNum,type:v.value,class:T(i(r).e("badge"))},null,8,["value","type","class"])):te("v-if",!0),b.value?(x(),ae(i(De),{key:1,class:T([i(r).e("icon"),m.value])},{default:J(()=>[(x(),ae(lt(b.value)))]),_:1},8,["class"])):te("v-if",!0),ee(V.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),B(Ve,{key:1},[te(" Caution here, message could've been compromised, never use user's input as message "),H("p",{class:T(i(r).e("content")),innerHTML:e.message},null,10,IJ)],2112)):(x(),B("p",{key:0,class:T(i(r).e("content"))},ke(e.message),3))]),e.showClose?(x(),ae(i(De),{key:2,class:T(i(r).e("closeBtn")),onClick:Ge(_,["stop"])},{default:J(()=>[Y(i(o))]),_:1},8,["class"])):te("v-if",!0)],46,RJ),[[Nt,h.value]])]),_:3},8,["name","onBeforeLeave"]))}}),PJ=MJ;let AJ=1;const _J=e=>{if(!e.appendTo)e.appendTo=document.body;else if(Le(e.appendTo)){let t=document.querySelector(e.appendTo);io(t)||(ct("ElMessage","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body),e.appendTo=t}},LJ=e=>{!e.placement&&Le(Kn.placement)&&Kn.placement&&(e.placement=Kn.placement),e.placement||(e.placement=tr),ex.includes(e.placement)||(ct("ElMessage",`Invalid placement: ${e.placement}. Falling back to '${tr}'.`),e.placement=tr)},tx=e=>{const t=!e||Le(e)||Kt(e)||Fe(e)?{message:e}:e,n={...Vn,...t};return _J(n),LJ(n),Ft(Kn.grouping)&&!n.grouping&&(n.grouping=Kn.grouping),He(Kn.duration)&&n.duration===3e3&&(n.duration=Kn.duration),He(Kn.offset)&&n.offset===16&&(n.offset=Kn.offset),Ft(Kn.showClose)&&!n.showClose&&(n.showClose=Kn.showClose),Ft(Kn.plain)&&!n.plain&&(n.plain=Kn.plain),n},DJ=e=>{const t=Wo[e.props.placement||tr],n=t.indexOf(e);if(n===-1)return;t.splice(n,1);const{handler:o}=e;o.close()},BJ=({appendTo:e,...t},n)=>{const o=`message_${AJ++}`,a=t.onClose,l=document.createElement("div"),s={...t,id:o,onClose:()=>{a?.(),DJ(c)},onDestroy:()=>{Il(null,l)}},r=Y(PJ,s,Fe(s.message)||Kt(s.message)?{default:Fe(s.message)?s.message:()=>s.message}:null);r.appContext=n||ys._context,Il(r,l),e.appendChild(l.firstElementChild);const u=r.component,c={id:o,vnode:r,vm:u,handler:{close:()=>{u.exposed.close()}},props:r.component.props};return c},ys=(e={},t)=>{if(!Rt)return{close:()=>{}};const n=tx(e),o=TJ(n.placement||tr);if(n.grouping&&o.length){const l=o.find(({vnode:s})=>s.props?.message===n.message);if(l)return l.props.repeatNum+=1,l.props.type=n.type,l.handler}if(He(Kn.max)&&o.length>=Kn.max)return{close:()=>{}};const a=BJ(n,t);return o.push(a),a.handler};QE.forEach(e=>{ys[e]=(t={},n)=>ys({...tx(t),type:e},n)});function FJ(e){for(const t in Wo)if($t(Wo,t)){const n=[...Wo[t]];for(const o of n)(!e||e===o.props.type)&&o.handler.close()}}function VJ(e){Wo[e]&&[...Wo[e]].forEach(t=>t.handler.close())}ys.closeAll=FJ;ys.closeAllByPlacement=VJ;ys._context=null;const zJ=TC(ys,"$message");var HJ=le({name:"ElMessageBox",directives:{TrapFocus:r8},components:{ElButton:xn,ElFocusTrap:Nr,ElInput:Yn,ElOverlay:mm,ElIcon:De,...qh},inheritAttrs:!1,props:{buttonSize:{type:String,validator:nE},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:a,size:l}=Zd("message-box",w(()=>e.buttonSize)),{t:s}=n,{nextZIndex:r}=o,u=P(!1),c=Mt({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",cancelButtonType:"",confirmButtonType:"primary",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:wa(Ra),cancelButtonLoadingIcon:wa(Ra),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:r()}),d=w(()=>{const U=c.type;return{[a.bm("icon",U)]:U&&_l[U]}}),f=_n(),h=_n(),g=w(()=>{const U=c.type;return c.icon||U&&_l[U]||""}),p=w(()=>!!c.message),v=P(),m=P(),b=P(),k=P(),y=P(),S=w(()=>c.confirmButtonClass);re(()=>c.inputValue,async U=>{await Ne(),e.boxType==="prompt"&&U&&_()},{immediate:!0}),re(()=>u.value,U=>{U&&(e.boxType!=="prompt"&&(c.autofocus?b.value=y.value?.$el??v.value:b.value=v.value),c.zIndex=r()),e.boxType==="prompt"&&(U?Ne().then(()=>{k.value&&k.value.$el&&(c.autofocus?b.value=A()??v.value:b.value=v.value)}):(c.editorErrorMessage="",c.validateError=!1))});const{isDragging:C}=HS(v,m,w(()=>e.draggable),w(()=>e.overflow));dt(async()=>{await Ne(),e.closeOnHashChange&&window.addEventListener("hashchange",E)}),_t(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",E)});function E(){u.value&&(u.value=!1,Ne(()=>{c.action&&t("action",c.action)}))}const $=()=>{e.closeOnClickModal&&N(c.distinguishCancelAndClose?"close":"cancel")},O=Bh($),R=U=>{if(c.inputType!=="textarea"&&!k.value?.isComposing)return U.preventDefault(),N("confirm")},N=U=>{e.boxType==="prompt"&&U==="confirm"&&!_()||(c.action=U,c.beforeClose?c.beforeClose?.(U,c,E):E())},_=()=>{if(e.boxType==="prompt"){const U=c.inputPattern;if(U&&!U.test(c.inputValue||""))return c.editorErrorMessage=c.inputErrorMessage||s("el.messagebox.error"),c.validateError=!0,!1;const W=c.inputValidator;if(Fe(W)){const M=W(c.inputValue);if(M===!1)return c.editorErrorMessage=c.inputErrorMessage||s("el.messagebox.error"),c.validateError=!0,!1;if(Le(M))return c.editorErrorMessage=M,c.validateError=!0,!1}}return c.editorErrorMessage="",c.validateError=!1,!0},A=()=>{const U=k.value?.$refs;return U?.input??U?.textarea},V=()=>{N("close")},z=()=>{e.closeOnPressEscape&&V()};return e.lockScroll&&zd(u,{ns:a}),{...$n(c),ns:a,overlayEvent:O,visible:u,hasMessage:p,typeClass:d,contentId:f,inputId:h,btnSize:l,iconComponent:g,confirmButtonClasses:S,rootRef:v,focusStartRef:b,headerRef:m,inputRef:k,isDragging:C,confirmRef:y,doClose:E,handleClose:V,onCloseRequested:z,handleWrapperClick:$,handleInputEnter:R,handleAction:N,t:s}}});const KJ=["aria-label","aria-describedby"],WJ=["aria-label"],jJ=["id"];function UJ(e,t,n,o,a,l){const s=Ot("el-icon"),r=Ot("el-input"),u=Ot("el-button"),c=Ot("el-focus-trap"),d=Ot("el-overlay");return x(),ae(An,{name:"fade-in-linear",onAfterLeave:t[11]||(t[11]=f=>e.$emit("vanish")),persisted:""},{default:J(()=>[rt(Y(d,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:J(()=>[H("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:T(`${e.ns.namespace.value}-overlay-message-box`),onClick:t[8]||(t[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:t[9]||(t[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:t[10]||(t[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[Y(c,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:J(()=>[H("div",{ref:"rootRef",class:T([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:Ke(e.customStyle),tabindex:"-1",onClick:t[7]||(t[7]=Ge(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(x(),B("div",{key:0,ref:"headerRef",class:T([e.ns.e("header"),{"show-close":e.showClose}])},[H("div",{class:T(e.ns.e("title"))},[e.iconComponent&&e.center?(x(),ae(s,{key:0,class:T([e.ns.e("status"),e.typeClass])},{default:J(()=>[(x(),ae(lt(e.iconComponent)))]),_:1},8,["class"])):te("v-if",!0),H("span",null,ke(e.title),1)],2),e.showClose?(x(),B("button",{key:0,type:"button",class:T(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:t[0]||(t[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:t[1]||(t[1]=Qt(Ge(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[Y(s,{class:T(e.ns.e("close"))},{default:J(()=>[(x(),ae(lt(e.closeIcon||"close")))]),_:1},8,["class"])],42,WJ)):te("v-if",!0)],2)):te("v-if",!0),H("div",{id:e.contentId,class:T(e.ns.e("content"))},[H("div",{class:T(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(x(),ae(s,{key:0,class:T([e.ns.e("status"),e.typeClass])},{default:J(()=>[(x(),ae(lt(e.iconComponent)))]),_:1},8,["class"])):te("v-if",!0),e.hasMessage?(x(),B("div",{key:1,class:T(e.ns.e("message"))},[ee(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),ae(lt(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(x(),ae(lt(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:ke(e.message)},null,8,["for","textContent"]))])],2)):te("v-if",!0)],2),rt(H("div",{class:T(e.ns.e("input"))},[Y(r,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t[2]||(t[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:T({invalid:e.validateError}),onKeydown:Qt(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),H("div",{class:T(e.ns.e("errormsg")),style:Ke({visibility:e.editorErrorMessage?"visible":"hidden"})},ke(e.editorErrorMessage),7)],2),[[Nt,e.showInput]])],10,jJ),H("div",{class:T(e.ns.e("btns"))},[e.showCancelButton?(x(),ae(u,{key:0,type:e.cancelButtonType==="text"?"":e.cancelButtonType,text:e.cancelButtonType==="text",loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:T([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t[3]||(t[3]=f=>e.handleAction("cancel")),onKeydown:t[4]||(t[4]=Qt(Ge(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:J(()=>[gt(ke(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","size"])):te("v-if",!0),rt(Y(u,{ref:"confirmRef",type:e.confirmButtonType==="text"?"":e.confirmButtonType,text:e.confirmButtonType==="text",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:T([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t[5]||(t[5]=f=>e.handleAction("confirm")),onKeydown:t[6]||(t[6]=Qt(Ge(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:J(()=>[gt(ke(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","disabled","size"]),[[Nt,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,KJ)]),_:3},8,["z-index","overlay-class","mask"]),[[Nt,e.visible]])]),_:3})}var qJ=Sn(HJ,[["render",UJ]]);const Fi=new Map,YJ=e=>{let t=document.body;return e.appendTo&&(Le(e.appendTo)&&(t=document.querySelector(e.appendTo)),io(e.appendTo)&&(t=e.appendTo),io(t)||(ct("ElMessageBox","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body)),t},GJ=(e,t,n=null)=>{const o=Y(qJ,e,Fe(e.message)||Kt(e.message)?{default:Fe(e.message)?e.message:()=>e.message}:null);return o.appContext=n,Il(o,t),YJ(e).appendChild(t.firstElementChild),o.component},XJ=()=>document.createElement("div"),JJ=(e,t)=>{const n=XJ();e.onVanish=()=>{Il(null,n),Fi.delete(a)},e.onAction=l=>{const s=Fi.get(a);let r;e.showInput?r={value:a.inputValue,action:l}:r=l,e.callback?e.callback(r,o.proxy):l==="cancel"||l==="close"?e.distinguishCancelAndClose&&l!=="cancel"?s.reject("close"):s.reject("cancel"):s.resolve(r)};const o=GJ(e,n,t),a=o.proxy;for(const l in e)$t(e,l)&&!$t(a.$props,l)&&(l==="closeIcon"&&tt(e[l])?a[l]=wa(e[l]):a[l]=e[l]);return a.visible=!0,a};function Ir(e,t=null){if(!Rt)return Promise.reject();let n;return Le(e)||Kt(e)?e={message:e}:n=e.callback,new Promise((o,a)=>{const l=JJ(e,t??Ir._context);Fi.set(l,{options:e,callback:n,resolve:o,reject:a})})}const ZJ=["alert","confirm","prompt"],QJ={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};ZJ.forEach(e=>{Ir[e]=eZ(e)});function eZ(e){return(t,n,o,a)=>{let l="";return tt(n)?(o=n,l=""):kt(n)?l="":l=n,Ir(Object.assign({title:l,message:t,type:"",...QJ[e]},o,{boxType:e}),a)}}Ir.close=()=>{Fi.forEach((e,t)=>{t.doClose()}),Fi.clear()};Ir._context=null;const yl=Ir;yl.install=e=>{yl._context=e._context,e.config.globalProperties.$msgbox=yl,e.config.globalProperties.$messageBox=yl,e.config.globalProperties.$alert=yl.alert,e.config.globalProperties.$confirm=yl.confirm,e.config.globalProperties.$prompt=yl.prompt};const tZ=yl,nx=["primary","success","info","warning","error"],nZ=Se({customClass:{type:String,default:""},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:Vt},id:{type:String,default:""},message:{type:G([String,Object,Function]),default:""},offset:{type:Number,default:0},onClick:{type:G(Function),default:()=>{}},onClose:{type:G(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...nx,""],default:""},zIndex:Number,closeIcon:{type:Vt,default:Do}}),oZ={destroy:()=>!0},aZ=["id"],lZ=["textContent"],sZ={key:0},rZ=["innerHTML"];var iZ=le({name:"ElNotification",__name:"notification",props:nZ,emits:oZ,setup(e,{expose:t}){const n=e,{ns:o,zIndex:a}=Zd("notification"),{nextZIndex:l,currentZIndex:s}=a,r=P(!1);let u;const c=w(()=>{const k=n.type;return k&&_l[n.type]?o.m(k):""}),d=w(()=>n.type&&_l[n.type]||n.icon),f=w(()=>n.position.endsWith("right")?"right":"left"),h=w(()=>n.position.startsWith("top")?"top":"bottom"),g=w(()=>({[h.value]:`${n.offset}px`,zIndex:n.zIndex??s.value}));function p(){n.duration>0&&({stop:u}=rr(()=>{r.value&&m()},n.duration))}function v(){u?.()}function m(){r.value=!1}function b(k){switch(Ht(k)){case we.delete:case we.backspace:v();break;case we.esc:r.value&&m();break;default:p();break}}return dt(()=>{p(),l(),r.value=!0}),Lt(document,"keydown",b),t({visible:r,close:m}),(k,y)=>(x(),ae(An,{name:i(o).b("fade"),onBeforeLeave:e.onClose,onAfterLeave:y[1]||(y[1]=S=>k.$emit("destroy")),persisted:""},{default:J(()=>[rt(H("div",{id:e.id,class:T([i(o).b(),e.customClass,f.value]),style:Ke(g.value),role:"alert",onMouseenter:v,onMouseleave:p,onClick:y[0]||(y[0]=(...S)=>e.onClick&&e.onClick(...S))},[d.value?(x(),ae(i(De),{key:0,class:T([i(o).e("icon"),c.value])},{default:J(()=>[(x(),ae(lt(d.value)))]),_:1},8,["class"])):te("v-if",!0),H("div",{class:T(i(o).e("group"))},[H("h2",{class:T(i(o).e("title")),textContent:ke(e.title)},null,10,lZ),rt(H("div",{class:T(i(o).e("content")),style:Ke(e.title?void 0:{margin:0})},[ee(k.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),B(Ve,{key:1},[te(" Caution here, message could've been compromised, never use user's input as message "),H("p",{innerHTML:e.message},null,8,rZ)],2112)):(x(),B("p",sZ,ke(e.message),1))])],6),[[Nt,e.message]]),e.showClose?(x(),ae(i(De),{key:0,class:T(i(o).e("closeBtn")),onClick:Ge(m,["stop"])},{default:J(()=>[(x(),ae(lt(e.closeIcon)))]),_:1},8,["class"])):te("v-if",!0)],2)],46,aZ),[[Nt,r.value]])]),_:3},8,["name","onBeforeLeave"]))}}),uZ=iZ;const yr={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},vd=16;let cZ=1;const ws=function(e={},t){if(!Rt)return{close:()=>{}};(Le(e)||Kt(e))&&(e={message:e});const n=e.position||"top-right";let o=e.offset||0;yr[n].forEach(({vm:d})=>{o+=(d.el?.offsetHeight||0)+vd}),o+=vd;const a=`notification_${cZ++}`,l=e.onClose,s={...e,offset:o,id:a,onClose:()=>{dZ(a,n,l)}};let r=document.body;io(e.appendTo)?r=e.appendTo:Le(e.appendTo)&&(r=document.querySelector(e.appendTo)),io(r)||(ct("ElNotification","the appendTo option is not an HTMLElement. Falling back to document.body."),r=document.body);const u=document.createElement("div"),c=Y(uZ,s,Fe(s.message)?s.message:Kt(s.message)?()=>s.message:null);return c.appContext=kt(t)?ws._context:t,c.props.onDestroy=()=>{Il(null,u)},Il(c,u),yr[n].push({vm:c}),r.appendChild(u.firstElementChild),{close:()=>{c.component.exposed.visible.value=!1}}};nx.forEach(e=>{ws[e]=(t={},n)=>((Le(t)||Kt(t))&&(t={message:t}),ws({...t,type:e},n))});function dZ(e,t,n){const o=yr[t],a=o.findIndex(({vm:c})=>c.component?.props.id===e);if(a===-1)return;const{vm:l}=o[a];if(!l)return;n?.(l);const s=l.el.offsetHeight,r=t.split("-")[0];o.splice(a,1);const u=o.length;if(!(u<1))for(let c=a;c{t.component.exposed.visible.value=!1})}function pZ(e="top-right"){let t=yr[e][0]?.vm.component?.props?.offset||0;for(const{vm:n}of yr[e])n.component.props.offset=t,t+=(n.el?.offsetHeight||0)+vd}ws.closeAll=fZ;ws.updateOffsets=pZ;ws._context=null;const vZ=TC(ws,"$notify"),hZ=Se({trigger:xa.trigger,triggerKeys:xa.triggerKeys,placement:Sc.placement,disabled:xa.disabled,visible:Bt.visible,transition:Bt.transition,popperOptions:Sc.popperOptions,tabindex:Sc.tabindex,content:Bt.content,popperStyle:Bt.popperStyle,popperClass:Bt.popperClass,enterable:{...Bt.enterable,default:!0},effect:{...Bt.effect,default:"light"},teleported:Bt.teleported,appendTo:Bt.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),mZ={"update:visible":e=>Ft(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},gZ="onUpdate:visible";var bZ=le({name:"ElPopover",__name:"popover",props:hZ,emits:mZ,setup(e,{expose:t,emit:n}){const o=e,a=n,l=w(()=>o[gZ]),s=fe("popover"),r=P(),u=w(()=>i(r)?.popperRef),c=w(()=>[{width:nn(o.width)},o.popperStyle]),d=w(()=>[s.b(),o.popperClass,{[s.m("plain")]:!!o.content}]),f=w(()=>o.transition===`${s.namespace.value}-fade-in-linear`),h=()=>{r.value?.hide()},g=()=>{a("before-enter")},p=()=>{a("before-leave")},v=()=>{a("after-enter")},m=()=>{a("update:visible",!1),a("after-leave")};return t({popperRef:u,hide:h}),(b,k)=>(x(),ae(i(Rn),it({ref_key:"tooltipRef",ref:r},b.$attrs,{trigger:e.trigger,"trigger-keys":e.triggerKeys,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":d.value,"popper-style":c.value,teleported:e.teleported,"append-to":e.appendTo,persistent:e.persistent,"gpu-acceleration":f.value,"onUpdate:visible":l.value,onBeforeShow:g,onBeforeHide:p,onShow:v,onHide:m}),{content:J(()=>[e.title?(x(),B("div",{key:0,class:T(i(s).e("title")),role:"title"},ke(e.title),3)):te("v-if",!0),ee(b.$slots,"default",{hide:h},()=>[gt(ke(e.content),1)])]),default:J(()=>[b.$slots.reference?ee(b.$slots,"reference",{key:0}):te("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}}),yZ=bZ;const q0=(e,t)=>{const n=(t.arg||t.value)?.popperRef;n&&(n.triggerRef=e)};var wZ={mounted(e,t){q0(e,t)},updated(e,t){q0(e,t)}};const SZ="popover",ox=b4(wZ,SZ),CZ=ot(yZ,{directive:ox}),kZ="2.13.5",EZ=(e=[])=>({version:kZ,install:(n,o)=>{n[jg]||(n[jg]=!0,e.forEach(a=>n.use(a)),o&&Qh(o,n,!0))}});var xZ=[k4,z3,XD,Vq,nB,oB,uB,JC,yB,wB,xn,ak,kF,$F,HF,KF,DV,Wk,HV,Qo,lV,rm,ZV,p6,v6,ef,n2,H6,TB,G6,X6,J6,Z6,Q6,QH,u2,i5,u5,E5,g2,D5,EK,xK,TK,T2,FL,VL,De,vW,$2,Yn,O2,IW,DW,QW,ej,tj,nj,ij,Hj,qj,CZ,jC,A2,Kk,gV,mV,i9,f9,GV,Jo,Dl,Qc,tF,e7,s7,r7,$7,M7,r2,iz,F7,V7,X7,aq,lq,Fq,Qq,eY,Xa,Lm,N8,iY,pY,vY,Rn,$Y,Fm,GY,dG,BG,YG,yX,wX,NX,RX,DX,XX,cJ,dJ],TZ=[bJ,kJ,zJ,tZ,vZ,ox],Ym=EZ([...xZ,...TZ]);Ym.install;Ym.version;var bee=Ym;const $Z={class:"top-bar"},OZ={class:"nav-tabs"},NZ={class:"nav-tab-group"},RZ=["href"],IZ=le({__name:"BrandTopBar",props:{active:{}},setup(e){const n=e.active,o=[{key:"brand",label:"品牌检测",href:"/brand"},{key:"dedupe",label:"数据去重",href:"/new_web_source/dedupe.html"},{key:"convert",label:"格式转换",href:"/new_web_source/convert.html"},{key:"split",label:"数据拆分",href:"/new_web_source/split.html"}];return(a,l)=>(x(),B("header",$Z,[l[0]||(l[0]=H("div",{class:"logo-area"},[H("span",{class:"app-name"},"数富AI-亚马逊"),H("a",{href:"/home",class:"btn-home"},"返回首页")],-1)),H("nav",OZ,[H("span",NZ,[(x(),B(Ve,null,mt(o,s=>H("a",{key:s.key,href:s.href,class:T(["nav-tab",{active:i(n)===s.key}])},ke(s.label),11,RZ)),64))])]),l[1]||(l[1]=H("div",{class:"top-right"},null,-1))]))}}),MZ=(e,t)=>{const n=e.__vccOpts||e;for(const[o,a]of t)n[o]=a;return n},yee=MZ(IZ,[["__scopeId","data-v-b3a67bbd"]]);function ax(e,t){return function(){return e.apply(t,arguments)}}const{toString:PZ}=Object.prototype,{getPrototypeOf:Gm}=Object,{iterator:sf,toStringTag:lx}=Symbol,rf=(e=>t=>{const n=PZ.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),sa=e=>(e=e.toLowerCase(),t=>rf(t)===e),uf=e=>t=>typeof t===e,{isArray:Mr}=Array,wr=uf("undefined");function gu(e){return e!==null&&!wr(e)&&e.constructor!==null&&!wr(e.constructor)&&po(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const sx=sa("ArrayBuffer");function AZ(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&sx(e.buffer),t}const _Z=uf("string"),po=uf("function"),rx=uf("number"),bu=e=>e!==null&&typeof e=="object",LZ=e=>e===!0||e===!1,Oc=e=>{if(rf(e)!=="object")return!1;const t=Gm(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(lx in e)&&!(sf in e)},DZ=e=>{if(!bu(e)||gu(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},BZ=sa("Date"),FZ=sa("File"),VZ=e=>!!(e&&typeof e.uri<"u"),zZ=e=>e&&typeof e.getParts<"u",HZ=sa("Blob"),KZ=sa("FileList"),WZ=e=>bu(e)&&po(e.pipe);function jZ(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Y0=jZ(),G0=typeof Y0.FormData<"u"?Y0.FormData:void 0,UZ=e=>{let t;return e&&(G0&&e instanceof G0||po(e.append)&&((t=rf(e))==="formdata"||t==="object"&&po(e.toString)&&e.toString()==="[object FormData]"))},qZ=sa("URLSearchParams"),[YZ,GZ,XZ,JZ]=["ReadableStream","Request","Response","Headers"].map(sa),ZZ=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function yu(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let o,a;if(typeof e!="object"&&(e=[e]),Mr(e))for(o=0,a=e.length;o0;)if(a=n[o],t===a.toLowerCase())return a;return null}const os=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,ux=e=>!wr(e)&&e!==os;function Mv(){const{caseless:e,skipUndefined:t}=ux(this)&&this||{},n={},o=(a,l)=>{if(l==="__proto__"||l==="constructor"||l==="prototype")return;const s=e&&ix(n,l)||l;Oc(n[s])&&Oc(a)?n[s]=Mv(n[s],a):Oc(a)?n[s]=Mv({},a):Mr(a)?n[s]=a.slice():(!t||!wr(a))&&(n[s]=a)};for(let a=0,l=arguments.length;a(yu(t,(a,l)=>{n&&po(a)?Object.defineProperty(e,l,{value:ax(a,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,l,{value:a,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:o}),e),eQ=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),tQ=(e,t,n,o)=>{e.prototype=Object.create(t.prototype,o),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},nQ=(e,t,n,o)=>{let a,l,s;const r={};if(t=t||{},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),l=a.length;l-- >0;)s=a[l],(!o||o(s,e,t))&&!r[s]&&(t[s]=e[s],r[s]=!0);e=n!==!1&&Gm(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},oQ=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const o=e.indexOf(t,n);return o!==-1&&o===n},aQ=e=>{if(!e)return null;if(Mr(e))return e;let t=e.length;if(!rx(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},lQ=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Gm(Uint8Array)),sQ=(e,t)=>{const o=(e&&e[sf]).call(e);let a;for(;(a=o.next())&&!a.done;){const l=a.value;t.call(e,l[0],l[1])}},rQ=(e,t)=>{let n;const o=[];for(;(n=e.exec(t))!==null;)o.push(n);return o},iQ=sa("HTMLFormElement"),uQ=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,o,a){return o.toUpperCase()+a}),X0=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),cQ=sa("RegExp"),cx=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),o={};yu(n,(a,l)=>{let s;(s=t(a,l,e))!==!1&&(o[l]=s||a)}),Object.defineProperties(e,o)},dQ=e=>{cx(e,(t,n)=>{if(po(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const o=e[n];if(po(o)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},fQ=(e,t)=>{const n={},o=a=>{a.forEach(l=>{n[l]=!0})};return Mr(e)?o(e):o(String(e).split(t)),n},pQ=()=>{},vQ=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function hQ(e){return!!(e&&po(e.append)&&e[lx]==="FormData"&&e[sf])}const mQ=e=>{const t=new Array(10),n=(o,a)=>{if(bu(o)){if(t.indexOf(o)>=0)return;if(gu(o))return o;if(!("toJSON"in o)){t[a]=o;const l=Mr(o)?[]:{};return yu(o,(s,r)=>{const u=n(s,a+1);!wr(u)&&(l[r]=u)}),t[a]=void 0,l}}return o};return n(e,0)},gQ=sa("AsyncFunction"),bQ=e=>e&&(bu(e)||po(e))&&po(e.then)&&po(e.catch),dx=((e,t)=>e?setImmediate:t?((n,o)=>(os.addEventListener("message",({source:a,data:l})=>{a===os&&l===n&&o.length&&o.shift()()},!1),a=>{o.push(a),os.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",po(os.postMessage)),yQ=typeof queueMicrotask<"u"?queueMicrotask.bind(os):typeof process<"u"&&process.nextTick||dx,wQ=e=>e!=null&&po(e[sf]),xe={isArray:Mr,isArrayBuffer:sx,isBuffer:gu,isFormData:UZ,isArrayBufferView:AZ,isString:_Z,isNumber:rx,isBoolean:LZ,isObject:bu,isPlainObject:Oc,isEmptyObject:DZ,isReadableStream:YZ,isRequest:GZ,isResponse:XZ,isHeaders:JZ,isUndefined:wr,isDate:BZ,isFile:FZ,isReactNativeBlob:VZ,isReactNative:zZ,isBlob:HZ,isRegExp:cQ,isFunction:po,isStream:WZ,isURLSearchParams:qZ,isTypedArray:lQ,isFileList:KZ,forEach:yu,merge:Mv,extend:QZ,trim:ZZ,stripBOM:eQ,inherits:tQ,toFlatObject:nQ,kindOf:rf,kindOfTest:sa,endsWith:oQ,toArray:aQ,forEachEntry:sQ,matchAll:rQ,isHTMLForm:iQ,hasOwnProperty:X0,hasOwnProp:X0,reduceDescriptors:cx,freezeMethods:dQ,toObjectSet:fQ,toCamelCase:uQ,noop:pQ,toFiniteNumber:vQ,findKey:ix,global:os,isContextDefined:ux,isSpecCompliantForm:hQ,toJSONObject:mQ,isAsyncFn:gQ,isThenable:bQ,setImmediate:dx,asap:yQ,isIterable:wQ};let It=class fx extends Error{static from(t,n,o,a,l,s){const r=new fx(t.message,n||t.code,o,a,l);return r.cause=t,r.name=t.name,t.status!=null&&r.status==null&&(r.status=t.status),s&&Object.assign(r,s),r}constructor(t,n,o,a,l){super(t),Object.defineProperty(this,"message",{value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),o&&(this.config=o),a&&(this.request=a),l&&(this.response=l,this.status=l.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:xe.toJSONObject(this.config),code:this.code,status:this.status}}};It.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";It.ERR_BAD_OPTION="ERR_BAD_OPTION";It.ECONNABORTED="ECONNABORTED";It.ETIMEDOUT="ETIMEDOUT";It.ERR_NETWORK="ERR_NETWORK";It.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";It.ERR_DEPRECATED="ERR_DEPRECATED";It.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";It.ERR_BAD_REQUEST="ERR_BAD_REQUEST";It.ERR_CANCELED="ERR_CANCELED";It.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";It.ERR_INVALID_URL="ERR_INVALID_URL";const SQ=null;function Pv(e){return xe.isPlainObject(e)||xe.isArray(e)}function px(e){return xe.endsWith(e,"[]")?e.slice(0,-2):e}function up(e,t,n){return e?e.concat(t).map(function(a,l){return a=px(a),!n&&l?"["+a+"]":a}).join(n?".":""):t}function CQ(e){return xe.isArray(e)&&!e.some(Pv)}const kQ=xe.toFlatObject(xe,{},null,function(t){return/^is[A-Z]/.test(t)});function cf(e,t,n){if(!xe.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=xe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,m){return!xe.isUndefined(m[v])});const o=n.metaTokens,a=n.visitor||d,l=n.dots,s=n.indexes,u=(n.Blob||typeof Blob<"u"&&Blob)&&xe.isSpecCompliantForm(t);if(!xe.isFunction(a))throw new TypeError("visitor must be a function");function c(p){if(p===null)return"";if(xe.isDate(p))return p.toISOString();if(xe.isBoolean(p))return p.toString();if(!u&&xe.isBlob(p))throw new It("Blob is not supported. Use a Buffer instead.");return xe.isArrayBuffer(p)||xe.isTypedArray(p)?u&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function d(p,v,m){let b=p;if(xe.isReactNative(t)&&xe.isReactNativeBlob(p))return t.append(up(m,v,l),c(p)),!1;if(p&&!m&&typeof p=="object"){if(xe.endsWith(v,"{}"))v=o?v:v.slice(0,-2),p=JSON.stringify(p);else if(xe.isArray(p)&&CQ(p)||(xe.isFileList(p)||xe.endsWith(v,"[]"))&&(b=xe.toArray(p)))return v=px(v),b.forEach(function(y,S){!(xe.isUndefined(y)||y===null)&&t.append(s===!0?up([v],S,l):s===null?v:v+"[]",c(y))}),!1}return Pv(p)?!0:(t.append(up(m,v,l),c(p)),!1)}const f=[],h=Object.assign(kQ,{defaultVisitor:d,convertValue:c,isVisitable:Pv});function g(p,v){if(!xe.isUndefined(p)){if(f.indexOf(p)!==-1)throw Error("Circular reference detected in "+v.join("."));f.push(p),xe.forEach(p,function(b,k){(!(xe.isUndefined(b)||b===null)&&a.call(t,b,xe.isString(k)?k.trim():k,v,h))===!0&&g(b,v?v.concat(k):[k])}),f.pop()}}if(!xe.isObject(e))throw new TypeError("data must be an object");return g(e),t}function J0(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(o){return t[o]})}function Xm(e,t){this._pairs=[],e&&cf(e,this,t)}const vx=Xm.prototype;vx.append=function(t,n){this._pairs.push([t,n])};vx.toString=function(t){const n=t?function(o){return t.call(this,o,J0)}:J0;return this._pairs.map(function(a){return n(a[0])+"="+n(a[1])},"").join("&")};function EQ(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function hx(e,t,n){if(!t)return e;const o=n&&n.encode||EQ,a=xe.isFunction(n)?{serialize:n}:n,l=a&&a.serialize;let s;if(l?s=l(t,a):s=xe.isURLSearchParams(t)?t.toString():new Xm(t,a).toString(o),s){const r=e.indexOf("#");r!==-1&&(e=e.slice(0,r)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class Z0{constructor(){this.handlers=[]}use(t,n,o){return this.handlers.push({fulfilled:t,rejected:n,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){xe.forEach(this.handlers,function(o){o!==null&&t(o)})}}const Jm={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},xQ=typeof URLSearchParams<"u"?URLSearchParams:Xm,TQ=typeof FormData<"u"?FormData:null,$Q=typeof Blob<"u"?Blob:null,OQ={isBrowser:!0,classes:{URLSearchParams:xQ,FormData:TQ,Blob:$Q},protocols:["http","https","file","blob","url","data"]},Zm=typeof window<"u"&&typeof document<"u",Av=typeof navigator=="object"&&navigator||void 0,NQ=Zm&&(!Av||["ReactNative","NativeScript","NS"].indexOf(Av.product)<0),RQ=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",IQ=Zm&&window.location.href||"http://localhost",MQ=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Zm,hasStandardBrowserEnv:NQ,hasStandardBrowserWebWorkerEnv:RQ,navigator:Av,origin:IQ},Symbol.toStringTag,{value:"Module"})),qn={...MQ,...OQ};function PQ(e,t){return cf(e,new qn.classes.URLSearchParams,{visitor:function(n,o,a,l){return qn.isNode&&xe.isBuffer(n)?(this.append(o,n.toString("base64")),!1):l.defaultVisitor.apply(this,arguments)},...t})}function AQ(e){return xe.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function _Q(e){const t={},n=Object.keys(e);let o;const a=n.length;let l;for(o=0;o=n.length;return s=!s&&xe.isArray(a)?a.length:s,u?(xe.hasOwnProp(a,s)?a[s]=[a[s],o]:a[s]=o,!r):((!a[s]||!xe.isObject(a[s]))&&(a[s]=[]),t(n,o,a[s],l)&&xe.isArray(a[s])&&(a[s]=_Q(a[s])),!r)}if(xe.isFormData(e)&&xe.isFunction(e.entries)){const n={};return xe.forEachEntry(e,(o,a)=>{t(AQ(o),a,n,0)}),n}return null}function LQ(e,t,n){if(xe.isString(e))try{return(t||JSON.parse)(e),xe.trim(e)}catch(o){if(o.name!=="SyntaxError")throw o}return(n||JSON.stringify)(e)}const wu={transitional:Jm,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const o=n.getContentType()||"",a=o.indexOf("application/json")>-1,l=xe.isObject(t);if(l&&xe.isHTMLForm(t)&&(t=new FormData(t)),xe.isFormData(t))return a?JSON.stringify(mx(t)):t;if(xe.isArrayBuffer(t)||xe.isBuffer(t)||xe.isStream(t)||xe.isFile(t)||xe.isBlob(t)||xe.isReadableStream(t))return t;if(xe.isArrayBufferView(t))return t.buffer;if(xe.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(l){if(o.indexOf("application/x-www-form-urlencoded")>-1)return PQ(t,this.formSerializer).toString();if((r=xe.isFileList(t))||o.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return cf(r?{"files[]":t}:t,u&&new u,this.formSerializer)}}return l||a?(n.setContentType("application/json",!1),LQ(t)):t}],transformResponse:[function(t){const n=this.transitional||wu.transitional,o=n&&n.forcedJSONParsing,a=this.responseType==="json";if(xe.isResponse(t)||xe.isReadableStream(t))return t;if(t&&xe.isString(t)&&(o&&!this.responseType||a)){const s=!(n&&n.silentJSONParsing)&&a;try{return JSON.parse(t,this.parseReviver)}catch(r){if(s)throw r.name==="SyntaxError"?It.from(r,It.ERR_BAD_RESPONSE,this,null,this.response):r}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:qn.classes.FormData,Blob:qn.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};xe.forEach(["delete","get","head","post","put","patch"],e=>{wu.headers[e]={}});const DQ=xe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),BQ=e=>{const t={};let n,o,a;return e&&e.split(` +`||c==="\r"){s=u;continue}if(l.includes(c)){const d=s===-1?o:s;r={pattern:a.slice(u+1,d),start:u+1,end:d,prefix:c,prefixIndex:u,splitIndex:s,selectionEnd:o};break}}return r},VX=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=e.selectionStart!==null?e.selectionStart:0,o=e.selectionEnd!==null?e.selectionEnd:0,a=t.useSelectionEnd?o:n,l=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];if(t.debug){const h=document.querySelector("#input-textarea-caret-position-mirror-div");h?.parentNode&&h.parentNode.removeChild(h)}const s=document.createElement("div");s.id="input-textarea-caret-position-mirror-div",document.body.appendChild(s);const r=s.style,u=window.getComputedStyle(e),c=e.nodeName==="INPUT";r.whiteSpace=c?"nowrap":"pre-wrap",c||(r.wordWrap="break-word"),r.position="absolute",t.debug||(r.visibility="hidden"),l.forEach(h=>{if(c&&h==="lineHeight")if(u.boxSizing==="border-box"){const g=Number.parseInt(u.height),p=Number.parseInt(u.paddingTop)+Number.parseInt(u.paddingBottom)+Number.parseInt(u.borderTopWidth)+Number.parseInt(u.borderBottomWidth),v=p+Number.parseInt(u.lineHeight);g>v?r.lineHeight=`${g-p}px`:g===v?r.lineHeight=u.lineHeight:r.lineHeight="0"}else r.lineHeight=u.height;else r[h]=u[h]}),Vd()?e.scrollHeight>Number.parseInt(u.height)&&(r.overflowY="scroll"):r.overflow="hidden",s.textContent=e.value.slice(0,Math.max(0,a)),c&&s.textContent&&(s.textContent=s.textContent.replace(/\s/g," "));const d=document.createElement("span");d.textContent=e.value.slice(Math.max(0,a))||".",d.style.position="relative",d.style.left=`${-e.scrollLeft}px`,d.style.top=`${-e.scrollTop}px`,s.appendChild(d);const f={top:d.offsetTop+Number.parseInt(u.borderTopWidth),left:d.offsetLeft+Number.parseInt(u.borderLeftWidth),height:Number.parseInt(u.fontSize)*1.5};return t.debug?d.style.backgroundColor="#aaa":document.body.removeChild(s),f.left>=e.clientWidth&&(f.left=e.clientWidth),f},zX=Se({...du,options:{type:G(Array),default:()=>[]},prefix:{type:G([String,Array]),default:"@",validator:e=>Le(e)?e.length===1:e.every(t=>Le(t)&&t.length===1)},split:{type:String,default:" ",validator:e=>e.length===1},filterOption:{type:G([Boolean,Function]),default:()=>BX,validator:e=>e===!1?!0:Fe(e)},placement:{type:G(String),default:"bottom"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:G(Function)},modelValue:String,loading:Boolean,popperClass:Bt.popperClass,popperStyle:Bt.popperStyle,popperOptions:{type:G(Object),default:()=>({})},props:{type:G(Object),default:()=>GE}}),HX={[et]:e=>Le(e),"whole-remove":(e,t)=>Le(e)&&Le(t),input:e=>Le(e),search:(e,t)=>Le(e)&&Le(t),select:(e,t)=>tt(e)&&Le(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},GE={value:"value",label:"label",disabled:"disabled"},KX=Se({options:{type:G(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),WX={select:e=>Le(e.value)},jX=["id","aria-disabled","aria-selected","onMousemove","onClick"];var UX=le({name:"ElMentionDropdown",__name:"mention-dropdown",props:KX,emits:WX,setup(e,{expose:t,emit:n}){const o=e,a=n,l=fe("mention"),{t:s}=yt(),r=P(-1),u=P(),c=P(),d=P(),f=(S,C)=>[l.be("dropdown","item"),l.is("hovering",r.value===C),l.is("disabled",S.disabled||o.disabled)],h=S=>{S.disabled||o.disabled||a("select",S)},g=S=>{r.value=S},p=w(()=>o.disabled||o.options.every(S=>S.disabled)),v=w(()=>o.options[r.value]),m=()=>{!v.value||v.value.disabled||o.disabled||a("select",v.value)},b=S=>{const{options:C}=o;if(C.length===0||p.value)return;S==="next"?(r.value++,r.value===C.length&&(r.value=0)):S==="prev"&&(r.value--,r.value<0&&(r.value=C.length-1));const E=C[r.value];if(E.disabled){b(S);return}Ne(()=>k(E))},k=S=>{const{options:C}=o,E=C.findIndex(O=>O.value===S.value),$=c.value?.[E];if($){const O=d.value?.querySelector?.(`.${l.be("dropdown","wrap")}`);O&&Nh(O,$)}u.value?.handleScroll()};return re(()=>o.options,()=>{p.value||o.options.length===0?r.value=-1:r.value=o.options.findIndex(S=>!S.disabled)},{immediate:!0}),t({hoveringIndex:r,navigateOptions:b,selectHoverOption:m,hoverOption:v}),(S,C)=>(x(),B("div",{ref_key:"dropdownRef",ref:d,class:T(i(l).b("dropdown"))},[S.$slots.header?(x(),B("div",{key:0,class:T(i(l).be("dropdown","header"))},[ee(S.$slots,"header")],2)):te("v-if",!0),rt(Y(i(Jo),{id:e.contentId,ref_key:"scrollbarRef",ref:u,tag:"ul","wrap-class":i(l).be("dropdown","wrap"),"view-class":i(l).be("dropdown","list"),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},{default:J(()=>[(x(!0),B(Ve,null,mt(e.options,(E,$)=>(x(),B("li",{id:`${e.contentId}-${$}`,ref_for:!0,ref_key:"optionRefs",ref:c,key:$,class:T(f(E,$)),role:"option","aria-disabled":E.disabled||e.disabled||void 0,"aria-selected":r.value===$,onMousemove:O=>g($),onClick:Ge(O=>h(E),["stop"])},[ee(S.$slots,"label",{item:E,index:$},()=>[H("span",null,ke(E.label??E.value),1)])],42,jX))),128))]),_:3},8,["id","wrap-class","view-class","aria-label"]),[[Nt,e.options.length>0&&!e.loading]]),e.loading?(x(),B("div",{key:1,class:T(i(l).be("dropdown","loading"))},[ee(S.$slots,"loading",{},()=>[gt(ke(i(s)("el.mention.loading")),1)])],2)):te("v-if",!0),S.$slots.footer?(x(),B("div",{key:2,class:T(i(l).be("dropdown","footer"))},[ee(S.$slots,"footer")],2)):te("v-if",!0)],2))}}),qX=UX,YX=le({name:"ElMention",inheritAttrs:!1,__name:"mention",props:zX,emits:HX,setup(e,{expose:t,emit:n}){const o=e,a=n,l=w(()=>el(o,Object.keys(du))),s=fe("mention"),r=on(),u=_n(),c=P(),d=P(),f=P(),h=P(!1),g=P(),p=P(),v=w(()=>o.showArrow?o.placement:`${o.placement}-start`),m=w(()=>o.showArrow?["bottom","top"]:["bottom-start","top-start"]),b=w(()=>({...GE,...o.props})),k=M=>{const I={label:M[b.value.label],value:M[b.value.value],disabled:M[b.value.disabled]};return{...M,...I}},y=w(()=>o.options.map(k)),S=w(()=>{const{filterOption:M}=o;return!p.value||!M?y.value:y.value.filter(I=>M(p.value.pattern,I))}),C=w(()=>h.value&&(!!S.value.length||o.loading)),E=w(()=>`${u.value}-${f.value?.hoveringIndex}`),$=M=>{a(et,M),a(hn,M),z()},O=M=>{if(c.value?.isComposing)return;const I=Ht(M);switch(I){case we.left:case we.right:z();break;case we.up:case we.down:if(!h.value)return;M.preventDefault(),f.value?.navigateOptions(I===we.up?"prev":"next");break;case we.enter:case we.numpadEnter:if(!h.value){o.type!=="textarea"&&z();return}M.preventDefault(),f.value?.hoverOption?f.value?.selectHoverOption():h.value=!1;break;case we.esc:if(!h.value)return;M.preventDefault(),h.value=!1;break;case we.backspace:if(o.whole&&p.value){const{splitIndex:L,selectionEnd:D,pattern:F,prefixIndex:q,prefix:j}=p.value,X=V();if(!X)return;const Q=X.value,ve=y.value.find(ue=>ue.value===F);if((Fe(o.checkIsWhole)?o.checkIsWhole(F,j):ve)&&L!==-1&&L+1===D){M.preventDefault();const ue=Q.slice(0,q)+Q.slice(L+1);a(et,ue),a(hn,ue),a("whole-remove",F,j);const ge=q;Ne(()=>{X.selectionStart=ge,X.selectionEnd=ge,W()})}}}},{wrapperRef:R}=dl(c,{disabled:r,afterFocus(){z()},beforeBlur(M){return d.value?.isFocusInsideContent(M)},afterBlur(){h.value=!1}}),N=()=>{z()},_=M=>o.options.find(I=>M.value===I[b.value.value]),A=M=>{if(!p.value)return;const I=V();if(!I)return;const L=I.value,{split:D}=o,F=L.slice(p.value.end),q=F.startsWith(D),j=`${M.value}${q?"":D}`,X=L.slice(0,p.value.start)+j+F;a(et,X),a(hn,X),a("select",_(M),p.value.prefix);const Q=p.value.start+j.length+(q?1:0);Ne(()=>{I.selectionStart=Q,I.selectionEnd=Q,I.focus(),W()})},V=()=>o.type==="textarea"?c.value?.textarea:c.value?.input,z=()=>{setTimeout(()=>{U(),W(),Ne(()=>d.value?.updatePopper())},0)},U=()=>{const M=V();if(!M)return;const I=VX(M),L=M.getBoundingClientRect(),D=R.value.getBoundingClientRect();g.value={position:"absolute",width:0,height:`${I.height}px`,left:`${I.left+L.left-D.left}px`,top:`${I.top+L.top-D.top}px`}},W=()=>{const M=V();if(document.activeElement!==M){h.value=!1;return}const{prefix:I,split:L}=o;if(p.value=FX(M,I,L),p.value&&p.value.splitIndex===-1){h.value=!0,a("search",p.value.pattern,p.value.prefix);return}h.value=!1};return t({input:c,tooltip:d,dropdownVisible:C}),(M,I)=>(x(),B("div",{ref_key:"wrapperRef",ref:R,class:T(i(s).b())},[Y(i(Yn),it(it(l.value,M.$attrs),{ref_key:"elInputRef",ref:c,"model-value":e.modelValue,disabled:i(r),role:C.value?"combobox":void 0,"aria-activedescendant":C.value?E.value||"":void 0,"aria-controls":C.value?i(u):void 0,"aria-expanded":C.value||void 0,"aria-label":e.ariaLabel,"aria-autocomplete":C.value?"none":void 0,"aria-haspopup":C.value?"listbox":void 0,onInput:$,onKeydown:O,onMousedown:N}),oo({_:2},[mt(M.$slots,(L,D)=>({name:D,fn:J(F=>[ee(M.$slots,D,Ua(qa(F)))])}))]),1040,["model-value","disabled","role","aria-activedescendant","aria-controls","aria-expanded","aria-label","aria-autocomplete","aria-haspopup"]),Y(i(Rn),{ref_key:"tooltipRef",ref:d,visible:C.value,"popper-class":[i(s).e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,placement:v.value,"fallback-placements":m.value,effect:"light",pure:"",offset:e.offset,"show-arrow":e.showArrow},{default:J(()=>[H("div",{style:Ke(g.value)},null,4)]),content:J(()=>[Y(qX,{ref_key:"dropdownRef",ref:f,options:S.value,disabled:i(r),loading:e.loading,"content-id":i(u),"aria-label":e.ariaLabel,onSelect:A,onClick:I[0]||(I[0]=Ge(L=>c.value?.focus(),["stop"]))},oo({_:2},[mt(M.$slots,(L,D)=>({name:D,fn:J(F=>[ee(M.$slots,D,Ua(qa(F)))])}))]),1032,["options","disabled","loading","content-id","aria-label"])]),_:3},8,["visible","popper-class","popper-style","popper-options","placement","fallback-placements","offset","show-arrow"])],2))}}),GX=YX;const XX=ot(GX),JX=Se({layout:{type:String,default:"horizontal",values:["horizontal","vertical"]},lazy:Boolean}),ZX={resizeStart:(e,t)=>!0,resize:(e,t)=>!0,resizeEnd:(e,t)=>!0,collapse:(e,t,n)=>!0},QX=Se({min:{type:[String,Number]},max:{type:[String,Number]},size:{type:[String,Number]},resizable:{type:Boolean,default:!0},collapsible:Boolean}),eJ={"update:size":e=>typeof e=="number"||typeof e=="string"};function tJ(e){const t=P(),{width:n,height:o}=Ip(t);return{containerEl:t,containerSize:w(()=>e.value==="horizontal"?n.value:o.value)}}function Km(e){return Number(e.slice(0,-1))/100}function Wm(e){return Number(e.slice(0,-2))}function jm(e){return Le(e)&&e.endsWith("%")}function Um(e){return Le(e)&&e.endsWith("px")}function nJ(e,t){const n=w(()=>e.value.map(s=>s.size)),o=w(()=>e.value.length),a=P([]);re([n,o,t],()=>{let s=[],r=0;for(let c=0;cc+(d||0),0);if(u>1||!r){const c=1/u;s=s.map(d=>d===void 0?0:d*c)}else{const c=(1-u)/r;s=s.map(d=>d===void 0?c:d)}a.value=s});const l=s=>s*t.value;return{percentSizes:a,pxSizes:w(()=>a.value.map(l))}}function oJ(e,t,n,o){const a=m=>m*t.value||0;function l(m,b){return jm(m)?a(Km(m)):Um(m)?Wm(m):m??b}const s=P(0),r=P(null);let u=[],c=At;const d=w(()=>e.value.map(m=>[m.min,m.max]));re(o,()=>{if(s.value){const m=new MouseEvent("mouseup",{bubbles:!0});window.dispatchEvent(m)}});const f=m=>{s.value=0,r.value={index:m,confirmed:!1},u=n.value},h=(m,b)=>{let k=null;if((!r.value||!r.value.confirmed)&&b!==0){if(b>0)k=m,r.value={index:m,confirmed:!0};else for(let _=m;_>=0;_-=1)if(u[_]>0){k=_,r.value={index:_,confirmed:!0};break}}const y=k??r.value?.index??m,S=[...u],C=y+1,E=l(d.value[y][0],0),$=l(d.value[C][0],0),O=l(d.value[y][1],t.value||0),R=l(d.value[C][1],t.value||0);let N=b;S[y]+NO&&(N=O-S[y]),S[C]-N>R&&(N=S[C]-R),S[y]+=N,S[C]-=N,s.value=N,c=()=>{e.value.forEach((_,A)=>{_.size=S[A]}),c=At},o.value||c()},g=()=>{o.value&&c(),s.value=0,r.value=null,u=[]},p=[];return{lazyOffset:s,onMoveStart:f,onMoving:h,onMoveEnd:g,movingIndex:r,onCollapse:(m,b)=>{p.length||p.push(...n.value);const k=n.value,y=b==="start"?m:m+1,S=b==="start"?m+1:m,C=k[y],E=k[S];if(C!==0&&E!==0)k[y]=0,k[S]+=C,p[m]=C;else{const $=C+E,O=p[m],R=$-O;k[S]=O,k[y]=R}e.value.forEach(($,O)=>{$.size=k[O]})}}}const XE=Symbol("splitterRootContextKey");var aJ=le({name:"ElSplitter",__name:"splitter",props:JX,emits:ZX,setup(e,{emit:t}){const n=fe("splitter"),o=t,a=e,l=Dt(a,"layout"),s=Dt(a,"lazy"),{containerEl:r,containerSize:u}=tJ(l),{removeChild:c,children:d,addChild:f,ChildrenSorter:h}=qd(ut(),"ElSplitterPanel");re(d,()=>{m.value=null,d.value.forEach((N,_)=>{N.setIndex(_)})});const{percentSizes:g,pxSizes:p}=nJ(d,u),{lazyOffset:v,movingIndex:m,onMoveStart:b,onMoving:k,onMoveEnd:y,onCollapse:S}=oJ(d,u,p,s),C=w(()=>({[n.cssVarBlockName("bar-offset")]:s.value?`${v.value}px`:void 0}));return bt(XE,Mt({panels:d,percentSizes:g,pxSizes:p,layout:l,lazy:s,movingIndex:m,containerSize:u,onMoveStart:N=>{b(N),o("resizeStart",N,p.value)},onMoving:(N,_)=>{k(N,_),s.value||o("resize",N,p.value)},onMoveEnd:async N=>{y(),await Ne(),o("resizeEnd",N,p.value)},onCollapse:(N,_)=>{S(N,_),o("collapse",N,_,p.value)},registerPanel:f,unregisterPanel:c})),(N,_)=>(x(),B("div",{ref_key:"containerEl",ref:r,class:T([i(n).b(),i(n).e(l.value)]),style:Ke(C.value)},[ee(N.$slots,"default"),Y(i(h)),te(" Prevent iframe touch events from breaking "),i(m)?(x(),B("div",{key:0,class:T([i(n).e("mask"),i(n).e(`mask-${l.value}`)])},null,2)):te("v-if",!0)],6))}}),lJ=aJ;function sJ(e){return e&&tt(e)?e:{start:!!e,end:!!e}}function K0(e,t,n,o){return!!(e?.collapsible.end&&t>0||n?.collapsible.start&&o===0&&t>0)}var rJ=le({name:"ElSplitterBar",__name:"split-bar",props:{index:{type:Number,required:!0},layout:{type:String,values:["horizontal","vertical"],default:"horizontal"},resizable:{type:Boolean,default:!0},lazy:Boolean,startCollapsible:Boolean,endCollapsible:Boolean},emits:["moveStart","moving","moveEnd","collapse"],setup(e,{emit:t}){const n=fe("splitter-bar"),o=e,a=t,l=w(()=>o.layout==="horizontal"),s=w(()=>l.value?{width:0}:{height:0}),r=w(()=>({width:l.value?"16px":"100%",height:l.value?"100%":"16px",cursor:o.resizable?l.value?"ew-resize":"ns-resize":"auto",touchAction:"none"})),u=w(()=>{const k=n.e("dragger");return{[`${k}-horizontal`]:l.value,[`${k}-vertical`]:!l.value,[`${k}-active`]:!!c.value}}),c=P(null),d=k=>{o.resizable&&(c.value=[k.pageX,k.pageY],a("moveStart",o.index),window.addEventListener("mouseup",p),window.addEventListener("mousemove",h))},f=k=>{if(o.resizable&&k.touches.length===1){k.preventDefault();const y=k.touches[0];c.value=[y.pageX,y.pageY],a("moveStart",o.index),window.addEventListener("touchend",v),window.addEventListener("touchmove",g)}},h=k=>{const{pageX:y,pageY:S}=k,C=y-c.value[0],E=S-c.value[1],$=l.value?C:E;a("moving",o.index,$)},g=k=>{if(k.touches.length===1){k.preventDefault();const y=k.touches[0],S=y.pageX-c.value[0],C=y.pageY-c.value[1],E=l.value?S:C;a("moving",o.index,E)}},p=()=>{c.value=null,window.removeEventListener("mouseup",p),window.removeEventListener("mousemove",h),a("moveEnd",o.index)},v=()=>{c.value=null,window.removeEventListener("touchend",v),window.removeEventListener("touchmove",g),a("moveEnd",o.index)},m=w(()=>l.value?ol:Yd),b=w(()=>l.value?Xn:Aa);return(k,y)=>(x(),B("div",{class:T([i(n).b()]),style:Ke(s.value)},[e.startCollapsible?(x(),B("div",{key:0,class:T([i(n).e("collapse-icon"),i(n).e(`${e.layout}-collapse-icon-start`)]),onClick:y[0]||(y[0]=S=>a("collapse",e.index,"start"))},[ee(k.$slots,"start-collapsible",{},()=>[(x(),ae(lt(m.value),{style:{width:"12px",height:"12px"}}))])],2)):te("v-if",!0),H("div",{class:T([i(n).e("dragger"),u.value,i(n).is("disabled",!e.resizable),i(n).is("lazy",e.resizable&&e.lazy)]),style:Ke(r.value),onMousedown:d,onTouchstart:f},null,38),e.endCollapsible?(x(),B("div",{key:1,class:T([i(n).e("collapse-icon"),i(n).e(`${e.layout}-collapse-icon-end`)]),onClick:y[1]||(y[1]=S=>a("collapse",e.index,"end"))},[ee(k.$slots,"end-collapsible",{},()=>[(x(),ae(lt(b.value),{style:{width:"12px",height:"12px"}}))])],2)):te("v-if",!0)],6))}}),iJ=rJ;const W0="ElSplitterPanel";var uJ=le({name:W0,__name:"split-panel",props:QX,emits:eJ,setup(e,{expose:t,emit:n}){const o=fe("splitter-panel"),a=e,l=n,s=Ae(XE);s||Jt(W0,"usage: ");const{panels:r,layout:u,lazy:c,containerSize:d,pxSizes:f}=$n(s),{registerPanel:h,unregisterPanel:g,onCollapse:p,onMoveEnd:v,onMoveStart:m,onMoving:b}=s,k=P(),y=ut(),S=y.uid,C=P(0),E=w(()=>r.value[C.value]),$=I=>{C.value=I},O=w(()=>E.value?f.value[C.value]??0:0),R=w(()=>E.value?f.value[C.value+1]??0:0),N=w(()=>E.value?r.value[C.value+1]:null),_=w(()=>N.value?a.resizable&&N.value?.resizable&&(O.value!==0||!a.min)&&(R.value!==0||!N.value.min):!1),A=w(()=>E.value?C.value!==r.value.length-1:!1),V=w(()=>K0(E.value,O.value,N.value,R.value)),z=w(()=>K0(N.value,R.value,E.value,O.value));function U(I){return jm(I)?Km(I)*d.value||0:Um(I)?Wm(I):I??0}let W=!1;re(()=>a.size,()=>{if(!W&&E.value){if(!d.value){E.value.size=a.size;return}const I=U(a.size),L=U(a.max),D=U(a.min),F=Math.min(Math.max(I,D||0),L||I);F!==I&&l("update:size",F),E.value.size=F}}),re(()=>E.value?.size,I=>{I!==a.size&&(W=!0,l("update:size",I),Ne(()=>W=!1))}),re(()=>a.resizable,I=>{E.value&&(E.value.resizable=I)});const M=Mt({uid:S,getVnode:()=>y.vnode,setIndex:$,...a,collapsible:w(()=>sJ(a.collapsible))});return h(M),_t(()=>g(M)),t({splitterPanelRef:k}),(I,L)=>(x(),B(Ve,null,[H("div",it({ref_key:"panelEl",ref:k,class:[i(o).b()],style:{flexBasis:`${O.value}px`}},I.$attrs),[ee(I.$slots,"default")],16),A.value?(x(),ae(iJ,{key:0,index:C.value,layout:i(u),lazy:i(c),resizable:_.value,"start-collapsible":V.value,"end-collapsible":z.value,onMoveStart:i(m),onMoving:i(b),onMoveEnd:i(v),onCollapse:i(p)},{"start-collapsible":J(()=>[ee(I.$slots,"start-collapsible")]),"end-collapsible":J(()=>[ee(I.$slots,"end-collapsible")]),_:3},8,["index","layout","lazy","resizable","start-collapsible","end-collapsible","onMoveStart","onMoving","onMoveEnd","onCollapse"])):te("v-if",!0)],64))}}),JE=uJ;const cJ=ot(lJ,{SplitPanel:JE}),dJ=Zt(JE),yo="ElInfiniteScroll",fJ=50,pJ=200,vJ=0,hJ={delay:{type:Number,default:pJ},distance:{type:Number,default:vJ},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},qm=(e,t)=>Object.entries(hJ).reduce((n,[o,a])=>{const{type:l,default:s}=a,r=e.getAttribute(`infinite-scroll-${o}`);let u=t[r]??r??s;return u=u==="false"?!1:u,u=l(u),n[o]=Number.isNaN(u)?s:u,n},{}),ZE=e=>{const{observer:t}=e[yo];t&&(t.disconnect(),delete e[yo].observer)},mJ=(e,t)=>{const{container:n,containerEl:o,instance:a,observer:l,lastScrollTop:s}=e[yo],{disabled:r,distance:u}=qm(e,a),{clientHeight:c,scrollHeight:d,scrollTop:f}=o,h=f-s;if(e[yo].lastScrollTop=f,l||r||h<0)return;let g=!1;if(n===e)g=d-(c+f)<=u;else{const{clientTop:p,scrollHeight:v}=e,m=iv(e,o);g=f+c>=m+p+v-u}g&&t.call(a)};function ip(e,t){const{containerEl:n,instance:o}=e[yo],{disabled:a}=qm(e,o);a||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(o):ZE(e))}const gJ={async mounted(e,t){const{instance:n,value:o}=t;Sa({scope:yo,from:"the directive v-infinite-scroll",replacement:"the el-scrollbar infinite scroll",version:"3.0.0",ref:"https://element-plus.org/en-US/component/scrollbar#infinite-scroll"},!0),Fe(o)||Jt(yo,"'v-infinite-scroll' binding value must be a function"),await Ne();const{delay:a,immediate:l}=qm(e,n),s=Oh(e,!0),r=s===window?document.documentElement:s,u=El(mJ.bind(null,e,o),a);if(s){if(e[yo]={instance:n,container:s,containerEl:r,delay:a,cb:o,onScroll:u,lastScrollTop:r.scrollTop},l){const c=new MutationObserver(El(ip.bind(null,e,o),fJ));e[yo].observer=c,c.observe(e,{childList:!0,subtree:!0}),ip(e,o)}s.addEventListener("scroll",u)}},unmounted(e){if(!e[yo])return;const{container:t,onScroll:n}=e[yo];t?.removeEventListener("scroll",n),ZE(e)},async updated(e){if(!e[yo])await Ne();else{const{containerEl:t,cb:n,observer:o}=e[yo];t.clientHeight&&o&&ip(e,n)}}},Iv=gJ;Iv.install=e=>{e.directive("InfiniteScroll",Iv)};const bJ=Iv;function yJ(e,t){let n;const o=P(!1),a=Mt({...e,originalPosition:"",originalOverflow:"",visible:!1});function l(h){a.text=h}function s(){const h=a.parent,g=f.ns;if(!h.vLoadingAddClassList){let p=h.getAttribute("loading-number");p=Number.parseInt(p)-1,p?h.setAttribute("loading-number",p.toString()):(Gn(h,g.bm("parent","relative")),h.removeAttribute("loading-number")),Gn(h,g.bm("parent","hidden"))}r(),d.unmount()}function r(){f.$el?.parentNode?.removeChild(f.$el)}function u(){e.beforeClose&&!e.beforeClose()||(o.value=!0,clearTimeout(n),n=setTimeout(c,400),a.visible=!1,e.closed?.())}function c(){if(!o.value)return;const h=a.parent;o.value=!1,h.vLoadingAddClassList=void 0,s()}const d=Y$(le({name:"ElLoading",setup(h,{expose:g}){const{ns:p,zIndex:v}=Zd("loading");return g({ns:p,zIndex:v}),()=>{const m=a.spinner||a.svg,b=qe("svg",{class:"circular",viewBox:a.svgViewBox?a.svgViewBox:"0 0 50 50",...m?{innerHTML:m}:{}},[qe("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),k=a.text?qe("p",{class:p.b("text")},[a.text]):void 0;return qe(An,{name:p.b("fade"),onAfterLeave:c},{default:J(()=>[rt(Y("div",{style:{backgroundColor:a.background||""},class:[p.b("mask"),a.customClass,p.is("fullscreen",a.fullscreen)]},[qe("div",{class:p.b("spinner")},[b,k])]),[[Nt,a.visible]])])})}}}));Object.assign(d._context,t??{});const f=d.mount(document.createElement("div"));return{...$n(a),setText:l,removeElLoadingChild:r,close:u,handleAfterLeave:c,vm:f,get $el(){return f.$el}}}let Xu;const er=function(e={},t){if(!Rt)return;const n=wJ(e);if(n.fullscreen&&Xu)return Xu;const o=yJ({...n,closed:()=>{n.closed?.(),n.fullscreen&&(Xu=void 0)}},t??er._context);SJ(n,n.parent,o),j0(n,n.parent,o),n.parent.vLoadingAddClassList=()=>j0(n,n.parent,o);let a=n.parent.getAttribute("loading-number");return a?a=`${Number.parseInt(a)+1}`:a="1",n.parent.setAttribute("loading-number",a),n.parent.appendChild(o.$el),Ne(()=>o.visible.value=n.visible),n.fullscreen&&(Xu=o),o},wJ=e=>{let t;return Le(e.target)?t=document.querySelector(e.target)??document.body:t=e.target||document.body,{parent:t===document.body||e.body?document.body:t,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:t===document.body&&(e.fullscreen??!0),lock:e.lock??!1,customClass:e.customClass||"",visible:e.visible??!0,beforeClose:e.beforeClose,closed:e.closed,target:t}},SJ=async(e,t,n)=>{const{nextZIndex:o}=n.vm.zIndex||n.vm._.exposed.zIndex,a={};if(e.fullscreen)n.originalPosition.value=Ka(document.body,"position"),n.originalOverflow.value=Ka(document.body,"overflow"),a.zIndex=o();else if(e.parent===document.body){n.originalPosition.value=Ka(document.body,"position"),await Ne();for(const l of["top","left"]){const s=l==="top"?"scrollTop":"scrollLeft";a[l]=`${e.target.getBoundingClientRect()[l]+document.body[s]+document.documentElement[s]-Number.parseInt(Ka(document.body,`margin-${l}`),10)}px`}for(const l of["height","width"])a[l]=`${e.target.getBoundingClientRect()[l]}px`}else n.originalPosition.value=Ka(t,"position");for(const[l,s]of Object.entries(a))n.$el.style[l]=s},j0=(e,t,n)=>{const o=n.vm.ns||n.vm._.exposed.ns;["absolute","fixed","sticky"].includes(n.originalPosition.value)?Gn(t,o.bm("parent","relative")):Io(t,o.bm("parent","relative")),e.fullscreen&&e.lock?Io(t,o.bm("parent","hidden")):Gn(t,o.bm("parent","hidden"))};er._context=null;const qr=Symbol("ElLoading"),Ul=e=>`element-loading-${ll(e)}`,U0=(e,t)=>{const n=t.instance,o=c=>tt(t.value)?t.value[c]:void 0,a=c=>P(Le(c)&&n?.[c]||c),l=c=>a(o(c)||e.getAttribute(Ul(c))),s=o("fullscreen")??t.modifiers.fullscreen,r={text:l("text"),svg:l("svg"),svgViewBox:l("svgViewBox"),spinner:l("spinner"),background:l("background"),customClass:l("customClass"),fullscreen:s,target:o("target")??(s?void 0:e),body:o("body")??t.modifiers.body,lock:o("lock")??t.modifiers.lock},u=er(r);u._context=ui._context,e[qr]={options:r,instance:u}},CJ=(e,t)=>{for(const n of Object.keys(e))Yt(e[n])&&(e[n].value=t[n])},ui={mounted(e,t){t.value&&U0(e,t)},updated(e,t){const n=e[qr];if(!t.value){n?.instance.close(),e[qr]=null;return}n?CJ(n.options,tt(t.value)?t.value:{text:e.getAttribute(Ul("text")),svg:e.getAttribute(Ul("svg")),svgViewBox:e.getAttribute(Ul("svgViewBox")),spinner:e.getAttribute(Ul("spinner")),background:e.getAttribute(Ul("background")),customClass:e.getAttribute(Ul("customClass"))}):U0(e,t)},unmounted(e){e[qr]?.instance.close(),e[qr]=null}};ui._context=null;const kJ={install(e){er._context=e._context,ui._context=e._context,e.directive("loading",ui),e.config.globalProperties.$loading=er},directive:ui,service:er},QE=["primary","success","info","warning","error"],ex=["top","top-left","top-right","bottom","bottom-left","bottom-right"],tr="top",Vn=tn({customClass:"",dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,placement:void 0,zIndex:0,grouping:!1,repeatNum:1,appendTo:Rt?document.body:void 0}),EJ=Se({customClass:{type:String,default:Vn.customClass},dangerouslyUseHTMLString:{type:Boolean,default:Vn.dangerouslyUseHTMLString},duration:{type:Number,default:Vn.duration},icon:{type:Vt,default:Vn.icon},id:{type:String,default:Vn.id},message:{type:G([String,Object,Function]),default:Vn.message},onClose:{type:G(Function),default:Vn.onClose},showClose:{type:Boolean,default:Vn.showClose},type:{type:String,values:QE,default:Vn.type},plain:{type:Boolean,default:Vn.plain},offset:{type:Number,default:Vn.offset},placement:{type:String,values:ex,default:Vn.placement},zIndex:{type:Number,default:Vn.zIndex},grouping:{type:Boolean,default:Vn.grouping},repeatNum:{type:Number,default:Vn.repeatNum}}),xJ={destroy:()=>!0},Wo=Uv({}),TJ=e=>(Wo[e]||(Wo[e]=Uv([])),Wo[e]),$J=(e,t)=>{const n=Wo[t]||[],o=n.findIndex(s=>s.id===e),a=n[o];let l;return o>0&&(l=n[o-1]),{current:a,prev:l}},OJ=(e,t)=>{const{prev:n}=$J(e,t);return n?n.vm.exposed.bottom.value:0},NJ=(e,t,n)=>(Wo[n]||[]).findIndex(o=>o.id===e)>0?16:t,RJ=["id"],IJ=["innerHTML"];var MJ=le({name:"ElMessage",__name:"message",props:EJ,emits:xJ,setup(e,{expose:t,emit:n}){const{Close:o}=qh,a=e,l=n,s=P(!1),{ns:r,zIndex:u}=Zd("message"),{currentZIndex:c,nextZIndex:d}=u,f=P(),h=P(!1),g=P(0);let p;const v=w(()=>a.type?a.type==="error"?"danger":a.type:"info"),m=w(()=>{const V=a.type;return{[r.bm("icon",V)]:V&&_l[V]}}),b=w(()=>a.icon||_l[a.type]||""),k=w(()=>a.placement||tr),y=w(()=>OJ(a.id,k.value)),S=w(()=>NJ(a.id,a.offset,k.value)+y.value),C=w(()=>g.value+S.value),E=w(()=>k.value.includes("left")?r.is("left"):k.value.includes("right")?r.is("right"):r.is("center")),$=w(()=>k.value.startsWith("top")?"top":"bottom"),O=w(()=>({[$.value]:`${S.value}px`,zIndex:c.value}));function R(){a.duration!==0&&({stop:p}=rr(()=>{_()},a.duration))}function N(){p?.()}function _(){h.value=!1,Ne(()=>{s.value||(a.onClose?.(),l("destroy"))})}function A(V){Ht(V)===we.esc&&_()}return dt(()=>{R(),d(),h.value=!0}),re(()=>a.repeatNum,()=>{N(),R()}),Lt(document,"keydown",A),Gt(f,()=>{g.value=f.value.getBoundingClientRect().height}),t({visible:h,bottom:C,close:_}),(V,z)=>(x(),ae(An,{name:i(r).b("fade"),onBeforeEnter:z[0]||(z[0]=U=>s.value=!0),onBeforeLeave:e.onClose,onAfterLeave:z[1]||(z[1]=U=>V.$emit("destroy")),persisted:""},{default:J(()=>[rt(H("div",{id:e.id,ref_key:"messageRef",ref:f,class:T([i(r).b(),{[i(r).m(e.type)]:e.type},i(r).is("closable",e.showClose),i(r).is("plain",e.plain),i(r).is("bottom",$.value==="bottom"),E.value,e.customClass]),style:Ke(O.value),role:"alert",onMouseenter:N,onMouseleave:R},[e.repeatNum>1?(x(),ae(i(JC),{key:0,value:e.repeatNum,type:v.value,class:T(i(r).e("badge"))},null,8,["value","type","class"])):te("v-if",!0),b.value?(x(),ae(i(De),{key:1,class:T([i(r).e("icon"),m.value])},{default:J(()=>[(x(),ae(lt(b.value)))]),_:1},8,["class"])):te("v-if",!0),ee(V.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),B(Ve,{key:1},[te(" Caution here, message could've been compromised, never use user's input as message "),H("p",{class:T(i(r).e("content")),innerHTML:e.message},null,10,IJ)],2112)):(x(),B("p",{key:0,class:T(i(r).e("content"))},ke(e.message),3))]),e.showClose?(x(),ae(i(De),{key:2,class:T(i(r).e("closeBtn")),onClick:Ge(_,["stop"])},{default:J(()=>[Y(i(o))]),_:1},8,["class"])):te("v-if",!0)],46,RJ),[[Nt,h.value]])]),_:3},8,["name","onBeforeLeave"]))}}),PJ=MJ;let AJ=1;const _J=e=>{if(!e.appendTo)e.appendTo=document.body;else if(Le(e.appendTo)){let t=document.querySelector(e.appendTo);io(t)||(ct("ElMessage","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body),e.appendTo=t}},LJ=e=>{!e.placement&&Le(Kn.placement)&&Kn.placement&&(e.placement=Kn.placement),e.placement||(e.placement=tr),ex.includes(e.placement)||(ct("ElMessage",`Invalid placement: ${e.placement}. Falling back to '${tr}'.`),e.placement=tr)},tx=e=>{const t=!e||Le(e)||Kt(e)||Fe(e)?{message:e}:e,n={...Vn,...t};return _J(n),LJ(n),Ft(Kn.grouping)&&!n.grouping&&(n.grouping=Kn.grouping),He(Kn.duration)&&n.duration===3e3&&(n.duration=Kn.duration),He(Kn.offset)&&n.offset===16&&(n.offset=Kn.offset),Ft(Kn.showClose)&&!n.showClose&&(n.showClose=Kn.showClose),Ft(Kn.plain)&&!n.plain&&(n.plain=Kn.plain),n},DJ=e=>{const t=Wo[e.props.placement||tr],n=t.indexOf(e);if(n===-1)return;t.splice(n,1);const{handler:o}=e;o.close()},BJ=({appendTo:e,...t},n)=>{const o=`message_${AJ++}`,a=t.onClose,l=document.createElement("div"),s={...t,id:o,onClose:()=>{a?.(),DJ(c)},onDestroy:()=>{Il(null,l)}},r=Y(PJ,s,Fe(s.message)||Kt(s.message)?{default:Fe(s.message)?s.message:()=>s.message}:null);r.appContext=n||ys._context,Il(r,l),e.appendChild(l.firstElementChild);const u=r.component,c={id:o,vnode:r,vm:u,handler:{close:()=>{u.exposed.close()}},props:r.component.props};return c},ys=(e={},t)=>{if(!Rt)return{close:()=>{}};const n=tx(e),o=TJ(n.placement||tr);if(n.grouping&&o.length){const l=o.find(({vnode:s})=>s.props?.message===n.message);if(l)return l.props.repeatNum+=1,l.props.type=n.type,l.handler}if(He(Kn.max)&&o.length>=Kn.max)return{close:()=>{}};const a=BJ(n,t);return o.push(a),a.handler};QE.forEach(e=>{ys[e]=(t={},n)=>ys({...tx(t),type:e},n)});function FJ(e){for(const t in Wo)if($t(Wo,t)){const n=[...Wo[t]];for(const o of n)(!e||e===o.props.type)&&o.handler.close()}}function VJ(e){Wo[e]&&[...Wo[e]].forEach(t=>t.handler.close())}ys.closeAll=FJ;ys.closeAllByPlacement=VJ;ys._context=null;const zJ=TC(ys,"$message");var HJ=le({name:"ElMessageBox",directives:{TrapFocus:r8},components:{ElButton:xn,ElFocusTrap:Nr,ElInput:Yn,ElOverlay:mm,ElIcon:De,...qh},inheritAttrs:!1,props:{buttonSize:{type:String,validator:nE},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:a,size:l}=Zd("message-box",w(()=>e.buttonSize)),{t:s}=n,{nextZIndex:r}=o,u=P(!1),c=Mt({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",cancelButtonType:"",confirmButtonType:"primary",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:wa(Ra),cancelButtonLoadingIcon:wa(Ra),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:r()}),d=w(()=>{const U=c.type;return{[a.bm("icon",U)]:U&&_l[U]}}),f=_n(),h=_n(),g=w(()=>{const U=c.type;return c.icon||U&&_l[U]||""}),p=w(()=>!!c.message),v=P(),m=P(),b=P(),k=P(),y=P(),S=w(()=>c.confirmButtonClass);re(()=>c.inputValue,async U=>{await Ne(),e.boxType==="prompt"&&U&&_()},{immediate:!0}),re(()=>u.value,U=>{U&&(e.boxType!=="prompt"&&(c.autofocus?b.value=y.value?.$el??v.value:b.value=v.value),c.zIndex=r()),e.boxType==="prompt"&&(U?Ne().then(()=>{k.value&&k.value.$el&&(c.autofocus?b.value=A()??v.value:b.value=v.value)}):(c.editorErrorMessage="",c.validateError=!1))});const{isDragging:C}=HS(v,m,w(()=>e.draggable),w(()=>e.overflow));dt(async()=>{await Ne(),e.closeOnHashChange&&window.addEventListener("hashchange",E)}),_t(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",E)});function E(){u.value&&(u.value=!1,Ne(()=>{c.action&&t("action",c.action)}))}const $=()=>{e.closeOnClickModal&&N(c.distinguishCancelAndClose?"close":"cancel")},O=Bh($),R=U=>{if(c.inputType!=="textarea"&&!k.value?.isComposing)return U.preventDefault(),N("confirm")},N=U=>{e.boxType==="prompt"&&U==="confirm"&&!_()||(c.action=U,c.beforeClose?c.beforeClose?.(U,c,E):E())},_=()=>{if(e.boxType==="prompt"){const U=c.inputPattern;if(U&&!U.test(c.inputValue||""))return c.editorErrorMessage=c.inputErrorMessage||s("el.messagebox.error"),c.validateError=!0,!1;const W=c.inputValidator;if(Fe(W)){const M=W(c.inputValue);if(M===!1)return c.editorErrorMessage=c.inputErrorMessage||s("el.messagebox.error"),c.validateError=!0,!1;if(Le(M))return c.editorErrorMessage=M,c.validateError=!0,!1}}return c.editorErrorMessage="",c.validateError=!1,!0},A=()=>{const U=k.value?.$refs;return U?.input??U?.textarea},V=()=>{N("close")},z=()=>{e.closeOnPressEscape&&V()};return e.lockScroll&&zd(u,{ns:a}),{...$n(c),ns:a,overlayEvent:O,visible:u,hasMessage:p,typeClass:d,contentId:f,inputId:h,btnSize:l,iconComponent:g,confirmButtonClasses:S,rootRef:v,focusStartRef:b,headerRef:m,inputRef:k,isDragging:C,confirmRef:y,doClose:E,handleClose:V,onCloseRequested:z,handleWrapperClick:$,handleInputEnter:R,handleAction:N,t:s}}});const KJ=["aria-label","aria-describedby"],WJ=["aria-label"],jJ=["id"];function UJ(e,t,n,o,a,l){const s=Ot("el-icon"),r=Ot("el-input"),u=Ot("el-button"),c=Ot("el-focus-trap"),d=Ot("el-overlay");return x(),ae(An,{name:"fade-in-linear",onAfterLeave:t[11]||(t[11]=f=>e.$emit("vanish")),persisted:""},{default:J(()=>[rt(Y(d,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:J(()=>[H("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:T(`${e.ns.namespace.value}-overlay-message-box`),onClick:t[8]||(t[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:t[9]||(t[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:t[10]||(t[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[Y(c,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:J(()=>[H("div",{ref:"rootRef",class:T([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:Ke(e.customStyle),tabindex:"-1",onClick:t[7]||(t[7]=Ge(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(x(),B("div",{key:0,ref:"headerRef",class:T([e.ns.e("header"),{"show-close":e.showClose}])},[H("div",{class:T(e.ns.e("title"))},[e.iconComponent&&e.center?(x(),ae(s,{key:0,class:T([e.ns.e("status"),e.typeClass])},{default:J(()=>[(x(),ae(lt(e.iconComponent)))]),_:1},8,["class"])):te("v-if",!0),H("span",null,ke(e.title),1)],2),e.showClose?(x(),B("button",{key:0,type:"button",class:T(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:t[0]||(t[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:t[1]||(t[1]=Qt(Ge(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[Y(s,{class:T(e.ns.e("close"))},{default:J(()=>[(x(),ae(lt(e.closeIcon||"close")))]),_:1},8,["class"])],42,WJ)):te("v-if",!0)],2)):te("v-if",!0),H("div",{id:e.contentId,class:T(e.ns.e("content"))},[H("div",{class:T(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(x(),ae(s,{key:0,class:T([e.ns.e("status"),e.typeClass])},{default:J(()=>[(x(),ae(lt(e.iconComponent)))]),_:1},8,["class"])):te("v-if",!0),e.hasMessage?(x(),B("div",{key:1,class:T(e.ns.e("message"))},[ee(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),ae(lt(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(x(),ae(lt(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:ke(e.message)},null,8,["for","textContent"]))])],2)):te("v-if",!0)],2),rt(H("div",{class:T(e.ns.e("input"))},[Y(r,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t[2]||(t[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:T({invalid:e.validateError}),onKeydown:Qt(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),H("div",{class:T(e.ns.e("errormsg")),style:Ke({visibility:e.editorErrorMessage?"visible":"hidden"})},ke(e.editorErrorMessage),7)],2),[[Nt,e.showInput]])],10,jJ),H("div",{class:T(e.ns.e("btns"))},[e.showCancelButton?(x(),ae(u,{key:0,type:e.cancelButtonType==="text"?"":e.cancelButtonType,text:e.cancelButtonType==="text",loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:T([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t[3]||(t[3]=f=>e.handleAction("cancel")),onKeydown:t[4]||(t[4]=Qt(Ge(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:J(()=>[gt(ke(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","size"])):te("v-if",!0),rt(Y(u,{ref:"confirmRef",type:e.confirmButtonType==="text"?"":e.confirmButtonType,text:e.confirmButtonType==="text",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:T([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t[5]||(t[5]=f=>e.handleAction("confirm")),onKeydown:t[6]||(t[6]=Qt(Ge(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:J(()=>[gt(ke(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","disabled","size"]),[[Nt,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,KJ)]),_:3},8,["z-index","overlay-class","mask"]),[[Nt,e.visible]])]),_:3})}var qJ=Sn(HJ,[["render",UJ]]);const Fi=new Map,YJ=e=>{let t=document.body;return e.appendTo&&(Le(e.appendTo)&&(t=document.querySelector(e.appendTo)),io(e.appendTo)&&(t=e.appendTo),io(t)||(ct("ElMessageBox","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body)),t},GJ=(e,t,n=null)=>{const o=Y(qJ,e,Fe(e.message)||Kt(e.message)?{default:Fe(e.message)?e.message:()=>e.message}:null);return o.appContext=n,Il(o,t),YJ(e).appendChild(t.firstElementChild),o.component},XJ=()=>document.createElement("div"),JJ=(e,t)=>{const n=XJ();e.onVanish=()=>{Il(null,n),Fi.delete(a)},e.onAction=l=>{const s=Fi.get(a);let r;e.showInput?r={value:a.inputValue,action:l}:r=l,e.callback?e.callback(r,o.proxy):l==="cancel"||l==="close"?e.distinguishCancelAndClose&&l!=="cancel"?s.reject("close"):s.reject("cancel"):s.resolve(r)};const o=GJ(e,n,t),a=o.proxy;for(const l in e)$t(e,l)&&!$t(a.$props,l)&&(l==="closeIcon"&&tt(e[l])?a[l]=wa(e[l]):a[l]=e[l]);return a.visible=!0,a};function Ir(e,t=null){if(!Rt)return Promise.reject();let n;return Le(e)||Kt(e)?e={message:e}:n=e.callback,new Promise((o,a)=>{const l=JJ(e,t??Ir._context);Fi.set(l,{options:e,callback:n,resolve:o,reject:a})})}const ZJ=["alert","confirm","prompt"],QJ={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};ZJ.forEach(e=>{Ir[e]=eZ(e)});function eZ(e){return(t,n,o,a)=>{let l="";return tt(n)?(o=n,l=""):kt(n)?l="":l=n,Ir(Object.assign({title:l,message:t,type:"",...QJ[e]},o,{boxType:e}),a)}}Ir.close=()=>{Fi.forEach((e,t)=>{t.doClose()}),Fi.clear()};Ir._context=null;const yl=Ir;yl.install=e=>{yl._context=e._context,e.config.globalProperties.$msgbox=yl,e.config.globalProperties.$messageBox=yl,e.config.globalProperties.$alert=yl.alert,e.config.globalProperties.$confirm=yl.confirm,e.config.globalProperties.$prompt=yl.prompt};const tZ=yl,nx=["primary","success","info","warning","error"],nZ=Se({customClass:{type:String,default:""},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:Vt},id:{type:String,default:""},message:{type:G([String,Object,Function]),default:""},offset:{type:Number,default:0},onClick:{type:G(Function),default:()=>{}},onClose:{type:G(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...nx,""],default:""},zIndex:Number,closeIcon:{type:Vt,default:Do}}),oZ={destroy:()=>!0},aZ=["id"],lZ=["textContent"],sZ={key:0},rZ=["innerHTML"];var iZ=le({name:"ElNotification",__name:"notification",props:nZ,emits:oZ,setup(e,{expose:t}){const n=e,{ns:o,zIndex:a}=Zd("notification"),{nextZIndex:l,currentZIndex:s}=a,r=P(!1);let u;const c=w(()=>{const k=n.type;return k&&_l[n.type]?o.m(k):""}),d=w(()=>n.type&&_l[n.type]||n.icon),f=w(()=>n.position.endsWith("right")?"right":"left"),h=w(()=>n.position.startsWith("top")?"top":"bottom"),g=w(()=>({[h.value]:`${n.offset}px`,zIndex:n.zIndex??s.value}));function p(){n.duration>0&&({stop:u}=rr(()=>{r.value&&m()},n.duration))}function v(){u?.()}function m(){r.value=!1}function b(k){switch(Ht(k)){case we.delete:case we.backspace:v();break;case we.esc:r.value&&m();break;default:p();break}}return dt(()=>{p(),l(),r.value=!0}),Lt(document,"keydown",b),t({visible:r,close:m}),(k,y)=>(x(),ae(An,{name:i(o).b("fade"),onBeforeLeave:e.onClose,onAfterLeave:y[1]||(y[1]=S=>k.$emit("destroy")),persisted:""},{default:J(()=>[rt(H("div",{id:e.id,class:T([i(o).b(),e.customClass,f.value]),style:Ke(g.value),role:"alert",onMouseenter:v,onMouseleave:p,onClick:y[0]||(y[0]=(...S)=>e.onClick&&e.onClick(...S))},[d.value?(x(),ae(i(De),{key:0,class:T([i(o).e("icon"),c.value])},{default:J(()=>[(x(),ae(lt(d.value)))]),_:1},8,["class"])):te("v-if",!0),H("div",{class:T(i(o).e("group"))},[H("h2",{class:T(i(o).e("title")),textContent:ke(e.title)},null,10,lZ),rt(H("div",{class:T(i(o).e("content")),style:Ke(e.title?void 0:{margin:0})},[ee(k.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(x(),B(Ve,{key:1},[te(" Caution here, message could've been compromised, never use user's input as message "),H("p",{innerHTML:e.message},null,8,rZ)],2112)):(x(),B("p",sZ,ke(e.message),1))])],6),[[Nt,e.message]]),e.showClose?(x(),ae(i(De),{key:0,class:T(i(o).e("closeBtn")),onClick:Ge(m,["stop"])},{default:J(()=>[(x(),ae(lt(e.closeIcon)))]),_:1},8,["class"])):te("v-if",!0)],2)],46,aZ),[[Nt,r.value]])]),_:3},8,["name","onBeforeLeave"]))}}),uZ=iZ;const yr={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},vd=16;let cZ=1;const ws=function(e={},t){if(!Rt)return{close:()=>{}};(Le(e)||Kt(e))&&(e={message:e});const n=e.position||"top-right";let o=e.offset||0;yr[n].forEach(({vm:d})=>{o+=(d.el?.offsetHeight||0)+vd}),o+=vd;const a=`notification_${cZ++}`,l=e.onClose,s={...e,offset:o,id:a,onClose:()=>{dZ(a,n,l)}};let r=document.body;io(e.appendTo)?r=e.appendTo:Le(e.appendTo)&&(r=document.querySelector(e.appendTo)),io(r)||(ct("ElNotification","the appendTo option is not an HTMLElement. Falling back to document.body."),r=document.body);const u=document.createElement("div"),c=Y(uZ,s,Fe(s.message)?s.message:Kt(s.message)?()=>s.message:null);return c.appContext=kt(t)?ws._context:t,c.props.onDestroy=()=>{Il(null,u)},Il(c,u),yr[n].push({vm:c}),r.appendChild(u.firstElementChild),{close:()=>{c.component.exposed.visible.value=!1}}};nx.forEach(e=>{ws[e]=(t={},n)=>((Le(t)||Kt(t))&&(t={message:t}),ws({...t,type:e},n))});function dZ(e,t,n){const o=yr[t],a=o.findIndex(({vm:c})=>c.component?.props.id===e);if(a===-1)return;const{vm:l}=o[a];if(!l)return;n?.(l);const s=l.el.offsetHeight,r=t.split("-")[0];o.splice(a,1);const u=o.length;if(!(u<1))for(let c=a;c{t.component.exposed.visible.value=!1})}function pZ(e="top-right"){let t=yr[e][0]?.vm.component?.props?.offset||0;for(const{vm:n}of yr[e])n.component.props.offset=t,t+=(n.el?.offsetHeight||0)+vd}ws.closeAll=fZ;ws.updateOffsets=pZ;ws._context=null;const vZ=TC(ws,"$notify"),hZ=Se({trigger:xa.trigger,triggerKeys:xa.triggerKeys,placement:Sc.placement,disabled:xa.disabled,visible:Bt.visible,transition:Bt.transition,popperOptions:Sc.popperOptions,tabindex:Sc.tabindex,content:Bt.content,popperStyle:Bt.popperStyle,popperClass:Bt.popperClass,enterable:{...Bt.enterable,default:!0},effect:{...Bt.effect,default:"light"},teleported:Bt.teleported,appendTo:Bt.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),mZ={"update:visible":e=>Ft(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},gZ="onUpdate:visible";var bZ=le({name:"ElPopover",__name:"popover",props:hZ,emits:mZ,setup(e,{expose:t,emit:n}){const o=e,a=n,l=w(()=>o[gZ]),s=fe("popover"),r=P(),u=w(()=>i(r)?.popperRef),c=w(()=>[{width:nn(o.width)},o.popperStyle]),d=w(()=>[s.b(),o.popperClass,{[s.m("plain")]:!!o.content}]),f=w(()=>o.transition===`${s.namespace.value}-fade-in-linear`),h=()=>{r.value?.hide()},g=()=>{a("before-enter")},p=()=>{a("before-leave")},v=()=>{a("after-enter")},m=()=>{a("update:visible",!1),a("after-leave")};return t({popperRef:u,hide:h}),(b,k)=>(x(),ae(i(Rn),it({ref_key:"tooltipRef",ref:r},b.$attrs,{trigger:e.trigger,"trigger-keys":e.triggerKeys,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":d.value,"popper-style":c.value,teleported:e.teleported,"append-to":e.appendTo,persistent:e.persistent,"gpu-acceleration":f.value,"onUpdate:visible":l.value,onBeforeShow:g,onBeforeHide:p,onShow:v,onHide:m}),{content:J(()=>[e.title?(x(),B("div",{key:0,class:T(i(s).e("title")),role:"title"},ke(e.title),3)):te("v-if",!0),ee(b.$slots,"default",{hide:h},()=>[gt(ke(e.content),1)])]),default:J(()=>[b.$slots.reference?ee(b.$slots,"reference",{key:0}):te("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}}),yZ=bZ;const q0=(e,t)=>{const n=(t.arg||t.value)?.popperRef;n&&(n.triggerRef=e)};var wZ={mounted(e,t){q0(e,t)},updated(e,t){q0(e,t)}};const SZ="popover",ox=b4(wZ,SZ),CZ=ot(yZ,{directive:ox}),kZ="2.13.5",EZ=(e=[])=>({version:kZ,install:(n,o)=>{n[jg]||(n[jg]=!0,e.forEach(a=>n.use(a)),o&&Qh(o,n,!0))}});var xZ=[k4,z3,XD,Vq,nB,oB,uB,JC,yB,wB,xn,ak,kF,$F,HF,KF,DV,Wk,HV,Qo,lV,rm,ZV,p6,v6,ef,n2,H6,TB,G6,X6,J6,Z6,Q6,QH,u2,i5,u5,E5,g2,D5,EK,xK,TK,T2,FL,VL,De,vW,$2,Yn,O2,IW,DW,QW,ej,tj,nj,ij,Hj,qj,CZ,jC,A2,Kk,gV,mV,i9,f9,GV,Jo,Dl,Qc,tF,e7,s7,r7,$7,M7,r2,iz,F7,V7,X7,aq,lq,Fq,Qq,eY,Xa,Lm,N8,iY,pY,vY,Rn,$Y,Fm,GY,dG,BG,YG,yX,wX,NX,RX,DX,XX,cJ,dJ],TZ=[bJ,kJ,zJ,tZ,vZ,ox],Ym=EZ([...xZ,...TZ]);Ym.install;Ym.version;var bee=Ym;const $Z={class:"top-bar"},OZ={class:"nav-tabs"},NZ={class:"nav-tab-group"},RZ=["href"],IZ=le({__name:"BrandTopBar",props:{active:{}},setup(e){const n=e.active,o=[{key:"brand",label:"品牌检测",href:"/brand"},{key:"dedupe",label:"数据去重",href:"/new_web_source/dedupe.html"},{key:"split",label:"数据拆分",href:"/new_web_source/split.html"},{key:"convert",label:"格式转换",href:"/new_web_source/convert.html"}];return(a,l)=>(x(),B("header",$Z,[l[0]||(l[0]=H("div",{class:"logo-area"},[H("span",{class:"app-name"},"数富AI-亚马逊"),H("a",{href:"/home",class:"btn-home"},"返回首页")],-1)),H("nav",OZ,[H("span",NZ,[(x(),B(Ve,null,mt(o,s=>H("a",{key:s.key,href:s.href,class:T(["nav-tab",{active:i(n)===s.key}])},ke(s.label),11,RZ)),64))])]),l[1]||(l[1]=H("div",{class:"top-right"},null,-1))]))}}),MZ=(e,t)=>{const n=e.__vccOpts||e;for(const[o,a]of t)n[o]=a;return n},yee=MZ(IZ,[["__scopeId","data-v-8f206bc1"]]);function ax(e,t){return function(){return e.apply(t,arguments)}}const{toString:PZ}=Object.prototype,{getPrototypeOf:Gm}=Object,{iterator:sf,toStringTag:lx}=Symbol,rf=(e=>t=>{const n=PZ.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),sa=e=>(e=e.toLowerCase(),t=>rf(t)===e),uf=e=>t=>typeof t===e,{isArray:Mr}=Array,wr=uf("undefined");function gu(e){return e!==null&&!wr(e)&&e.constructor!==null&&!wr(e.constructor)&&po(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const sx=sa("ArrayBuffer");function AZ(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&sx(e.buffer),t}const _Z=uf("string"),po=uf("function"),rx=uf("number"),bu=e=>e!==null&&typeof e=="object",LZ=e=>e===!0||e===!1,Oc=e=>{if(rf(e)!=="object")return!1;const t=Gm(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(lx in e)&&!(sf in e)},DZ=e=>{if(!bu(e)||gu(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},BZ=sa("Date"),FZ=sa("File"),VZ=e=>!!(e&&typeof e.uri<"u"),zZ=e=>e&&typeof e.getParts<"u",HZ=sa("Blob"),KZ=sa("FileList"),WZ=e=>bu(e)&&po(e.pipe);function jZ(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Y0=jZ(),G0=typeof Y0.FormData<"u"?Y0.FormData:void 0,UZ=e=>{let t;return e&&(G0&&e instanceof G0||po(e.append)&&((t=rf(e))==="formdata"||t==="object"&&po(e.toString)&&e.toString()==="[object FormData]"))},qZ=sa("URLSearchParams"),[YZ,GZ,XZ,JZ]=["ReadableStream","Request","Response","Headers"].map(sa),ZZ=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function yu(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let o,a;if(typeof e!="object"&&(e=[e]),Mr(e))for(o=0,a=e.length;o0;)if(a=n[o],t===a.toLowerCase())return a;return null}const os=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,ux=e=>!wr(e)&&e!==os;function Mv(){const{caseless:e,skipUndefined:t}=ux(this)&&this||{},n={},o=(a,l)=>{if(l==="__proto__"||l==="constructor"||l==="prototype")return;const s=e&&ix(n,l)||l;Oc(n[s])&&Oc(a)?n[s]=Mv(n[s],a):Oc(a)?n[s]=Mv({},a):Mr(a)?n[s]=a.slice():(!t||!wr(a))&&(n[s]=a)};for(let a=0,l=arguments.length;a(yu(t,(a,l)=>{n&&po(a)?Object.defineProperty(e,l,{value:ax(a,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,l,{value:a,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:o}),e),eQ=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),tQ=(e,t,n,o)=>{e.prototype=Object.create(t.prototype,o),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},nQ=(e,t,n,o)=>{let a,l,s;const r={};if(t=t||{},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),l=a.length;l-- >0;)s=a[l],(!o||o(s,e,t))&&!r[s]&&(t[s]=e[s],r[s]=!0);e=n!==!1&&Gm(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},oQ=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const o=e.indexOf(t,n);return o!==-1&&o===n},aQ=e=>{if(!e)return null;if(Mr(e))return e;let t=e.length;if(!rx(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},lQ=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Gm(Uint8Array)),sQ=(e,t)=>{const o=(e&&e[sf]).call(e);let a;for(;(a=o.next())&&!a.done;){const l=a.value;t.call(e,l[0],l[1])}},rQ=(e,t)=>{let n;const o=[];for(;(n=e.exec(t))!==null;)o.push(n);return o},iQ=sa("HTMLFormElement"),uQ=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,o,a){return o.toUpperCase()+a}),X0=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),cQ=sa("RegExp"),cx=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),o={};yu(n,(a,l)=>{let s;(s=t(a,l,e))!==!1&&(o[l]=s||a)}),Object.defineProperties(e,o)},dQ=e=>{cx(e,(t,n)=>{if(po(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const o=e[n];if(po(o)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},fQ=(e,t)=>{const n={},o=a=>{a.forEach(l=>{n[l]=!0})};return Mr(e)?o(e):o(String(e).split(t)),n},pQ=()=>{},vQ=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function hQ(e){return!!(e&&po(e.append)&&e[lx]==="FormData"&&e[sf])}const mQ=e=>{const t=new Array(10),n=(o,a)=>{if(bu(o)){if(t.indexOf(o)>=0)return;if(gu(o))return o;if(!("toJSON"in o)){t[a]=o;const l=Mr(o)?[]:{};return yu(o,(s,r)=>{const u=n(s,a+1);!wr(u)&&(l[r]=u)}),t[a]=void 0,l}}return o};return n(e,0)},gQ=sa("AsyncFunction"),bQ=e=>e&&(bu(e)||po(e))&&po(e.then)&&po(e.catch),dx=((e,t)=>e?setImmediate:t?((n,o)=>(os.addEventListener("message",({source:a,data:l})=>{a===os&&l===n&&o.length&&o.shift()()},!1),a=>{o.push(a),os.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",po(os.postMessage)),yQ=typeof queueMicrotask<"u"?queueMicrotask.bind(os):typeof process<"u"&&process.nextTick||dx,wQ=e=>e!=null&&po(e[sf]),xe={isArray:Mr,isArrayBuffer:sx,isBuffer:gu,isFormData:UZ,isArrayBufferView:AZ,isString:_Z,isNumber:rx,isBoolean:LZ,isObject:bu,isPlainObject:Oc,isEmptyObject:DZ,isReadableStream:YZ,isRequest:GZ,isResponse:XZ,isHeaders:JZ,isUndefined:wr,isDate:BZ,isFile:FZ,isReactNativeBlob:VZ,isReactNative:zZ,isBlob:HZ,isRegExp:cQ,isFunction:po,isStream:WZ,isURLSearchParams:qZ,isTypedArray:lQ,isFileList:KZ,forEach:yu,merge:Mv,extend:QZ,trim:ZZ,stripBOM:eQ,inherits:tQ,toFlatObject:nQ,kindOf:rf,kindOfTest:sa,endsWith:oQ,toArray:aQ,forEachEntry:sQ,matchAll:rQ,isHTMLForm:iQ,hasOwnProperty:X0,hasOwnProp:X0,reduceDescriptors:cx,freezeMethods:dQ,toObjectSet:fQ,toCamelCase:uQ,noop:pQ,toFiniteNumber:vQ,findKey:ix,global:os,isContextDefined:ux,isSpecCompliantForm:hQ,toJSONObject:mQ,isAsyncFn:gQ,isThenable:bQ,setImmediate:dx,asap:yQ,isIterable:wQ};let It=class fx extends Error{static from(t,n,o,a,l,s){const r=new fx(t.message,n||t.code,o,a,l);return r.cause=t,r.name=t.name,t.status!=null&&r.status==null&&(r.status=t.status),s&&Object.assign(r,s),r}constructor(t,n,o,a,l){super(t),Object.defineProperty(this,"message",{value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),o&&(this.config=o),a&&(this.request=a),l&&(this.response=l,this.status=l.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:xe.toJSONObject(this.config),code:this.code,status:this.status}}};It.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";It.ERR_BAD_OPTION="ERR_BAD_OPTION";It.ECONNABORTED="ECONNABORTED";It.ETIMEDOUT="ETIMEDOUT";It.ERR_NETWORK="ERR_NETWORK";It.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";It.ERR_DEPRECATED="ERR_DEPRECATED";It.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";It.ERR_BAD_REQUEST="ERR_BAD_REQUEST";It.ERR_CANCELED="ERR_CANCELED";It.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";It.ERR_INVALID_URL="ERR_INVALID_URL";const SQ=null;function Pv(e){return xe.isPlainObject(e)||xe.isArray(e)}function px(e){return xe.endsWith(e,"[]")?e.slice(0,-2):e}function up(e,t,n){return e?e.concat(t).map(function(a,l){return a=px(a),!n&&l?"["+a+"]":a}).join(n?".":""):t}function CQ(e){return xe.isArray(e)&&!e.some(Pv)}const kQ=xe.toFlatObject(xe,{},null,function(t){return/^is[A-Z]/.test(t)});function cf(e,t,n){if(!xe.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=xe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,m){return!xe.isUndefined(m[v])});const o=n.metaTokens,a=n.visitor||d,l=n.dots,s=n.indexes,u=(n.Blob||typeof Blob<"u"&&Blob)&&xe.isSpecCompliantForm(t);if(!xe.isFunction(a))throw new TypeError("visitor must be a function");function c(p){if(p===null)return"";if(xe.isDate(p))return p.toISOString();if(xe.isBoolean(p))return p.toString();if(!u&&xe.isBlob(p))throw new It("Blob is not supported. Use a Buffer instead.");return xe.isArrayBuffer(p)||xe.isTypedArray(p)?u&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function d(p,v,m){let b=p;if(xe.isReactNative(t)&&xe.isReactNativeBlob(p))return t.append(up(m,v,l),c(p)),!1;if(p&&!m&&typeof p=="object"){if(xe.endsWith(v,"{}"))v=o?v:v.slice(0,-2),p=JSON.stringify(p);else if(xe.isArray(p)&&CQ(p)||(xe.isFileList(p)||xe.endsWith(v,"[]"))&&(b=xe.toArray(p)))return v=px(v),b.forEach(function(y,S){!(xe.isUndefined(y)||y===null)&&t.append(s===!0?up([v],S,l):s===null?v:v+"[]",c(y))}),!1}return Pv(p)?!0:(t.append(up(m,v,l),c(p)),!1)}const f=[],h=Object.assign(kQ,{defaultVisitor:d,convertValue:c,isVisitable:Pv});function g(p,v){if(!xe.isUndefined(p)){if(f.indexOf(p)!==-1)throw Error("Circular reference detected in "+v.join("."));f.push(p),xe.forEach(p,function(b,k){(!(xe.isUndefined(b)||b===null)&&a.call(t,b,xe.isString(k)?k.trim():k,v,h))===!0&&g(b,v?v.concat(k):[k])}),f.pop()}}if(!xe.isObject(e))throw new TypeError("data must be an object");return g(e),t}function J0(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(o){return t[o]})}function Xm(e,t){this._pairs=[],e&&cf(e,this,t)}const vx=Xm.prototype;vx.append=function(t,n){this._pairs.push([t,n])};vx.toString=function(t){const n=t?function(o){return t.call(this,o,J0)}:J0;return this._pairs.map(function(a){return n(a[0])+"="+n(a[1])},"").join("&")};function EQ(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function hx(e,t,n){if(!t)return e;const o=n&&n.encode||EQ,a=xe.isFunction(n)?{serialize:n}:n,l=a&&a.serialize;let s;if(l?s=l(t,a):s=xe.isURLSearchParams(t)?t.toString():new Xm(t,a).toString(o),s){const r=e.indexOf("#");r!==-1&&(e=e.slice(0,r)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class Z0{constructor(){this.handlers=[]}use(t,n,o){return this.handlers.push({fulfilled:t,rejected:n,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){xe.forEach(this.handlers,function(o){o!==null&&t(o)})}}const Jm={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},xQ=typeof URLSearchParams<"u"?URLSearchParams:Xm,TQ=typeof FormData<"u"?FormData:null,$Q=typeof Blob<"u"?Blob:null,OQ={isBrowser:!0,classes:{URLSearchParams:xQ,FormData:TQ,Blob:$Q},protocols:["http","https","file","blob","url","data"]},Zm=typeof window<"u"&&typeof document<"u",Av=typeof navigator=="object"&&navigator||void 0,NQ=Zm&&(!Av||["ReactNative","NativeScript","NS"].indexOf(Av.product)<0),RQ=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",IQ=Zm&&window.location.href||"http://localhost",MQ=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Zm,hasStandardBrowserEnv:NQ,hasStandardBrowserWebWorkerEnv:RQ,navigator:Av,origin:IQ},Symbol.toStringTag,{value:"Module"})),qn={...MQ,...OQ};function PQ(e,t){return cf(e,new qn.classes.URLSearchParams,{visitor:function(n,o,a,l){return qn.isNode&&xe.isBuffer(n)?(this.append(o,n.toString("base64")),!1):l.defaultVisitor.apply(this,arguments)},...t})}function AQ(e){return xe.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function _Q(e){const t={},n=Object.keys(e);let o;const a=n.length;let l;for(o=0;o=n.length;return s=!s&&xe.isArray(a)?a.length:s,u?(xe.hasOwnProp(a,s)?a[s]=[a[s],o]:a[s]=o,!r):((!a[s]||!xe.isObject(a[s]))&&(a[s]=[]),t(n,o,a[s],l)&&xe.isArray(a[s])&&(a[s]=_Q(a[s])),!r)}if(xe.isFormData(e)&&xe.isFunction(e.entries)){const n={};return xe.forEachEntry(e,(o,a)=>{t(AQ(o),a,n,0)}),n}return null}function LQ(e,t,n){if(xe.isString(e))try{return(t||JSON.parse)(e),xe.trim(e)}catch(o){if(o.name!=="SyntaxError")throw o}return(n||JSON.stringify)(e)}const wu={transitional:Jm,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const o=n.getContentType()||"",a=o.indexOf("application/json")>-1,l=xe.isObject(t);if(l&&xe.isHTMLForm(t)&&(t=new FormData(t)),xe.isFormData(t))return a?JSON.stringify(mx(t)):t;if(xe.isArrayBuffer(t)||xe.isBuffer(t)||xe.isStream(t)||xe.isFile(t)||xe.isBlob(t)||xe.isReadableStream(t))return t;if(xe.isArrayBufferView(t))return t.buffer;if(xe.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(l){if(o.indexOf("application/x-www-form-urlencoded")>-1)return PQ(t,this.formSerializer).toString();if((r=xe.isFileList(t))||o.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return cf(r?{"files[]":t}:t,u&&new u,this.formSerializer)}}return l||a?(n.setContentType("application/json",!1),LQ(t)):t}],transformResponse:[function(t){const n=this.transitional||wu.transitional,o=n&&n.forcedJSONParsing,a=this.responseType==="json";if(xe.isResponse(t)||xe.isReadableStream(t))return t;if(t&&xe.isString(t)&&(o&&!this.responseType||a)){const s=!(n&&n.silentJSONParsing)&&a;try{return JSON.parse(t,this.parseReviver)}catch(r){if(s)throw r.name==="SyntaxError"?It.from(r,It.ERR_BAD_RESPONSE,this,null,this.response):r}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:qn.classes.FormData,Blob:qn.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};xe.forEach(["delete","get","head","post","put","patch"],e=>{wu.headers[e]={}});const DQ=xe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),BQ=e=>{const t={};let n,o,a;return e&&e.split(` `).forEach(function(s){a=s.indexOf(":"),n=s.substring(0,a).trim().toLowerCase(),o=s.substring(a+1).trim(),!(!n||t[n]&&DQ[n])&&(n==="set-cookie"?t[n]?t[n].push(o):t[n]=[o]:t[n]=t[n]?t[n]+", "+o:o)}),t},Q0=Symbol("internals");function Kr(e){return e&&String(e).trim().toLowerCase()}function Nc(e){return e===!1||e==null?e:xe.isArray(e)?e.map(Nc):String(e)}function FQ(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;for(;o=n.exec(e);)t[o[1]]=o[2];return t}const VQ=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function cp(e,t,n,o,a){if(xe.isFunction(o))return o.call(this,t,n);if(a&&(t=n),!!xe.isString(t)){if(xe.isString(o))return t.indexOf(o)!==-1;if(xe.isRegExp(o))return o.test(t)}}function zQ(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,o)=>n.toUpperCase()+o)}function HQ(e,t){const n=xe.toCamelCase(" "+t);["get","set","has"].forEach(o=>{Object.defineProperty(e,o+n,{value:function(a,l,s){return this[o].call(this,t,a,l,s)},configurable:!0})})}let vo=class{constructor(t){t&&this.set(t)}set(t,n,o){const a=this;function l(r,u,c){const d=Kr(u);if(!d)throw new Error("header name must be a non-empty string");const f=xe.findKey(a,d);(!f||a[f]===void 0||c===!0||c===void 0&&a[f]!==!1)&&(a[f||u]=Nc(r))}const s=(r,u)=>xe.forEach(r,(c,d)=>l(c,d,u));if(xe.isPlainObject(t)||t instanceof this.constructor)s(t,n);else if(xe.isString(t)&&(t=t.trim())&&!VQ(t))s(BQ(t),n);else if(xe.isObject(t)&&xe.isIterable(t)){let r={},u,c;for(const d of t){if(!xe.isArray(d))throw TypeError("Object iterator must return a key-value pair");r[c=d[0]]=(u=r[c])?xe.isArray(u)?[...u,d[1]]:[u,d[1]]:d[1]}s(r,n)}else t!=null&&l(n,t,o);return this}get(t,n){if(t=Kr(t),t){const o=xe.findKey(this,t);if(o){const a=this[o];if(!n)return a;if(n===!0)return FQ(a);if(xe.isFunction(n))return n.call(this,a,o);if(xe.isRegExp(n))return n.exec(a);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Kr(t),t){const o=xe.findKey(this,t);return!!(o&&this[o]!==void 0&&(!n||cp(this,this[o],o,n)))}return!1}delete(t,n){const o=this;let a=!1;function l(s){if(s=Kr(s),s){const r=xe.findKey(o,s);r&&(!n||cp(o,o[r],r,n))&&(delete o[r],a=!0)}}return xe.isArray(t)?t.forEach(l):l(t),a}clear(t){const n=Object.keys(this);let o=n.length,a=!1;for(;o--;){const l=n[o];(!t||cp(this,this[l],l,t,!0))&&(delete this[l],a=!0)}return a}normalize(t){const n=this,o={};return xe.forEach(this,(a,l)=>{const s=xe.findKey(o,l);if(s){n[s]=Nc(a),delete n[l];return}const r=t?zQ(l):String(l).trim();r!==l&&delete n[l],n[r]=Nc(a),o[r]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return xe.forEach(this,(o,a)=>{o!=null&&o!==!1&&(n[a]=t&&xe.isArray(o)?o.join(", "):o)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const o=new this(t);return n.forEach(a=>o.set(a)),o}static accessor(t){const o=(this[Q0]=this[Q0]={accessors:{}}).accessors,a=this.prototype;function l(s){const r=Kr(s);o[r]||(HQ(a,s),o[r]=!0)}return xe.isArray(t)?t.forEach(l):l(t),this}};vo.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);xe.reduceDescriptors(vo.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(o){this[n]=o}}});xe.freezeMethods(vo);function dp(e,t){const n=this||wu,o=t||n,a=vo.from(o.headers);let l=o.data;return xe.forEach(e,function(r){l=r.call(n,l,a.normalize(),t?t.status:void 0)}),a.normalize(),l}function gx(e){return!!(e&&e.__CANCEL__)}let Su=class extends It{constructor(t,n,o){super(t??"canceled",It.ERR_CANCELED,n,o),this.name="CanceledError",this.__CANCEL__=!0}};function bx(e,t,n){const o=n.config.validateStatus;!n.status||!o||o(n.status)?e(n):t(new It("Request failed with status code "+n.status,[It.ERR_BAD_REQUEST,It.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function KQ(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function WQ(e,t){e=e||10;const n=new Array(e),o=new Array(e);let a=0,l=0,s;return t=t!==void 0?t:1e3,function(u){const c=Date.now(),d=o[l];s||(s=c),n[a]=u,o[a]=c;let f=l,h=0;for(;f!==a;)h+=n[f++],f=f%e;if(a=(a+1)%e,a===l&&(l=(l+1)%e),c-s{n=d,a=null,l&&(clearTimeout(l),l=null),e(...c)};return[(...c)=>{const d=Date.now(),f=d-n;f>=o?s(c,d):(a=c,l||(l=setTimeout(()=>{l=null,s(a)},o-f)))},()=>a&&s(a)]}const hd=(e,t,n=3)=>{let o=0;const a=WQ(50,250);return jQ(l=>{const s=l.loaded,r=l.lengthComputable?l.total:void 0,u=s-o,c=a(u),d=s<=r;o=s;const f={loaded:s,total:r,progress:r?s/r:void 0,bytes:u,rate:c||void 0,estimated:c&&r&&d?(r-s)/c:void 0,event:l,lengthComputable:r!=null,[t?"download":"upload"]:!0};e(f)},n)},ew=(e,t)=>{const n=e!=null;return[o=>t[0]({lengthComputable:n,total:e,loaded:o}),t[1]]},tw=e=>(...t)=>xe.asap(()=>e(...t)),UQ=qn.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,qn.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(qn.origin),qn.navigator&&/(msie|trident)/i.test(qn.navigator.userAgent)):()=>!0,qQ=qn.hasStandardBrowserEnv?{write(e,t,n,o,a,l,s){if(typeof document>"u")return;const r=[`${e}=${encodeURIComponent(t)}`];xe.isNumber(n)&&r.push(`expires=${new Date(n).toUTCString()}`),xe.isString(o)&&r.push(`path=${o}`),xe.isString(a)&&r.push(`domain=${a}`),l===!0&&r.push("secure"),xe.isString(s)&&r.push(`SameSite=${s}`),document.cookie=r.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function YQ(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function GQ(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function yx(e,t,n){let o=!YQ(t);return e&&(o||n==!1)?GQ(e,t):t}const nw=e=>e instanceof vo?{...e}:e;function Ss(e,t){t=t||{};const n={};function o(c,d,f,h){return xe.isPlainObject(c)&&xe.isPlainObject(d)?xe.merge.call({caseless:h},c,d):xe.isPlainObject(d)?xe.merge({},d):xe.isArray(d)?d.slice():d}function a(c,d,f,h){if(xe.isUndefined(d)){if(!xe.isUndefined(c))return o(void 0,c,f,h)}else return o(c,d,f,h)}function l(c,d){if(!xe.isUndefined(d))return o(void 0,d)}function s(c,d){if(xe.isUndefined(d)){if(!xe.isUndefined(c))return o(void 0,c)}else return o(void 0,d)}function r(c,d,f){if(f in t)return o(c,d);if(f in e)return o(void 0,c)}const u={url:l,method:l,data:l,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:r,headers:(c,d,f)=>a(nw(c),nw(d),f,!0)};return xe.forEach(Object.keys({...e,...t}),function(d){if(d==="__proto__"||d==="constructor"||d==="prototype")return;const f=xe.hasOwnProp(u,d)?u[d]:a,h=f(e[d],t[d],d);xe.isUndefined(h)&&f!==r||(n[d]=h)}),n}const wx=e=>{const t=Ss({},e);let{data:n,withXSRFToken:o,xsrfHeaderName:a,xsrfCookieName:l,headers:s,auth:r}=t;if(t.headers=s=vo.from(s),t.url=hx(yx(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),r&&s.set("Authorization","Basic "+btoa((r.username||"")+":"+(r.password?unescape(encodeURIComponent(r.password)):""))),xe.isFormData(n)){if(qn.hasStandardBrowserEnv||qn.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(xe.isFunction(n.getHeaders)){const u=n.getHeaders(),c=["content-type","content-length"];Object.entries(u).forEach(([d,f])=>{c.includes(d.toLowerCase())&&s.set(d,f)})}}if(qn.hasStandardBrowserEnv&&(o&&xe.isFunction(o)&&(o=o(t)),o||o!==!1&&UQ(t.url))){const u=a&&l&&qQ.read(l);u&&s.set(a,u)}return t},XQ=typeof XMLHttpRequest<"u",JQ=XQ&&function(e){return new Promise(function(n,o){const a=wx(e);let l=a.data;const s=vo.from(a.headers).normalize();let{responseType:r,onUploadProgress:u,onDownloadProgress:c}=a,d,f,h,g,p;function v(){g&&g(),p&&p(),a.cancelToken&&a.cancelToken.unsubscribe(d),a.signal&&a.signal.removeEventListener("abort",d)}let m=new XMLHttpRequest;m.open(a.method.toUpperCase(),a.url,!0),m.timeout=a.timeout;function b(){if(!m)return;const y=vo.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders()),C={data:!r||r==="text"||r==="json"?m.responseText:m.response,status:m.status,statusText:m.statusText,headers:y,config:e,request:m};bx(function($){n($),v()},function($){o($),v()},C),m=null}"onloadend"in m?m.onloadend=b:m.onreadystatechange=function(){!m||m.readyState!==4||m.status===0&&!(m.responseURL&&m.responseURL.indexOf("file:")===0)||setTimeout(b)},m.onabort=function(){m&&(o(new It("Request aborted",It.ECONNABORTED,e,m)),m=null)},m.onerror=function(S){const C=S&&S.message?S.message:"Network Error",E=new It(C,It.ERR_NETWORK,e,m);E.event=S||null,o(E),m=null},m.ontimeout=function(){let S=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const C=a.transitional||Jm;a.timeoutErrorMessage&&(S=a.timeoutErrorMessage),o(new It(S,C.clarifyTimeoutError?It.ETIMEDOUT:It.ECONNABORTED,e,m)),m=null},l===void 0&&s.setContentType(null),"setRequestHeader"in m&&xe.forEach(s.toJSON(),function(S,C){m.setRequestHeader(C,S)}),xe.isUndefined(a.withCredentials)||(m.withCredentials=!!a.withCredentials),r&&r!=="json"&&(m.responseType=a.responseType),c&&([h,p]=hd(c,!0),m.addEventListener("progress",h)),u&&m.upload&&([f,g]=hd(u),m.upload.addEventListener("progress",f),m.upload.addEventListener("loadend",g)),(a.cancelToken||a.signal)&&(d=y=>{m&&(o(!y||y.type?new Su(null,e,m):y),m.abort(),m=null)},a.cancelToken&&a.cancelToken.subscribe(d),a.signal&&(a.signal.aborted?d():a.signal.addEventListener("abort",d)));const k=KQ(a.url);if(k&&qn.protocols.indexOf(k)===-1){o(new It("Unsupported protocol "+k+":",It.ERR_BAD_REQUEST,e));return}m.send(l||null)})},ZQ=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let o=new AbortController,a;const l=function(c){if(!a){a=!0,r();const d=c instanceof Error?c:this.reason;o.abort(d instanceof It?d:new Su(d instanceof Error?d.message:d))}};let s=t&&setTimeout(()=>{s=null,l(new It(`timeout of ${t}ms exceeded`,It.ETIMEDOUT))},t);const r=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(l):c.removeEventListener("abort",l)}),e=null)};e.forEach(c=>c.addEventListener("abort",l));const{signal:u}=o;return u.unsubscribe=()=>xe.asap(r),u}},QQ=function*(e,t){let n=e.byteLength;if(n{const a=eee(e,t);let l=0,s,r=u=>{s||(s=!0,o&&o(u))};return new ReadableStream({async pull(u){try{const{done:c,value:d}=await a.next();if(c){r(),u.close();return}let f=d.byteLength;if(n){let h=l+=f;n(h)}u.enqueue(new Uint8Array(d))}catch(c){throw r(c),c}},cancel(u){return r(u),a.return()}},{highWaterMark:2})},aw=64*1024,{isFunction:Ju}=xe,nee=(({Request:e,Response:t})=>({Request:e,Response:t}))(xe.global),{ReadableStream:lw,TextEncoder:sw}=xe.global,rw=(e,...t)=>{try{return!!e(...t)}catch{return!1}},oee=e=>{e=xe.merge.call({skipUndefined:!0},nee,e);const{fetch:t,Request:n,Response:o}=e,a=t?Ju(t):typeof fetch=="function",l=Ju(n),s=Ju(o);if(!a)return!1;const r=a&&Ju(lw),u=a&&(typeof sw=="function"?(p=>v=>p.encode(v))(new sw):async p=>new Uint8Array(await new n(p).arrayBuffer())),c=l&&r&&rw(()=>{let p=!1;const v=new n(qn.origin,{body:new lw,method:"POST",get duplex(){return p=!0,"half"}}).headers.has("Content-Type");return p&&!v}),d=s&&r&&rw(()=>xe.isReadableStream(new o("").body)),f={stream:d&&(p=>p.body)};a&&["text","arrayBuffer","blob","formData","stream"].forEach(p=>{!f[p]&&(f[p]=(v,m)=>{let b=v&&v[p];if(b)return b.call(v);throw new It(`Response type '${p}' is not supported`,It.ERR_NOT_SUPPORT,m)})});const h=async p=>{if(p==null)return 0;if(xe.isBlob(p))return p.size;if(xe.isSpecCompliantForm(p))return(await new n(qn.origin,{method:"POST",body:p}).arrayBuffer()).byteLength;if(xe.isArrayBufferView(p)||xe.isArrayBuffer(p))return p.byteLength;if(xe.isURLSearchParams(p)&&(p=p+""),xe.isString(p))return(await u(p)).byteLength},g=async(p,v)=>{const m=xe.toFiniteNumber(p.getContentLength());return m??h(v)};return async p=>{let{url:v,method:m,data:b,signal:k,cancelToken:y,timeout:S,onDownloadProgress:C,onUploadProgress:E,responseType:$,headers:O,withCredentials:R="same-origin",fetchOptions:N}=wx(p),_=t||fetch;$=$?($+"").toLowerCase():"text";let A=ZQ([k,y&&y.toAbortSignal()],S),V=null;const z=A&&A.unsubscribe&&(()=>{A.unsubscribe()});let U;try{if(E&&c&&m!=="get"&&m!=="head"&&(U=await g(O,b))!==0){let F=new n(v,{method:"POST",body:b,duplex:"half"}),q;if(xe.isFormData(b)&&(q=F.headers.get("content-type"))&&O.setContentType(q),F.body){const[j,X]=ew(U,hd(tw(E)));b=ow(F.body,aw,j,X)}}xe.isString(R)||(R=R?"include":"omit");const W=l&&"credentials"in n.prototype,M={...N,signal:A,method:m.toUpperCase(),headers:O.normalize().toJSON(),body:b,duplex:"half",credentials:W?R:void 0};V=l&&new n(v,M);let I=await(l?_(V,N):_(v,M));const L=d&&($==="stream"||$==="response");if(d&&(C||L&&z)){const F={};["status","statusText","headers"].forEach(Q=>{F[Q]=I[Q]});const q=xe.toFiniteNumber(I.headers.get("content-length")),[j,X]=C&&ew(q,hd(tw(C),!0))||[];I=new o(ow(I.body,aw,j,()=>{X&&X(),z&&z()}),F)}$=$||"text";let D=await f[xe.findKey(f,$)||"text"](I,p);return!L&&z&&z(),await new Promise((F,q)=>{bx(F,q,{data:D,headers:vo.from(I.headers),status:I.status,statusText:I.statusText,config:p,request:V})})}catch(W){throw z&&z(),W&&W.name==="TypeError"&&/Load failed|fetch/i.test(W.message)?Object.assign(new It("Network Error",It.ERR_NETWORK,p,V,W&&W.response),{cause:W.cause||W}):It.from(W,W&&W.code,p,V,W&&W.response)}}},aee=new Map,Sx=e=>{let t=e&&e.env||{};const{fetch:n,Request:o,Response:a}=t,l=[o,a,n];let s=l.length,r=s,u,c,d=aee;for(;r--;)u=l[r],c=d.get(u),c===void 0&&d.set(u,c=r?new Map:oee(t)),d=c;return c};Sx();const Qm={http:SQ,xhr:JQ,fetch:{get:Sx}};xe.forEach(Qm,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const iw=e=>`- ${e}`,lee=e=>xe.isFunction(e)||e===null||e===!1;function see(e,t){e=xe.isArray(e)?e:[e];const{length:n}=e;let o,a;const l={};for(let s=0;s`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build"));let r=n?s.length>1?`since : `+s.map(iw).join(` `):" "+iw(s[0]):"as no adapter specified";throw new It("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return a}const Cx={getAdapter:see,adapters:Qm};function fp(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Su(null,e)}function uw(e){return fp(e),e.headers=vo.from(e.headers),e.data=dp.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Cx.getAdapter(e.adapter||wu.adapter,e)(e).then(function(o){return fp(e),o.data=dp.call(e,e.transformResponse,o),o.headers=vo.from(o.headers),o},function(o){return gx(o)||(fp(e),o&&o.response&&(o.response.data=dp.call(e,e.transformResponse,o.response),o.response.headers=vo.from(o.response.headers))),Promise.reject(o)})}const kx="1.13.6",df={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{df[e]=function(o){return typeof o===e||"a"+(t<1?"n ":" ")+e}});const cw={};df.transitional=function(t,n,o){function a(l,s){return"[Axios v"+kx+"] Transitional option '"+l+"'"+s+(o?". "+o:"")}return(l,s,r)=>{if(t===!1)throw new It(a(s," has been removed"+(n?" in "+n:"")),It.ERR_DEPRECATED);return n&&!cw[s]&&(cw[s]=!0,console.warn(a(s," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(l,s,r):!0}};df.spelling=function(t){return(n,o)=>(console.warn(`${o} is likely a misspelling of ${t}`),!0)};function ree(e,t,n){if(typeof e!="object")throw new It("options must be an object",It.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let a=o.length;for(;a-- >0;){const l=o[a],s=t[l];if(s){const r=e[l],u=r===void 0||s(r,l,e);if(u!==!0)throw new It("option "+l+" must be "+u,It.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new It("Unknown option "+l,It.ERR_BAD_OPTION)}}const Rc={assertOptions:ree,validators:df},No=Rc.validators;let us=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Z0,response:new Z0}}async request(t,n){try{return await this._request(t,n)}catch(o){if(o instanceof Error){let a={};Error.captureStackTrace?Error.captureStackTrace(a):a=new Error;const l=a.stack?a.stack.replace(/^.+\n/,""):"";try{o.stack?l&&!String(o.stack).endsWith(l.replace(/^.+\n.+\n/,""))&&(o.stack+=` -`+l):o.stack=l}catch{}}throw o}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Ss(this.defaults,n);const{transitional:o,paramsSerializer:a,headers:l}=n;o!==void 0&&Rc.assertOptions(o,{silentJSONParsing:No.transitional(No.boolean),forcedJSONParsing:No.transitional(No.boolean),clarifyTimeoutError:No.transitional(No.boolean),legacyInterceptorReqResOrdering:No.transitional(No.boolean)},!1),a!=null&&(xe.isFunction(a)?n.paramsSerializer={serialize:a}:Rc.assertOptions(a,{encode:No.function,serialize:No.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Rc.assertOptions(n,{baseUrl:No.spelling("baseURL"),withXsrfToken:No.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=l&&xe.merge(l.common,l[n.method]);l&&xe.forEach(["delete","get","head","post","put","patch","common"],p=>{delete l[p]}),n.headers=vo.concat(s,l);const r=[];let u=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;u=u&&v.synchronous;const m=n.transitional||Jm;m&&m.legacyInterceptorReqResOrdering?r.unshift(v.fulfilled,v.rejected):r.push(v.fulfilled,v.rejected)});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let d,f=0,h;if(!u){const p=[uw.bind(this),void 0];for(p.unshift(...r),p.push(...c),h=p.length,d=Promise.resolve(n);f{if(!o._listeners)return;let l=o._listeners.length;for(;l-- >0;)o._listeners[l](a);o._listeners=null}),this.promise.then=a=>{let l;const s=new Promise(r=>{o.subscribe(r),l=r}).then(a);return s.cancel=function(){o.unsubscribe(l)},s},t(function(l,s,r){o.reason||(o.reason=new Su(l,s,r),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=o=>{t.abort(o)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Ex(function(a){t=a}),cancel:t}}};function uee(e){return function(n){return e.apply(null,n)}}function cee(e){return xe.isObject(e)&&e.isAxiosError===!0}const _v={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(_v).forEach(([e,t])=>{_v[t]=e});function xx(e){const t=new us(e),n=ax(us.prototype.request,t);return xe.extend(n,us.prototype,t,{allOwnKeys:!0}),xe.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return xx(Ss(e,a))},n}const Cn=xx(wu);Cn.Axios=us;Cn.CanceledError=Su;Cn.CancelToken=iee;Cn.isCancel=gx;Cn.VERSION=kx;Cn.toFormData=cf;Cn.AxiosError=It;Cn.Cancel=Cn.CanceledError;Cn.all=function(t){return Promise.all(t)};Cn.spread=uee;Cn.isAxiosError=cee;Cn.mergeConfig=Ss;Cn.AxiosHeaders=vo;Cn.formToJSON=e=>mx(xe.isHTMLForm(e)?new FormData(e):e);Cn.getAdapter=Cx.getAdapter;Cn.HttpStatusCode=_v;Cn.default=Cn;const{Axios:kee,AxiosError:dee,CanceledError:Eee,isCancel:xee,CancelToken:Tee,VERSION:$ee,all:Oee,Cancel:Nee,isAxiosError:Ree,spread:Iee,toFormData:Mee,AxiosHeaders:Pee,HttpStatusCode:Aee,formToJSON:_ee,getAdapter:Lee,mergeConfig:Dee}=Cn;function fee(e){if(e instanceof dee){const t=e.response?.data;if(t&&typeof t=="object"){if("error"in t&&t.error)return String(t.error);if("message"in t&&t.message)return String(t.message)}return typeof t=="string"&&t.trim()?t:e.message||"请求失败"}return e instanceof Error?e.message:"请求失败"}function pee(){const e=Cn.create({withCredentials:!0,timeout:3e4,headers:{"X-Requested-With":"XMLHttpRequest"}});return e.interceptors.request.use(t=>t),e.interceptors.response.use(t=>t,t=>Promise.reject(new Error(fee(t)))),e}const vee=pee();async function eg(e){return(await vee.request(e)).data}function Cu(e,t){return eg({url:e,method:"GET",...t})}function ff(e,t,n){return eg({url:e,method:"POST",data:t,...n})}function tg(e,t){return eg({url:e,method:"DELETE",...t})}const hee=ff;async function ra(e){const t=await e;if(!t.success)throw new Error(t.message||"请求失败");return t.data}const mee="/new";function Bee(e){return hee(`${mee}/api/brand/expand-folder`,{folder:e})}const ia="/newApi/api";function Fee(e){return ra(Cu(`${ia}/files/excel-info`,{params:{fileKey:e}}))}function Vee(e){return ra(ff(`${ia}/dedupe/run`,e))}function zee(){return ra(Cu(`${ia}/dedupe/history`))}function Hee(e){return ra(tg(`${ia}/dedupe/history/${e}`))}function Kee(e){return ra(ff(`${ia}/split/run`,e))}function Wee(){return ra(Cu(`${ia}/split/history`))}function jee(e){return ra(tg(`${ia}/split/history/${e}`))}function Uee(){return ra(Cu(`${ia}/convert/templates`))}function qee(e){return ra(ff(`${ia}/convert/run`,e))}function Yee(){return ra(Cu(`${ia}/convert/history`))}function Gee(e){return ra(tg(`${ia}/convert/history/${e}`))}let Lv,dw=!1;function Tx(){return Lv=window.pywebview?.api,Lv}function gee(){dw||typeof window>"u"||!window.addEventListener||(dw=!0,window.addEventListener("pywebviewready",()=>{Tx()}))}gee();function Xee(){return Tx()||Lv}export{Yee as A,yee as B,Gee as C,_1 as D,zJ as E,Ve as F,Kee as G,Wee as H,jee as I,MZ as _,x as a,Y as b,B as c,le as d,H as e,te as f,P as g,w as h,Xee as i,Bee as j,Vee as k,zee as l,Hee as m,T as n,dt as o,Fee as p,Y$ as q,mt as r,bee as s,ke as t,D1 as u,L1 as v,rt as w,gt as x,Uee as y,qee as z}; +`+l):o.stack=l}catch{}}throw o}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Ss(this.defaults,n);const{transitional:o,paramsSerializer:a,headers:l}=n;o!==void 0&&Rc.assertOptions(o,{silentJSONParsing:No.transitional(No.boolean),forcedJSONParsing:No.transitional(No.boolean),clarifyTimeoutError:No.transitional(No.boolean),legacyInterceptorReqResOrdering:No.transitional(No.boolean)},!1),a!=null&&(xe.isFunction(a)?n.paramsSerializer={serialize:a}:Rc.assertOptions(a,{encode:No.function,serialize:No.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Rc.assertOptions(n,{baseUrl:No.spelling("baseURL"),withXsrfToken:No.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=l&&xe.merge(l.common,l[n.method]);l&&xe.forEach(["delete","get","head","post","put","patch","common"],p=>{delete l[p]}),n.headers=vo.concat(s,l);const r=[];let u=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;u=u&&v.synchronous;const m=n.transitional||Jm;m&&m.legacyInterceptorReqResOrdering?r.unshift(v.fulfilled,v.rejected):r.push(v.fulfilled,v.rejected)});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let d,f=0,h;if(!u){const p=[uw.bind(this),void 0];for(p.unshift(...r),p.push(...c),h=p.length,d=Promise.resolve(n);f{if(!o._listeners)return;let l=o._listeners.length;for(;l-- >0;)o._listeners[l](a);o._listeners=null}),this.promise.then=a=>{let l;const s=new Promise(r=>{o.subscribe(r),l=r}).then(a);return s.cancel=function(){o.unsubscribe(l)},s},t(function(l,s,r){o.reason||(o.reason=new Su(l,s,r),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=o=>{t.abort(o)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Ex(function(a){t=a}),cancel:t}}};function uee(e){return function(n){return e.apply(null,n)}}function cee(e){return xe.isObject(e)&&e.isAxiosError===!0}const _v={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(_v).forEach(([e,t])=>{_v[t]=e});function xx(e){const t=new us(e),n=ax(us.prototype.request,t);return xe.extend(n,us.prototype,t,{allOwnKeys:!0}),xe.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return xx(Ss(e,a))},n}const Cn=xx(wu);Cn.Axios=us;Cn.CanceledError=Su;Cn.CancelToken=iee;Cn.isCancel=gx;Cn.VERSION=kx;Cn.toFormData=cf;Cn.AxiosError=It;Cn.Cancel=Cn.CanceledError;Cn.all=function(t){return Promise.all(t)};Cn.spread=uee;Cn.isAxiosError=cee;Cn.mergeConfig=Ss;Cn.AxiosHeaders=vo;Cn.formToJSON=e=>mx(xe.isHTMLForm(e)?new FormData(e):e);Cn.getAdapter=Cx.getAdapter;Cn.HttpStatusCode=_v;Cn.default=Cn;const{Axios:kee,AxiosError:dee,CanceledError:Eee,isCancel:xee,CancelToken:Tee,VERSION:$ee,all:Oee,Cancel:Nee,isAxiosError:Ree,spread:Iee,toFormData:Mee,AxiosHeaders:Pee,HttpStatusCode:Aee,formToJSON:_ee,getAdapter:Lee,mergeConfig:Dee}=Cn;function fee(e){if(e instanceof dee){const t=e.response?.data;if(t&&typeof t=="object"){if("error"in t&&t.error)return String(t.error);if("message"in t&&t.message)return String(t.message)}return typeof t=="string"&&t.trim()?t:e.message||"请求失败"}return e instanceof Error?e.message:"请求失败"}function pee(){const e=Cn.create({withCredentials:!0,timeout:3e4,headers:{"X-Requested-With":"XMLHttpRequest"}});return e.interceptors.request.use(t=>t),e.interceptors.response.use(t=>t,t=>Promise.reject(new Error(fee(t)))),e}const vee=pee();async function eg(e){return(await vee.request(e)).data}function Cu(e,t){return eg({url:e,method:"GET",...t})}function ff(e,t,n){return eg({url:e,method:"POST",data:t,...n})}function tg(e,t){return eg({url:e,method:"DELETE",...t})}const hee=ff;async function ra(e){const t=await e;if(!t.success)throw new Error(t.message||"请求失败");return t.data}const mee="";function Bee(e){return hee(`${mee}/api/brand/expand-folder`,{folder:e})}const ia="/newApi/api";function Fee(e){return ra(Cu(`${ia}/files/excel-info`,{params:{fileKey:e}}))}function Vee(e){return ra(ff(`${ia}/dedupe/run`,e))}function zee(){return ra(Cu(`${ia}/dedupe/history`))}function Hee(e){return ra(tg(`${ia}/dedupe/history/${e}`))}function Kee(e){return ra(ff(`${ia}/split/run`,e))}function Wee(){return ra(Cu(`${ia}/split/history`))}function jee(e){return ra(tg(`${ia}/split/history/${e}`))}function Uee(){return ra(Cu(`${ia}/convert/templates`))}function qee(e){return ra(ff(`${ia}/convert/run`,e))}function Yee(){return ra(Cu(`${ia}/convert/history`))}function Gee(e){return ra(tg(`${ia}/convert/history/${e}`))}let Lv,dw=!1;function Tx(){return Lv=window.pywebview?.api,Lv}function gee(){dw||typeof window>"u"||!window.addEventListener||(dw=!0,window.addEventListener("pywebviewready",()=>{Tx()}))}gee();function Xee(){return Tx()||Lv}export{Yee as A,yee as B,Gee as C,_1 as D,zJ as E,Ve as F,Kee as G,Wee as H,jee as I,MZ as _,x as a,Y as b,B as c,le as d,H as e,te as f,P as g,w as h,Xee as i,Bee as j,Vee as k,zee as l,Hee as m,T as n,dt as o,Fee as p,Y$ as q,mt as r,bee as s,ke as t,D1 as u,L1 as v,rt as w,gt as x,Uee as y,qee as z}; diff --git a/app/assets/pywebview-Chz98E9c.css b/app/assets/pywebview-IqgMfeBe.css similarity index 99% rename from app/assets/pywebview-Chz98E9c.css rename to app/assets/pywebview-IqgMfeBe.css index a619c3a..f7ef54f 100644 --- a/app/assets/pywebview-Chz98E9c.css +++ b/app/assets/pywebview-IqgMfeBe.css @@ -1 +1 @@ -:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64, 158, 255;--el-color-success-rgb:103, 194, 58;--el-color-warning-rgb:230, 162, 60;--el-color-danger-rgb:245, 108, 108;--el-color-error-rgb:245, 108, 108;--el-color-info-rgb:144, 147, 153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a, 0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014, 0px 12px 32px #0000001f, 0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;fill:currentColor;width:1em;height:1em;color:var(--color);line-height:1em;font-size:inherit;justify-content:center;align-items:center;display:inline-flex;position:relative}.el-icon.is-loading{animation:2s linear infinite rotating}.el-icon svg{width:1em;height:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);background-color:var(--el-color-white);opacity:1;transition:opacity var(--el-transition-duration-fast);align-items:center;margin:0;display:flex;position:relative;overflow:hidden}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-primary)}.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{flex-direction:column;gap:4px;display:flex}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size);margin-right:8px}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size);margin-right:12px}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;cursor:pointer;position:absolute;top:12px;right:16px}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;width:var(--el-aside-width,300px);flex-shrink:0;overflow:auto}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;width:var(--el-input-width);display:inline-block;position:relative}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__header{border-bottom:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__footer{border-top:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{cursor:pointer;color:var(--el-text-color-regular);line-height:34px;font-size:var(--el-font-size-base);text-align:left;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:0 20px;list-style:none;overflow:hidden}.el-autocomplete-suggestion li:hover,.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{cursor:default;height:100px;color:var(--el-text-color-secondary);justify-content:center;align-items:center;font-size:20px;display:flex}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;box-sizing:border-box;text-align:center;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size);outline:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.el-avatar>img{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-avatar-group{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px;display:inline-flex}.el-avatar-group .el-avatar{border:1px solid var(--el-border-color-extra-light)}.el-avatar-group .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-item-gap)}.el-avatar-group__collapse-avatars{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px}.el-avatar-group__collapse-avatars .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-collapse-item-gap)}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);background-color:var(--el-backtop-bg-color);width:40px;height:40px;color:var(--el-backtop-text-color);box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5;border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;vertical-align:middle;width:-moz-fit-content;width:fit-content;display:inline-block;position:relative}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color);justify-content:center;align-items:center;display:inline-flex}.el-badge__content.is-fixed{top:0;right:calc(1px + var(--el-badge-size) / 2);z-index:var(--el-index-normal);position:absolute;transform:translateY(-50%)translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;width:8px;height:8px;padding:0;right:0}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);margin:0 9px;font-weight:700}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;align-items:center;display:inline-flex}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{transition:var(--el-transition-color);color:var(--el-text-color-primary);font-weight:700;text-decoration:none}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:before,.el-breadcrumb:after{content:"";display:table}.el-breadcrumb:after{clear:both}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:hover,.el-button-group>.el-button:focus,.el-button-group>.el-button:active,.el-button-group>.el-button.is-active{z-index:1}.el-button-group--horizontal{vertical-align:middle;display:inline-block}.el-button-group--horizontal:before,.el-button-group--horizontal:after{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--vertical{flex-direction:column;align-items:stretch;display:inline-flex}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:#ffffff80;--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);white-space:nowrap;cursor:pointer;height:32px;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;line-height:1;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);outline:none;justify-content:center;align-items:center;transition:all .1s;display:inline-flex}.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:none}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:8px 15px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";border-radius:inherit;background-color:var(--el-mask-color-extra-light);position:absolute;inset:-1px}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-dashed{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary);border-style:dashed}.el-button.is-circle{border-radius:50%;width:32px;padding:8px}.el-button.is-text{color:var(--el-button-text-color);background-color:#0000;border:0 solid #0000}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{color:var(--el-button-text-color);background:0 0;border-color:#0000;height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button.is-link:not(.is-disabled):hover{background-color:#0000;border-color:#0000}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);background-color:#0000;border-color:#0000}.el-button--text{color:var(--el-color-primary);background:0 0;border-color:#0000;padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);background-color:#0000;border-color:#0000}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);background-color:#0000;border-color:#0000}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:hover,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--primary.is-dashed{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-text-color:var(--el-color-primary-dark-2);--el-button-active-bg-color:var(--el-color-primary-light-9);--el-button-active-border-color:var(--el-color-primary-dark-2)}.el-button--primary.is-dashed.is-disabled,.el-button--primary.is-dashed.is-disabled:hover,.el-button--primary.is-dashed.is-disabled:focus,.el-button--primary.is-dashed.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain,.el-button--success.is-text,.el-button--success.is-link{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:hover,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:active,.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--success.is-dashed{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-success);--el-button-hover-bg-color:var(--el-color-success-light-9);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-text-color:var(--el-color-success-dark-2);--el-button-active-bg-color:var(--el-color-success-light-9);--el-button-active-border-color:var(--el-color-success-dark-2)}.el-button--success.is-dashed.is-disabled,.el-button--success.is-dashed.is-disabled:hover,.el-button--success.is-dashed.is-disabled:focus,.el-button--success.is-dashed.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain,.el-button--warning.is-text,.el-button--warning.is-link{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:hover,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--warning.is-dashed{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-warning);--el-button-hover-bg-color:var(--el-color-warning-light-9);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-text-color:var(--el-color-warning-dark-2);--el-button-active-bg-color:var(--el-color-warning-light-9);--el-button-active-border-color:var(--el-color-warning-dark-2)}.el-button--warning.is-dashed.is-disabled,.el-button--warning.is-dashed.is-disabled:hover,.el-button--warning.is-dashed.is-disabled:focus,.el-button--warning.is-dashed.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain,.el-button--danger.is-text,.el-button--danger.is-link{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:hover,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--danger.is-dashed{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-danger);--el-button-hover-bg-color:var(--el-color-danger-light-9);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-text-color:var(--el-color-danger-dark-2);--el-button-active-bg-color:var(--el-color-danger-light-9);--el-button-active-border-color:var(--el-color-danger-dark-2)}.el-button--danger.is-dashed.is-disabled,.el-button--danger.is-dashed.is-disabled:hover,.el-button--danger.is-dashed.is-disabled:focus,.el-button--danger.is-dashed.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain,.el-button--info.is-text,.el-button--info.is-link{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:hover,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:active,.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--info.is-dashed{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-info);--el-button-hover-bg-color:var(--el-color-info-light-9);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-text-color:var(--el-color-info-dark-2);--el-button-active-bg-color:var(--el-color-info-light-9);--el-button-active-border-color:var(--el-color-info-dark-2)}.el-button--info.is-dashed.is-disabled,.el-button--info.is-dashed.is-disabled:hover,.el-button--info.is-dashed.is-disabled:focus,.el-button--info.is-dashed.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:5px 11px;font-size:12px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);justify-content:space-between;padding:12px 20px;display:flex}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar__select-controller .el-select{margin-right:8px}.el-calendar__select-controller .el-calendar-select__year{width:120px}.el-calendar__select-controller .el-calendar-select__month{width:60px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);padding:12px 0;font-weight:400}.el-calendar-table:not(.is-range) td.prev,.el-calendar-table:not(.is-range) td.next{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);color:var(--el-text-color-primary);transition:var(--el-transition-duration);flex-direction:column;display:flex;overflow:hidden}.el-card.is-always-shadow,.el-card.is-hover-shadow:hover,.el-card.is-hover-shadow:focus{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding);flex-grow:1;overflow:auto}.el-card__footer{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-top:1px solid var(--el-card-border-color);box-sizing:border-box}.el-carousel__item{width:100%;height:100%;z-index:calc(var(--el-index-normal) - 1);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage:hover .el-carousel__mask,.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{width:100%;height:50%}.el-carousel__mask{background-color:var(--el-color-white);opacity:.24;width:100%;height:100%;transition:var(--el-transition-duration-fast);position:absolute;top:0;left:0}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:#1f2d3d1c;--el-carousel-arrow-hover-background:#1f2d3d3b;--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel.is-vertical-outside{flex-direction:row;align-items:center;display:flex}.el-carousel.is-vertical-outside .el-carousel__container{flex:1}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);background-color:var(--el-carousel-arrow-background);color:#fff;z-index:10;text-align:center;font-size:var(--el-carousel-arrow-font-size);border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{z-index:calc(var(--el-index-normal) + 1);margin:0;padding:0;list-style:none;position:absolute}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{top:50%;right:0;transform:translateY(-50%)}.el-carousel__indicators--outside{text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels .el-carousel__button{color:#000;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{cursor:pointer;background-color:#0000}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal);display:inline-block}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width) / 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);cursor:pointer;transition:var(--el-transition-duration);background-color:#fff;border:none;outline:none;margin:0;padding:0;display:block}.el-carousel__indicators--labels .el-carousel__button{width:auto;height:auto}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%)translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%)translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);width:-moz-fit-content;width:fit-content;font-size:var(--el-cascader-menu-font-size);display:flex}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{box-sizing:border-box;min-width:180px;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;min-height:100%;margin:0;padding:6px 0;list-style:none;position:relative}.el-cascader-menu__hover-zone{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.el-cascader-menu__empty-text{color:var(--el-cascader-color-empty);align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{outline:none;align-items:center;height:34px;padding:0 30px 0 20px;line-height:34px;display:flex;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-selectable.in-checked-path,.el-cascader-node.is-active{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):hover,.el-cascader-node:not(.is-disabled):focus{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;padding:0 8px;overflow:hidden}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);vertical-align:middle;font-size:var(--el-font-size-base);outline:none;line-height:32px;display:inline-block;position:relative}.el-cascader:not(.is-disabled):hover .el-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:read-only{cursor:pointer}.el-cascader .el-input .el-input__inner:disabled{cursor:not-allowed}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-cascader__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-cascader__tags{text-align:left;box-sizing:border-box;flex-wrap:wrap;gap:6px;padding:4px;line-height:normal;display:flex;position:absolute;top:50%;left:0;right:30px;transform:translateY(-50%)}.el-cascader__tags .el-tag{text-overflow:ellipsis;background:var(--el-cascader-tag-background);align-items:center;max-width:100%;display:inline-flex}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{text-overflow:ellipsis;background:var(--el-fill-color);align-items:center;max-width:100%;display:inline-flex}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center;margin:0;padding:6px 0}.el-cascader__suggestion-item{text-align:left;cursor:pointer;outline:none;justify-content:space-between;align-items:center;height:34px;padding:0 15px;display:flex}.el-cascader__suggestion-item:hover,.el-cascader__suggestion-item:focus{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{min-width:60px;height:24px;color:var(--el-cascader-menu-text-color);box-sizing:border-box;background:0 0;border:none;outline:none;flex:1;margin-left:7px;padding:0}.el-cascader__search-input::placeholder{color:#0000}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);transition:var(--el-transition-all);padding:7px 15px;font-weight:700;display:inline-block}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{background-color:var(--el-color-success-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{background-color:var(--el-color-warning-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{background-color:var(--el-color-danger-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{background-color:var(--el-color-error-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);--el-checkbox-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;position:relative}.el-checkbox-button__inner{line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button.is-disabled.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-disabled-checked-fill)}.el-checkbox-button:first-child .el-checkbox-button__inner{border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;height:var(--el-checkbox-height,32px);align-items:center;margin-right:30px;display:inline-flex;position:relative}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color);will-change:transform}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%)rotate(45deg)scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";background-color:var(--el-checkbox-checked-icon-color);height:2px;display:block;position:absolute;top:5px;left:0;right:0;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);display:inline-block;position:relative}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";transform-origin:50%;border:1px solid #0000;border-top:0;border-left:0;width:3px;height:7px;transition:transform .15s ease-in 50ms;position:absolute;top:50%;left:50%;transform:translate(-45%,-60%)rotate(45deg)scaleY(0)}.el-checkbox__original{opacity:0;z-index:-1;outline:none;width:0;height:0;margin:0;position:absolute}.el-checkbox__label{line-height:1;font-size:var(--el-checkbox-font-size);padding-left:8px;display:inline-block}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{min-height:1px;display:block}.el-col-0{flex:0 0;max-width:0%;display:none}.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0%}.el-col-pull-0{position:relative;right:0%}.el-col-push-0{position:relative;left:0%}.el-col-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6667%}.el-col-pull-4{position:relative;right:16.6667%}.el-col-push-4{position:relative;left:16.6667%}.el-col-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333%}.el-col-pull-5{position:relative;right:20.8333%}.el-col-push-5{position:relative;left:20.8333%}.el-col-6{flex:0 0 25%;max-width:25%;display:block}.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1667%}.el-col-pull-7{position:relative;right:29.1667%}.el-col-push-7{position:relative;left:29.1667%}.el-col-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333%}.el-col-pull-8{position:relative;right:33.3333%}.el-col-push-8{position:relative;left:33.3333%}.el-col-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6667%}.el-col-pull-10{position:relative;right:41.6667%}.el-col-push-10{position:relative;left:41.6667%}.el-col-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333%}.el-col-pull-11{position:relative;right:45.8333%}.el-col-push-11{position:relative;left:45.8333%}.el-col-12{flex:0 0 50%;max-width:50%;display:block}.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1667%}.el-col-pull-13{position:relative;right:54.1667%}.el-col-push-13{position:relative;left:54.1667%}.el-col-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333%}.el-col-pull-14{position:relative;right:58.3333%}.el-col-push-14{position:relative;left:58.3333%}.el-col-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6667%}.el-col-pull-16{position:relative;right:66.6667%}.el-col-push-16{position:relative;left:66.6667%}.el-col-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333%}.el-col-pull-17{position:relative;right:70.8333%}.el-col-push-17{position:relative;left:70.8333%}.el-col-18{flex:0 0 75%;max-width:75%;display:block}.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1667%}.el-col-pull-19{position:relative;right:79.1667%}.el-col-push-19{position:relative;left:79.1667%}.el-col-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333%}.el-col-pull-20{position:relative;right:83.3333%}.el-col-push-20{position:relative;left:83.3333%}.el-col-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6667%}.el-col-pull-22{position:relative;right:91.6667%}.el-col-push-22{position:relative;left:91.6667%}.el-col-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333%}.el-col-pull-23{position:relative;right:95.8333%}.el-col-push-23{position:relative;left:95.8333%}.el-col-24{flex:0 0 100%;max-width:100%;display:block}.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{flex:0 0;max-width:0%;display:none}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0%}.el-col-xs-pull-0{position:relative;right:0%}.el-col-xs-push-0{position:relative;left:0%}.el-col-xs-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6667%}.el-col-xs-pull-4{position:relative;right:16.6667%}.el-col-xs-push-4{position:relative;left:16.6667%}.el-col-xs-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333%}.el-col-xs-pull-5{position:relative;right:20.8333%}.el-col-xs-push-5{position:relative;left:20.8333%}.el-col-xs-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1667%}.el-col-xs-pull-7{position:relative;right:29.1667%}.el-col-xs-push-7{position:relative;left:29.1667%}.el-col-xs-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333%}.el-col-xs-pull-8{position:relative;right:33.3333%}.el-col-xs-push-8{position:relative;left:33.3333%}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6667%}.el-col-xs-pull-10{position:relative;right:41.6667%}.el-col-xs-push-10{position:relative;left:41.6667%}.el-col-xs-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333%}.el-col-xs-pull-11{position:relative;right:45.8333%}.el-col-xs-push-11{position:relative;left:45.8333%}.el-col-xs-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1667%}.el-col-xs-pull-13{position:relative;right:54.1667%}.el-col-xs-push-13{position:relative;left:54.1667%}.el-col-xs-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333%}.el-col-xs-pull-14{position:relative;right:58.3333%}.el-col-xs-push-14{position:relative;left:58.3333%}.el-col-xs-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6667%}.el-col-xs-pull-16{position:relative;right:66.6667%}.el-col-xs-push-16{position:relative;left:66.6667%}.el-col-xs-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333%}.el-col-xs-pull-17{position:relative;right:70.8333%}.el-col-xs-push-17{position:relative;left:70.8333%}.el-col-xs-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1667%}.el-col-xs-pull-19{position:relative;right:79.1667%}.el-col-xs-push-19{position:relative;left:79.1667%}.el-col-xs-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333%}.el-col-xs-pull-20{position:relative;right:83.3333%}.el-col-xs-push-20{position:relative;left:83.3333%}.el-col-xs-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6667%}.el-col-xs-pull-22{position:relative;right:91.6667%}.el-col-xs-push-22{position:relative;left:91.6667%}.el-col-xs-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333%}.el-col-xs-pull-23{position:relative;right:95.8333%}.el-col-xs-push-23{position:relative;left:95.8333%}.el-col-xs-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{flex:0 0;max-width:0%;display:none}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0%}.el-col-sm-pull-0{position:relative;right:0%}.el-col-sm-push-0{position:relative;left:0%}.el-col-sm-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6667%}.el-col-sm-pull-4{position:relative;right:16.6667%}.el-col-sm-push-4{position:relative;left:16.6667%}.el-col-sm-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333%}.el-col-sm-pull-5{position:relative;right:20.8333%}.el-col-sm-push-5{position:relative;left:20.8333%}.el-col-sm-6{flex:0 0 25%;max-width:25%;display:block}.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1667%}.el-col-sm-pull-7{position:relative;right:29.1667%}.el-col-sm-push-7{position:relative;left:29.1667%}.el-col-sm-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333%}.el-col-sm-pull-8{position:relative;right:33.3333%}.el-col-sm-push-8{position:relative;left:33.3333%}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6667%}.el-col-sm-pull-10{position:relative;right:41.6667%}.el-col-sm-push-10{position:relative;left:41.6667%}.el-col-sm-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333%}.el-col-sm-pull-11{position:relative;right:45.8333%}.el-col-sm-push-11{position:relative;left:45.8333%}.el-col-sm-12{flex:0 0 50%;max-width:50%;display:block}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1667%}.el-col-sm-pull-13{position:relative;right:54.1667%}.el-col-sm-push-13{position:relative;left:54.1667%}.el-col-sm-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333%}.el-col-sm-pull-14{position:relative;right:58.3333%}.el-col-sm-push-14{position:relative;left:58.3333%}.el-col-sm-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6667%}.el-col-sm-pull-16{position:relative;right:66.6667%}.el-col-sm-push-16{position:relative;left:66.6667%}.el-col-sm-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333%}.el-col-sm-pull-17{position:relative;right:70.8333%}.el-col-sm-push-17{position:relative;left:70.8333%}.el-col-sm-18{flex:0 0 75%;max-width:75%;display:block}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1667%}.el-col-sm-pull-19{position:relative;right:79.1667%}.el-col-sm-push-19{position:relative;left:79.1667%}.el-col-sm-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333%}.el-col-sm-pull-20{position:relative;right:83.3333%}.el-col-sm-push-20{position:relative;left:83.3333%}.el-col-sm-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6667%}.el-col-sm-pull-22{position:relative;right:91.6667%}.el-col-sm-push-22{position:relative;left:91.6667%}.el-col-sm-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333%}.el-col-sm-pull-23{position:relative;right:95.8333%}.el-col-sm-push-23{position:relative;left:95.8333%}.el-col-sm-24{flex:0 0 100%;max-width:100%;display:block}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{flex:0 0;max-width:0%;display:none}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0%}.el-col-md-pull-0{position:relative;right:0%}.el-col-md-push-0{position:relative;left:0%}.el-col-md-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6667%}.el-col-md-pull-4{position:relative;right:16.6667%}.el-col-md-push-4{position:relative;left:16.6667%}.el-col-md-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333%}.el-col-md-pull-5{position:relative;right:20.8333%}.el-col-md-push-5{position:relative;left:20.8333%}.el-col-md-6{flex:0 0 25%;max-width:25%;display:block}.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1667%}.el-col-md-pull-7{position:relative;right:29.1667%}.el-col-md-push-7{position:relative;left:29.1667%}.el-col-md-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333%}.el-col-md-pull-8{position:relative;right:33.3333%}.el-col-md-push-8{position:relative;left:33.3333%}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6667%}.el-col-md-pull-10{position:relative;right:41.6667%}.el-col-md-push-10{position:relative;left:41.6667%}.el-col-md-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333%}.el-col-md-pull-11{position:relative;right:45.8333%}.el-col-md-push-11{position:relative;left:45.8333%}.el-col-md-12{flex:0 0 50%;max-width:50%;display:block}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1667%}.el-col-md-pull-13{position:relative;right:54.1667%}.el-col-md-push-13{position:relative;left:54.1667%}.el-col-md-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333%}.el-col-md-pull-14{position:relative;right:58.3333%}.el-col-md-push-14{position:relative;left:58.3333%}.el-col-md-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6667%}.el-col-md-pull-16{position:relative;right:66.6667%}.el-col-md-push-16{position:relative;left:66.6667%}.el-col-md-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333%}.el-col-md-pull-17{position:relative;right:70.8333%}.el-col-md-push-17{position:relative;left:70.8333%}.el-col-md-18{flex:0 0 75%;max-width:75%;display:block}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1667%}.el-col-md-pull-19{position:relative;right:79.1667%}.el-col-md-push-19{position:relative;left:79.1667%}.el-col-md-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333%}.el-col-md-pull-20{position:relative;right:83.3333%}.el-col-md-push-20{position:relative;left:83.3333%}.el-col-md-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6667%}.el-col-md-pull-22{position:relative;right:91.6667%}.el-col-md-push-22{position:relative;left:91.6667%}.el-col-md-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333%}.el-col-md-pull-23{position:relative;right:95.8333%}.el-col-md-push-23{position:relative;left:95.8333%}.el-col-md-24{flex:0 0 100%;max-width:100%;display:block}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{flex:0 0;max-width:0%;display:none}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0%}.el-col-lg-pull-0{position:relative;right:0%}.el-col-lg-push-0{position:relative;left:0%}.el-col-lg-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6667%}.el-col-lg-pull-4{position:relative;right:16.6667%}.el-col-lg-push-4{position:relative;left:16.6667%}.el-col-lg-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333%}.el-col-lg-pull-5{position:relative;right:20.8333%}.el-col-lg-push-5{position:relative;left:20.8333%}.el-col-lg-6{flex:0 0 25%;max-width:25%;display:block}.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1667%}.el-col-lg-pull-7{position:relative;right:29.1667%}.el-col-lg-push-7{position:relative;left:29.1667%}.el-col-lg-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333%}.el-col-lg-pull-8{position:relative;right:33.3333%}.el-col-lg-push-8{position:relative;left:33.3333%}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6667%}.el-col-lg-pull-10{position:relative;right:41.6667%}.el-col-lg-push-10{position:relative;left:41.6667%}.el-col-lg-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333%}.el-col-lg-pull-11{position:relative;right:45.8333%}.el-col-lg-push-11{position:relative;left:45.8333%}.el-col-lg-12{flex:0 0 50%;max-width:50%;display:block}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1667%}.el-col-lg-pull-13{position:relative;right:54.1667%}.el-col-lg-push-13{position:relative;left:54.1667%}.el-col-lg-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333%}.el-col-lg-pull-14{position:relative;right:58.3333%}.el-col-lg-push-14{position:relative;left:58.3333%}.el-col-lg-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6667%}.el-col-lg-pull-16{position:relative;right:66.6667%}.el-col-lg-push-16{position:relative;left:66.6667%}.el-col-lg-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333%}.el-col-lg-pull-17{position:relative;right:70.8333%}.el-col-lg-push-17{position:relative;left:70.8333%}.el-col-lg-18{flex:0 0 75%;max-width:75%;display:block}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1667%}.el-col-lg-pull-19{position:relative;right:79.1667%}.el-col-lg-push-19{position:relative;left:79.1667%}.el-col-lg-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333%}.el-col-lg-pull-20{position:relative;right:83.3333%}.el-col-lg-push-20{position:relative;left:83.3333%}.el-col-lg-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6667%}.el-col-lg-pull-22{position:relative;right:91.6667%}.el-col-lg-push-22{position:relative;left:91.6667%}.el-col-lg-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333%}.el-col-lg-pull-23{position:relative;right:95.8333%}.el-col-lg-push-23{position:relative;left:95.8333%}.el-col-lg-24{flex:0 0 100%;max-width:100%;display:block}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{flex:0 0;max-width:0%;display:none}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0%}.el-col-xl-pull-0{position:relative;right:0%}.el-col-xl-push-0{position:relative;left:0%}.el-col-xl-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6667%}.el-col-xl-pull-4{position:relative;right:16.6667%}.el-col-xl-push-4{position:relative;left:16.6667%}.el-col-xl-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333%}.el-col-xl-pull-5{position:relative;right:20.8333%}.el-col-xl-push-5{position:relative;left:20.8333%}.el-col-xl-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1667%}.el-col-xl-pull-7{position:relative;right:29.1667%}.el-col-xl-push-7{position:relative;left:29.1667%}.el-col-xl-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333%}.el-col-xl-pull-8{position:relative;right:33.3333%}.el-col-xl-push-8{position:relative;left:33.3333%}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6667%}.el-col-xl-pull-10{position:relative;right:41.6667%}.el-col-xl-push-10{position:relative;left:41.6667%}.el-col-xl-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333%}.el-col-xl-pull-11{position:relative;right:45.8333%}.el-col-xl-push-11{position:relative;left:45.8333%}.el-col-xl-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1667%}.el-col-xl-pull-13{position:relative;right:54.1667%}.el-col-xl-push-13{position:relative;left:54.1667%}.el-col-xl-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333%}.el-col-xl-pull-14{position:relative;right:58.3333%}.el-col-xl-push-14{position:relative;left:58.3333%}.el-col-xl-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6667%}.el-col-xl-pull-16{position:relative;right:66.6667%}.el-col-xl-push-16{position:relative;left:66.6667%}.el-col-xl-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333%}.el-col-xl-pull-17{position:relative;right:70.8333%}.el-col-xl-push-17{position:relative;left:70.8333%}.el-col-xl-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1667%}.el-col-xl-pull-19{position:relative;right:79.1667%}.el-col-xl-push-19{position:relative;left:79.1667%}.el-col-xl-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333%}.el-col-xl-pull-20{position:relative;right:83.3333%}.el-col-xl-push-20{position:relative;left:83.3333%}.el-col-xl-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6667%}.el-col-xl-pull-22{position:relative;right:91.6667%}.el-col-xl-push-22{position:relative;left:91.6667%}.el-col-xl-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333%}.el-col-xl-pull-23{position:relative;right:95.8333%}.el-col-xl-push-23{position:relative;left:95.8333%}.el-col-xl-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{width:100%;min-height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border:none;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);transition:border-bottom-color var(--el-transition-duration);box-sizing:border-box;outline:none;align-items:center;padding:0;font-weight:500;display:flex}.el-collapse-item__arrow{transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{text-align:left;flex:auto}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:#0000}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color);overflow:hidden}.el-collapse-item__content{font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);padding-bottom:25px;line-height:1.76923}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-picker-panel{--el-colorpicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-colorpicker-bg-color);box-sizing:content-box;background:var(--el-colorpicker-bg-color);width:300px;padding:12px}.el-color-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter);border-radius:4px}.el-color-picker-panel__wrapper{margin-bottom:6px}.el-color-picker-panel__footer{text-align:right;justify-content:space-between;margin-top:12px;display:flex}.el-color-picker-panel__footer .el-input{color:#000;width:160px;font-size:12px;line-height:26px}.el-color-picker-panel.is-disabled .el-color-svpanel,.el-color-picker-panel.is-disabled .el-color-hue-slider{cursor:not-allowed;opacity:.3}.el-color-picker-panel.is-disabled .el-color-hue-slider__thumb{cursor:not-allowed}.el-color-picker-panel.is-disabled .el-color-alpha-slider,.el-color-picker-panel.is-disabled .el-color-predefine .el-color-predefine__color-selector{cursor:not-allowed;opacity:.3}.el-color-predefine{width:280px;margin-top:8px;font-size:12px;display:flex}.el-color-predefine__colors{flex-wrap:wrap;flex:1;gap:8px;display:flex}.el-color-predefine__color-selector{border-radius:var(--el-border-radius-base);cursor:pointer;border:none;outline:none;width:20px;height:20px;padding:0;overflow:hidden}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-predefine__color-selector>div{height:100%;display:flex}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{box-sizing:border-box;float:right;background-color:red;width:280px;height:12px;padding:0 2px;position:relative}.el-color-hue-slider__bar{background:linear-gradient(90deg,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-svpanel{background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#fff0);width:280px;height:180px;position:relative}.el-color-svpanel__cursor{cursor:pointer;border-radius:50%;width:4px;height:4px;position:absolute;transform:translate(-2px,-2px);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006}.el-color-svpanel__cursor:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-alpha-slider{box-sizing:border-box;background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;width:280px;height:12px;position:relative}.el-color-alpha-slider.is-disabled .el-color-alpha-slider__thumb{cursor:not-allowed}.el-color-alpha-slider__bar{background:linear-gradient(to right,#fff0 0%,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(#fff0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-picker-panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker-panel{--el-color-picker-alpha-bg-a:#333}.el-color-picker{outline:none;width:32px;height:32px;line-height:normal;display:inline-block;position:relative}.el-color-picker:hover:not(:-webkit-any(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:hover:not(:is(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed;background-color:var(--el-fill-color-light)}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{width:40px;height:40px}.el-color-picker--small{width:24px;height:24px}.el-color-picker--small .el-color-picker__icon,.el-color-picker--small .el-color-picker__empty{transform:scale(.8)}.el-color-picker__trigger{box-sizing:border-box;border:1px solid var(--el-border-color);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:100%;height:100%;padding:4px;font-size:0;display:inline-flex;position:relative}.el-color-picker__color{box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);text-align:center;width:100%;height:100%;display:block;position:relative}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{color:#fff;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.el-color-picker__panel{border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);background-color:#fff}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333}.el-container{box-sizing:border-box;flex-direction:row;flex:auto;min-width:0;display:flex}.el-container.is-vertical{flex-direction:column}.el-date-table{-webkit-user-select:none;user-select:none;font-size:12px}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;text-align:center;cursor:pointer;width:32px;height:30px;padding:4px 0;position:relative}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;width:24px;height:24px;margin:0 auto;line-height:24px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.start-date .el-date-table-cell__text,.el-date-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.start-date .el-date-table-cell,.el-date-table td.end-date .el-date-table-cell{color:#fff}.el-date-table td.start-date .el-date-table-cell__text,.el-date-table td.end-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{color:var(--el-datepicker-header-text-color);border-bottom:solid 1px var(--el-border-color-lighter);padding:5px;font-weight:400}.el-date-table th.el-date-table__week-header{width:24px;padding:0}.el-month-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-month-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.start-date .el-date-table-cell__text,.el-month-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{width:54px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.start-date .el-date-table-cell,.el-month-table td.end-date .el-date-table-cell{color:#fff}.el-month-table td.start-date .el-date-table-cell__text,.el-month-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.start-date .el-date-table-cell__text,.el-year-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{width:60px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.start-date .el-date-table-cell,.el-year-table td.end-date .el-date-table-cell{color:#fff}.el-year-table td.start-date .el-date-table-cell__text,.el-year-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{vertical-align:top;width:50%;max-height:192px;display:inline-block;position:relative;overflow:auto}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);width:100%;z-index:var(--el-index-normal);text-align:center;cursor:pointer;height:30px;font-size:12px;line-height:30px;position:absolute;left:0}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{text-align:center;padding:0}.el-time-spinner__list{text-align:center;margin:0;padding:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";width:100%;height:80px;display:block}.el-time-spinner__item{height:32px;color:var(--el-text-color-regular);font-size:12px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;text-align:left;vertical-align:middle;position:relative}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{height:inherit;color:var(--el-text-color-placeholder);float:left;font-size:14px}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;width:39%;height:30px;line-height:30px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:#0000;border:none;outline:none;margin:0;padding:0;display:inline-block}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{overflow-wrap:break-word;height:100%;color:var(--el-text-color-primary);flex:1;justify-content:center;align-items:center;margin:0;padding:0 5px;font-size:14px;display:inline-flex}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer;font-size:14px}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{vertical-align:middle;align-items:center;padding:0 10px;display:inline-flex}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{height:38px;font-size:14px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{height:22px;font-size:12px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:hover,.el-range-editor.is-disabled:focus{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-datepicker-bg-color);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));line-height:30px}.el-picker-panel .el-time-panel{border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-datepicker-bg-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body:after,.el-picker-panel__body-wrapper:after{content:"";clear:both;display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);text-align:right;background-color:var(--el-datepicker-bg-color);padding:4px 12px;font-size:0;position:relative}.el-picker-panel__shortcut{width:100%;color:var(--el-datepicker-text-color);text-align:left;cursor:pointer;background-color:#0000;border:0;outline:none;padding-left:12px;font-size:14px;line-height:28px;display:block}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{color:var(--el-datepicker-active-color);background-color:#e6f1fe}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);cursor:pointer;background-color:#0000;border-radius:2px;outline:none;padding:0 20px;font-size:12px;line-height:24px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{color:var(--el-datepicker-icon-color);cursor:pointer;background:0 0;border:0;outline:none;margin-top:8px;padding:1px 6px;font-size:12px;line-height:1}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;padding-top:6px;position:absolute;top:0;bottom:0;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-datepicker-bg-color);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-picker__header{text-align:center;padding:12px 12px 0}.el-date-picker__header--bordered{border-bottom:solid 1px var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{text-align:center;padding:10px}.el-date-picker__time-label{float:left;cursor:pointer;margin-left:10px;line-height:30px}.el-date-picker .el-time-panel{position:absolute}.el-date-picker.is-disabled .el-date-picker__header-label{color:var(--el-text-color-disabled)}.el-date-picker.is-disabled .el-date-picker__header-label:hover{cursor:not-allowed}.el-date-picker.is-disabled .el-date-picker__header-label .el-icon{cursor:inherit}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{text-align:center;height:28px;position:relative}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{margin-right:50px;font-size:16px;font-weight:500}.el-date-range-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;width:50%;margin:0;padding:16px;display:table-cell}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-range-picker__time-header>.el-icon-arrow-right{vertical-align:middle;color:var(--el-datepicker-icon-color);font-size:20px;display:table-cell}.el-date-range-picker__time-picker-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{z-index:1;background:#fff;position:absolute;top:13px;right:0}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-date-range-picker.is-disabled .el-date-range-picker__header-label{color:var(--el-text-color-disabled)}.el-date-range-picker.is-disabled .el-date-range-picker__header-label:hover{cursor:not-allowed}.el-date-range-picker.is-disabled .el-date-range-picker__header-label .el-icon{cursor:inherit}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{text-align:center;z-index:1;padding:10px;position:relative}.el-time-range-picker__cell{box-sizing:border-box;width:50%;margin:0;padding:4px 7px 7px;display:inline-block}.el-time-range-picker__header{text-align:center;margin-bottom:5px;font-size:14px}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{width:180px;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box;border-radius:2px;position:relative;left:0}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";z-index:-1;box-sizing:border-box;text-align:left;height:32px;margin-top:-16px;padding-top:6px;position:absolute;top:50%;left:0;right:0}.el-time-panel__content:after{margin-left:12%;margin-right:12%;left:50%}.el-time-panel__content:before{border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));text-align:right;box-sizing:border-box;height:36px;padding:4px;line-height:25px}.el-time-panel__btn{cursor:pointer;color:var(--el-text-color-primary);background-color:#0000;border:none;outline:none;margin:0 5px;padding:0 5px;font-size:12px;line-height:28px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter)}.el-picker-panel.is-border .el-picker-panel__body-wrapper{position:relative}.el-picker-panel.is-border.el-picker-panel [slot=sidebar],.el-picker-panel.is-border.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;height:100%;padding-top:6px;position:absolute;top:0;overflow:auto}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-size:14px;line-height:23px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color);position:fixed;top:0;left:0}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;padding:var(--el-dialog-padding-primary);width:var(--el-dialog-width,50%);overflow-wrap:break-word;position:relative}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{margin:0;position:fixed;inset:0;overflow:auto}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size,16px))}.el-dialog__headerbtn{cursor:pointer;width:48px;height:48px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding-top:var(--el-dialog-padding-primary);text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{position:fixed;inset:0;overflow:auto}.el-overlay-dialog.is-closing .el-dialog{pointer-events:none}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateY(-20px)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);width:100%;height:1px;margin:24px 0;display:block}.el-divider--vertical{vertical-align:middle;border-left:1px var(--el-border-color) var(--el-border-style);width:1px;height:1em;margin:0 8px;display:inline-block;position:relative}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);padding:0 20px;font-size:14px;font-weight:500;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%)translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;box-sizing:border-box;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);transition:all var(--el-transition-duration);flex-direction:column;display:flex;position:absolute}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{color:var(--el-text-color-primary);padding:var(--el-drawer-padding-primary);align-items:center;margin-bottom:32px;padding-bottom:0;display:flex;overflow:hidden}.el-drawer__header>:first-child{flex:1}.el-drawer__title{line-height:inherit;flex:1;margin:0;font-size:16px}.el-drawer__footer{padding:var(--el-drawer-padding-primary);text-align:right;padding-top:10px;overflow:hidden}.el-drawer__close-btn{cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:#0000;border:none;outline:none;display:inline-flex}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{padding:var(--el-drawer-padding-primary);flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none;background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:before{content:"";background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{height:100%;width:var(--el-drawer-dragger-size);cursor:ew-resize;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{width:3px;top:0;bottom:0}.el-drawer.ttb,.el-drawer.btt{width:100%;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger,.el-drawer.btt>.el-drawer__dragger{width:100%;height:var(--el-drawer-dragger-size);cursor:ns-resize;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger:before,.el-drawer.btt>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-from,.el-drawer-fade-enter-active,.el-drawer-fade-enter-to,.el-drawer-fade-leave-from,.el-drawer-fade-leave-active,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:#0000!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);vertical-align:top;line-height:1;display:inline-flex;position:relative}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;margin:0;padding:0;list-style:none}.el-dropdown .el-dropdown__caret-button{border-left:none;justify-content:center;align-items:center;width:32px;padding-left:0;padding-right:0;display:inline-flex}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";background:var(--el-overlay-color-lighter);width:1px;display:block;position:absolute;top:-1px;bottom:-1px;left:0}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{z-index:var(--el-dropdown-menu-index);background-color:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);box-shadow:none;border:none;margin:0;padding:5px 0;list-style:none;position:relative;top:0;left:0}.el-dropdown-menu__item{white-space:nowrap;line-height:22px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:none;align-items:center;margin:0;padding:5px 16px;list-style:none;display:flex}.el-dropdown-menu__item:not(.is-disabled):hover,.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;font-size:14px;line-height:22px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;font-size:12px;line-height:20px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;vertical-align:top;object-fit:contain;width:100%;height:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;vertical-align:top;width:100%;height:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{font-size:var(--el-font-size-base);color:var(--el-text-color-secondary);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;height:var(--el-footer-height);flex-shrink:0}.el-form-item{--font-size:14px;margin-bottom:18px;display:flex}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{text-align:left;justify-content:flex-start}.el-form-item--label-right .el-form-item__label{text-align:right;justify-content:flex-end}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{text-align:left;width:-moz-fit-content;width:fit-content;height:auto;margin-bottom:8px;padding-right:0;line-height:22px;display:block}.el-form-item__label-wrap{display:flex}.el-form-item__label{font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);box-sizing:border-box;flex:none;align-items:flex-start;height:32px;padding:0 12px 0 0;line-height:32px;display:inline-flex}.el-form-item__content{line-height:32px;font-size:var(--font-size);flex-wrap:wrap;flex:1;align-items:center;min-width:0;display:flex;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);padding-top:2px;font-size:12px;line-height:1;position:absolute;top:100%;left:0}.el-form-item__error--inline{margin-left:10px;display:inline-block;position:relative;top:auto;left:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after{content:"*";color:var(--el-color-danger);margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px #0000}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{vertical-align:middle;margin-right:32px;display:inline-flex}.el-form--inline.el-form--label-top{flex-wrap:wrap;display:flex}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;height:var(--el-header-height);flex-shrink:0}.el-image-viewer__wrapper{position:fixed;inset:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{z-index:1;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{width:40px;height:40px;font-size:40px;top:40px;right:40px}.el-image-viewer__canvas{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:static}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;height:44px;padding:0 23px;bottom:30px;left:50%;transform:translate(-50%)}.el-image-viewer__actions__inner{cursor:default;color:#fff;justify-content:space-around;align-items:center;gap:22px;width:100%;height:100%;padding:0 6px;font-size:23px;display:flex}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{cursor:default;color:#fff;bottom:90px;left:50%;transform:translate(-50%)}.el-image-viewer__prev{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;left:40px;transform:translateY(-50%)}.el-image-viewer__next{text-indent:2px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;right:40px;transform:translateY(-50%)}.el-image-viewer__close{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px}.el-image-viewer__mask{opacity:.5;background:#000;width:100%;height:100%;position:absolute;top:0;left:0}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateY(-20px)}}.el-image__error,.el-image__placeholder,.el-image__wrapper,.el-image__inner{width:100%;height:100%}.el-image{display:inline-block;position:relative;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle;justify-content:center;align-items:center;font-size:14px;display:flex}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;box-sizing:border-box;cursor:pointer;font-size:var(--el-input-tag-font-size);padding:var(--el-input-tag-padding);width:var(--el-input-tag-width);min-height:var(--el-input-tag-mini-height);line-height:var(--el-input-tag-line-height);border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;display:flex;transform:translate(0)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;display:flex}.el-input-tag__suffix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:8px;display:flex}.el-input-tag__collapse-tag{line-height:1}.el-input-tag__input-tag-list{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-input-tag__input-tag-list.is-near{margin-left:-8px}.el-input-tag__input-tag-list .el-tag{cursor:pointer;border-color:#0000}.el-input-tag__input-tag-list .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__input-tag-list .el-tag .el-tag__content{min-width:0}.el-input-tag__inner{align-items:center;gap:var(--el-input-tag-gap);flex-wrap:wrap;flex:1;min-width:0;max-width:100%;display:flex;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;user-select:none}.el-input-tag__drop-indicator{width:1px;height:var(--el-input-tag-line-height);background-color:var(--el-color-primary);position:absolute;top:0}.el-input-tag__inner .el-tag{cursor:pointer;border-color:#0000;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:normal;overflow:hidden}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{color:var(--el-input-tag-text-color);font-size:inherit;font-family:inherit;line-height:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;padding:0}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);vertical-align:middle;cursor:pointer;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color);outline:none;flex-direction:row;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex;position:relative}.el-link.is-hover-underline:hover:after{content:"";border-bottom:1px solid var(--el-link-hover-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link.is-underline:after{content:"";border-bottom:1px solid var(--el-link-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{justify-content:center;align-items:center;display:inline-flex}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{z-index:2000;background-color:var(--el-mask-color);transition:opacity var(--el-transition-duration);margin:0;position:absolute;inset:0}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size)) / 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size)) / 2);text-align:center;width:100%;position:absolute;top:50%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:2s linear infinite loading-rotate;display:inline}.el-loading-spinner .path{stroke-dasharray:90 150;stroke-dashoffset:0;stroke-width:2px;stroke:var(--el-color-primary);stroke-linecap:round;animation:1.5s ease-in-out infinite loading-dash}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-40px}to{stroke-dasharray:90 150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;box-sizing:border-box;padding:var(--el-main-padding);flex:auto;display:block;overflow:auto}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);max-width:var(--el-messagebox-width);width:100%;padding:var(--el-messagebox-padding-primary);vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-messagebox-box-shadow);text-align:left;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word;display:inline-block;position:relative;overflow:hidden}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{text-align:center;padding:16px;position:fixed;inset:0;overflow:auto}.is-message-box .el-overlay-message-box:after{content:"";vertical-align:middle;width:0;height:100%;display:inline-block}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size,16px))}.el-message-box__title{font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height);color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{width:40px;height:40px;font-size:var(--el-message-close-size,16px);cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;gap:12px;display:flex}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{min-width:0;margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{padding-top:var(--el-messagebox-padding-primary);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.el-message-box--center .el-message-box__title{justify-content:center;align-items:center;gap:6px;display:flex}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);background-color:var(--el-message-bg-color);width:max-content;max-width:calc(100% - 32px);transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;padding:var(--el-message-padding);align-items:center;gap:8px;display:flex;position:fixed}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:50%;transform:translate(-50%)}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0}.el-message-fade-enter-from.is-left,.el-message-fade-enter-from.is-right,.el-message-fade-leave-to.is-left,.el-message-fade-leave-to.is-right{transform:translateY(-100%)}.el-message-fade-enter-from.is-left.is-bottom,.el-message-fade-enter-from.is-right.is-bottom,.el-message-fade-leave-to.is-left.is-bottom,.el-message-fade-leave-to.is-right.is-bottom{transform:translateY(100%)}.el-message-fade-enter-from.is-center,.el-message-fade-leave-to.is-center{transform:translate(-50%,-100%)}.el-message-fade-enter-from.is-center.is-bottom,.el-message-fade-leave-to.is-center.is-bottom{transform:translate(-50%,100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:break-word;z-index:9999;display:flex;position:fixed;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{min-width:0;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);flex:1}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);color:var(--el-notification-content-color);margin:6px 0 0;line-height:24px}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size);flex-shrink:0}.el-notification .el-notification__closeBtn{cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size);position:absolute;top:18px;right:15px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{z-index:2000;background-color:var(--el-overlay-color-lighter);height:100%;position:fixed;inset:0;overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{justify-content:space-between;align-items:center;line-height:24px;display:flex}.el-page-header__left{align-items:center;margin-right:40px;display:flex;position:relative}.el-page-header__back{cursor:pointer;align-items:center;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;margin-right:10px;font-size:16px;display:flex}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;white-space:nowrap;color:var(--el-pagination-text-color);font-size:var(--el-pagination-font-size);align-items:center;font-weight:400;display:flex}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield}.el-pagination .el-select{width:128px}.el-pagination .btn-prev,.el-pagination .btn-next{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pagination .btn-prev *,.el-pagination .btn-next *{pointer-events:none}.el-pagination .btn-prev:focus,.el-pagination .btn-next:focus{outline:none}.el-pagination .btn-prev:hover,.el-pagination .btn-next:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-prev.is-active,.el-pagination .btn-next.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-prev.is-active.is-disabled,.el-pagination .btn-next.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-prev:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-next.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-prev .el-icon,.el-pagination .btn-next .el-icon{width:inherit;font-size:12px;font-weight:700;display:block}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);font-weight:400}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);align-items:center;font-weight:400;display:flex}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{text-align:center;box-sizing:border-box}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{flex:1;justify-content:flex-end;align-items:center;display:flex}.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .el-pager li:disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-prev,.el-pagination--small .btn-next,.el-pagination--small .el-pager li{height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);font-size:var(--el-pagination-font-size-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small span:not([class*=suffix]),.el-pagination--small button{font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-prev,.el-pagination--large .btn-next,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{-webkit-user-select:none;user-select:none;align-items:center;margin:0;padding:0;font-size:0;list-style:none;display:flex}.el-pager li{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li:disabled,.el-pager li.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm{outline:none}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);min-width:150px;padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);margin-bottom:12px;line-height:1}.el-popover__reference:focus:not(.focusing),.el-popover__reference:focus:hover{outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus:active,.el-popover.el-popper:focus{outline-width:0}.el-progress{align-items:center;line-height:1;display:flex;position:relative}.el-progress__text{color:var(--el-text-color-regular);min-width:50px;margin-left:5px;font-size:14px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{text-align:center;width:100%;margin:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{margin-right:0;padding-right:0;display:block}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);vertical-align:middle;border-radius:100px;height:6px;position:relative;overflow:hidden}.el-progress-bar__inner{background-color:var(--el-color-primary);text-align:right;white-space:nowrap;border-radius:100px;height:100%;line-height:1;transition:width .6s;position:absolute;top:0;left:0}.el-progress-bar__inner:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-progress-bar__inner--indeterminate{animation:3s infinite indeterminate;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,#0000001a 25%,#0000 25% 50%,#0000001a 50% 75%,#0000 75%,#0000);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:3s linear infinite striped-flow}.el-progress-bar__innerText{vertical-align:middle;color:#fff;margin:0 5px;font-size:12px;display:inline-block}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);outline:none;display:inline-block;position:relative}.el-radio-button__inner{white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);line-height:1;font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio{opacity:0;z-index:-1;outline:none;position:absolute}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{flex-wrap:wrap;align-items:center;font-size:0;display:inline-flex}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);cursor:pointer;white-space:nowrap;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;outline:none;align-items:center;height:32px;margin-right:30px;display:inline-flex;position:relative}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{width:12px;height:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;vertical-align:middle;outline:none;display:inline-flex;position:relative}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%)scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);cursor:pointer;box-sizing:border-box;transition:all .3s;display:inline-block;position:relative}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";width:4px;height:4px;transition:transform .15s ease-in;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.el-radio__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute;inset:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);--el-rate-outline-color:var(--el-color-primary-light-5);align-items:center;height:32px;display:inline-flex}.el-rate:focus,.el-rate:active{outline:none}.el-rate:focus-visible .el-rate__item .el-rate__icon.is-focus-visible{outline:2px solid var(--el-rate-outline-color);transition:outline-offset,outline}.el-rate__item{cursor:pointer;vertical-align:middle;color:var(--el-rate-void-color);font-size:0;line-height:normal;display:inline-block;position:relative}.el-rate .el-rate__icon{font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration);display:inline-block;position:relative}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-rate__decimal--box{position:absolute;top:0;left:0}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{cursor:not-allowed;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;text-align:center;box-sizing:border-box;padding:var(--el-result-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);margin:0;line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{font-size:var(--el-font-size-base);color:var(--el-text-color-regular);margin:0;line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;flex-wrap:wrap;display:flex;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;position:relative;overflow:hidden}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));width:0;height:0;transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3);display:block;position:relative}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{z-index:1;border-radius:4px;position:absolute;bottom:2px;right:2px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__loading,.el-select-dropdown__empty{text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;margin:0;padding:6px 0;list-style:none}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{font-size:var(--el-font-size-base);white-space:nowrap;text-overflow:ellipsis;color:var(--el-text-color-regular);box-sizing:border-box;cursor:pointer;height:34px;padding:0 32px 0 20px;line-height:34px;position:relative;overflow:hidden}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;background-color:unset}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{content:"";background-position:50%;background-repeat:no-repeat;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;border-top:none;border-right:none;width:12px;height:12px;position:absolute;top:50%;right:20px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{margin:0;padding:0;list-style:none;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);text-overflow:ellipsis;white-space:nowrap;padding:0 20px;font-size:12px;line-height:34px;overflow:hidden}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;vertical-align:middle;width:var(--el-select-width);display:inline-block;position:relative}.el-select__wrapper{box-sizing:border-box;cursor:pointer;text-align:left;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);min-height:32px;transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;gap:6px;padding:4px 12px;font-size:14px;line-height:24px;display:flex;position:relative;transform:translate(0)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:6px;display:flex}.el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:var(--el-transition-duration);cursor:pointer;transform:rotate(0)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{cursor:pointer;border-color:#0000}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{-webkit-user-select:none;user-select:none;flex-wrap:wrap;display:flex}.el-select__tags-text{text-overflow:ellipsis;white-space:nowrap;line-height:normal;display:block;overflow:hidden}.el-select__placeholder{z-index:-1;text-overflow:ellipsis;white-space:nowrap;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.el-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--el-text-color-placeholder)}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;z-index:-1;position:absolute}.el-select__input{color:var(--el-select-multiple-input-color);font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;height:24px;padding:0;font-family:inherit}.el-select__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-select--large .el-select__wrapper{gap:6px;min-height:40px;padding:8px 16px;font-size:14px;line-height:24px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{gap:4px;min-height:24px;padding:2px 8px;font-size:12px;line-height:20px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);width:100%;height:16px;display:inline-block}.el-skeleton__circle{width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);border-radius:50%}.el-skeleton__button{border-radius:4px;width:64px;height:40px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;border-radius:0;justify-content:center;align-items:center;display:flex}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100%}to{background-position:0}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;animation:1.4s infinite el-skeleton-loading}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{vertical-align:top;display:inline-flex}.el-space__item{flex-wrap:wrap;display:flex}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{vertical-align:middle;display:inline-block}.el-spinner-inner{width:50px;height:50px;animation:2s linear infinite rotate}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:1.5s ease-in-out infinite dash}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1 150;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-35px}to{stroke-dasharray:90 150;stroke-dashoffset:-124px}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-grow:0;flex-shrink:0;flex-basis:auto!important}.el-step:last-of-type .el-step__main,.el-step:last-of-type .el-step__description{padding-right:0}.el-step__head{width:100%;position:relative}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{z-index:1;box-sizing:border-box;background:var(--el-bg-color);justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;transition:all .15s ease-out;display:inline-flex;position:relative}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;user-select:none;text-align:center;color:inherit;font-weight:700;line-height:1;display:inline-block}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{box-sizing:border-box;border:1px solid;width:0;height:0;transition:all .15s ease-out;display:block}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{margin-top:-5px;padding-right:10%;font-size:12px;font-weight:400;line-height:20px}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{padding-bottom:8px;line-height:24px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-vertical .el-step__description{padding-right:0}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{width:auto;padding-right:10px;font-size:0}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8)translateY(1px)}.el-step.is-simple .el-step__main{flex-grow:1;align-items:stretch;display:flex;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{overflow-wrap:break-word;max-width:50%}.el-step.is-simple .el-step__arrow{flex-grow:1;justify-content:center;align-items:center;display:flex}.el-step.is-simple .el-step__arrow:before,.el-step.is-simple .el-step__arrow:after{content:"";background:var(--el-text-color-placeholder);width:1px;height:15px;display:inline-block;position:absolute}.el-step.is-simple .el-step__arrow:before{transform-origin:0 0;transform:rotate(-45deg)translateY(-4px)}.el-step.is-simple .el-step__arrow:after{transform-origin:100% 100%;transform:rotate(45deg)translateY(4px)}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{line-height:normal;display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);vertical-align:middle;align-items:center;height:32px;font-size:14px;line-height:20px;display:inline-flex;position:relative}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);cursor:pointer;vertical-align:middle;height:20px;color:var(--el-text-color-primary);font-size:14px;font-weight:500;display:inline-block}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{font-size:14px;line-height:1;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{opacity:0;width:0;height:0;margin:0;position:absolute}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;min-width:40px;height:20px;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);border-radius:10px;outline:none;align-items:center;display:inline-flex;position:relative}.el-switch__core .el-switch__inner{width:100%;transition:all var(--el-transition-duration);justify-content:center;align-items:center;height:16px;padding:0 4px 0 18px;display:flex;overflow:hidden}.el-switch__core .el-switch__inner-wrapper{color:var(--el-color-white);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;align-items:center;font-size:12px;display:flex;overflow:hidden}.el-switch__core .el-switch__action{border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);background-color:var(--el-color-white);width:16px;height:16px;color:var(--el-switch-off-color);justify-content:center;align-items:center;display:flex;position:absolute;left:1px}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{height:40px;font-size:14px;line-height:24px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;min-width:50px;height:24px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{height:24px;font-size:12px;line-height:16px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;min-width:30px;height:16px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;background-color:#fff;border-radius:2px}.el-table-filter__list{outline:none;min-width:100px;margin:0;padding:5px 0;list-style:none}.el-table-filter__list-item{cursor:pointer;line-height:36px;font-size:var(--el-font-size-base);outline:none;padding:0 10px}.el-table-filter__list-item:hover,.el-table-filter__list-item:focus{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button{color:var(--el-text-color-regular);font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{height:unset;align-items:center;margin-bottom:12px;margin-left:5px;margin-right:5px;display:flex}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);box-sizing:border-box;background-color:var(--el-table-bg-color);width:100%;max-width:100%;height:-moz-fit-content;height:fit-content;font-size:var(--el-font-size-base);color:var(--el-table-text-color);position:relative;overflow:hidden}.el-table__inner-wrapper{flex-direction:column;height:100%;display:flex;position:relative}.el-table__inner-wrapper:before{height:1px;bottom:0;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell,.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell{border-bottom-color:#0000}.el-table__empty-block{text-align:center;justify-content:center;align-items:center;width:100%;min-height:60px;display:flex;position:sticky;left:0}.el-table__empty-text{width:50%;color:var(--el-text-color-secondary);line-height:60px}.el-table__expand-column .cell{text-align:center;-webkit-user-select:none;user-select:none;padding:0}.el-table__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon{color:var(--el-text-color-regular);width:min(23px,100%);height:23px;font-size:12px;line-height:12px}.el-table__expand-icon.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:#0000!important}.el-table__placeholder{width:20px;display:inline-block}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;text-align:left;min-width:0;z-index:var(--el-table-index);padding:8px 0;position:relative}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;width:15px;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;padding:0 12px;line-height:23px;overflow:hidden}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table th.el-table__cell.is-leaf,.el-table td.el-table__cell{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{content:"";vertical-align:middle;background:#ff4d51;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border:after,.el-table--border:before,.el-table--border .el-table__inner-wrapper:after,.el-table__inner-wrapper:before{content:"";background-color:var(--el-table-border-color);z-index:calc(var(--el-table-index) + 2);position:absolute}.el-table--border .el-table__inner-wrapper:after{width:100%;height:1px;z-index:calc(var(--el-table-index) + 2);top:0;left:0}.el-table--border:before{width:1px;height:100%;top:-1px;left:0}.el-table--border:after{width:1px;height:100%;top:-1px;right:0}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__header-wrapper,.el-table__body-wrapper,.el-table__footer-wrapper{width:100%}.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right,.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right{background:inherit;z-index:calc(var(--el-table-index) + 1);position:sticky!important}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{content:"";width:10px;box-shadow:none;touch-action:none;pointer-events:none;position:absolute;top:0;bottom:0;overflow:hidden}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch,.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch{z-index:calc(var(--el-table-index) + 1);background:#fff;right:0;position:sticky!important}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__header,.el-table__body,.el-table__footer{table-layout:fixed;border-collapse:separate}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__header-wrapper .el-table-column--selection>.cell,.el-table__body-wrapper .el-table-column--selection>.cell{align-items:center;height:23px;display:inline-flex}.el-table__header-wrapper .el-table-column--selection .el-checkbox,.el-table__body-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;position:relative;overflow:hidden}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .caret-wrapper{vertical-align:middle;width:24px;height:14px;overflow:initial;flex-direction:column;align-items:center;display:inline-flex;position:relative}.el-table .sort-caret{border:5px solid #0000;width:0;height:0;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;z-index:-1;position:absolute}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{z-index:calc(var(--el-table-index) + 2);position:sticky;top:0}.el-table.el-table--scrollable-y .el-table__body-footer{z-index:calc(var(--el-table-index) + 2);position:sticky;bottom:0}.el-table__column-resize-proxy{border-left:var(--el-table-border);width:0;z-index:calc(var(--el-table-index) + 9);position:absolute;top:0;bottom:0;left:200px}.el-table__column-filter-trigger{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger{display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);vertical-align:middle;font-size:14px}.el-table__border-left-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0;left:0}.el-table__border-bottom-patch{height:1px;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;left:0}.el-table__border-right-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{text-align:center;width:20px;display:inline-block}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden;box-shadow:2px 0 4px #0000000f}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__vertical,.el-table-v2__left .el-vl__horizontal{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;right:0;overflow:hidden;box-shadow:-2px 0 4px #0000000f}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__vertical,.el-table-v2__right .el-vl__horizontal{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{position:relative;overflow:hidden}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{position:absolute;bottom:0;left:0;right:0;overflow:hidden}.el-table-v2__empty{position:absolute;left:0}.el-table-v2__overlay{z-index:9999;position:absolute;inset:0}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{-webkit-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color);height:100%;color:var(--el-table-header-text-color);align-items:center;padding:0 8px;font-weight:700;display:flex;overflow:hidden}.el-table-v2__header-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__header-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__sort-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__sort-icon{transition:opacity,display var(--el-transition-duration);opacity:.6;display:none}.el-table-v2__sort-icon.is-sorting{opacity:1;display:flex}.el-table-v2__row{border-bottom:var(--el-table-border);transition:background-color var(--el-transition-duration);align-items:center;display:flex}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;height:100%;padding:0 8px;display:flex;overflow:hidden}.el-table-v2__row-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__row-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__expand-icon{-webkit-user-select:none;user-select:none;margin:0 4px}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{justify-content:space-between;align-items:center;margin:0 0 15px;padding:0;display:flex;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);z-index:1;height:2px;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none;position:absolute;bottom:0;left:0}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{border:1px solid var(--el-border-color);text-align:center;width:20px;height:20px;color:var(--el-text-color-primary);cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;margin:10px 0 10px 10px;font-size:12px;line-height:20px;transition:all .15s;display:flex}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:auto;margin-bottom:-1px;position:relative;overflow:hidden}.el-tabs__nav-wrap:after{content:"";background-color:var(--el-border-color-light);width:100%;height:2px;z-index:var(--el-index-normal);position:absolute;bottom:0;left:0}.el-tabs__nav-wrap.is-bottom:after{top:0;bottom:auto}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{cursor:pointer;color:var(--el-text-color-secondary);text-align:center;width:20px;font-size:12px;line-height:44px;position:absolute}.el-tabs__nav-next.is-disabled,.el-tabs__nav-prev.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1);display:flex;position:relative}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{text-align:center;flex:1}.el-tabs__item{height:var(--el-tabs-header-height);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary);justify-content:center;align-items:center;padding:0 20px;font-weight:500;list-style:none;display:flex;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border-radius:50%;margin-left:5px}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;position:relative;overflow:hidden}.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--top>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height);box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);box-sizing:border-box;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{transform-origin:100%;width:0;height:14px;font-size:12px;position:relative;right:-2px;overflow:hidden}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid #0000;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-top:-1px}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);color:var(--el-text-color-secondary);border:1px solid #0000;margin-top:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child,.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-top:10px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid #0000}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-scroll{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{width:2px;height:auto;top:0;bottom:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{text-align:center;cursor:pointer;width:100%;height:30px;line-height:30px}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled{cursor:not-allowed}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{top:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{width:2px;height:100%;top:0;bottom:auto}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right-color:#fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-right:none;border-radius:4px 0 0 4px}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid #0000;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 #0000}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left-color:#fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid #0000;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 #0000}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInRight-transition,.slideInLeft-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);position:absolute;left:0;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);position:absolute;left:0;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(100%)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(-100%)}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);vertical-align:middle;height:24px;font-size:var(--el-tag-font-size);border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px;--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);border-style:solid;border-width:1px;justify-content:center;align-items:center;padding:0 9px;line-height:1;display:inline-flex}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size);border-radius:50%;display:flex}.el-tag .el-tag__close{background-color:#0000;border:none;border-radius:50%;outline:none;margin-left:6px;padding:0;overflow:hidden}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag--dark{--el-tag-text-color:var(--el-color-white);--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning,.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{--el-icon-size:16px;height:32px;padding:0 11px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{--el-icon-size:12px;height:20px;padding:0 7px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);font-size:var(--el-text-font-size);color:var(--el-text-color);overflow-wrap:break-word;align-self:center;margin:0;padding:0}.el-text.is-truncated{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;overflow:hidden}.el-text.is-line-clamp{-webkit-box-orient:vertical;display:-webkit-inline-box;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{min-width:0;margin:5px 0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{box-sizing:content-box;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__node--normal{width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline-item.is-start .el-timeline-item__wrapper{padding-left:28px}.el-timeline-item.is-start .el-timeline-item__tail{left:4px}.el-timeline-item.is-start .el-timeline-item__node--normal{left:-1px}.el-timeline-item.is-start .el-timeline-item__node--large{left:-2px}.el-timeline-item.is-end .el-timeline-item__wrapper{text-align:right;padding-right:28px}.el-timeline-item.is-end .el-timeline-item__tail{right:4px}.el-timeline-item.is-end .el-timeline-item__node--normal{right:-1px}.el-timeline-item.is-end .el-timeline-item__node--large{right:-2px}.el-timeline-item.is-alternate .el-timeline-item__tail,.el-timeline-item.is-alternate .el-timeline-item__node,.el-timeline-item.is-alternate-reverse .el-timeline-item__tail,.el-timeline-item.is-alternate-reverse .el-timeline-item__node{left:50%;transform:translate(-50%)}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{height:calc(50% - 10px);display:block}.el-timeline.is-start{padding-left:40px;padding-right:0}.el-timeline.is-end{padding-left:0;padding-right:40px}.el-timeline.is-alternate{padding-left:20px;padding-right:20px}.el-timeline.is-alternate .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-timeline.is-alternate .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse{padding-left:20px;padding-right:20px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{vertical-align:middle;padding:0 30px;display:inline-block}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);box-sizing:border-box;max-height:100%;display:inline-block;position:relative;overflow:hidden}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0}.el-transfer-panel__list{height:var(--el-transfer-panel-body-height);box-sizing:border-box;margin:0;padding:6px 0;list-style:none;overflow:auto}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular);margin-right:30px}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;width:100%;line-height:var(--el-transfer-item-height);padding-left:22px;display:block;overflow:hidden}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;box-sizing:border-box;padding:15px}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);box-sizing:border-box;width:100%;font-size:12px;display:inline-block}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);align-items:center;margin:0;padding-left:15px;display:flex}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;width:100%;display:flex;position:relative}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{min-width:0;color:var(--el-text-color-primary);flex:1;align-items:center;font-size:16px;font-weight:400;display:flex}.el-transfer-panel .el-transfer-panel__header-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.el-transfer-panel .el-transfer-panel__header-count{color:var(--el-text-color-secondary);flex-shrink:0;margin-left:8px;margin-right:15px;font-size:12px}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);color:var(--el-text-color-secondary);text-align:center;margin:0;padding:6px 15px 0}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color);font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{text-align:center;width:100%;height:100%;min-height:60px;position:relative}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;position:absolute;left:0;right:0}.el-tree-node{white-space:nowrap;outline:none}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);height:var(--el-tree-node-content-height);cursor:pointer;align-items:center;display:flex}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);transition:transform var(--el-transition-duration) ease-in-out;font-size:12px;transform:rotate(0)}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:#0000;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:#0000;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{flex:1;height:20px;padding-left:0;line-height:20px;background:0 0!important}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;cursor:pointer;outline:none;justify-content:center;align-items:center;display:inline-flex}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{border-color:var(--el-border-color-darker);color:inherit}.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);margin-top:7px;font-size:12px}.el-upload iframe{z-index:-1;opacity:0;filter:alpha(opacity=0);position:absolute;top:0;left:0}.el-upload--picture-card{background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);box-sizing:border-box;text-align:center;cursor:pointer;border-radius:6px;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);margin-bottom:16px;font-size:67px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);text-align:center;font-size:14px}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{color:var(--el-text-color-regular);box-sizing:border-box;border-radius:4px;width:100%;margin-bottom:5px;font-size:14px;transition:all .5s cubic-bezier(.55,0,.1,1);position:relative}.el-upload-list__item .el-progress{width:100%;position:absolute;top:20px}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);display:none;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{cursor:pointer;opacity:1;color:var(--el-color-primary);font-size:12px;font-style:normal;display:none;position:absolute;top:1px;right:5px}.el-upload-list__item:hover,.el-upload-list__item:focus-within{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close,.el-upload-list__item:focus-within .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-icon--close-tip,.el-upload-list__item:focus-within .el-icon--close-tip{right:24px}.el-upload-list__item:hover .el-progress__text,.el-upload-list__item:focus-within .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{flex-direction:column;justify-content:center;width:calc(100% - 30px);margin-left:4px;display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:hover,.el-upload-list__item.is-success .el-upload-list__item-name:focus{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:not(.focusing):focus,.el-upload-list__item.is-success:active{outline-width:0}.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip,.el-upload-list__item.is-success:active .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus-within .el-upload-list__item-status-label{opacity:0;display:none}.el-upload-list__item-name{color:var(--el-text-color-regular);text-align:center;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base);align-items:center;padding:0 4px;display:inline-flex}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-upload-list__item-status-label{line-height:inherit;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;display:none;position:absolute;top:0;right:5px}.el-upload-list__item-delete{color:var(--el-text-color-regular);font-size:12px;display:none;position:absolute;top:0;right:10px}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{flex-wrap:wrap;margin:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);border-radius:6px;margin:0 8px 8px 0;padding:0;display:inline-flex;overflow:hidden}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{object-fit:contain;width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{cursor:default;color:#fff;opacity:0;background-color:var(--el-overlay-color-lighter);width:100%;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;font-size:20px;display:inline-flex;position:absolute;top:0;left:0}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{font-size:inherit;color:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{width:126px;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;border-radius:6px;align-items:center;margin-top:10px;padding:10px;display:flex;overflow:hidden}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:inline-flex}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{object-fit:contain;z-index:1;background-color:var(--el-color-white);justify-content:center;align-items:center;width:70px;height:70px;display:inline-flex;position:relative}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:46px;height:26px;position:absolute;top:-7px;right:-17px;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{margin-top:12px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{z-index:10;cursor:default;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.el-upload-cover:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-upload-cover img{width:100%;height:100%;display:block}.el-upload-cover__label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-cover__label i{color:#fff;margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-cover__progress{vertical-align:middle;width:243px;display:inline-block;position:static}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{width:100%;height:100%;position:absolute;top:0;left:0}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);text-align:center;width:100%;height:100%;position:absolute;bottom:0;left:0}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px;font-size:14px;display:inline-block}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;font-size:24px;line-height:inherit;margin:0 auto 5px;display:block}.el-upload-cover__title{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;height:36px;color:var(--el-text-color-primary);background-color:#fff;margin:0;padding:0 10px;font-size:14px;font-weight:400;line-height:36px;position:absolute;bottom:0;left:0;overflow:hidden}.el-upload-cover+.el-upload__inner{opacity:0;z-index:1;position:relative}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{font-weight:var(--el-statistic-title-font-weight);font-size:var(--el-statistic-title-font-size);color:var(--el-statistic-title-color);margin-bottom:4px;line-height:20px}.el-statistic__content{font-weight:var(--el-statistic-content-font-weight);font-size:var(--el-statistic-content-font-size);color:var(--el-statistic-content-color)}.el-statistic__value{display:inline-block}.el-statistic__prefix{margin-right:4px;display:inline-block}.el-statistic__suffix{margin-left:4px;display:inline-block}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);width:var(--el-tour-width);padding:var(--el-tour-padding-primary);background:var(--el-tour-bg-color);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;overflow-wrap:break-word;outline:none}.el-tour__arrow{background:var(--el-tour-bg-color);pointer-events:none;box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-tour__content[data-side^=top] .el-tour__arrow{border-top-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=right] .el-tour__arrow{border-top-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{cursor:pointer;width:40px;height:40px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size,16px))}.el-tour__title{line-height:var(--el-tour-font-line-height);font-size:var(--el-tour-title-font-size);color:var(--el-tour-title-text-color);font-weight:var(--el-tour-title-font-weight)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{padding-top:var(--el-tour-padding-primary);box-sizing:border-box;justify-content:space-between;display:flex}.el-tour__content .el-tour-indicators{flex:1;display:inline-block}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{color:var(--el-color-primary);border-color:var(--el-color-primary);background:#fff}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:#ffffff26}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-hover-color:var(--el-text-color-regular);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);opacity:0;z-index:0;border-radius:4px;position:absolute}.el-anchor.el-anchor--vertical .el-anchor__marker{width:4px;height:14px;transition:top .25s ease-in-out,opacity .25s;top:8px;left:0}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{content:"";background-color:#0505050f;width:2px;height:100%;position:absolute;left:0}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{width:20px;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;bottom:0}.el-anchor.el-anchor--horizontal .el-anchor__list{padding-bottom:4px;display:flex}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{content:"";background-color:#0505050f;width:100%;height:2px;position:absolute;bottom:0}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{flex-direction:column;display:flex}.el-anchor__link{font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);color:var(--el-anchor-color);transition:color var(--el-transition-duration);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;outline:none;max-width:100%;padding:4px 0;text-decoration:none;overflow:hidden}.el-anchor__link:hover,.el-anchor__link:focus{color:var(--el-hover-color)}.el-anchor__link:focus-visible{border-radius:var(--el-border-radius-base);outline:2px solid var(--el-color-primary)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);background:var(--el-segmented-bg-color);min-height:32px;padding:var(--el-segmented-padding);border-radius:var(--el-border-radius-base);color:var(--el-segmented-color);box-sizing:border-box;align-items:stretch;font-size:14px;display:inline-flex}.el-segmented__group{align-items:stretch;width:100%;display:flex;position:relative}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);pointer-events:none;width:10px;height:100%;transition:all .3s;position:absolute;top:0;left:0}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{content:"";border-radius:inherit;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute;inset:0}.el-segmented__item{cursor:pointer;border-radius:calc(var(--el-border-radius-base) - 2px);flex:1;align-items:center;padding:0 11px;display:flex}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{color:var(--el-segmented-item-hover-color);background:var(--el-segmented-item-hover-bg-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{cursor:not-allowed;color:var(--el-segmented-item-disabled-color)}.el-segmented__item-input{opacity:0;pointer-events:none;width:0;height:0;margin:0;position:absolute}.el-segmented__item-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;z-index:1;flex:1;line-height:normal;transition:color .3s;overflow:hidden}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);min-height:40px;font-size:16px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);min-height:24px;font-size:14px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px);padding:0 7px}.el-mention{width:100%;position:relative}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{font-size:var(--el-mention-font-size);white-space:nowrap;text-overflow:ellipsis;color:var(--el-mention-option-color);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);box-sizing:border-box;min-width:var(--el-mention-option-min-width);cursor:pointer;padding:0 20px;position:relative;overflow:hidden}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{color:var(--el-mention-option-disabled-color);cursor:not-allowed;background-color:unset}.el-mention-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-mention-dropdown__loading{text-align:center;color:var(--el-mention-option-loading-color);min-width:var(--el-mention-option-min-width);margin:0;padding:10px 0;font-size:12px}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{padding:var(--el-mention-padding);box-sizing:border-box;margin:0;list-style:none}.el-mention-dropdown__header{padding:var(--el-mention-header-padding);border-bottom:var(--el-mention-border)}.el-mention-dropdown__footer{padding:var(--el-mention-footer-padding);border-top:var(--el-mention-border)}.el-splitter{width:100%;height:100%;margin:0;padding:0;display:flex;position:relative}.el-splitter__mask{z-index:999;position:absolute;inset:0}.el-splitter__mask-horizontal{cursor:ew-resize}.el-splitter__mask-vertical{cursor:ns-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{-webkit-user-select:none;user-select:none;flex:none;position:relative}.el-splitter-bar__dragger{z-index:1;background:0 0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before,.el-splitter-bar__dragger:after{content:"";background-color:var(--el-border-color-light);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:not(.is-lazy):after{display:none}.el-splitter-bar__dragger:after{opacity:.4}.el-splitter-bar__dragger:hover:not(.is-disabled):before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before,.el-splitter-bar__dragger-horizontal:after{width:2px;height:100%}.el-splitter-bar__dragger-vertical:before,.el-splitter-bar__dragger-vertical:after{width:100%;height:2px}.el-splitter-bar__dragger-active:before,.el-splitter-bar__dragger-active:after{background-color:var(--el-color-primary-light-3)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-horizontal:after{transform:translate(calc(-50% + var(--el-splitter-bar-offset)),-50%)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-vertical:after{transform:translate(-50%,calc(-50% + var(--el-splitter-bar-offset)))}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{background:var(--el-border-color-light);cursor:pointer;opacity:0;z-index:9;border-radius:2px;justify-content:center;align-items:center;display:flex;position:absolute}.el-splitter-bar__collapse-icon:hover{opacity:1;background-color:var(--el-color-primary-light-5)}.el-splitter-bar__horizontal-collapse-icon-start{width:16px;height:24px;top:50%;left:-12px;transform:translate(-50%,-50%)}.el-splitter-bar__horizontal-collapse-icon-end{width:16px;height:24px;top:50%;left:12px;transform:translate(-50%,-50%)}.el-splitter-bar__vertical-collapse-icon-start{width:24px;height:16px;top:-12px;right:50%;transform:translate(50%,-50%)}.el-splitter-bar__vertical-collapse-icon-end{width:24px;height:16px;top:12px;right:50%;transform:translate(50%,-50%)}.el-splitter-panel{scrollbar-width:thin;box-sizing:border-box;flex-grow:0;overflow:auto}:root{--font-family-base: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", sans-serif;--color-primary: #409eff;--color-bg-light: #eef3f8;--color-bg-dark: #0d0d0d;--color-surface-light: rgba(255, 255, 255, .92);--color-surface-dark: #1a1a1a;--color-border-light: #d6e4ef;--color-border-dark: #2a2a2a;--color-text-primary: #303133;--color-text-secondary: #606266;--color-text-dark: #e5eaf3;--shadow-card: 0 10px 30px rgba(0, 0, 0, .08);--radius-lg: 16px;--radius-md: 12px;--radius-sm: 8px}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:var(--font-family-base);color:var(--color-text-primary)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}body{background:var(--color-bg-light)}html{scrollbar-color:rgba(123,135,148,.7) rgba(255,255,255,.04);scrollbar-width:thin}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:#ffffff0a}*::-webkit-scrollbar-thumb{background:#7b8794b3;border:2px solid transparent;border-radius:999px;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#94a3b8e6;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}.page-shell{min-height:100vh}.theme-light{background:var(--color-bg-light);color:var(--color-text-primary)}.theme-dark{background:var(--color-bg-dark);color:var(--color-text-dark)}.top-bar[data-v-b3a67bbd]{height:56px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 20px;background:#111;border-bottom:1px solid #2a2a2a}.logo-area[data-v-b3a67bbd]{display:flex;align-items:center;gap:16px;min-width:0}.app-name[data-v-b3a67bbd]{color:#fff;font-size:16px;font-weight:700;white-space:nowrap}.btn-home[data-v-b3a67bbd]{color:#d2d2d2;font-size:13px;text-decoration:none;white-space:nowrap}.btn-home[data-v-b3a67bbd]:hover{color:#fff}.nav-tabs[data-v-b3a67bbd]{flex:1;display:flex;justify-content:center;min-width:0}.nav-tab-group[data-v-b3a67bbd]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}.nav-tab[data-v-b3a67bbd]{display:inline-flex;align-items:center;justify-content:center;min-width:92px;height:38px;padding:0 16px;border-radius:10px;border:1px solid transparent;color:#8d8d8d;background:transparent;font-size:13px;font-weight:600;text-decoration:none;transition:all .2s ease}.nav-tab[data-v-b3a67bbd]:hover{color:#b9d6ff;background:#4d7ebd24}.nav-tab.active[data-v-b3a67bbd]{background:#4d7ebd3d;border-color:#5b94db59;color:#6caeff}.top-right[data-v-b3a67bbd]{width:120px;flex-shrink:0}@media(max-width:1100px){.top-bar[data-v-b3a67bbd]{height:auto;align-items:flex-start;flex-direction:column;padding:16px 20px}.nav-tabs[data-v-b3a67bbd]{width:100%;justify-content:flex-start}.top-right[data-v-b3a67bbd]{display:none}} +:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64, 158, 255;--el-color-success-rgb:103, 194, 58;--el-color-warning-rgb:230, 162, 60;--el-color-danger-rgb:245, 108, 108;--el-color-error-rgb:245, 108, 108;--el-color-info-rgb:144, 147, 153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a, 0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014, 0px 12px 32px #0000001f, 0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;fill:currentColor;width:1em;height:1em;color:var(--color);line-height:1em;font-size:inherit;justify-content:center;align-items:center;display:inline-flex;position:relative}.el-icon.is-loading{animation:2s linear infinite rotating}.el-icon svg{width:1em;height:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);background-color:var(--el-color-white);opacity:1;transition:opacity var(--el-transition-duration-fast);align-items:center;margin:0;display:flex;position:relative;overflow:hidden}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-primary)}.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{flex-direction:column;gap:4px;display:flex}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size);margin-right:8px}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size);margin-right:12px}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;cursor:pointer;position:absolute;top:12px;right:16px}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;width:var(--el-aside-width,300px);flex-shrink:0;overflow:auto}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;width:var(--el-input-width);display:inline-block;position:relative}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__header{border-bottom:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__footer{border-top:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{cursor:pointer;color:var(--el-text-color-regular);line-height:34px;font-size:var(--el-font-size-base);text-align:left;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:0 20px;list-style:none;overflow:hidden}.el-autocomplete-suggestion li:hover,.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{cursor:default;height:100px;color:var(--el-text-color-secondary);justify-content:center;align-items:center;font-size:20px;display:flex}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;box-sizing:border-box;text-align:center;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size);outline:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.el-avatar>img{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-avatar-group{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px;display:inline-flex}.el-avatar-group .el-avatar{border:1px solid var(--el-border-color-extra-light)}.el-avatar-group .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-item-gap)}.el-avatar-group__collapse-avatars{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px}.el-avatar-group__collapse-avatars .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-collapse-item-gap)}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);background-color:var(--el-backtop-bg-color);width:40px;height:40px;color:var(--el-backtop-text-color);box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5;border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;vertical-align:middle;width:-moz-fit-content;width:fit-content;display:inline-block;position:relative}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color);justify-content:center;align-items:center;display:inline-flex}.el-badge__content.is-fixed{top:0;right:calc(1px + var(--el-badge-size) / 2);z-index:var(--el-index-normal);position:absolute;transform:translateY(-50%)translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;width:8px;height:8px;padding:0;right:0}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);margin:0 9px;font-weight:700}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;align-items:center;display:inline-flex}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{transition:var(--el-transition-color);color:var(--el-text-color-primary);font-weight:700;text-decoration:none}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:before,.el-breadcrumb:after{content:"";display:table}.el-breadcrumb:after{clear:both}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:hover,.el-button-group>.el-button:focus,.el-button-group>.el-button:active,.el-button-group>.el-button.is-active{z-index:1}.el-button-group--horizontal{vertical-align:middle;display:inline-block}.el-button-group--horizontal:before,.el-button-group--horizontal:after{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--vertical{flex-direction:column;align-items:stretch;display:inline-flex}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:#ffffff80;--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);white-space:nowrap;cursor:pointer;height:32px;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;line-height:1;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);outline:none;justify-content:center;align-items:center;transition:all .1s;display:inline-flex}.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:none}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:8px 15px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";border-radius:inherit;background-color:var(--el-mask-color-extra-light);position:absolute;inset:-1px}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-dashed{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary);border-style:dashed}.el-button.is-circle{border-radius:50%;width:32px;padding:8px}.el-button.is-text{color:var(--el-button-text-color);background-color:#0000;border:0 solid #0000}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{color:var(--el-button-text-color);background:0 0;border-color:#0000;height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button.is-link:not(.is-disabled):hover{background-color:#0000;border-color:#0000}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);background-color:#0000;border-color:#0000}.el-button--text{color:var(--el-color-primary);background:0 0;border-color:#0000;padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);background-color:#0000;border-color:#0000}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);background-color:#0000;border-color:#0000}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:hover,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--primary.is-dashed{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-text-color:var(--el-color-primary-dark-2);--el-button-active-bg-color:var(--el-color-primary-light-9);--el-button-active-border-color:var(--el-color-primary-dark-2)}.el-button--primary.is-dashed.is-disabled,.el-button--primary.is-dashed.is-disabled:hover,.el-button--primary.is-dashed.is-disabled:focus,.el-button--primary.is-dashed.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain,.el-button--success.is-text,.el-button--success.is-link{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:hover,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:active,.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--success.is-dashed{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-success);--el-button-hover-bg-color:var(--el-color-success-light-9);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-text-color:var(--el-color-success-dark-2);--el-button-active-bg-color:var(--el-color-success-light-9);--el-button-active-border-color:var(--el-color-success-dark-2)}.el-button--success.is-dashed.is-disabled,.el-button--success.is-dashed.is-disabled:hover,.el-button--success.is-dashed.is-disabled:focus,.el-button--success.is-dashed.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain,.el-button--warning.is-text,.el-button--warning.is-link{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:hover,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--warning.is-dashed{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-warning);--el-button-hover-bg-color:var(--el-color-warning-light-9);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-text-color:var(--el-color-warning-dark-2);--el-button-active-bg-color:var(--el-color-warning-light-9);--el-button-active-border-color:var(--el-color-warning-dark-2)}.el-button--warning.is-dashed.is-disabled,.el-button--warning.is-dashed.is-disabled:hover,.el-button--warning.is-dashed.is-disabled:focus,.el-button--warning.is-dashed.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain,.el-button--danger.is-text,.el-button--danger.is-link{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:hover,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--danger.is-dashed{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-danger);--el-button-hover-bg-color:var(--el-color-danger-light-9);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-text-color:var(--el-color-danger-dark-2);--el-button-active-bg-color:var(--el-color-danger-light-9);--el-button-active-border-color:var(--el-color-danger-dark-2)}.el-button--danger.is-dashed.is-disabled,.el-button--danger.is-dashed.is-disabled:hover,.el-button--danger.is-dashed.is-disabled:focus,.el-button--danger.is-dashed.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain,.el-button--info.is-text,.el-button--info.is-link{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:hover,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:active,.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--info.is-dashed{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-info);--el-button-hover-bg-color:var(--el-color-info-light-9);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-text-color:var(--el-color-info-dark-2);--el-button-active-bg-color:var(--el-color-info-light-9);--el-button-active-border-color:var(--el-color-info-dark-2)}.el-button--info.is-dashed.is-disabled,.el-button--info.is-dashed.is-disabled:hover,.el-button--info.is-dashed.is-disabled:focus,.el-button--info.is-dashed.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:5px 11px;font-size:12px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);justify-content:space-between;padding:12px 20px;display:flex}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar__select-controller .el-select{margin-right:8px}.el-calendar__select-controller .el-calendar-select__year{width:120px}.el-calendar__select-controller .el-calendar-select__month{width:60px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);padding:12px 0;font-weight:400}.el-calendar-table:not(.is-range) td.prev,.el-calendar-table:not(.is-range) td.next{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);color:var(--el-text-color-primary);transition:var(--el-transition-duration);flex-direction:column;display:flex;overflow:hidden}.el-card.is-always-shadow,.el-card.is-hover-shadow:hover,.el-card.is-hover-shadow:focus{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding);flex-grow:1;overflow:auto}.el-card__footer{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-top:1px solid var(--el-card-border-color);box-sizing:border-box}.el-carousel__item{width:100%;height:100%;z-index:calc(var(--el-index-normal) - 1);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage:hover .el-carousel__mask,.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{width:100%;height:50%}.el-carousel__mask{background-color:var(--el-color-white);opacity:.24;width:100%;height:100%;transition:var(--el-transition-duration-fast);position:absolute;top:0;left:0}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:#1f2d3d1c;--el-carousel-arrow-hover-background:#1f2d3d3b;--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel.is-vertical-outside{flex-direction:row;align-items:center;display:flex}.el-carousel.is-vertical-outside .el-carousel__container{flex:1}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);background-color:var(--el-carousel-arrow-background);color:#fff;z-index:10;text-align:center;font-size:var(--el-carousel-arrow-font-size);border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{z-index:calc(var(--el-index-normal) + 1);margin:0;padding:0;list-style:none;position:absolute}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{top:50%;right:0;transform:translateY(-50%)}.el-carousel__indicators--outside{text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels .el-carousel__button{color:#000;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{cursor:pointer;background-color:#0000}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal);display:inline-block}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width) / 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);cursor:pointer;transition:var(--el-transition-duration);background-color:#fff;border:none;outline:none;margin:0;padding:0;display:block}.el-carousel__indicators--labels .el-carousel__button{width:auto;height:auto}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%)translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%)translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);width:-moz-fit-content;width:fit-content;font-size:var(--el-cascader-menu-font-size);display:flex}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{box-sizing:border-box;min-width:180px;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;min-height:100%;margin:0;padding:6px 0;list-style:none;position:relative}.el-cascader-menu__hover-zone{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.el-cascader-menu__empty-text{color:var(--el-cascader-color-empty);align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{outline:none;align-items:center;height:34px;padding:0 30px 0 20px;line-height:34px;display:flex;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-selectable.in-checked-path,.el-cascader-node.is-active{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):hover,.el-cascader-node:not(.is-disabled):focus{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;padding:0 8px;overflow:hidden}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);vertical-align:middle;font-size:var(--el-font-size-base);outline:none;line-height:32px;display:inline-block;position:relative}.el-cascader:not(.is-disabled):hover .el-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:read-only{cursor:pointer}.el-cascader .el-input .el-input__inner:disabled{cursor:not-allowed}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-cascader__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-cascader__tags{text-align:left;box-sizing:border-box;flex-wrap:wrap;gap:6px;padding:4px;line-height:normal;display:flex;position:absolute;top:50%;left:0;right:30px;transform:translateY(-50%)}.el-cascader__tags .el-tag{text-overflow:ellipsis;background:var(--el-cascader-tag-background);align-items:center;max-width:100%;display:inline-flex}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{text-overflow:ellipsis;background:var(--el-fill-color);align-items:center;max-width:100%;display:inline-flex}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center;margin:0;padding:6px 0}.el-cascader__suggestion-item{text-align:left;cursor:pointer;outline:none;justify-content:space-between;align-items:center;height:34px;padding:0 15px;display:flex}.el-cascader__suggestion-item:hover,.el-cascader__suggestion-item:focus{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{min-width:60px;height:24px;color:var(--el-cascader-menu-text-color);box-sizing:border-box;background:0 0;border:none;outline:none;flex:1;margin-left:7px;padding:0}.el-cascader__search-input::placeholder{color:#0000}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);transition:var(--el-transition-all);padding:7px 15px;font-weight:700;display:inline-block}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{background-color:var(--el-color-success-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{background-color:var(--el-color-warning-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{background-color:var(--el-color-danger-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{background-color:var(--el-color-error-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);--el-checkbox-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;position:relative}.el-checkbox-button__inner{line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button.is-disabled.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-disabled-checked-fill)}.el-checkbox-button:first-child .el-checkbox-button__inner{border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;height:var(--el-checkbox-height,32px);align-items:center;margin-right:30px;display:inline-flex;position:relative}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color);will-change:transform}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%)rotate(45deg)scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";background-color:var(--el-checkbox-checked-icon-color);height:2px;display:block;position:absolute;top:5px;left:0;right:0;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);display:inline-block;position:relative}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";transform-origin:50%;border:1px solid #0000;border-top:0;border-left:0;width:3px;height:7px;transition:transform .15s ease-in 50ms;position:absolute;top:50%;left:50%;transform:translate(-45%,-60%)rotate(45deg)scaleY(0)}.el-checkbox__original{opacity:0;z-index:-1;outline:none;width:0;height:0;margin:0;position:absolute}.el-checkbox__label{line-height:1;font-size:var(--el-checkbox-font-size);padding-left:8px;display:inline-block}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{min-height:1px;display:block}.el-col-0{flex:0 0;max-width:0%;display:none}.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0%}.el-col-pull-0{position:relative;right:0%}.el-col-push-0{position:relative;left:0%}.el-col-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6667%}.el-col-pull-4{position:relative;right:16.6667%}.el-col-push-4{position:relative;left:16.6667%}.el-col-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333%}.el-col-pull-5{position:relative;right:20.8333%}.el-col-push-5{position:relative;left:20.8333%}.el-col-6{flex:0 0 25%;max-width:25%;display:block}.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1667%}.el-col-pull-7{position:relative;right:29.1667%}.el-col-push-7{position:relative;left:29.1667%}.el-col-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333%}.el-col-pull-8{position:relative;right:33.3333%}.el-col-push-8{position:relative;left:33.3333%}.el-col-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6667%}.el-col-pull-10{position:relative;right:41.6667%}.el-col-push-10{position:relative;left:41.6667%}.el-col-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333%}.el-col-pull-11{position:relative;right:45.8333%}.el-col-push-11{position:relative;left:45.8333%}.el-col-12{flex:0 0 50%;max-width:50%;display:block}.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1667%}.el-col-pull-13{position:relative;right:54.1667%}.el-col-push-13{position:relative;left:54.1667%}.el-col-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333%}.el-col-pull-14{position:relative;right:58.3333%}.el-col-push-14{position:relative;left:58.3333%}.el-col-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6667%}.el-col-pull-16{position:relative;right:66.6667%}.el-col-push-16{position:relative;left:66.6667%}.el-col-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333%}.el-col-pull-17{position:relative;right:70.8333%}.el-col-push-17{position:relative;left:70.8333%}.el-col-18{flex:0 0 75%;max-width:75%;display:block}.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1667%}.el-col-pull-19{position:relative;right:79.1667%}.el-col-push-19{position:relative;left:79.1667%}.el-col-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333%}.el-col-pull-20{position:relative;right:83.3333%}.el-col-push-20{position:relative;left:83.3333%}.el-col-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6667%}.el-col-pull-22{position:relative;right:91.6667%}.el-col-push-22{position:relative;left:91.6667%}.el-col-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333%}.el-col-pull-23{position:relative;right:95.8333%}.el-col-push-23{position:relative;left:95.8333%}.el-col-24{flex:0 0 100%;max-width:100%;display:block}.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{flex:0 0;max-width:0%;display:none}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0%}.el-col-xs-pull-0{position:relative;right:0%}.el-col-xs-push-0{position:relative;left:0%}.el-col-xs-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6667%}.el-col-xs-pull-4{position:relative;right:16.6667%}.el-col-xs-push-4{position:relative;left:16.6667%}.el-col-xs-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333%}.el-col-xs-pull-5{position:relative;right:20.8333%}.el-col-xs-push-5{position:relative;left:20.8333%}.el-col-xs-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1667%}.el-col-xs-pull-7{position:relative;right:29.1667%}.el-col-xs-push-7{position:relative;left:29.1667%}.el-col-xs-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333%}.el-col-xs-pull-8{position:relative;right:33.3333%}.el-col-xs-push-8{position:relative;left:33.3333%}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6667%}.el-col-xs-pull-10{position:relative;right:41.6667%}.el-col-xs-push-10{position:relative;left:41.6667%}.el-col-xs-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333%}.el-col-xs-pull-11{position:relative;right:45.8333%}.el-col-xs-push-11{position:relative;left:45.8333%}.el-col-xs-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1667%}.el-col-xs-pull-13{position:relative;right:54.1667%}.el-col-xs-push-13{position:relative;left:54.1667%}.el-col-xs-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333%}.el-col-xs-pull-14{position:relative;right:58.3333%}.el-col-xs-push-14{position:relative;left:58.3333%}.el-col-xs-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6667%}.el-col-xs-pull-16{position:relative;right:66.6667%}.el-col-xs-push-16{position:relative;left:66.6667%}.el-col-xs-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333%}.el-col-xs-pull-17{position:relative;right:70.8333%}.el-col-xs-push-17{position:relative;left:70.8333%}.el-col-xs-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1667%}.el-col-xs-pull-19{position:relative;right:79.1667%}.el-col-xs-push-19{position:relative;left:79.1667%}.el-col-xs-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333%}.el-col-xs-pull-20{position:relative;right:83.3333%}.el-col-xs-push-20{position:relative;left:83.3333%}.el-col-xs-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6667%}.el-col-xs-pull-22{position:relative;right:91.6667%}.el-col-xs-push-22{position:relative;left:91.6667%}.el-col-xs-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333%}.el-col-xs-pull-23{position:relative;right:95.8333%}.el-col-xs-push-23{position:relative;left:95.8333%}.el-col-xs-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{flex:0 0;max-width:0%;display:none}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0%}.el-col-sm-pull-0{position:relative;right:0%}.el-col-sm-push-0{position:relative;left:0%}.el-col-sm-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6667%}.el-col-sm-pull-4{position:relative;right:16.6667%}.el-col-sm-push-4{position:relative;left:16.6667%}.el-col-sm-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333%}.el-col-sm-pull-5{position:relative;right:20.8333%}.el-col-sm-push-5{position:relative;left:20.8333%}.el-col-sm-6{flex:0 0 25%;max-width:25%;display:block}.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1667%}.el-col-sm-pull-7{position:relative;right:29.1667%}.el-col-sm-push-7{position:relative;left:29.1667%}.el-col-sm-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333%}.el-col-sm-pull-8{position:relative;right:33.3333%}.el-col-sm-push-8{position:relative;left:33.3333%}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6667%}.el-col-sm-pull-10{position:relative;right:41.6667%}.el-col-sm-push-10{position:relative;left:41.6667%}.el-col-sm-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333%}.el-col-sm-pull-11{position:relative;right:45.8333%}.el-col-sm-push-11{position:relative;left:45.8333%}.el-col-sm-12{flex:0 0 50%;max-width:50%;display:block}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1667%}.el-col-sm-pull-13{position:relative;right:54.1667%}.el-col-sm-push-13{position:relative;left:54.1667%}.el-col-sm-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333%}.el-col-sm-pull-14{position:relative;right:58.3333%}.el-col-sm-push-14{position:relative;left:58.3333%}.el-col-sm-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6667%}.el-col-sm-pull-16{position:relative;right:66.6667%}.el-col-sm-push-16{position:relative;left:66.6667%}.el-col-sm-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333%}.el-col-sm-pull-17{position:relative;right:70.8333%}.el-col-sm-push-17{position:relative;left:70.8333%}.el-col-sm-18{flex:0 0 75%;max-width:75%;display:block}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1667%}.el-col-sm-pull-19{position:relative;right:79.1667%}.el-col-sm-push-19{position:relative;left:79.1667%}.el-col-sm-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333%}.el-col-sm-pull-20{position:relative;right:83.3333%}.el-col-sm-push-20{position:relative;left:83.3333%}.el-col-sm-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6667%}.el-col-sm-pull-22{position:relative;right:91.6667%}.el-col-sm-push-22{position:relative;left:91.6667%}.el-col-sm-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333%}.el-col-sm-pull-23{position:relative;right:95.8333%}.el-col-sm-push-23{position:relative;left:95.8333%}.el-col-sm-24{flex:0 0 100%;max-width:100%;display:block}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{flex:0 0;max-width:0%;display:none}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0%}.el-col-md-pull-0{position:relative;right:0%}.el-col-md-push-0{position:relative;left:0%}.el-col-md-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6667%}.el-col-md-pull-4{position:relative;right:16.6667%}.el-col-md-push-4{position:relative;left:16.6667%}.el-col-md-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333%}.el-col-md-pull-5{position:relative;right:20.8333%}.el-col-md-push-5{position:relative;left:20.8333%}.el-col-md-6{flex:0 0 25%;max-width:25%;display:block}.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1667%}.el-col-md-pull-7{position:relative;right:29.1667%}.el-col-md-push-7{position:relative;left:29.1667%}.el-col-md-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333%}.el-col-md-pull-8{position:relative;right:33.3333%}.el-col-md-push-8{position:relative;left:33.3333%}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6667%}.el-col-md-pull-10{position:relative;right:41.6667%}.el-col-md-push-10{position:relative;left:41.6667%}.el-col-md-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333%}.el-col-md-pull-11{position:relative;right:45.8333%}.el-col-md-push-11{position:relative;left:45.8333%}.el-col-md-12{flex:0 0 50%;max-width:50%;display:block}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1667%}.el-col-md-pull-13{position:relative;right:54.1667%}.el-col-md-push-13{position:relative;left:54.1667%}.el-col-md-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333%}.el-col-md-pull-14{position:relative;right:58.3333%}.el-col-md-push-14{position:relative;left:58.3333%}.el-col-md-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6667%}.el-col-md-pull-16{position:relative;right:66.6667%}.el-col-md-push-16{position:relative;left:66.6667%}.el-col-md-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333%}.el-col-md-pull-17{position:relative;right:70.8333%}.el-col-md-push-17{position:relative;left:70.8333%}.el-col-md-18{flex:0 0 75%;max-width:75%;display:block}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1667%}.el-col-md-pull-19{position:relative;right:79.1667%}.el-col-md-push-19{position:relative;left:79.1667%}.el-col-md-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333%}.el-col-md-pull-20{position:relative;right:83.3333%}.el-col-md-push-20{position:relative;left:83.3333%}.el-col-md-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6667%}.el-col-md-pull-22{position:relative;right:91.6667%}.el-col-md-push-22{position:relative;left:91.6667%}.el-col-md-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333%}.el-col-md-pull-23{position:relative;right:95.8333%}.el-col-md-push-23{position:relative;left:95.8333%}.el-col-md-24{flex:0 0 100%;max-width:100%;display:block}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{flex:0 0;max-width:0%;display:none}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0%}.el-col-lg-pull-0{position:relative;right:0%}.el-col-lg-push-0{position:relative;left:0%}.el-col-lg-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6667%}.el-col-lg-pull-4{position:relative;right:16.6667%}.el-col-lg-push-4{position:relative;left:16.6667%}.el-col-lg-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333%}.el-col-lg-pull-5{position:relative;right:20.8333%}.el-col-lg-push-5{position:relative;left:20.8333%}.el-col-lg-6{flex:0 0 25%;max-width:25%;display:block}.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1667%}.el-col-lg-pull-7{position:relative;right:29.1667%}.el-col-lg-push-7{position:relative;left:29.1667%}.el-col-lg-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333%}.el-col-lg-pull-8{position:relative;right:33.3333%}.el-col-lg-push-8{position:relative;left:33.3333%}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6667%}.el-col-lg-pull-10{position:relative;right:41.6667%}.el-col-lg-push-10{position:relative;left:41.6667%}.el-col-lg-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333%}.el-col-lg-pull-11{position:relative;right:45.8333%}.el-col-lg-push-11{position:relative;left:45.8333%}.el-col-lg-12{flex:0 0 50%;max-width:50%;display:block}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1667%}.el-col-lg-pull-13{position:relative;right:54.1667%}.el-col-lg-push-13{position:relative;left:54.1667%}.el-col-lg-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333%}.el-col-lg-pull-14{position:relative;right:58.3333%}.el-col-lg-push-14{position:relative;left:58.3333%}.el-col-lg-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6667%}.el-col-lg-pull-16{position:relative;right:66.6667%}.el-col-lg-push-16{position:relative;left:66.6667%}.el-col-lg-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333%}.el-col-lg-pull-17{position:relative;right:70.8333%}.el-col-lg-push-17{position:relative;left:70.8333%}.el-col-lg-18{flex:0 0 75%;max-width:75%;display:block}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1667%}.el-col-lg-pull-19{position:relative;right:79.1667%}.el-col-lg-push-19{position:relative;left:79.1667%}.el-col-lg-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333%}.el-col-lg-pull-20{position:relative;right:83.3333%}.el-col-lg-push-20{position:relative;left:83.3333%}.el-col-lg-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6667%}.el-col-lg-pull-22{position:relative;right:91.6667%}.el-col-lg-push-22{position:relative;left:91.6667%}.el-col-lg-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333%}.el-col-lg-pull-23{position:relative;right:95.8333%}.el-col-lg-push-23{position:relative;left:95.8333%}.el-col-lg-24{flex:0 0 100%;max-width:100%;display:block}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{flex:0 0;max-width:0%;display:none}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0%}.el-col-xl-pull-0{position:relative;right:0%}.el-col-xl-push-0{position:relative;left:0%}.el-col-xl-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6667%}.el-col-xl-pull-4{position:relative;right:16.6667%}.el-col-xl-push-4{position:relative;left:16.6667%}.el-col-xl-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333%}.el-col-xl-pull-5{position:relative;right:20.8333%}.el-col-xl-push-5{position:relative;left:20.8333%}.el-col-xl-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1667%}.el-col-xl-pull-7{position:relative;right:29.1667%}.el-col-xl-push-7{position:relative;left:29.1667%}.el-col-xl-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333%}.el-col-xl-pull-8{position:relative;right:33.3333%}.el-col-xl-push-8{position:relative;left:33.3333%}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6667%}.el-col-xl-pull-10{position:relative;right:41.6667%}.el-col-xl-push-10{position:relative;left:41.6667%}.el-col-xl-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333%}.el-col-xl-pull-11{position:relative;right:45.8333%}.el-col-xl-push-11{position:relative;left:45.8333%}.el-col-xl-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1667%}.el-col-xl-pull-13{position:relative;right:54.1667%}.el-col-xl-push-13{position:relative;left:54.1667%}.el-col-xl-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333%}.el-col-xl-pull-14{position:relative;right:58.3333%}.el-col-xl-push-14{position:relative;left:58.3333%}.el-col-xl-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6667%}.el-col-xl-pull-16{position:relative;right:66.6667%}.el-col-xl-push-16{position:relative;left:66.6667%}.el-col-xl-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333%}.el-col-xl-pull-17{position:relative;right:70.8333%}.el-col-xl-push-17{position:relative;left:70.8333%}.el-col-xl-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1667%}.el-col-xl-pull-19{position:relative;right:79.1667%}.el-col-xl-push-19{position:relative;left:79.1667%}.el-col-xl-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333%}.el-col-xl-pull-20{position:relative;right:83.3333%}.el-col-xl-push-20{position:relative;left:83.3333%}.el-col-xl-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6667%}.el-col-xl-pull-22{position:relative;right:91.6667%}.el-col-xl-push-22{position:relative;left:91.6667%}.el-col-xl-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333%}.el-col-xl-pull-23{position:relative;right:95.8333%}.el-col-xl-push-23{position:relative;left:95.8333%}.el-col-xl-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{width:100%;min-height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border:none;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);transition:border-bottom-color var(--el-transition-duration);box-sizing:border-box;outline:none;align-items:center;padding:0;font-weight:500;display:flex}.el-collapse-item__arrow{transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{text-align:left;flex:auto}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:#0000}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color);overflow:hidden}.el-collapse-item__content{font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);padding-bottom:25px;line-height:1.76923}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-picker-panel{--el-colorpicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-colorpicker-bg-color);box-sizing:content-box;background:var(--el-colorpicker-bg-color);width:300px;padding:12px}.el-color-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter);border-radius:4px}.el-color-picker-panel__wrapper{margin-bottom:6px}.el-color-picker-panel__footer{text-align:right;justify-content:space-between;margin-top:12px;display:flex}.el-color-picker-panel__footer .el-input{color:#000;width:160px;font-size:12px;line-height:26px}.el-color-picker-panel.is-disabled .el-color-svpanel,.el-color-picker-panel.is-disabled .el-color-hue-slider{cursor:not-allowed;opacity:.3}.el-color-picker-panel.is-disabled .el-color-hue-slider__thumb{cursor:not-allowed}.el-color-picker-panel.is-disabled .el-color-alpha-slider,.el-color-picker-panel.is-disabled .el-color-predefine .el-color-predefine__color-selector{cursor:not-allowed;opacity:.3}.el-color-predefine{width:280px;margin-top:8px;font-size:12px;display:flex}.el-color-predefine__colors{flex-wrap:wrap;flex:1;gap:8px;display:flex}.el-color-predefine__color-selector{border-radius:var(--el-border-radius-base);cursor:pointer;border:none;outline:none;width:20px;height:20px;padding:0;overflow:hidden}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-predefine__color-selector>div{height:100%;display:flex}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{box-sizing:border-box;float:right;background-color:red;width:280px;height:12px;padding:0 2px;position:relative}.el-color-hue-slider__bar{background:linear-gradient(90deg,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-svpanel{background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#fff0);width:280px;height:180px;position:relative}.el-color-svpanel__cursor{cursor:pointer;border-radius:50%;width:4px;height:4px;position:absolute;transform:translate(-2px,-2px);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006}.el-color-svpanel__cursor:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-alpha-slider{box-sizing:border-box;background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;width:280px;height:12px;position:relative}.el-color-alpha-slider.is-disabled .el-color-alpha-slider__thumb{cursor:not-allowed}.el-color-alpha-slider__bar{background:linear-gradient(to right,#fff0 0%,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(#fff0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-picker-panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker-panel{--el-color-picker-alpha-bg-a:#333}.el-color-picker{outline:none;width:32px;height:32px;line-height:normal;display:inline-block;position:relative}.el-color-picker:hover:not(:-webkit-any(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:hover:not(:is(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed;background-color:var(--el-fill-color-light)}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{width:40px;height:40px}.el-color-picker--small{width:24px;height:24px}.el-color-picker--small .el-color-picker__icon,.el-color-picker--small .el-color-picker__empty{transform:scale(.8)}.el-color-picker__trigger{box-sizing:border-box;border:1px solid var(--el-border-color);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:100%;height:100%;padding:4px;font-size:0;display:inline-flex;position:relative}.el-color-picker__color{box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);text-align:center;width:100%;height:100%;display:block;position:relative}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{color:#fff;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.el-color-picker__panel{border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);background-color:#fff}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333}.el-container{box-sizing:border-box;flex-direction:row;flex:auto;min-width:0;display:flex}.el-container.is-vertical{flex-direction:column}.el-date-table{-webkit-user-select:none;user-select:none;font-size:12px}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;text-align:center;cursor:pointer;width:32px;height:30px;padding:4px 0;position:relative}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;width:24px;height:24px;margin:0 auto;line-height:24px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.start-date .el-date-table-cell__text,.el-date-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.start-date .el-date-table-cell,.el-date-table td.end-date .el-date-table-cell{color:#fff}.el-date-table td.start-date .el-date-table-cell__text,.el-date-table td.end-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{color:var(--el-datepicker-header-text-color);border-bottom:solid 1px var(--el-border-color-lighter);padding:5px;font-weight:400}.el-date-table th.el-date-table__week-header{width:24px;padding:0}.el-month-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-month-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.start-date .el-date-table-cell__text,.el-month-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{width:54px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.start-date .el-date-table-cell,.el-month-table td.end-date .el-date-table-cell{color:#fff}.el-month-table td.start-date .el-date-table-cell__text,.el-month-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.start-date .el-date-table-cell__text,.el-year-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{width:60px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.start-date .el-date-table-cell,.el-year-table td.end-date .el-date-table-cell{color:#fff}.el-year-table td.start-date .el-date-table-cell__text,.el-year-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{vertical-align:top;width:50%;max-height:192px;display:inline-block;position:relative;overflow:auto}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);width:100%;z-index:var(--el-index-normal);text-align:center;cursor:pointer;height:30px;font-size:12px;line-height:30px;position:absolute;left:0}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{text-align:center;padding:0}.el-time-spinner__list{text-align:center;margin:0;padding:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";width:100%;height:80px;display:block}.el-time-spinner__item{height:32px;color:var(--el-text-color-regular);font-size:12px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;text-align:left;vertical-align:middle;position:relative}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{height:inherit;color:var(--el-text-color-placeholder);float:left;font-size:14px}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;width:39%;height:30px;line-height:30px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:#0000;border:none;outline:none;margin:0;padding:0;display:inline-block}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{overflow-wrap:break-word;height:100%;color:var(--el-text-color-primary);flex:1;justify-content:center;align-items:center;margin:0;padding:0 5px;font-size:14px;display:inline-flex}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer;font-size:14px}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{vertical-align:middle;align-items:center;padding:0 10px;display:inline-flex}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{height:38px;font-size:14px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{height:22px;font-size:12px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:hover,.el-range-editor.is-disabled:focus{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-datepicker-bg-color);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));line-height:30px}.el-picker-panel .el-time-panel{border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-datepicker-bg-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body:after,.el-picker-panel__body-wrapper:after{content:"";clear:both;display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);text-align:right;background-color:var(--el-datepicker-bg-color);padding:4px 12px;font-size:0;position:relative}.el-picker-panel__shortcut{width:100%;color:var(--el-datepicker-text-color);text-align:left;cursor:pointer;background-color:#0000;border:0;outline:none;padding-left:12px;font-size:14px;line-height:28px;display:block}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{color:var(--el-datepicker-active-color);background-color:#e6f1fe}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);cursor:pointer;background-color:#0000;border-radius:2px;outline:none;padding:0 20px;font-size:12px;line-height:24px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{color:var(--el-datepicker-icon-color);cursor:pointer;background:0 0;border:0;outline:none;margin-top:8px;padding:1px 6px;font-size:12px;line-height:1}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;padding-top:6px;position:absolute;top:0;bottom:0;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-datepicker-bg-color);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-picker__header{text-align:center;padding:12px 12px 0}.el-date-picker__header--bordered{border-bottom:solid 1px var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{text-align:center;padding:10px}.el-date-picker__time-label{float:left;cursor:pointer;margin-left:10px;line-height:30px}.el-date-picker .el-time-panel{position:absolute}.el-date-picker.is-disabled .el-date-picker__header-label{color:var(--el-text-color-disabled)}.el-date-picker.is-disabled .el-date-picker__header-label:hover{cursor:not-allowed}.el-date-picker.is-disabled .el-date-picker__header-label .el-icon{cursor:inherit}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{text-align:center;height:28px;position:relative}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{margin-right:50px;font-size:16px;font-weight:500}.el-date-range-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;width:50%;margin:0;padding:16px;display:table-cell}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-range-picker__time-header>.el-icon-arrow-right{vertical-align:middle;color:var(--el-datepicker-icon-color);font-size:20px;display:table-cell}.el-date-range-picker__time-picker-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{z-index:1;background:#fff;position:absolute;top:13px;right:0}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-date-range-picker.is-disabled .el-date-range-picker__header-label{color:var(--el-text-color-disabled)}.el-date-range-picker.is-disabled .el-date-range-picker__header-label:hover{cursor:not-allowed}.el-date-range-picker.is-disabled .el-date-range-picker__header-label .el-icon{cursor:inherit}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{text-align:center;z-index:1;padding:10px;position:relative}.el-time-range-picker__cell{box-sizing:border-box;width:50%;margin:0;padding:4px 7px 7px;display:inline-block}.el-time-range-picker__header{text-align:center;margin-bottom:5px;font-size:14px}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{width:180px;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box;border-radius:2px;position:relative;left:0}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";z-index:-1;box-sizing:border-box;text-align:left;height:32px;margin-top:-16px;padding-top:6px;position:absolute;top:50%;left:0;right:0}.el-time-panel__content:after{margin-left:12%;margin-right:12%;left:50%}.el-time-panel__content:before{border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));text-align:right;box-sizing:border-box;height:36px;padding:4px;line-height:25px}.el-time-panel__btn{cursor:pointer;color:var(--el-text-color-primary);background-color:#0000;border:none;outline:none;margin:0 5px;padding:0 5px;font-size:12px;line-height:28px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter)}.el-picker-panel.is-border .el-picker-panel__body-wrapper{position:relative}.el-picker-panel.is-border.el-picker-panel [slot=sidebar],.el-picker-panel.is-border.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;height:100%;padding-top:6px;position:absolute;top:0;overflow:auto}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-size:14px;line-height:23px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color);position:fixed;top:0;left:0}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;padding:var(--el-dialog-padding-primary);width:var(--el-dialog-width,50%);overflow-wrap:break-word;position:relative}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{margin:0;position:fixed;inset:0;overflow:auto}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size,16px))}.el-dialog__headerbtn{cursor:pointer;width:48px;height:48px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding-top:var(--el-dialog-padding-primary);text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{position:fixed;inset:0;overflow:auto}.el-overlay-dialog.is-closing .el-dialog{pointer-events:none}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateY(-20px)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);width:100%;height:1px;margin:24px 0;display:block}.el-divider--vertical{vertical-align:middle;border-left:1px var(--el-border-color) var(--el-border-style);width:1px;height:1em;margin:0 8px;display:inline-block;position:relative}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);padding:0 20px;font-size:14px;font-weight:500;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%)translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;box-sizing:border-box;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);transition:all var(--el-transition-duration);flex-direction:column;display:flex;position:absolute}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{color:var(--el-text-color-primary);padding:var(--el-drawer-padding-primary);align-items:center;margin-bottom:32px;padding-bottom:0;display:flex;overflow:hidden}.el-drawer__header>:first-child{flex:1}.el-drawer__title{line-height:inherit;flex:1;margin:0;font-size:16px}.el-drawer__footer{padding:var(--el-drawer-padding-primary);text-align:right;padding-top:10px;overflow:hidden}.el-drawer__close-btn{cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:#0000;border:none;outline:none;display:inline-flex}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{padding:var(--el-drawer-padding-primary);flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none;background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:before{content:"";background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{height:100%;width:var(--el-drawer-dragger-size);cursor:ew-resize;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{width:3px;top:0;bottom:0}.el-drawer.ttb,.el-drawer.btt{width:100%;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger,.el-drawer.btt>.el-drawer__dragger{width:100%;height:var(--el-drawer-dragger-size);cursor:ns-resize;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger:before,.el-drawer.btt>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-from,.el-drawer-fade-enter-active,.el-drawer-fade-enter-to,.el-drawer-fade-leave-from,.el-drawer-fade-leave-active,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:#0000!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);vertical-align:top;line-height:1;display:inline-flex;position:relative}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;margin:0;padding:0;list-style:none}.el-dropdown .el-dropdown__caret-button{border-left:none;justify-content:center;align-items:center;width:32px;padding-left:0;padding-right:0;display:inline-flex}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";background:var(--el-overlay-color-lighter);width:1px;display:block;position:absolute;top:-1px;bottom:-1px;left:0}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{z-index:var(--el-dropdown-menu-index);background-color:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);box-shadow:none;border:none;margin:0;padding:5px 0;list-style:none;position:relative;top:0;left:0}.el-dropdown-menu__item{white-space:nowrap;line-height:22px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:none;align-items:center;margin:0;padding:5px 16px;list-style:none;display:flex}.el-dropdown-menu__item:not(.is-disabled):hover,.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;font-size:14px;line-height:22px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;font-size:12px;line-height:20px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;vertical-align:top;object-fit:contain;width:100%;height:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;vertical-align:top;width:100%;height:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{font-size:var(--el-font-size-base);color:var(--el-text-color-secondary);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;height:var(--el-footer-height);flex-shrink:0}.el-form-item{--font-size:14px;margin-bottom:18px;display:flex}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{text-align:left;justify-content:flex-start}.el-form-item--label-right .el-form-item__label{text-align:right;justify-content:flex-end}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{text-align:left;width:-moz-fit-content;width:fit-content;height:auto;margin-bottom:8px;padding-right:0;line-height:22px;display:block}.el-form-item__label-wrap{display:flex}.el-form-item__label{font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);box-sizing:border-box;flex:none;align-items:flex-start;height:32px;padding:0 12px 0 0;line-height:32px;display:inline-flex}.el-form-item__content{line-height:32px;font-size:var(--font-size);flex-wrap:wrap;flex:1;align-items:center;min-width:0;display:flex;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);padding-top:2px;font-size:12px;line-height:1;position:absolute;top:100%;left:0}.el-form-item__error--inline{margin-left:10px;display:inline-block;position:relative;top:auto;left:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after{content:"*";color:var(--el-color-danger);margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px #0000}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{vertical-align:middle;margin-right:32px;display:inline-flex}.el-form--inline.el-form--label-top{flex-wrap:wrap;display:flex}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;height:var(--el-header-height);flex-shrink:0}.el-image-viewer__wrapper{position:fixed;inset:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{z-index:1;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{width:40px;height:40px;font-size:40px;top:40px;right:40px}.el-image-viewer__canvas{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:static}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;height:44px;padding:0 23px;bottom:30px;left:50%;transform:translate(-50%)}.el-image-viewer__actions__inner{cursor:default;color:#fff;justify-content:space-around;align-items:center;gap:22px;width:100%;height:100%;padding:0 6px;font-size:23px;display:flex}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{cursor:default;color:#fff;bottom:90px;left:50%;transform:translate(-50%)}.el-image-viewer__prev{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;left:40px;transform:translateY(-50%)}.el-image-viewer__next{text-indent:2px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;right:40px;transform:translateY(-50%)}.el-image-viewer__close{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px}.el-image-viewer__mask{opacity:.5;background:#000;width:100%;height:100%;position:absolute;top:0;left:0}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateY(-20px)}}.el-image__error,.el-image__placeholder,.el-image__wrapper,.el-image__inner{width:100%;height:100%}.el-image{display:inline-block;position:relative;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle;justify-content:center;align-items:center;font-size:14px;display:flex}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;box-sizing:border-box;cursor:pointer;font-size:var(--el-input-tag-font-size);padding:var(--el-input-tag-padding);width:var(--el-input-tag-width);min-height:var(--el-input-tag-mini-height);line-height:var(--el-input-tag-line-height);border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;display:flex;transform:translate(0)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;display:flex}.el-input-tag__suffix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:8px;display:flex}.el-input-tag__collapse-tag{line-height:1}.el-input-tag__input-tag-list{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-input-tag__input-tag-list.is-near{margin-left:-8px}.el-input-tag__input-tag-list .el-tag{cursor:pointer;border-color:#0000}.el-input-tag__input-tag-list .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__input-tag-list .el-tag .el-tag__content{min-width:0}.el-input-tag__inner{align-items:center;gap:var(--el-input-tag-gap);flex-wrap:wrap;flex:1;min-width:0;max-width:100%;display:flex;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;user-select:none}.el-input-tag__drop-indicator{width:1px;height:var(--el-input-tag-line-height);background-color:var(--el-color-primary);position:absolute;top:0}.el-input-tag__inner .el-tag{cursor:pointer;border-color:#0000;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:normal;overflow:hidden}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{color:var(--el-input-tag-text-color);font-size:inherit;font-family:inherit;line-height:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;padding:0}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);vertical-align:middle;cursor:pointer;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color);outline:none;flex-direction:row;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex;position:relative}.el-link.is-hover-underline:hover:after{content:"";border-bottom:1px solid var(--el-link-hover-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link.is-underline:after{content:"";border-bottom:1px solid var(--el-link-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{justify-content:center;align-items:center;display:inline-flex}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{z-index:2000;background-color:var(--el-mask-color);transition:opacity var(--el-transition-duration);margin:0;position:absolute;inset:0}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size)) / 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size)) / 2);text-align:center;width:100%;position:absolute;top:50%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:2s linear infinite loading-rotate;display:inline}.el-loading-spinner .path{stroke-dasharray:90 150;stroke-dashoffset:0;stroke-width:2px;stroke:var(--el-color-primary);stroke-linecap:round;animation:1.5s ease-in-out infinite loading-dash}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-40px}to{stroke-dasharray:90 150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;box-sizing:border-box;padding:var(--el-main-padding);flex:auto;display:block;overflow:auto}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);max-width:var(--el-messagebox-width);width:100%;padding:var(--el-messagebox-padding-primary);vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-messagebox-box-shadow);text-align:left;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word;display:inline-block;position:relative;overflow:hidden}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{text-align:center;padding:16px;position:fixed;inset:0;overflow:auto}.is-message-box .el-overlay-message-box:after{content:"";vertical-align:middle;width:0;height:100%;display:inline-block}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size,16px))}.el-message-box__title{font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height);color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{width:40px;height:40px;font-size:var(--el-message-close-size,16px);cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;gap:12px;display:flex}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{min-width:0;margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{padding-top:var(--el-messagebox-padding-primary);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.el-message-box--center .el-message-box__title{justify-content:center;align-items:center;gap:6px;display:flex}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);background-color:var(--el-message-bg-color);width:max-content;max-width:calc(100% - 32px);transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;padding:var(--el-message-padding);align-items:center;gap:8px;display:flex;position:fixed}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:50%;transform:translate(-50%)}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0}.el-message-fade-enter-from.is-left,.el-message-fade-enter-from.is-right,.el-message-fade-leave-to.is-left,.el-message-fade-leave-to.is-right{transform:translateY(-100%)}.el-message-fade-enter-from.is-left.is-bottom,.el-message-fade-enter-from.is-right.is-bottom,.el-message-fade-leave-to.is-left.is-bottom,.el-message-fade-leave-to.is-right.is-bottom{transform:translateY(100%)}.el-message-fade-enter-from.is-center,.el-message-fade-leave-to.is-center{transform:translate(-50%,-100%)}.el-message-fade-enter-from.is-center.is-bottom,.el-message-fade-leave-to.is-center.is-bottom{transform:translate(-50%,100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:break-word;z-index:9999;display:flex;position:fixed;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{min-width:0;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);flex:1}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);color:var(--el-notification-content-color);margin:6px 0 0;line-height:24px}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size);flex-shrink:0}.el-notification .el-notification__closeBtn{cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size);position:absolute;top:18px;right:15px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{z-index:2000;background-color:var(--el-overlay-color-lighter);height:100%;position:fixed;inset:0;overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{justify-content:space-between;align-items:center;line-height:24px;display:flex}.el-page-header__left{align-items:center;margin-right:40px;display:flex;position:relative}.el-page-header__back{cursor:pointer;align-items:center;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;margin-right:10px;font-size:16px;display:flex}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;white-space:nowrap;color:var(--el-pagination-text-color);font-size:var(--el-pagination-font-size);align-items:center;font-weight:400;display:flex}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield}.el-pagination .el-select{width:128px}.el-pagination .btn-prev,.el-pagination .btn-next{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pagination .btn-prev *,.el-pagination .btn-next *{pointer-events:none}.el-pagination .btn-prev:focus,.el-pagination .btn-next:focus{outline:none}.el-pagination .btn-prev:hover,.el-pagination .btn-next:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-prev.is-active,.el-pagination .btn-next.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-prev.is-active.is-disabled,.el-pagination .btn-next.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-prev:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-next.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-prev .el-icon,.el-pagination .btn-next .el-icon{width:inherit;font-size:12px;font-weight:700;display:block}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);font-weight:400}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);align-items:center;font-weight:400;display:flex}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{text-align:center;box-sizing:border-box}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{flex:1;justify-content:flex-end;align-items:center;display:flex}.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .el-pager li:disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-prev,.el-pagination--small .btn-next,.el-pagination--small .el-pager li{height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);font-size:var(--el-pagination-font-size-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small span:not([class*=suffix]),.el-pagination--small button{font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-prev,.el-pagination--large .btn-next,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{-webkit-user-select:none;user-select:none;align-items:center;margin:0;padding:0;font-size:0;list-style:none;display:flex}.el-pager li{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li:disabled,.el-pager li.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm{outline:none}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);min-width:150px;padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);margin-bottom:12px;line-height:1}.el-popover__reference:focus:not(.focusing),.el-popover__reference:focus:hover{outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus:active,.el-popover.el-popper:focus{outline-width:0}.el-progress{align-items:center;line-height:1;display:flex;position:relative}.el-progress__text{color:var(--el-text-color-regular);min-width:50px;margin-left:5px;font-size:14px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{text-align:center;width:100%;margin:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{margin-right:0;padding-right:0;display:block}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);vertical-align:middle;border-radius:100px;height:6px;position:relative;overflow:hidden}.el-progress-bar__inner{background-color:var(--el-color-primary);text-align:right;white-space:nowrap;border-radius:100px;height:100%;line-height:1;transition:width .6s;position:absolute;top:0;left:0}.el-progress-bar__inner:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-progress-bar__inner--indeterminate{animation:3s infinite indeterminate;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,#0000001a 25%,#0000 25% 50%,#0000001a 50% 75%,#0000 75%,#0000);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:3s linear infinite striped-flow}.el-progress-bar__innerText{vertical-align:middle;color:#fff;margin:0 5px;font-size:12px;display:inline-block}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);outline:none;display:inline-block;position:relative}.el-radio-button__inner{white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);line-height:1;font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio{opacity:0;z-index:-1;outline:none;position:absolute}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{flex-wrap:wrap;align-items:center;font-size:0;display:inline-flex}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);cursor:pointer;white-space:nowrap;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;outline:none;align-items:center;height:32px;margin-right:30px;display:inline-flex;position:relative}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{width:12px;height:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;vertical-align:middle;outline:none;display:inline-flex;position:relative}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%)scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);cursor:pointer;box-sizing:border-box;transition:all .3s;display:inline-block;position:relative}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";width:4px;height:4px;transition:transform .15s ease-in;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.el-radio__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute;inset:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);--el-rate-outline-color:var(--el-color-primary-light-5);align-items:center;height:32px;display:inline-flex}.el-rate:focus,.el-rate:active{outline:none}.el-rate:focus-visible .el-rate__item .el-rate__icon.is-focus-visible{outline:2px solid var(--el-rate-outline-color);transition:outline-offset,outline}.el-rate__item{cursor:pointer;vertical-align:middle;color:var(--el-rate-void-color);font-size:0;line-height:normal;display:inline-block;position:relative}.el-rate .el-rate__icon{font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration);display:inline-block;position:relative}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-rate__decimal--box{position:absolute;top:0;left:0}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{cursor:not-allowed;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;text-align:center;box-sizing:border-box;padding:var(--el-result-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);margin:0;line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{font-size:var(--el-font-size-base);color:var(--el-text-color-regular);margin:0;line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;flex-wrap:wrap;display:flex;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;position:relative;overflow:hidden}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));width:0;height:0;transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3);display:block;position:relative}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{z-index:1;border-radius:4px;position:absolute;bottom:2px;right:2px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__loading,.el-select-dropdown__empty{text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;margin:0;padding:6px 0;list-style:none}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{font-size:var(--el-font-size-base);white-space:nowrap;text-overflow:ellipsis;color:var(--el-text-color-regular);box-sizing:border-box;cursor:pointer;height:34px;padding:0 32px 0 20px;line-height:34px;position:relative;overflow:hidden}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;background-color:unset}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{content:"";background-position:50%;background-repeat:no-repeat;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;border-top:none;border-right:none;width:12px;height:12px;position:absolute;top:50%;right:20px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{margin:0;padding:0;list-style:none;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);text-overflow:ellipsis;white-space:nowrap;padding:0 20px;font-size:12px;line-height:34px;overflow:hidden}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;vertical-align:middle;width:var(--el-select-width);display:inline-block;position:relative}.el-select__wrapper{box-sizing:border-box;cursor:pointer;text-align:left;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);min-height:32px;transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;gap:6px;padding:4px 12px;font-size:14px;line-height:24px;display:flex;position:relative;transform:translate(0)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:6px;display:flex}.el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:var(--el-transition-duration);cursor:pointer;transform:rotate(0)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{cursor:pointer;border-color:#0000}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{-webkit-user-select:none;user-select:none;flex-wrap:wrap;display:flex}.el-select__tags-text{text-overflow:ellipsis;white-space:nowrap;line-height:normal;display:block;overflow:hidden}.el-select__placeholder{z-index:-1;text-overflow:ellipsis;white-space:nowrap;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.el-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--el-text-color-placeholder)}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;z-index:-1;position:absolute}.el-select__input{color:var(--el-select-multiple-input-color);font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;height:24px;padding:0;font-family:inherit}.el-select__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-select--large .el-select__wrapper{gap:6px;min-height:40px;padding:8px 16px;font-size:14px;line-height:24px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{gap:4px;min-height:24px;padding:2px 8px;font-size:12px;line-height:20px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);width:100%;height:16px;display:inline-block}.el-skeleton__circle{width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);border-radius:50%}.el-skeleton__button{border-radius:4px;width:64px;height:40px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;border-radius:0;justify-content:center;align-items:center;display:flex}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100%}to{background-position:0}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;animation:1.4s infinite el-skeleton-loading}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{vertical-align:top;display:inline-flex}.el-space__item{flex-wrap:wrap;display:flex}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{vertical-align:middle;display:inline-block}.el-spinner-inner{width:50px;height:50px;animation:2s linear infinite rotate}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:1.5s ease-in-out infinite dash}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1 150;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-35px}to{stroke-dasharray:90 150;stroke-dashoffset:-124px}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-grow:0;flex-shrink:0;flex-basis:auto!important}.el-step:last-of-type .el-step__main,.el-step:last-of-type .el-step__description{padding-right:0}.el-step__head{width:100%;position:relative}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{z-index:1;box-sizing:border-box;background:var(--el-bg-color);justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;transition:all .15s ease-out;display:inline-flex;position:relative}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;user-select:none;text-align:center;color:inherit;font-weight:700;line-height:1;display:inline-block}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{box-sizing:border-box;border:1px solid;width:0;height:0;transition:all .15s ease-out;display:block}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{margin-top:-5px;padding-right:10%;font-size:12px;font-weight:400;line-height:20px}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{padding-bottom:8px;line-height:24px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-vertical .el-step__description{padding-right:0}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{width:auto;padding-right:10px;font-size:0}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8)translateY(1px)}.el-step.is-simple .el-step__main{flex-grow:1;align-items:stretch;display:flex;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{overflow-wrap:break-word;max-width:50%}.el-step.is-simple .el-step__arrow{flex-grow:1;justify-content:center;align-items:center;display:flex}.el-step.is-simple .el-step__arrow:before,.el-step.is-simple .el-step__arrow:after{content:"";background:var(--el-text-color-placeholder);width:1px;height:15px;display:inline-block;position:absolute}.el-step.is-simple .el-step__arrow:before{transform-origin:0 0;transform:rotate(-45deg)translateY(-4px)}.el-step.is-simple .el-step__arrow:after{transform-origin:100% 100%;transform:rotate(45deg)translateY(4px)}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{line-height:normal;display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);vertical-align:middle;align-items:center;height:32px;font-size:14px;line-height:20px;display:inline-flex;position:relative}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);cursor:pointer;vertical-align:middle;height:20px;color:var(--el-text-color-primary);font-size:14px;font-weight:500;display:inline-block}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{font-size:14px;line-height:1;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{opacity:0;width:0;height:0;margin:0;position:absolute}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;min-width:40px;height:20px;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);border-radius:10px;outline:none;align-items:center;display:inline-flex;position:relative}.el-switch__core .el-switch__inner{width:100%;transition:all var(--el-transition-duration);justify-content:center;align-items:center;height:16px;padding:0 4px 0 18px;display:flex;overflow:hidden}.el-switch__core .el-switch__inner-wrapper{color:var(--el-color-white);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;align-items:center;font-size:12px;display:flex;overflow:hidden}.el-switch__core .el-switch__action{border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);background-color:var(--el-color-white);width:16px;height:16px;color:var(--el-switch-off-color);justify-content:center;align-items:center;display:flex;position:absolute;left:1px}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{height:40px;font-size:14px;line-height:24px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;min-width:50px;height:24px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{height:24px;font-size:12px;line-height:16px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;min-width:30px;height:16px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;background-color:#fff;border-radius:2px}.el-table-filter__list{outline:none;min-width:100px;margin:0;padding:5px 0;list-style:none}.el-table-filter__list-item{cursor:pointer;line-height:36px;font-size:var(--el-font-size-base);outline:none;padding:0 10px}.el-table-filter__list-item:hover,.el-table-filter__list-item:focus{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button{color:var(--el-text-color-regular);font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{height:unset;align-items:center;margin-bottom:12px;margin-left:5px;margin-right:5px;display:flex}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);box-sizing:border-box;background-color:var(--el-table-bg-color);width:100%;max-width:100%;height:-moz-fit-content;height:fit-content;font-size:var(--el-font-size-base);color:var(--el-table-text-color);position:relative;overflow:hidden}.el-table__inner-wrapper{flex-direction:column;height:100%;display:flex;position:relative}.el-table__inner-wrapper:before{height:1px;bottom:0;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell,.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell{border-bottom-color:#0000}.el-table__empty-block{text-align:center;justify-content:center;align-items:center;width:100%;min-height:60px;display:flex;position:sticky;left:0}.el-table__empty-text{width:50%;color:var(--el-text-color-secondary);line-height:60px}.el-table__expand-column .cell{text-align:center;-webkit-user-select:none;user-select:none;padding:0}.el-table__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon{color:var(--el-text-color-regular);width:min(23px,100%);height:23px;font-size:12px;line-height:12px}.el-table__expand-icon.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:#0000!important}.el-table__placeholder{width:20px;display:inline-block}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;text-align:left;min-width:0;z-index:var(--el-table-index);padding:8px 0;position:relative}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;width:15px;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;padding:0 12px;line-height:23px;overflow:hidden}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table th.el-table__cell.is-leaf,.el-table td.el-table__cell{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{content:"";vertical-align:middle;background:#ff4d51;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border:after,.el-table--border:before,.el-table--border .el-table__inner-wrapper:after,.el-table__inner-wrapper:before{content:"";background-color:var(--el-table-border-color);z-index:calc(var(--el-table-index) + 2);position:absolute}.el-table--border .el-table__inner-wrapper:after{width:100%;height:1px;z-index:calc(var(--el-table-index) + 2);top:0;left:0}.el-table--border:before{width:1px;height:100%;top:-1px;left:0}.el-table--border:after{width:1px;height:100%;top:-1px;right:0}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__header-wrapper,.el-table__body-wrapper,.el-table__footer-wrapper{width:100%}.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right,.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right{background:inherit;z-index:calc(var(--el-table-index) + 1);position:sticky!important}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{content:"";width:10px;box-shadow:none;touch-action:none;pointer-events:none;position:absolute;top:0;bottom:0;overflow:hidden}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch,.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch{z-index:calc(var(--el-table-index) + 1);background:#fff;right:0;position:sticky!important}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__header,.el-table__body,.el-table__footer{table-layout:fixed;border-collapse:separate}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__header-wrapper .el-table-column--selection>.cell,.el-table__body-wrapper .el-table-column--selection>.cell{align-items:center;height:23px;display:inline-flex}.el-table__header-wrapper .el-table-column--selection .el-checkbox,.el-table__body-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;position:relative;overflow:hidden}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .caret-wrapper{vertical-align:middle;width:24px;height:14px;overflow:initial;flex-direction:column;align-items:center;display:inline-flex;position:relative}.el-table .sort-caret{border:5px solid #0000;width:0;height:0;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;z-index:-1;position:absolute}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{z-index:calc(var(--el-table-index) + 2);position:sticky;top:0}.el-table.el-table--scrollable-y .el-table__body-footer{z-index:calc(var(--el-table-index) + 2);position:sticky;bottom:0}.el-table__column-resize-proxy{border-left:var(--el-table-border);width:0;z-index:calc(var(--el-table-index) + 9);position:absolute;top:0;bottom:0;left:200px}.el-table__column-filter-trigger{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger{display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);vertical-align:middle;font-size:14px}.el-table__border-left-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0;left:0}.el-table__border-bottom-patch{height:1px;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;left:0}.el-table__border-right-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{text-align:center;width:20px;display:inline-block}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden;box-shadow:2px 0 4px #0000000f}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__vertical,.el-table-v2__left .el-vl__horizontal{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;right:0;overflow:hidden;box-shadow:-2px 0 4px #0000000f}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__vertical,.el-table-v2__right .el-vl__horizontal{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{position:relative;overflow:hidden}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{position:absolute;bottom:0;left:0;right:0;overflow:hidden}.el-table-v2__empty{position:absolute;left:0}.el-table-v2__overlay{z-index:9999;position:absolute;inset:0}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{-webkit-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color);height:100%;color:var(--el-table-header-text-color);align-items:center;padding:0 8px;font-weight:700;display:flex;overflow:hidden}.el-table-v2__header-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__header-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__sort-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__sort-icon{transition:opacity,display var(--el-transition-duration);opacity:.6;display:none}.el-table-v2__sort-icon.is-sorting{opacity:1;display:flex}.el-table-v2__row{border-bottom:var(--el-table-border);transition:background-color var(--el-transition-duration);align-items:center;display:flex}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;height:100%;padding:0 8px;display:flex;overflow:hidden}.el-table-v2__row-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__row-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__expand-icon{-webkit-user-select:none;user-select:none;margin:0 4px}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{justify-content:space-between;align-items:center;margin:0 0 15px;padding:0;display:flex;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);z-index:1;height:2px;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none;position:absolute;bottom:0;left:0}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{border:1px solid var(--el-border-color);text-align:center;width:20px;height:20px;color:var(--el-text-color-primary);cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;margin:10px 0 10px 10px;font-size:12px;line-height:20px;transition:all .15s;display:flex}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:auto;margin-bottom:-1px;position:relative;overflow:hidden}.el-tabs__nav-wrap:after{content:"";background-color:var(--el-border-color-light);width:100%;height:2px;z-index:var(--el-index-normal);position:absolute;bottom:0;left:0}.el-tabs__nav-wrap.is-bottom:after{top:0;bottom:auto}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{cursor:pointer;color:var(--el-text-color-secondary);text-align:center;width:20px;font-size:12px;line-height:44px;position:absolute}.el-tabs__nav-next.is-disabled,.el-tabs__nav-prev.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1);display:flex;position:relative}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{text-align:center;flex:1}.el-tabs__item{height:var(--el-tabs-header-height);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary);justify-content:center;align-items:center;padding:0 20px;font-weight:500;list-style:none;display:flex;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border-radius:50%;margin-left:5px}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;position:relative;overflow:hidden}.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--top>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height);box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);box-sizing:border-box;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{transform-origin:100%;width:0;height:14px;font-size:12px;position:relative;right:-2px;overflow:hidden}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid #0000;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-top:-1px}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);color:var(--el-text-color-secondary);border:1px solid #0000;margin-top:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child,.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-top:10px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid #0000}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-scroll{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{width:2px;height:auto;top:0;bottom:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{text-align:center;cursor:pointer;width:100%;height:30px;line-height:30px}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled{cursor:not-allowed}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{top:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{width:2px;height:100%;top:0;bottom:auto}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right-color:#fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-right:none;border-radius:4px 0 0 4px}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid #0000;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 #0000}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left-color:#fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid #0000;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 #0000}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInRight-transition,.slideInLeft-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);position:absolute;left:0;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);position:absolute;left:0;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(100%)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(-100%)}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);vertical-align:middle;height:24px;font-size:var(--el-tag-font-size);border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px;--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);border-style:solid;border-width:1px;justify-content:center;align-items:center;padding:0 9px;line-height:1;display:inline-flex}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size);border-radius:50%;display:flex}.el-tag .el-tag__close{background-color:#0000;border:none;border-radius:50%;outline:none;margin-left:6px;padding:0;overflow:hidden}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag--dark{--el-tag-text-color:var(--el-color-white);--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning,.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{--el-icon-size:16px;height:32px;padding:0 11px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{--el-icon-size:12px;height:20px;padding:0 7px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);font-size:var(--el-text-font-size);color:var(--el-text-color);overflow-wrap:break-word;align-self:center;margin:0;padding:0}.el-text.is-truncated{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;overflow:hidden}.el-text.is-line-clamp{-webkit-box-orient:vertical;display:-webkit-inline-box;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{min-width:0;margin:5px 0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{box-sizing:content-box;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__node--normal{width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline-item.is-start .el-timeline-item__wrapper{padding-left:28px}.el-timeline-item.is-start .el-timeline-item__tail{left:4px}.el-timeline-item.is-start .el-timeline-item__node--normal{left:-1px}.el-timeline-item.is-start .el-timeline-item__node--large{left:-2px}.el-timeline-item.is-end .el-timeline-item__wrapper{text-align:right;padding-right:28px}.el-timeline-item.is-end .el-timeline-item__tail{right:4px}.el-timeline-item.is-end .el-timeline-item__node--normal{right:-1px}.el-timeline-item.is-end .el-timeline-item__node--large{right:-2px}.el-timeline-item.is-alternate .el-timeline-item__tail,.el-timeline-item.is-alternate .el-timeline-item__node,.el-timeline-item.is-alternate-reverse .el-timeline-item__tail,.el-timeline-item.is-alternate-reverse .el-timeline-item__node{left:50%;transform:translate(-50%)}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{height:calc(50% - 10px);display:block}.el-timeline.is-start{padding-left:40px;padding-right:0}.el-timeline.is-end{padding-left:0;padding-right:40px}.el-timeline.is-alternate{padding-left:20px;padding-right:20px}.el-timeline.is-alternate .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-timeline.is-alternate .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse{padding-left:20px;padding-right:20px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{vertical-align:middle;padding:0 30px;display:inline-block}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);box-sizing:border-box;max-height:100%;display:inline-block;position:relative;overflow:hidden}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0}.el-transfer-panel__list{height:var(--el-transfer-panel-body-height);box-sizing:border-box;margin:0;padding:6px 0;list-style:none;overflow:auto}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular);margin-right:30px}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;width:100%;line-height:var(--el-transfer-item-height);padding-left:22px;display:block;overflow:hidden}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;box-sizing:border-box;padding:15px}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);box-sizing:border-box;width:100%;font-size:12px;display:inline-block}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);align-items:center;margin:0;padding-left:15px;display:flex}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;width:100%;display:flex;position:relative}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{min-width:0;color:var(--el-text-color-primary);flex:1;align-items:center;font-size:16px;font-weight:400;display:flex}.el-transfer-panel .el-transfer-panel__header-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.el-transfer-panel .el-transfer-panel__header-count{color:var(--el-text-color-secondary);flex-shrink:0;margin-left:8px;margin-right:15px;font-size:12px}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);color:var(--el-text-color-secondary);text-align:center;margin:0;padding:6px 15px 0}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color);font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{text-align:center;width:100%;height:100%;min-height:60px;position:relative}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;position:absolute;left:0;right:0}.el-tree-node{white-space:nowrap;outline:none}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);height:var(--el-tree-node-content-height);cursor:pointer;align-items:center;display:flex}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);transition:transform var(--el-transition-duration) ease-in-out;font-size:12px;transform:rotate(0)}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:#0000;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:#0000;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{flex:1;height:20px;padding-left:0;line-height:20px;background:0 0!important}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;cursor:pointer;outline:none;justify-content:center;align-items:center;display:inline-flex}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{border-color:var(--el-border-color-darker);color:inherit}.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);margin-top:7px;font-size:12px}.el-upload iframe{z-index:-1;opacity:0;filter:alpha(opacity=0);position:absolute;top:0;left:0}.el-upload--picture-card{background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);box-sizing:border-box;text-align:center;cursor:pointer;border-radius:6px;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);margin-bottom:16px;font-size:67px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);text-align:center;font-size:14px}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{color:var(--el-text-color-regular);box-sizing:border-box;border-radius:4px;width:100%;margin-bottom:5px;font-size:14px;transition:all .5s cubic-bezier(.55,0,.1,1);position:relative}.el-upload-list__item .el-progress{width:100%;position:absolute;top:20px}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);display:none;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{cursor:pointer;opacity:1;color:var(--el-color-primary);font-size:12px;font-style:normal;display:none;position:absolute;top:1px;right:5px}.el-upload-list__item:hover,.el-upload-list__item:focus-within{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close,.el-upload-list__item:focus-within .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-icon--close-tip,.el-upload-list__item:focus-within .el-icon--close-tip{right:24px}.el-upload-list__item:hover .el-progress__text,.el-upload-list__item:focus-within .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{flex-direction:column;justify-content:center;width:calc(100% - 30px);margin-left:4px;display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:hover,.el-upload-list__item.is-success .el-upload-list__item-name:focus{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:not(.focusing):focus,.el-upload-list__item.is-success:active{outline-width:0}.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip,.el-upload-list__item.is-success:active .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus-within .el-upload-list__item-status-label{opacity:0;display:none}.el-upload-list__item-name{color:var(--el-text-color-regular);text-align:center;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base);align-items:center;padding:0 4px;display:inline-flex}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-upload-list__item-status-label{line-height:inherit;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;display:none;position:absolute;top:0;right:5px}.el-upload-list__item-delete{color:var(--el-text-color-regular);font-size:12px;display:none;position:absolute;top:0;right:10px}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{flex-wrap:wrap;margin:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);border-radius:6px;margin:0 8px 8px 0;padding:0;display:inline-flex;overflow:hidden}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{object-fit:contain;width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{cursor:default;color:#fff;opacity:0;background-color:var(--el-overlay-color-lighter);width:100%;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;font-size:20px;display:inline-flex;position:absolute;top:0;left:0}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{font-size:inherit;color:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{width:126px;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;border-radius:6px;align-items:center;margin-top:10px;padding:10px;display:flex;overflow:hidden}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:inline-flex}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{object-fit:contain;z-index:1;background-color:var(--el-color-white);justify-content:center;align-items:center;width:70px;height:70px;display:inline-flex;position:relative}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:46px;height:26px;position:absolute;top:-7px;right:-17px;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{margin-top:12px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{z-index:10;cursor:default;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.el-upload-cover:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-upload-cover img{width:100%;height:100%;display:block}.el-upload-cover__label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-cover__label i{color:#fff;margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-cover__progress{vertical-align:middle;width:243px;display:inline-block;position:static}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{width:100%;height:100%;position:absolute;top:0;left:0}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);text-align:center;width:100%;height:100%;position:absolute;bottom:0;left:0}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px;font-size:14px;display:inline-block}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;font-size:24px;line-height:inherit;margin:0 auto 5px;display:block}.el-upload-cover__title{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;height:36px;color:var(--el-text-color-primary);background-color:#fff;margin:0;padding:0 10px;font-size:14px;font-weight:400;line-height:36px;position:absolute;bottom:0;left:0;overflow:hidden}.el-upload-cover+.el-upload__inner{opacity:0;z-index:1;position:relative}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{font-weight:var(--el-statistic-title-font-weight);font-size:var(--el-statistic-title-font-size);color:var(--el-statistic-title-color);margin-bottom:4px;line-height:20px}.el-statistic__content{font-weight:var(--el-statistic-content-font-weight);font-size:var(--el-statistic-content-font-size);color:var(--el-statistic-content-color)}.el-statistic__value{display:inline-block}.el-statistic__prefix{margin-right:4px;display:inline-block}.el-statistic__suffix{margin-left:4px;display:inline-block}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);width:var(--el-tour-width);padding:var(--el-tour-padding-primary);background:var(--el-tour-bg-color);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;overflow-wrap:break-word;outline:none}.el-tour__arrow{background:var(--el-tour-bg-color);pointer-events:none;box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-tour__content[data-side^=top] .el-tour__arrow{border-top-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=right] .el-tour__arrow{border-top-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{cursor:pointer;width:40px;height:40px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size,16px))}.el-tour__title{line-height:var(--el-tour-font-line-height);font-size:var(--el-tour-title-font-size);color:var(--el-tour-title-text-color);font-weight:var(--el-tour-title-font-weight)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{padding-top:var(--el-tour-padding-primary);box-sizing:border-box;justify-content:space-between;display:flex}.el-tour__content .el-tour-indicators{flex:1;display:inline-block}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{color:var(--el-color-primary);border-color:var(--el-color-primary);background:#fff}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:#ffffff26}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-hover-color:var(--el-text-color-regular);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);opacity:0;z-index:0;border-radius:4px;position:absolute}.el-anchor.el-anchor--vertical .el-anchor__marker{width:4px;height:14px;transition:top .25s ease-in-out,opacity .25s;top:8px;left:0}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{content:"";background-color:#0505050f;width:2px;height:100%;position:absolute;left:0}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{width:20px;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;bottom:0}.el-anchor.el-anchor--horizontal .el-anchor__list{padding-bottom:4px;display:flex}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{content:"";background-color:#0505050f;width:100%;height:2px;position:absolute;bottom:0}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{flex-direction:column;display:flex}.el-anchor__link{font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);color:var(--el-anchor-color);transition:color var(--el-transition-duration);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;outline:none;max-width:100%;padding:4px 0;text-decoration:none;overflow:hidden}.el-anchor__link:hover,.el-anchor__link:focus{color:var(--el-hover-color)}.el-anchor__link:focus-visible{border-radius:var(--el-border-radius-base);outline:2px solid var(--el-color-primary)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);background:var(--el-segmented-bg-color);min-height:32px;padding:var(--el-segmented-padding);border-radius:var(--el-border-radius-base);color:var(--el-segmented-color);box-sizing:border-box;align-items:stretch;font-size:14px;display:inline-flex}.el-segmented__group{align-items:stretch;width:100%;display:flex;position:relative}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);pointer-events:none;width:10px;height:100%;transition:all .3s;position:absolute;top:0;left:0}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{content:"";border-radius:inherit;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute;inset:0}.el-segmented__item{cursor:pointer;border-radius:calc(var(--el-border-radius-base) - 2px);flex:1;align-items:center;padding:0 11px;display:flex}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{color:var(--el-segmented-item-hover-color);background:var(--el-segmented-item-hover-bg-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{cursor:not-allowed;color:var(--el-segmented-item-disabled-color)}.el-segmented__item-input{opacity:0;pointer-events:none;width:0;height:0;margin:0;position:absolute}.el-segmented__item-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;z-index:1;flex:1;line-height:normal;transition:color .3s;overflow:hidden}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);min-height:40px;font-size:16px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);min-height:24px;font-size:14px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px);padding:0 7px}.el-mention{width:100%;position:relative}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{font-size:var(--el-mention-font-size);white-space:nowrap;text-overflow:ellipsis;color:var(--el-mention-option-color);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);box-sizing:border-box;min-width:var(--el-mention-option-min-width);cursor:pointer;padding:0 20px;position:relative;overflow:hidden}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{color:var(--el-mention-option-disabled-color);cursor:not-allowed;background-color:unset}.el-mention-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-mention-dropdown__loading{text-align:center;color:var(--el-mention-option-loading-color);min-width:var(--el-mention-option-min-width);margin:0;padding:10px 0;font-size:12px}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{padding:var(--el-mention-padding);box-sizing:border-box;margin:0;list-style:none}.el-mention-dropdown__header{padding:var(--el-mention-header-padding);border-bottom:var(--el-mention-border)}.el-mention-dropdown__footer{padding:var(--el-mention-footer-padding);border-top:var(--el-mention-border)}.el-splitter{width:100%;height:100%;margin:0;padding:0;display:flex;position:relative}.el-splitter__mask{z-index:999;position:absolute;inset:0}.el-splitter__mask-horizontal{cursor:ew-resize}.el-splitter__mask-vertical{cursor:ns-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{-webkit-user-select:none;user-select:none;flex:none;position:relative}.el-splitter-bar__dragger{z-index:1;background:0 0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before,.el-splitter-bar__dragger:after{content:"";background-color:var(--el-border-color-light);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:not(.is-lazy):after{display:none}.el-splitter-bar__dragger:after{opacity:.4}.el-splitter-bar__dragger:hover:not(.is-disabled):before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before,.el-splitter-bar__dragger-horizontal:after{width:2px;height:100%}.el-splitter-bar__dragger-vertical:before,.el-splitter-bar__dragger-vertical:after{width:100%;height:2px}.el-splitter-bar__dragger-active:before,.el-splitter-bar__dragger-active:after{background-color:var(--el-color-primary-light-3)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-horizontal:after{transform:translate(calc(-50% + var(--el-splitter-bar-offset)),-50%)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-vertical:after{transform:translate(-50%,calc(-50% + var(--el-splitter-bar-offset)))}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{background:var(--el-border-color-light);cursor:pointer;opacity:0;z-index:9;border-radius:2px;justify-content:center;align-items:center;display:flex;position:absolute}.el-splitter-bar__collapse-icon:hover{opacity:1;background-color:var(--el-color-primary-light-5)}.el-splitter-bar__horizontal-collapse-icon-start{width:16px;height:24px;top:50%;left:-12px;transform:translate(-50%,-50%)}.el-splitter-bar__horizontal-collapse-icon-end{width:16px;height:24px;top:50%;left:12px;transform:translate(-50%,-50%)}.el-splitter-bar__vertical-collapse-icon-start{width:24px;height:16px;top:-12px;right:50%;transform:translate(50%,-50%)}.el-splitter-bar__vertical-collapse-icon-end{width:24px;height:16px;top:12px;right:50%;transform:translate(50%,-50%)}.el-splitter-panel{scrollbar-width:thin;box-sizing:border-box;flex-grow:0;overflow:auto}:root{--font-family-base: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", sans-serif;--color-primary: #409eff;--color-bg-light: #eef3f8;--color-bg-dark: #0d0d0d;--color-surface-light: rgba(255, 255, 255, .92);--color-surface-dark: #1a1a1a;--color-border-light: #d6e4ef;--color-border-dark: #2a2a2a;--color-text-primary: #303133;--color-text-secondary: #606266;--color-text-dark: #e5eaf3;--shadow-card: 0 10px 30px rgba(0, 0, 0, .08);--radius-lg: 16px;--radius-md: 12px;--radius-sm: 8px}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:var(--font-family-base);color:var(--color-text-primary)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}body{background:var(--color-bg-light)}html{scrollbar-color:rgba(123,135,148,.7) rgba(255,255,255,.04);scrollbar-width:thin}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:#ffffff0a}*::-webkit-scrollbar-thumb{background:#7b8794b3;border:2px solid transparent;border-radius:999px;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#94a3b8e6;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}.page-shell{min-height:100vh}.theme-light{background:var(--color-bg-light);color:var(--color-text-primary)}.theme-dark{background:var(--color-bg-dark);color:var(--color-text-dark)}.top-bar[data-v-8f206bc1]{height:56px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 20px;background:#111;border-bottom:1px solid #2a2a2a}.logo-area[data-v-8f206bc1]{display:flex;align-items:center;gap:16px;min-width:0}.app-name[data-v-8f206bc1]{color:#fff;font-size:16px;font-weight:700;white-space:nowrap}.btn-home[data-v-8f206bc1]{color:#d2d2d2;font-size:13px;text-decoration:none;white-space:nowrap}.btn-home[data-v-8f206bc1]:hover{color:#fff}.nav-tabs[data-v-8f206bc1]{flex:1;display:flex;justify-content:center;min-width:0}.nav-tab-group[data-v-8f206bc1]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}.nav-tab[data-v-8f206bc1]{display:inline-flex;align-items:center;justify-content:center;min-width:92px;height:38px;padding:0 16px;border-radius:10px;border:1px solid transparent;color:#8d8d8d;background:transparent;font-size:13px;font-weight:600;text-decoration:none;transition:all .2s ease}.nav-tab[data-v-8f206bc1]:hover{color:#b9d6ff;background:#4d7ebd24}.nav-tab.active[data-v-8f206bc1]{background:#4d7ebd3d;border-color:#5b94db59;color:#6caeff}.top-right[data-v-8f206bc1]{width:120px;flex-shrink:0}@media(max-width:1100px){.top-bar[data-v-8f206bc1]{height:auto;align-items:flex-start;flex-direction:column;padding:16px 20px}.nav-tabs[data-v-8f206bc1]{width:100%;justify-content:flex-start}.top-right[data-v-8f206bc1]{display:none}} diff --git a/app/assets/split-CYvQPVKL.css b/app/assets/split-CYvQPVKL.css new file mode 100644 index 0000000..bc362ba --- /dev/null +++ b/app/assets/split-CYvQPVKL.css @@ -0,0 +1 @@ +.module-page[data-v-a95aa22e]{min-height:100vh;background:#1a1a1a}.main-content[data-v-a95aa22e]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-a95aa22e]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-a95aa22e]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-a95aa22e]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-a95aa22e]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-a95aa22e]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-a95aa22e]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-a95aa22e]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-a95aa22e],.btn-run[data-v-a95aa22e],.download[data-v-a95aa22e],.btn-delete[data-v-a95aa22e]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-a95aa22e]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-a95aa22e]{padding:6px 10px;font-size:12px}.opt-btn[data-v-a95aa22e]:hover{color:#3498db;background:#333;border-color:#3498db}.selected-files[data-v-a95aa22e]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-a95aa22e]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-a95aa22e]{color:#b8c1cc}.split-selected-files[data-v-a95aa22e]{max-height:120px;min-height:72px;padding-right:4px}.option-group[data-v-a95aa22e]{margin-bottom:20px}.column-option-group[data-v-a95aa22e]{padding:14px;border-radius:10px;background:#252525;border:1px solid #2a2a2a}.column-toolbar[data-v-a95aa22e]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.column-count[data-v-a95aa22e]{font-size:12px;color:#a9b4bf}.column-actions[data-v-a95aa22e]{display:flex;gap:8px}.column-grid[data-v-a95aa22e]{display:grid;grid-template-columns:1fr;gap:8px;max-height:280px;overflow-y:auto}.empty-column-state[data-v-a95aa22e]{padding:16px 12px;border-radius:8px;border:1px dashed #3a3a3a;background:#202020;color:#7f8790;font-size:12px;line-height:1.6}.column-item[data-v-a95aa22e]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid #2f2f2f;background:#202020;cursor:pointer;transition:all .2s ease;font-size:13px;color:#d7d7d7}.column-item[data-v-a95aa22e]:hover,.column-item.active[data-v-a95aa22e]{border-color:#3b6f98;background:#26313a}.column-item input[data-v-a95aa22e]{margin:0}.column-item span[data-v-a95aa22e]{word-break:break-all}.radio-item[data-v-a95aa22e]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.radio-item[data-v-a95aa22e]:hover,.radio-item.active[data-v-a95aa22e]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-a95aa22e]{margin-top:3px}.label[data-v-a95aa22e]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-a95aa22e]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.split-input-card[data-v-a95aa22e]{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:10px;border:1px solid #2f2f2f;background:#252525}.split-number-input[data-v-a95aa22e]{width:100%;padding:12px 14px;border-radius:8px;border:1px solid #3a3a3a;background:#1b1b1b;color:#eaf4ff;font-size:22px;font-weight:700;line-height:1.2;outline:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.split-number-input[data-v-a95aa22e]:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db2e;background:#20252b}.split-number-input[data-v-a95aa22e]::placeholder{color:#708090;font-size:14px;font-weight:400}.run-row[data-v-a95aa22e]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-a95aa22e]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-a95aa22e]:hover{background:#2980b9}.btn-run[data-v-a95aa22e]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-a95aa22e]{color:#3498db;font-size:13px}.panel-header[data-v-a95aa22e]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-a95aa22e]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-a95aa22e]{list-style:none;margin:0;padding:0}.task-item[data-v-a95aa22e]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.split-result-item[data-v-a95aa22e]{align-items:flex-start}.left[data-v-a95aa22e]{flex:1;min-width:0}.split-result-main[data-v-a95aa22e]{display:flex;flex-direction:column;gap:4px}.id[data-v-a95aa22e]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-a95aa22e]{font-size:12px;color:#888;margin-top:4px}.time[data-v-a95aa22e]{font-size:12px;color:#666;margin-top:2px}.split-entry-list[data-v-a95aa22e]{line-height:1.6;word-break:break-all;max-width:100%}.task-right[data-v-a95aa22e]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.split-result-actions[data-v-a95aa22e]{flex-shrink:0;min-width:180px;justify-content:flex-end;align-self:center}.status[data-v-a95aa22e]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-a95aa22e]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-a95aa22e]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-a95aa22e]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-a95aa22e]:hover{background:#3498db47}.btn-delete[data-v-a95aa22e]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-a95aa22e]:hover{background:#e74c3c38}.empty-tasks[data-v-a95aa22e]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-a95aa22e]{max-height:112px}.clean-result-summary[data-v-a95aa22e]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-a95aa22e]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-a95aa22e]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-a95aa22e]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-a95aa22e]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-a95aa22e]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-a95aa22e]{flex-direction:column;height:auto}.left-panel[data-v-a95aa22e]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-a95aa22e]{min-height:420px}.task-item[data-v-a95aa22e]{flex-direction:column;align-items:flex-start}.task-right[data-v-a95aa22e]{width:100%;justify-content:flex-start}.split-result-actions[data-v-a95aa22e]{min-width:0;align-self:flex-start}.clean-result-summary[data-v-a95aa22e]{grid-template-columns:1fr}} diff --git a/app/assets/split-_O6NHqDj.css b/app/assets/split-_O6NHqDj.css deleted file mode 100644 index 427109e..0000000 --- a/app/assets/split-_O6NHqDj.css +++ /dev/null @@ -1 +0,0 @@ -.module-page[data-v-a69b42b2]{min-height:100vh;background:#1a1a1a}.main-content[data-v-a69b42b2]{display:flex;min-height:calc(100vh - 56px);height:calc(100vh - 56px)}.left-panel[data-v-a69b42b2]{width:380px;background:#1e1e1e;padding:20px;overflow-y:auto;border-right:1px solid #2a2a2a}.right-panel[data-v-a69b42b2]{flex:1;display:flex;flex-direction:column;min-width:0;background:#1a1a1a}.section-title[data-v-a69b42b2]{font-size:13px;color:#bbb;margin-bottom:10px}.upload-zone[data-v-a69b42b2]{border:1px dashed #3a3a3a;border-radius:10px;padding:24px;text-align:center;background:#252525;margin-bottom:20px;transition:all .2s ease}.upload-zone[data-v-a69b42b2]:hover{border-color:#3498db;background:#2a2a2a}.hint[data-v-a69b42b2]{color:#888;font-size:13px;margin-bottom:12px;line-height:1.5}.btns[data-v-a69b42b2]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.opt-btn[data-v-a69b42b2],.btn-run[data-v-a69b42b2],.download[data-v-a69b42b2],.btn-delete[data-v-a69b42b2]{border:none;cursor:pointer;transition:all .2s ease}.opt-btn[data-v-a69b42b2]{padding:8px 16px;font-size:13px;color:#ccc;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px}.opt-btn.small[data-v-a69b42b2]{padding:6px 10px;font-size:12px}.opt-btn[data-v-a69b42b2]:hover{color:#3498db;background:#333;border-color:#3498db}.selected-files[data-v-a69b42b2]{margin-top:14px;font-size:12px;color:#888;max-height:112px;overflow-y:auto;text-align:left}.selected-files span[data-v-a69b42b2]{display:block;margin:4px 0;word-break:break-all}.more-line[data-v-a69b42b2]{color:#b8c1cc}.option-group[data-v-a69b42b2]{margin-bottom:20px}.column-option-group[data-v-a69b42b2]{padding:14px;border-radius:10px;background:#252525;border:1px solid #2a2a2a}.column-toolbar[data-v-a69b42b2]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.column-count[data-v-a69b42b2]{font-size:12px;color:#a9b4bf}.column-actions[data-v-a69b42b2]{display:flex;gap:8px}.column-grid[data-v-a69b42b2]{display:grid;grid-template-columns:1fr;gap:8px;max-height:280px;overflow-y:auto}.empty-column-state[data-v-a69b42b2]{padding:16px 12px;border-radius:8px;border:1px dashed #3a3a3a;background:#202020;color:#7f8790;font-size:12px;line-height:1.6}.column-item[data-v-a69b42b2]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid #2f2f2f;background:#202020;cursor:pointer;transition:all .2s ease;font-size:13px;color:#d7d7d7}.column-item[data-v-a69b42b2]:hover,.column-item.active[data-v-a69b42b2]{border-color:#3b6f98;background:#26313a}.column-item input[data-v-a69b42b2]{margin:0}.column-item span[data-v-a69b42b2]{word-break:break-all}.radio-item[data-v-a69b42b2]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:10px 12px;border-radius:8px;background:#252525;border:1px solid #2a2a2a;margin-bottom:8px;transition:all .2s ease}.radio-item[data-v-a69b42b2]:hover,.radio-item.active[data-v-a69b42b2]{background:#2a2a2a;border-color:#3a3a3a}.radio-item input[data-v-a69b42b2]{margin-top:3px}.label[data-v-a69b42b2]{font-weight:500;color:#e0e0e0;font-size:13px}.desc[data-v-a69b42b2]{font-size:12px;color:#888;margin-top:2px;line-height:1.5;font-weight:400}.split-input-card[data-v-a69b42b2]{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:10px;border:1px solid #2f2f2f;background:#252525}.split-number-input[data-v-a69b42b2]{width:100%;padding:12px 14px;border-radius:8px;border:1px solid #3a3a3a;background:#1b1b1b;color:#eaf4ff;font-size:22px;font-weight:700;line-height:1.2;outline:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.split-number-input[data-v-a69b42b2]:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db2e;background:#20252b}.split-number-input[data-v-a69b42b2]::placeholder{color:#708090;font-size:14px;font-weight:400}.run-row[data-v-a69b42b2]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:16px}.btn-run[data-v-a69b42b2]{padding:10px 22px;background:#3498db;color:#fff;border-radius:8px;font-size:14px}.btn-run[data-v-a69b42b2]:hover{background:#2980b9}.btn-run[data-v-a69b42b2]:disabled{background:#555;color:#999;cursor:not-allowed}.loading-msg[data-v-a69b42b2]{color:#3498db;font-size:13px}.panel-header[data-v-a69b42b2]{padding:16px 20px;border-bottom:1px solid #2a2a2a;font-size:15px;font-weight:600;color:#ddd}.task-list-wrap[data-v-a69b42b2]{flex:1;overflow-y:auto;padding:16px}.task-list[data-v-a69b42b2]{list-style:none;margin:0;padding:0}.task-item[data-v-a69b42b2]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #2a2a2a;border-radius:8px;margin-bottom:10px;background:#1e1e1e}.left[data-v-a69b42b2]{flex:1;min-width:0}.id[data-v-a69b42b2]{display:inline-block;font-weight:600;color:#e0e0e0;font-size:13px}.files[data-v-a69b42b2]{font-size:12px;color:#888;margin-top:4px}.time[data-v-a69b42b2]{font-size:12px;color:#666;margin-top:2px}.task-right[data-v-a69b42b2]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.status[data-v-a69b42b2]{padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap}.status.success[data-v-a69b42b2]{background:#2ecc712e;color:#2ecc71}.status.failed[data-v-a69b42b2]{background:#e74c3c2e;color:#ff6b6b}.download[data-v-a69b42b2]{padding:6px 10px;border-radius:6px;font-size:12px;background:#3498db2e;color:#69b6ff}.download[data-v-a69b42b2]:hover{background:#3498db47}.btn-delete[data-v-a69b42b2]{padding:6px 10px;border-radius:6px;font-size:12px;background:#e74c3c1f;color:#ff8f8f}.btn-delete[data-v-a69b42b2]:hover{background:#e74c3c38}.empty-tasks[data-v-a69b42b2]{color:#666;font-size:13px;padding:24px 8px}.clean-placeholder[data-v-a69b42b2]{max-height:none}.clean-result-summary[data-v-a69b42b2]{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:16px;margin-bottom:18px}.summary-card[data-v-a69b42b2]{padding:16px 18px;border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e}.summary-card strong[data-v-a69b42b2]{display:block;margin-top:8px;font-size:24px;color:#eaf4ff}.summary-label[data-v-a69b42b2]{font-size:12px;color:#8d8d8d}.result-list-wrap[data-v-a69b42b2]{border:1px solid #2a2a2a;border-radius:10px;background:#1e1e1e;min-height:260px}.result-list-header[data-v-a69b42b2]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #2a2a2a;font-size:14px;color:#ddd}@media(max-width:1100px){.main-content[data-v-a69b42b2]{flex-direction:column;height:auto}.left-panel[data-v-a69b42b2]{width:100%;border-right:none;border-bottom:1px solid #2a2a2a}.right-panel[data-v-a69b42b2]{min-height:420px}.task-item[data-v-a69b42b2]{flex-direction:column;align-items:flex-start}.task-right[data-v-a69b42b2]{width:100%;justify-content:flex-start}.clean-result-summary[data-v-a69b42b2]{grid-template-columns:1fr}} diff --git a/app/assets/split.js b/app/assets/split.js index 520cd50..66a082d 100644 --- a/app/assets/split.js +++ b/app/assets/split.js @@ -1 +1 @@ -import{d as A,o as K,a,c as n,b as N,B as z,e,F as C,r as $,t as i,f as w,n as x,w as h,u as I,D as R,g as d,h as q,i as S,E as o,j as G,G as J,H as L,p as O,v as Q,I as W,_ as X,q as Y,s as Z}from"./pywebview-Rm5Hhqpf.js";const ss={class:"page-shell module-page"},es={class:"main-content"},ts={class:"left-panel"},ls={class:"upload-zone"},as={class:"selected-files clean-placeholder"},ns={key:0,class:"more-line"},os={key:1},is={class:"option-group column-option-group"},rs={class:"column-toolbar"},us={class:"column-count"},ds={class:"column-actions"},cs={key:0,class:"column-grid"},ps=["value"],vs={key:1,class:"empty-column-state"},_s={class:"option-group"},fs={class:"radio-item active"},ms={class:"desc"},ys={class:"option-group"},bs={class:"option-group"},gs={key:0,class:"split-input-card"},ws={key:1,class:"split-input-card"},hs={class:"run-row"},ks=["disabled"],Cs={class:"loading-msg"},xs={class:"right-panel"},Ss={class:"task-list-wrap"},Fs={class:"clean-result-summary"},Es={class:"summary-card"},$s={class:"summary-card"},Us={class:"summary-card"},Bs={class:"result-list-wrap"},Is={key:0,class:"empty-tasks"},Rs={key:1,class:"task-list clean-result-list"},Ps={class:"left"},Vs=["title"],Ms={key:0,class:"files"},Ts={key:1,class:"time"},Ds={key:2,class:"files"},Hs={class:"task-right"},js=["onClick"],As=["onClick"],Ks=A({__name:"BrandSplitTab",setup(zs){const p=d([]),v=d([]),_=d([]),c=d([]),U=d(0),r=d("rows_per_file"),f=d(2e3),m=d(5),y=d(!1),k=d([]),b=d({total:0,successCount:0,failedCount:0,items:[]}),F=q(()=>p.value.slice(0,8));async function P(l){const s=S();if(!s?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const u of l){const g=await s.upload_file_to_java(u);if(!g?.success||!g.data)throw new Error(g?.error||g?.message||`上传失败:${u}`);t.push(g.data)}return t}async function V(l){const s=await O(l);_.value=s.headers||[],c.value=[...s.headers||[]],U.value=s.totalRows||0}async function B(l,s){p.value=l,v.value=await P(l),v.value.length>0&&await V(v.value[0].fileKey),o.success(s)}async function M(){const l=S();if(!l?.select_brand_xlsx_files){o.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const s=await l.select_brand_xlsx_files();if(!s?.length)return;await B(s,`已选择 ${s.length} 个待拆分文件`)}catch(s){o.error(s instanceof Error?s.message:"选择失败")}}async function T(){const l=S();if(!l?.select_brand_folder){o.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const s=await l.select_brand_folder();if(!s)return;const t=await G(s);if(t.success&&t.paths?.length){await B(t.paths,`已选择文件夹内 ${t.paths.length} 个 xlsx 文件`);return}o.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(s){o.error(s instanceof Error?s.message:"选择失败")}}async function D(){if(!v.value.length){o.warning("请先选择待拆分 Excel 文件或文件夹");return}if(!c.value.length){o.warning("请至少选择一列保留列");return}if(r.value==="rows_per_file"&&(!f.value||f.value<=0)){o.warning("请输入有效的每份条数");return}if(r.value==="parts"&&(!m.value||m.value<=0)){o.warning("请输入有效的拆分份数");return}try{y.value=!0;const l=await J({files:v.value.map(s=>({fileKey:s.fileKey,originalFilename:s.originalFilename})),selectedColumns:c.value,splitMode:r.value,rowsPerFile:r.value==="rows_per_file"&&f.value||void 0,parts:r.value==="parts"&&m.value||void 0});b.value=l,k.value=l.items||[],await E(),o.success("数据拆分完成")}catch(l){o.error(l instanceof Error?l.message:"数据拆分失败")}finally{y.value=!1}}async function E(){try{const l=await L();k.value=l.items||[],b.value={total:l.items?.length||0,successCount:l.items?.filter(s=>s.success).length||0,failedCount:l.items?.filter(s=>!s.success).length||0,items:l.items||[]}}catch{}}async function H(l){try{await W(l),await E(),o.success("已删除")}catch(s){o.error(s instanceof Error?s.message:"删除失败")}}async function j(l){const s=S();if(!l.downloadUrl){o.warning("当前结果没有下载地址");return}const t=l.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}.xlsx`;if(s?.save_file_from_url){const u=await s.save_file_from_url(l.downloadUrl,t);u.success?o.success(`已保存:${u.path||t}`):u.error&&u.error!=="用户取消"&&o.error(u.error);return}window.open(l.downloadUrl,"_blank")}return K(()=>{E().catch(()=>{})}),(l,s)=>(a(),n("div",ss,[N(z,{active:"split"}),e("div",es,[e("aside",ts,[s[14]||(s[14]=e("div",{class:"section-title"},"选择文件",-1)),e("div",ls,[s[7]||(s[7]=e("div",{class:"hint"},"选择需要拆分的 Excel 文件或文件夹,按规则拆成多个 Excel 文件。",-1)),e("div",{class:"btns"},[e("button",{type:"button",class:"opt-btn",onClick:M},"选择 Excel 文件"),e("button",{type:"button",class:"opt-btn",onClick:T},"选择文件夹")]),e("div",as,[p.value.length?(a(),n(C,{key:0},[(a(!0),n(C,null,$(F.value,t=>(a(),n("span",{key:t},i(t),1))),128)),p.value.length>F.value.length?(a(),n("span",ns," 还有 "+i(p.value.length-F.value.length)+" 个文件未展开显示 ",1)):w("",!0)],64)):(a(),n("span",os,"暂未选择待拆分文件"))])]),s[15]||(s[15]=e("div",{class:"section-title"},"保留列设置",-1)),e("div",is,[e("div",rs,[e("span",us,"已选择 "+i(c.value.length)+" / "+i(_.value.length)+" 列",1),e("div",ds,[e("button",{type:"button",class:"opt-btn small",onClick:s[0]||(s[0]=t=>c.value=[..._.value])},"全选"),e("button",{type:"button",class:"opt-btn small",onClick:s[1]||(s[1]=t=>c.value=[])},"清空")])]),_.value.length?(a(),n("div",cs,[(a(!0),n(C,null,$(_.value,t=>(a(),n("label",{key:t,class:x(["column-item",{active:c.value.includes(t)}])},[h(e("input",{"onUpdate:modelValue":s[2]||(s[2]=u=>c.value=u),type:"checkbox",value:t},null,8,ps),[[Q,c.value]]),e("span",null,i(t),1)],2))),128))])):(a(),n("div",vs,"请选择 Excel 文件后读取表头并填充可保留列"))]),s[16]||(s[16]=e("div",{class:"section-title"},"总条数",-1)),e("div",_s,[e("label",fs,[s[9]||(s[9]=e("input",{type:"checkbox",checked:"",disabled:""},null,-1)),e("div",null,[s[8]||(s[8]=e("span",{class:"label"},"当前数据总条数",-1)),e("div",ms,i(U.value)+" 条(不含表头)",1)])])]),s[17]||(s[17]=e("div",{class:"section-title"},"拆分模式",-1)),e("div",ys,[e("label",{class:x(["radio-item",{active:r.value==="rows_per_file"}])},[h(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>r.value=t),type:"radio",value:"rows_per_file",name:"split-mode"},null,512),[[I,r.value]]),s[10]||(s[10]=e("div",null,[e("span",{class:"label"},"按每份条数"),e("div",{class:"desc"},"例如每份 2000 条,最后一份放剩余数据")],-1))],2),e("label",{class:x(["radio-item",{active:r.value==="parts"}])},[h(e("input",{"onUpdate:modelValue":s[4]||(s[4]=t=>r.value=t),type:"radio",value:"parts",name:"split-mode"},null,512),[[I,r.value]]),s[11]||(s[11]=e("div",null,[e("span",{class:"label"},"按份数平均拆分"),e("div",{class:"desc"},"例如拆 5 份,按总条数尽量平均分配")],-1))],2)]),s[18]||(s[18]=e("div",{class:"section-title"},"拆分参数",-1)),e("div",bs,[r.value==="rows_per_file"?(a(),n("label",gs,[s[12]||(s[12]=e("span",{class:"label"},"每份条数",-1)),h(e("input",{"onUpdate:modelValue":s[5]||(s[5]=t=>f.value=t),class:"split-number-input",type:"number",min:"1",placeholder:"例如 2000"},null,512),[[R,f.value,void 0,{number:!0}]])])):(a(),n("label",ws,[s[13]||(s[13]=e("span",{class:"label"},"拆分份数",-1)),h(e("input",{"onUpdate:modelValue":s[6]||(s[6]=t=>m.value=t),class:"split-number-input",type:"number",min:"1",placeholder:"例如 5"},null,512),[[R,m.value,void 0,{number:!0}]])]))]),e("div",hs,[e("button",{type:"button",class:"btn-run",disabled:y.value,onClick:D},i(y.value?"拆分中...":"开始拆分"),9,ks),e("span",Cs,i(y.value?"正在拆分并上传结果,请稍候…":"选择文件、保留列和拆分规则后即可执行拆分,结果会显示在右侧供下载"),1)])]),e("section",xs,[s[23]||(s[23]=e("div",{class:"panel-header"},"拆分结果",-1)),e("div",Ss,[e("div",Fs,[e("div",Es,[s[19]||(s[19]=e("span",{class:"summary-label"},"已处理文件",-1)),e("strong",null,i(b.value.total),1)]),e("div",$s,[s[20]||(s[20]=e("span",{class:"summary-label"},"成功结果",-1)),e("strong",null,i(b.value.successCount),1)]),e("div",Us,[s[21]||(s[21]=e("span",{class:"summary-label"},"失败文件",-1)),e("strong",null,i(b.value.failedCount),1)])]),e("div",Bs,[s[22]||(s[22]=e("div",{class:"result-list-header"},[e("span",null,"拆分后的 Excel 列表")],-1)),k.value.length===0?(a(),n("div",Is," 暂无拆分结果,完成数据拆分后会在这里展示输出文件 ")):(a(),n("ul",Rs,[(a(!0),n(C,null,$(k.value,t=>(a(),n("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}-${t.rowCount||0}`,class:"task-item"},[e("div",Ps,[e("span",{class:"id",title:t.sourceFilename},i(t.sourceFilename||"-"),9,Vs),t.outputFilename?(a(),n("div",Ms,"输出文件:"+i(t.outputFilename),1)):w("",!0),t.rowCount!==void 0?(a(),n("div",Ts,"包含 "+i(t.rowCount)+" 条数据",1)):t.error?(a(),n("div",Ds,"错误信息:"+i(t.error),1)):w("",!0)]),e("div",Hs,[e("span",{class:x(["status",t.success?"success":"failed"])},i(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(a(),n("button",{key:0,type:"button",class:"download",onClick:u=>j(t)}," 下载文件 ",8,js)):w("",!0),t.resultId?(a(),n("button",{key:1,type:"button",class:"btn-delete",onClick:u=>H(t.resultId)}," 删除 ",8,As)):w("",!0)])]))),128))]))])])])])]))}}),Ns=X(Ks,[["__scopeId","data-v-a69b42b2"]]);Y(Ns).use(Z).mount("#app"); +import{d as G,o as J,a,c as n,b as L,B as O,e,F as S,r as $,t as i,f as v,n as x,w as k,u as V,D as M,g as d,h as Q,i as F,E as r,j as W,G as X,H as Y,p as Z,v as ss,I as es,_ as ts,q as ls,s as as}from"./pywebview-DVgP2-kW.js";const ns={class:"page-shell module-page"},os={class:"main-content"},is={class:"left-panel"},rs={class:"upload-zone"},us={class:"selected-files clean-placeholder split-selected-files"},ds={key:0,class:"more-line"},cs={key:1},ps={class:"option-group column-option-group"},vs={class:"column-toolbar"},fs={class:"column-count"},_s={class:"column-actions"},ms={key:0,class:"column-grid"},ys=["value"],gs={key:1,class:"empty-column-state"},hs={class:"option-group"},bs={class:"radio-item active"},ws={class:"desc"},ks={class:"option-group"},Cs={class:"option-group"},Ss={key:0,class:"split-input-card"},xs={key:1,class:"split-input-card"},Fs={class:"run-row"},Es=["disabled"],Ps={class:"loading-msg"},$s={class:"right-panel"},Bs={class:"task-list-wrap"},Is={class:"clean-result-summary"},Us={class:"summary-card"},Rs={class:"summary-card"},Vs={class:"summary-card"},Ms={class:"result-list-wrap"},Ts={key:0,class:"empty-tasks"},js={key:1,class:"task-list clean-result-list"},Ds={class:"left split-result-main"},Hs=["title"],Ns={key:0,class:"files"},As={key:1,class:"time"},Ks={key:2,class:"files"},zs={key:3,class:"files split-entry-list"},qs={key:4,class:"files"},Gs={class:"task-right split-result-actions"},Js=["onClick"],Ls=["onClick"],Os=G({__name:"BrandSplitTab",setup(Ws){const f=d([]),C=d(""),c=d([]),_=d([]),p=d([]),B=d(0),u=d("rows_per_file"),m=d(2e3),y=d(5),g=d(!1),h=d([]),b=d({total:0,successCount:0,failedCount:0,items:[]}),E=Q(()=>f.value.slice(0,8));function T(l){b.value={total:l.length,successCount:l.filter(s=>s.success).length,failedCount:l.filter(s=>!s.success).length,items:l}}async function I(l){const s=F();if(!s?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const o of l){const R=typeof o=="string"?o:o.absolutePath,q=typeof o=="string"?void 0:o.relativePath,w=await s.upload_file_to_java(R,q);if(!w?.success||!w.data)throw new Error(w?.error||w?.message||`上传失败:${R}`);t.push(w.data)}return t}async function U(l){const s=await Z(l);_.value=s.headers||[],p.value=[...s.headers||[]],B.value=s.totalRows||0}async function j(l,s){f.value=l,C.value="",c.value=await I(l),c.value.length>0&&await U(c.value[0].fileKey),r.success(s)}async function D(){const l=F();if(!l?.select_brand_xlsx_files){r.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const s=await l.select_brand_xlsx_files();if(!s?.length)return;await j(s,`已选择 ${s.length} 个待拆分文件`)}catch(s){r.error(s instanceof Error?s.message:"选择失败")}}async function H(){const l=F();if(!l?.select_brand_folder){r.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const s=await l.select_brand_folder();if(!s)return;C.value=s.split(/[/\\]/).filter(Boolean).pop()||"";const t=await W(s);if(t.success&&t.items?.length){f.value=t.items.map(o=>o.relativePath),c.value=await I(t.items),c.value.length>0&&await U(c.value[0].fileKey),r.success(`已选择文件夹内 ${t.items.length} 个 xlsx 文件`);return}r.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(s){r.error(s instanceof Error?s.message:"选择失败")}}async function N(){if(!c.value.length){r.warning("请先选择待拆分 Excel 文件或文件夹");return}if(!p.value.length){r.warning("请至少选择一列保留列");return}if(u.value==="rows_per_file"&&(!m.value||m.value<=0)){r.warning("请输入有效的每份条数");return}if(u.value==="parts"&&(!y.value||y.value<=0)){r.warning("请输入有效的拆分份数");return}try{g.value=!0;const l=await X({files:c.value.map(s=>({fileKey:s.fileKey,originalFilename:s.originalFilename,relativePath:s.relativePath})),selectedColumns:p.value,splitMode:u.value,rowsPerFile:u.value==="rows_per_file"&&m.value||void 0,parts:u.value==="parts"&&y.value||void 0,archiveName:c.value.some(s=>!!s.relativePath)&&C.value?C.value:void 0});b.value=l,h.value=l.items||[],await P(),r.success("数据拆分完成")}catch(l){r.error(l instanceof Error?l.message:"数据拆分失败")}finally{g.value=!1}}async function P(){try{const l=await Y();h.value=l.items||[],T(h.value)}catch{}}async function A(l){try{await es(l),await P(),r.success("已删除")}catch(s){r.error(s instanceof Error?s.message:"删除失败")}}function K(l){const s=l.slice(0,4).map(o=>o.rowCount!==void 0?`${o.filename}(${o.rowCount}条)`:o.filename);return l.length-s.length>0?`${s.join("、")} 等 ${l.length} 个文件`:s.join("、")}async function z(l){const s=F();if(!l.downloadUrl){r.warning("当前结果没有下载地址");return}const t=l.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}.zip`;if(s?.save_file_from_url){const o=await s.save_file_from_url(l.downloadUrl,t);o.success?r.success(`已保存:${o.path||t}`):o.error&&o.error!=="用户取消"&&r.error(o.error);return}window.open(l.downloadUrl,"_blank")}return J(()=>{P().catch(()=>{})}),(l,s)=>(a(),n("div",ns,[L(O,{active:"split"}),e("div",os,[e("aside",is,[s[14]||(s[14]=e("div",{class:"section-title"},"选择文件",-1)),e("div",rs,[s[7]||(s[7]=e("div",{class:"hint"},"选择需要拆分的 Excel 文件或文件夹,按规则拆成多个 Excel 文件。",-1)),e("div",{class:"btns"},[e("button",{type:"button",class:"opt-btn",onClick:D},"选择 Excel 文件"),e("button",{type:"button",class:"opt-btn",onClick:H},"选择文件夹")]),e("div",us,[f.value.length?(a(),n(S,{key:0},[(a(!0),n(S,null,$(E.value,t=>(a(),n("span",{key:t},i(t),1))),128)),f.value.length>E.value.length?(a(),n("span",ds," 还有 "+i(f.value.length-E.value.length)+" 个文件未展开显示 ",1)):v("",!0)],64)):(a(),n("span",cs,"暂未选择待拆分文件"))])]),s[15]||(s[15]=e("div",{class:"section-title"},"保留列设置",-1)),e("div",ps,[e("div",vs,[e("span",fs,"已选择 "+i(p.value.length)+" / "+i(_.value.length)+" 列",1),e("div",_s,[e("button",{type:"button",class:"opt-btn small",onClick:s[0]||(s[0]=t=>p.value=[..._.value])},"全选"),e("button",{type:"button",class:"opt-btn small",onClick:s[1]||(s[1]=t=>p.value=[])},"清空")])]),_.value.length?(a(),n("div",ms,[(a(!0),n(S,null,$(_.value,t=>(a(),n("label",{key:t,class:x(["column-item",{active:p.value.includes(t)}])},[k(e("input",{"onUpdate:modelValue":s[2]||(s[2]=o=>p.value=o),type:"checkbox",value:t},null,8,ys),[[ss,p.value]]),e("span",null,i(t),1)],2))),128))])):(a(),n("div",gs,"请选择 Excel 文件后读取表头并填充可保留列"))]),s[16]||(s[16]=e("div",{class:"section-title"},"总条数",-1)),e("div",hs,[e("label",bs,[s[9]||(s[9]=e("input",{type:"checkbox",checked:"",disabled:""},null,-1)),e("div",null,[s[8]||(s[8]=e("span",{class:"label"},"当前数据总条数",-1)),e("div",ws,i(B.value)+" 条(不含表头)",1)])])]),s[17]||(s[17]=e("div",{class:"section-title"},"拆分模式",-1)),e("div",ks,[e("label",{class:x(["radio-item",{active:u.value==="rows_per_file"}])},[k(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>u.value=t),type:"radio",value:"rows_per_file",name:"split-mode"},null,512),[[V,u.value]]),s[10]||(s[10]=e("div",null,[e("span",{class:"label"},"按每份条数"),e("div",{class:"desc"},"例如每份 2000 条,最后一份放剩余数据")],-1))],2),e("label",{class:x(["radio-item",{active:u.value==="parts"}])},[k(e("input",{"onUpdate:modelValue":s[4]||(s[4]=t=>u.value=t),type:"radio",value:"parts",name:"split-mode"},null,512),[[V,u.value]]),s[11]||(s[11]=e("div",null,[e("span",{class:"label"},"按份数平均拆分"),e("div",{class:"desc"},"例如拆 5 份,按总条数尽量平均分配")],-1))],2)]),s[18]||(s[18]=e("div",{class:"section-title"},"拆分参数",-1)),e("div",Cs,[u.value==="rows_per_file"?(a(),n("label",Ss,[s[12]||(s[12]=e("span",{class:"label"},"每份条数",-1)),k(e("input",{"onUpdate:modelValue":s[5]||(s[5]=t=>m.value=t),class:"split-number-input",type:"number",min:"1",placeholder:"例如 2000"},null,512),[[M,m.value,void 0,{number:!0}]])])):(a(),n("label",xs,[s[13]||(s[13]=e("span",{class:"label"},"拆分份数",-1)),k(e("input",{"onUpdate:modelValue":s[6]||(s[6]=t=>y.value=t),class:"split-number-input",type:"number",min:"1",placeholder:"例如 5"},null,512),[[M,y.value,void 0,{number:!0}]])]))]),e("div",Fs,[e("button",{type:"button",class:"btn-run",disabled:g.value,onClick:N},i(g.value?"拆分中...":"开始拆分"),9,Es),e("span",Ps,i(g.value?"正在拆分并上传结果,请稍候…":"选择文件、保留列和拆分规则后即可执行拆分,结果会显示在右侧供下载"),1)])]),e("section",$s,[s[23]||(s[23]=e("div",{class:"panel-header"},"拆分结果",-1)),e("div",Bs,[e("div",Is,[e("div",Us,[s[19]||(s[19]=e("span",{class:"summary-label"},"已处理文件",-1)),e("strong",null,i(b.value.total),1)]),e("div",Rs,[s[20]||(s[20]=e("span",{class:"summary-label"},"成功结果",-1)),e("strong",null,i(b.value.successCount),1)]),e("div",Vs,[s[21]||(s[21]=e("span",{class:"summary-label"},"失败文件",-1)),e("strong",null,i(b.value.failedCount),1)])]),e("div",Ms,[s[22]||(s[22]=e("div",{class:"result-list-header"},[e("span",null,"拆分结果压缩包列表")],-1)),h.value.length===0?(a(),n("div",Ts," 暂无拆分结果,完成数据拆分后会在这里展示压缩包文件 ")):(a(),n("ul",js,[(a(!0),n(S,null,$(h.value,t=>(a(),n("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}-${t.rowCount||0}`,class:"task-item split-result-item"},[e("div",Ds,[e("span",{class:"id",title:t.sourceFilename},i(t.sourceFilename||"-"),9,Hs),t.outputFilename?(a(),n("div",Ns,"压缩包文件:"+i(t.outputFilename),1)):v("",!0),t.rowCount!==void 0?(a(),n("div",As,"压缩包共包含 "+i(t.rowCount)+" 条数据",1)):v("",!0),t.entryCount&&t.entryCount>0?(a(),n("div",Ks,"压缩包内共 "+i(t.entryCount)+" 个拆分文件",1)):v("",!0),t.entries&&t.entries.length?(a(),n("div",zs," 压缩包内容:"+i(K(t.entries)),1)):t.error?(a(),n("div",qs,"错误信息:"+i(t.error),1)):v("",!0)]),e("div",Gs,[e("span",{class:x(["status",t.success?"success":"failed"])},i(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(a(),n("button",{key:0,type:"button",class:"download",onClick:o=>z(t)}," 下载压缩包 ",8,Js)):v("",!0),t.resultId?(a(),n("button",{key:1,type:"button",class:"btn-delete",onClick:o=>A(t.resultId)}," 删除 ",8,Ls)):v("",!0)])]))),128))]))])])])])]))}}),Qs=ts(Os,[["__scopeId","data-v-a95aa22e"]]);ls(Qs).use(as).mount("#app"); diff --git a/app/blueprints/__pycache__/brand.cpython-312.pyc b/app/blueprints/__pycache__/brand.cpython-312.pyc index 122490f..05adae3 100644 Binary files a/app/blueprints/__pycache__/brand.cpython-312.pyc and b/app/blueprints/__pycache__/brand.cpython-312.pyc differ diff --git a/app/blueprints/brand.py b/app/blueprints/brand.py index 01924dc..1bf2a65 100644 --- a/app/blueprints/brand.py +++ b/app/blueprints/brand.py @@ -57,14 +57,23 @@ def _push_task_event(task_id, event): def _expand_folder_xlsx(folder_path): - """返回文件夹下所有 .xlsx 文件的绝对路径列表""" + """返回文件夹下所有 .xlsx 文件的绝对路径和相对路径列表(递归)""" if not folder_path or not os.path.isdir(folder_path): return [] - paths = [] - for name in os.listdir(folder_path): - if name.endswith('.xlsx') or name.endswith('.XLSX'): - paths.append(os.path.normpath(os.path.join(folder_path, name))) - return paths + items = [] + root = os.path.normpath(folder_path) + for current_root, _, filenames in os.walk(root): + for name in filenames: + if not (name.endswith('.xlsx') or name.endswith('.XLSX')): + continue + absolute_path = os.path.normpath(os.path.join(current_root, name)) + relative_path = os.path.relpath(absolute_path, root).replace('\\', '/') + items.append({ + 'absolutePath': absolute_path, + 'relativePath': relative_path, + }) + items.sort(key=lambda item: item['relativePath']) + return items def _upload_local_xlsx_to_oss(local_path, user_id): @@ -478,8 +487,8 @@ def api_brand_expand_folder(): folder = (data.get('folder') or '').strip() if not folder: return jsonify({'success': False, 'error': '请提供 folder 路径'}), 400 - paths = _expand_folder_xlsx(folder) - return jsonify({'success': True, 'paths': paths}) + items = _expand_folder_xlsx(folder) + return jsonify({'success': True, 'items': items}) except Exception as e: return jsonify({'success': False, 'error': str(e)}), 500 diff --git a/app/main.py b/app/main.py index 517c4ac..96bac03 100644 --- a/app/main.py +++ b/app/main.py @@ -145,7 +145,7 @@ class WindowAPI: ) return result[0] if result else '' - def upload_file_to_java(self, file_path): + def upload_file_to_java(self, file_path, relative_path=None): """按本地路径读取文件并上传到 Java 后端临时目录。""" if not file_path or not str(file_path).strip(): return {'success': False, 'error': '文件路径为空'} @@ -157,6 +157,7 @@ class WindowAPI: response = requests.post( f"{JAVA_API_BASE}/api/files/upload", files={'file': (os.path.basename(normalized_path), file_obj)}, + data={'relativePath': str(relative_path).strip()} if relative_path else None, timeout=120, ) response.raise_for_status() diff --git a/app/new_web_source/convert.html b/app/new_web_source/convert.html index bd579c2..560421c 100644 --- a/app/new_web_source/convert.html +++ b/app/new_web_source/convert.html @@ -5,9 +5,9 @@ 格式转换 - 数富AI - - - + + +
diff --git a/app/new_web_source/dedupe.html b/app/new_web_source/dedupe.html index b2a96de..f9691f2 100644 --- a/app/new_web_source/dedupe.html +++ b/app/new_web_source/dedupe.html @@ -5,9 +5,9 @@ 数据去重 - 数富AI - - - + + +
diff --git a/app/new_web_source/split.html b/app/new_web_source/split.html index b91b7e8..6ad0851 100644 --- a/app/new_web_source/split.html +++ b/app/new_web_source/split.html @@ -5,9 +5,9 @@ 数据拆分 - 数富AI - - - + + +
diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/ConvertRunRequest.java b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/ConvertRunRequest.java index 5aecfa2..bad0cbc 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/ConvertRunRequest.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/ConvertRunRequest.java @@ -20,4 +20,7 @@ public class ConvertRunRequest { @NotBlank(message = "请选择模板") @Schema(description = "模板编码,例如 uk_offer") private String templateId; + + @Schema(description = "文件夹上传场景下的总压缩包名称(不含扩展名)") + private String archiveName; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/UploadedSourceFileDto.java b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/UploadedSourceFileDto.java index f4205c6..de0a6a1 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/UploadedSourceFileDto.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/model/dto/UploadedSourceFileDto.java @@ -14,4 +14,7 @@ public class UploadedSourceFileDto { @Schema(description = "原始文件名") private String originalFilename; + + @Schema(description = "相对上传目录路径") + private String relativePath; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/service/ConvertRunService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/service/ConvertRunService.java index 64e3d97..50445f8 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/convert/service/ConvertRunService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/convert/service/ConvertRunService.java @@ -3,6 +3,7 @@ package com.nanri.aiimage.modules.convert.service; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.nanri.aiimage.common.exception.BusinessException; @@ -22,24 +23,38 @@ import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.springframework.stereotype.Service; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; @Service @RequiredArgsConstructor public class ConvertRunService { + private static final String MODULE_TYPE = "CONVERT"; + private static final String TEMPLATE_CODE_FIVE_COUNTRIES = "uk_offer"; + private static final List FIVE_COUNTRY_OUTPUT_FILES = List.of( + "\u82f1\u56fd.txt", + "\u6cd5\u56fd.txt", + "\u5fb7\u56fd.txt", + "\u897f\u73ed\u7259.txt", + "\u610f\u5927\u5229.txt" + ); + private final FileTaskMapper fileTaskMapper; private final FileResultMapper fileResultMapper; private final StorageProperties storageProperties; @@ -51,8 +66,8 @@ public class ConvertRunService { ConvertTemplateEntity template = convertTemplateService.getByCode(request.getTemplateId()); FileTaskEntity task = new FileTaskEntity(); - task.setTaskNo("CONVERT-" + IdUtil.getSnowflakeNextIdStr()); - task.setModuleType("CONVERT"); + task.setTaskNo(MODULE_TYPE + "-" + IdUtil.getSnowflakeNextIdStr()); + task.setModuleType(MODULE_TYPE); task.setTaskMode("IMMEDIATE"); task.setStatus("SUCCESS"); task.setSourceFileCount(request.getFiles().size()); @@ -63,63 +78,107 @@ public class ConvertRunService { task.setFinishedAt(LocalDateTime.now()); fileTaskMapper.insert(task); + boolean folderMode = request.getArchiveName() != null && !request.getArchiveName().isBlank(); List items = new ArrayList<>(); int successCount = 0; int failedCount = 0; + List archiveEntries = new ArrayList<>(); for (UploadedSourceFileDto sourceFile : request.getFiles()) { - ConvertResultItemVo item = new ConvertResultItemVo(); - item.setSourceFilename(sourceFile.getOriginalFilename()); try { File inputFile = findLocalSourceFile(sourceFile.getFileKey()); if (inputFile == null || !inputFile.exists()) { - throw new BusinessException("上传文件不存在,请重新上传"); + throw new BusinessException("Uploaded source file does not exist, please upload again."); } - String inputName = sourceFile.getOriginalFilename() == null ? inputFile.getName() : sourceFile.getOriginalFilename(); - String outputFilename = template.getOutputFilename() == null || template.getOutputFilename().isBlank() - ? "结果.txt" - : template.getOutputFilename(); - File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "convert-result")); - File outputFile = buildNamedOutputFile(outputDir, outputFilename); + String inputName = sourceFile.getOriginalFilename() == null + ? inputFile.getName() + : sourceFile.getOriginalFilename(); + List generatedFiles = generateOutputFiles(inputFile, template); + if (folderMode) { + for (GeneratedConvertFile generatedFile : generatedFiles) { + archiveEntries.add(new ConvertArchiveEntry(sourceFile.getRelativePath(), inputName, generatedFile)); + } + successCount++; + continue; + } - writeTxtByLegacyRules(inputFile, outputFile, template); + boolean useZipPackage = request.getFiles().size() == 1 && generatedFiles.size() > 1; + File packagedResultFile = useZipPackage + ? packageGeneratedFilesAsZip(inputName, generatedFiles) + : generatedFiles.getFirst().file(); + String packagedFilename = useZipPackage + ? FileUtil.mainName(inputName) + ".zip" + : generatedFiles.getFirst().filename(); + String contentType = useZipPackage ? "application/zip" : "text/plain"; - String ossObjectKey = ossStorageService.uploadResultFile(outputFile, "CONVERT"); + String ossObjectKey = ossStorageService.uploadResultFile(packagedResultFile, MODULE_TYPE); String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); + ConvertResultItemVo item = new ConvertResultItemVo(); + item.setSourceFilename(inputName); item.setSuccess(true); - item.setOutputFilename(outputFilename); + item.setOutputFilename(packagedFilename); item.setDownloadUrl(downloadUrl); - successCount++; FileResultEntity resultEntity = new FileResultEntity(); resultEntity.setTaskId(task.getId()); - resultEntity.setModuleType("CONVERT"); + resultEntity.setModuleType(MODULE_TYPE); resultEntity.setSourceFilename(inputName); - resultEntity.setResultFilename(outputFilename); + resultEntity.setResultFilename(packagedFilename); resultEntity.setResultFileUrl(downloadUrl); - resultEntity.setResultFileSize(outputFile.length()); - resultEntity.setResultContentType("text/plain"); + resultEntity.setResultFileSize(packagedResultFile.length()); + resultEntity.setResultContentType(contentType); resultEntity.setSuccess(1); resultEntity.setCreatedAt(LocalDateTime.now()); fileResultMapper.insert(resultEntity); item.setResultId(resultEntity.getId()); + + items.add(item); + successCount++; } catch (Exception ex) { + ConvertResultItemVo item = new ConvertResultItemVo(); + item.setSourceFilename(sourceFile.getOriginalFilename()); item.setSuccess(false); item.setError(ex.getMessage()); + items.add(item); failedCount++; FileResultEntity resultEntity = new FileResultEntity(); resultEntity.setTaskId(task.getId()); - resultEntity.setModuleType("CONVERT"); + resultEntity.setModuleType(MODULE_TYPE); resultEntity.setSourceFilename(sourceFile.getOriginalFilename()); resultEntity.setSuccess(0); resultEntity.setErrorMessage(ex.getMessage()); resultEntity.setCreatedAt(LocalDateTime.now()); fileResultMapper.insert(resultEntity); } - items.add(item); + } + + if (folderMode && !archiveEntries.isEmpty()) { + File zipFile = packageFolderConvertResultsAsZip(request.getArchiveName(), archiveEntries); + String ossObjectKey = ossStorageService.uploadResultFile(zipFile, MODULE_TYPE); + String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); + + ConvertResultItemVo item = new ConvertResultItemVo(); + item.setSourceFilename(request.getArchiveName()); + item.setOutputFilename(zipFile.getName()); + item.setSuccess(true); + item.setDownloadUrl(downloadUrl); + + FileResultEntity resultEntity = new FileResultEntity(); + resultEntity.setTaskId(task.getId()); + resultEntity.setModuleType(MODULE_TYPE); + resultEntity.setSourceFilename(request.getArchiveName()); + resultEntity.setResultFilename(zipFile.getName()); + resultEntity.setResultFileUrl(downloadUrl); + resultEntity.setResultFileSize(zipFile.length()); + resultEntity.setResultContentType("application/zip"); + resultEntity.setSuccess(1); + resultEntity.setCreatedAt(LocalDateTime.now()); + fileResultMapper.insert(resultEntity); + item.setResultId(resultEntity.getId()); + items.add(0, item); } task.setSuccessFileCount(successCount); @@ -138,18 +197,18 @@ public class ConvertRunService { public List listHistory() { return fileResultMapper.selectList(new LambdaQueryWrapper() - .eq(FileResultEntity::getModuleType, "CONVERT") - .eq(FileResultEntity::getSuccess, 1) + .eq(FileResultEntity::getModuleType, MODULE_TYPE) .orderByDesc(FileResultEntity::getCreatedAt) - .last("limit 50")) + .last("limit 200")) .stream() .map(entity -> { ConvertResultItemVo vo = new ConvertResultItemVo(); vo.setResultId(entity.getId()); - vo.setSourceFilename(entity.getCreatedAt() == null ? "" : entity.getCreatedAt().toLocalDate().toString().replace("-", "")); + vo.setSourceFilename(entity.getSourceFilename()); vo.setOutputFilename(entity.getResultFilename()); - vo.setDownloadUrl(entity.getResultFileUrl()); - vo.setSuccess(true); + vo.setDownloadUrl(entity.getSuccess() != null && entity.getSuccess() == 1 ? entity.getResultFileUrl() : null); + vo.setSuccess(entity.getSuccess() != null && entity.getSuccess() == 1); + vo.setError(entity.getErrorMessage()); return vo; }) .toList(); @@ -157,41 +216,71 @@ public class ConvertRunService { public void deleteHistory(Long resultId) { FileResultEntity entity = fileResultMapper.selectById(resultId); - if (entity == null || !"CONVERT".equals(entity.getModuleType())) { - throw new BusinessException("记录不存在"); + if (entity == null || !MODULE_TYPE.equals(entity.getModuleType())) { + throw new BusinessException("Convert result record does not exist."); } fileResultMapper.deleteById(resultId); } public File getResultFile(Long resultId) { FileResultEntity entity = fileResultMapper.selectById(resultId); - if (entity == null || entity.getResultFileUrl() == null || !"CONVERT".equals(entity.getModuleType())) { - throw new BusinessException("结果文件不存在"); + if (entity == null || entity.getResultFileUrl() == null || !MODULE_TYPE.equals(entity.getModuleType())) { + throw new BusinessException("Convert result file does not exist."); } + File file = new File(entity.getResultFileUrl()); if (!file.exists()) { - throw new BusinessException("结果文件不存在"); + throw new BusinessException("Convert result file does not exist."); } return file; } - private void writeTxtByLegacyRules(File inputFile, File outputFile, ConvertTemplateEntity templateEntity) throws IOException { + private List generateOutputFiles(File inputFile, ConvertTemplateEntity templateEntity) throws IOException { + List outputFilenames = resolveOutputFilenames(templateEntity); + List rows = buildTxtRows(inputFile, templateEntity); + File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "convert-result")); + + List generatedFiles = new ArrayList<>(); + for (String outputFilename : outputFilenames) { + File outputFile = buildNamedOutputFile(outputDir, outputFilename); + FileUtil.writeLines(rows, outputFile, StandardCharsets.UTF_8); + generatedFiles.add(new GeneratedConvertFile(outputFilename, outputFile)); + } + return generatedFiles; + } + + private List resolveOutputFilenames(ConvertTemplateEntity templateEntity) { + if (TEMPLATE_CODE_FIVE_COUNTRIES.equals(templateEntity.getTemplateCode())) { + return FIVE_COUNTRY_OUTPUT_FILES; + } + + String outputFilename = templateEntity.getOutputFilename(); + if (outputFilename == null || outputFilename.isBlank()) { + return List.of("result.txt"); + } + return List.of(outputFilename); + } + + private List buildTxtRows(File inputFile, ConvertTemplateEntity templateEntity) throws IOException { List requiredColumns = readStringList(templateEntity.getRequiredSourceColumnsJson()); List headerColumns = readStringList(templateEntity.getHeaderColumnsJson()); Map fieldMapping = readStringMap(templateEntity.getFieldMappingJson()); Map defaults = readStringMap(templateEntity.getDefaultsJson()); List preambleLines = readStringList(templateEntity.getPreambleLinesJson()); - int blankHeaderRowsAfterSchema = templateEntity.getBlankHeaderRowsAfterSchema() == null ? 0 : templateEntity.getBlankHeaderRowsAfterSchema(); + int blankHeaderRowsAfterSchema = templateEntity.getBlankHeaderRowsAfterSchema() == null + ? 0 + : templateEntity.getBlankHeaderRowsAfterSchema(); DataFormatter formatter = new DataFormatter(); - try (FileInputStream fis = new FileInputStream(inputFile); Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(fis)) { + try (FileInputStream fis = new FileInputStream(inputFile); + Workbook workbook = WorkbookFactory.create(fis)) { Sheet sheet = workbook.getSheetAt(0); Row headerRow = sheet.getRow(0); if (headerRow == null) { - throw new BusinessException("Excel 表头为空"); + throw new BusinessException("Excel header row is empty."); } - Map headerMap = new HashMap<>(); + Map headerMap = new LinkedHashMap<>(); for (int i = 0; i < headerRow.getLastCellNum(); i++) { String value = normalizeCellText(formatter.formatCellValue(headerRow.getCell(i))); if (!value.isBlank() && !headerMap.containsKey(value)) { @@ -199,9 +288,11 @@ public class ConvertRunService { } } - List missing = requiredColumns.stream().filter(column -> !headerMap.containsKey(column)).toList(); + List missing = requiredColumns.stream() + .filter(column -> !headerMap.containsKey(column)) + .toList(); if (!missing.isEmpty()) { - throw new BusinessException("缺少列:" + String.join("、", missing)); + throw new BusinessException("Missing required columns: " + String.join(", ", missing)); } List rows = new ArrayList<>(); @@ -219,6 +310,7 @@ public class ConvertRunService { if (row == null) { continue; } + String asin = asinIndex >= 0 ? normalizeCellText(formatter.formatCellValue(row.getCell(asinIndex))) : ""; if (asin.isBlank()) { continue; @@ -233,7 +325,9 @@ public class ConvertRunService { if (fieldMapping.containsKey(column)) { String sourceColumn = fieldMapping.get(column); Integer sourceIndex = headerMap.get(sourceColumn); - String value = sourceIndex == null ? "" : normalizeCellText(formatter.formatCellValue(row.getCell(sourceIndex))); + String value = sourceIndex == null + ? "" + : normalizeCellText(formatter.formatCellValue(row.getCell(sourceIndex))); lineValues.add(value); continue; } @@ -243,10 +337,11 @@ public class ConvertRunService { } lineValues.add(""); } + rows.add(String.join("\t", lineValues)); rowIndex++; } - FileUtil.writeLines(rows, outputFile, StandardCharsets.UTF_8); + return rows; } } @@ -255,20 +350,70 @@ public class ConvertRunService { if (json == null || json.isBlank()) { return new ArrayList<>(); } - return objectMapper.readValue(json, new TypeReference>() {}); + return objectMapper.readValue(json, new TypeReference>() { + }); } catch (Exception ex) { - throw new BusinessException("模板配置解析失败"); + throw new BusinessException("Template config parsing failed."); } } + private File packageGeneratedFilesAsZip(String inputName, List generatedFiles) { + File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "convert-result")); + File zipFile = buildNamedOutputFile(outputDir, FileUtil.mainName(inputName) + ".zip"); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + for (GeneratedConvertFile generatedFile : generatedFiles) { + ZipEntry entry = new ZipEntry(generatedFile.filename()); + zos.putNextEntry(entry); + Files.copy(generatedFile.file().toPath(), zos); + zos.closeEntry(); + } + } catch (Exception ex) { + throw new BusinessException("Convert result packaging failed: " + ex.getMessage()); + } + return zipFile; + } + + private File packageFolderConvertResultsAsZip(String archiveName, List archiveEntries) { + File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "convert-result")); + File zipFile = buildNamedOutputFile(outputDir, archiveName + ".zip"); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + for (ConvertArchiveEntry entry : archiveEntries) { + String zipEntryName = buildFolderZipEntry(entry.relativePath(), entry.inputName(), entry.generatedFile().filename(), true); + zos.putNextEntry(new ZipEntry(zipEntryName)); + Files.copy(entry.generatedFile().file().toPath(), zos); + zos.closeEntry(); + } + } catch (Exception ex) { + throw new BusinessException("Convert folder result packaging failed: " + ex.getMessage()); + } + return zipFile; + } + + private String buildFolderZipEntry(String relativePath, String inputName, String outputFilename, boolean includeSourceStemFolder) { + String normalizedRelativePath = relativePath == null ? "" : relativePath.replace('\\', '/'); + String relativeDir = normalizedRelativePath.contains("/") + ? normalizedRelativePath.substring(0, normalizedRelativePath.lastIndexOf('/')) + : ""; + List parts = new ArrayList<>(); + if (!relativeDir.isBlank()) { + parts.add(relativeDir); + } + if (includeSourceStemFolder) { + parts.add(FileUtil.mainName(inputName)); + } + parts.add(outputFilename); + return String.join("/", parts); + } + private Map readStringMap(String json) { try { if (json == null || json.isBlank()) { return new HashMap<>(); } - return objectMapper.readValue(json, new TypeReference>() {}); + return objectMapper.readValue(json, new TypeReference>() { + }); } catch (Exception ex) { - throw new BusinessException("模板配置解析失败"); + throw new BusinessException("Template config parsing failed."); } } @@ -277,8 +422,11 @@ public class ConvertRunService { if (!baseDir.exists()) { return null; } - List matchedFiles = FileUtil.loopFiles(baseDir, pathname -> pathname.isFile() && pathname.getName().startsWith(fileKey)); - return matchedFiles.isEmpty() ? null : matchedFiles.getFirst(); + List matchedFiles = FileUtil.loopFiles( + baseDir, + pathname -> pathname.isFile() && pathname.getName().startsWith(fileKey) + ); + return matchedFiles.isEmpty() ? null : matchedFiles.get(0); } private File buildNamedOutputFile(File outputDir, String filename) { @@ -286,6 +434,7 @@ public class ConvertRunService { if (!candidate.exists()) { return candidate; } + String mainName = FileUtil.mainName(filename); String extName = FileUtil.extName(filename); int index = 2; @@ -314,4 +463,10 @@ public class ConvertRunService { .trim() .replaceAll("\\s+", " "); } + + private record GeneratedConvertFile(String filename, File file) { + } + + private record ConvertArchiveEntry(String relativePath, String inputName, GeneratedConvertFile generatedFile) { + } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeRunController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeRunController.java index 4e9c247..850266a 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeRunController.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeRunController.java @@ -45,6 +45,7 @@ public class DedupeRunController { - 仅保留 selectedColumns 中指定的列; - keepIntegerIds=true 时保留纯数字 ID; - keepUnderscoreIds=true 时保留类似 1_1 的 ID; + - keepIntegerMainIdsWhenNoSubIds=true 且文件中不存在 1_1 这类子 ID 时,会自动保留纯数字主 ID; - 输出文件命名遵循 原文件名_cleaned.xlsx,若重名自动追加序号。 """) @ApiResponses({ diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeTotalDataController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeTotalDataController.java new file mode 100644 index 0000000..21df710 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/controller/DedupeTotalDataController.java @@ -0,0 +1,93 @@ +package com.nanri.aiimage.modules.dedupe.controller; + +import com.nanri.aiimage.common.api.ApiResponse; +import com.nanri.aiimage.modules.dedupe.model.dto.DedupeTotalDataCreateRequest; +import com.nanri.aiimage.modules.dedupe.model.dto.DedupeTotalDataUpdateRequest; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataImportVo; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataItemVo; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataPageVo; +import com.nanri.aiimage.modules.dedupe.service.DedupeTotalDataService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/admin/dedupe-total-data") +@Tag(name = "数据去重总数据", description = "维护数据去重模块的总数据列表,支持增删改查。") +public class DedupeTotalDataController { + + private final DedupeTotalDataService dedupeTotalDataService; + + @GetMapping + @Operation(summary = "分页查询总数据", description = "分页查询数据去重总数据,支持按值模糊搜索。") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataPageVo.class))) + }) + public ApiResponse page( + @Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page, + @Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize, + @Parameter(description = "模糊搜索关键字") @RequestParam(required = false) String keyword) { + return ApiResponse.success(dedupeTotalDataService.page(page, pageSize, keyword)); + } + + @PostMapping + @Operation(summary = "新增总数据", description = "新增一条数据去重总数据。") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "创建成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataItemVo.class))), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "参数不合法或数据重复") + }) + public ApiResponse create(@Valid @RequestBody DedupeTotalDataCreateRequest request) { + return ApiResponse.success("创建成功", dedupeTotalDataService.create(request)); + } + + @PostMapping("/import") + @Operation(summary = "导入总数据", description = "上传 xlsx 文件,读取 ASIN 列并批量导入数据去重总数据。") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "导入成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataImportVo.class))), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "文件不合法或缺少 ASIN 列") + }) + public ApiResponse importExcel( + @Parameter(description = "xlsx 文件", required = true) @RequestParam("file") MultipartFile file) { + return ApiResponse.success("导入成功", dedupeTotalDataService.importFromExcel(file)); + } + + @PutMapping("/{id}") + @Operation(summary = "更新总数据", description = "按 ID 更新一条数据去重总数据。") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "更新成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataItemVo.class))), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "参数不合法或数据重复"), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "404", description = "数据不存在") + }) + public ApiResponse update( + @Parameter(description = "主键ID", required = true) @PathVariable Long id, + @Valid @RequestBody DedupeTotalDataUpdateRequest request) { + return ApiResponse.success("更新成功", dedupeTotalDataService.update(id, request)); + } + + @DeleteMapping("/{id}") + @Operation(summary = "删除总数据", description = "按 ID 删除一条数据去重总数据。") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "删除成功"), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "404", description = "数据不存在") + }) + public ApiResponse delete(@Parameter(description = "主键ID", required = true) @PathVariable Long id) { + dedupeTotalDataService.delete(id); + return ApiResponse.success("删除成功", null); + } +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/mapper/DedupeTotalDataMapper.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/mapper/DedupeTotalDataMapper.java new file mode 100644 index 0000000..bc6b89d --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/mapper/DedupeTotalDataMapper.java @@ -0,0 +1,9 @@ +package com.nanri.aiimage.modules.dedupe.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nanri.aiimage.modules.dedupe.model.entity.DedupeTotalDataEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DedupeTotalDataMapper extends BaseMapper { +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeRunRequest.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeRunRequest.java index 63baff1..c141275 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeRunRequest.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeRunRequest.java @@ -21,8 +21,14 @@ public class DedupeRunRequest { private List selectedColumns; @Schema(description = "是否保留纯数字 ID") - private boolean keepIntegerIds = true; + private boolean keepIntegerIds = false; @Schema(description = "是否保留带下划线 ID") private boolean keepUnderscoreIds = true; + + @Schema(description = "当文件中不存在下划线子 ID 时,是否自动保留纯数字主 ID") + private boolean keepIntegerMainIdsWhenNoSubIds = true; + + @Schema(description = "文件夹上传场景下的总压缩包名称(不含扩展名)") + private String archiveName; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeSourceFileDto.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeSourceFileDto.java index 48d1720..73df87e 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeSourceFileDto.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeSourceFileDto.java @@ -14,4 +14,7 @@ public class DedupeSourceFileDto { @Schema(description = "原始文件名") private String originalFilename; + + @Schema(description = "相对上传目录路径") + private String relativePath; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataCreateRequest.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataCreateRequest.java new file mode 100644 index 0000000..b4eda85 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataCreateRequest.java @@ -0,0 +1,16 @@ +package com.nanri.aiimage.modules.dedupe.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +@Data +@Schema(description = "数据去重总数据新增请求") +public class DedupeTotalDataCreateRequest { + + @NotBlank(message = "数据不能为空") + @Size(max = 128, message = "数据长度不能超过128个字符") + @Schema(description = "总数据值", requiredMode = Schema.RequiredMode.REQUIRED) + private String dataValue; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataUpdateRequest.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataUpdateRequest.java new file mode 100644 index 0000000..380ba75 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/dto/DedupeTotalDataUpdateRequest.java @@ -0,0 +1,16 @@ +package com.nanri.aiimage.modules.dedupe.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +@Data +@Schema(description = "数据去重总数据更新请求") +public class DedupeTotalDataUpdateRequest { + + @NotBlank(message = "数据不能为空") + @Size(max = 128, message = "数据长度不能超过128个字符") + @Schema(description = "总数据值", requiredMode = Schema.RequiredMode.REQUIRED) + private String dataValue; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/entity/DedupeTotalDataEntity.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/entity/DedupeTotalDataEntity.java new file mode 100644 index 0000000..9928220 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/entity/DedupeTotalDataEntity.java @@ -0,0 +1,19 @@ +package com.nanri.aiimage.modules.dedupe.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("biz_dedupe_total_data") +public class DedupeTotalDataEntity { + + @TableId(type = IdType.AUTO) + private Long id; + private String dataValue; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataImportVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataImportVo.java new file mode 100644 index 0000000..022b78d --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataImportVo.java @@ -0,0 +1,21 @@ +package com.nanri.aiimage.modules.dedupe.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "数据去重总数据导入结果") +public class DedupeTotalDataImportVo { + + @Schema(description = "读取总行数") + private Integer totalRows; + + @Schema(description = "读取到的 ASIN 数量") + private Integer asinCount; + + @Schema(description = "实际新增数量") + private Integer insertedCount; + + @Schema(description = "跳过数量") + private Integer skippedCount; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataItemVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataItemVo.java new file mode 100644 index 0000000..1b3fd6a --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataItemVo.java @@ -0,0 +1,20 @@ +package com.nanri.aiimage.modules.dedupe.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@Schema(description = "数据去重总数据项") +public class DedupeTotalDataItemVo { + + @Schema(description = "主键ID") + private Long id; + + @Schema(description = "总数据值") + private String dataValue; + + @Schema(description = "创建时间") + private LocalDateTime createdAt; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataPageVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataPageVo.java new file mode 100644 index 0000000..6bc2ca7 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/model/vo/DedupeTotalDataPageVo.java @@ -0,0 +1,23 @@ +package com.nanri.aiimage.modules.dedupe.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "数据去重总数据分页结果") +public class DedupeTotalDataPageVo { + + @Schema(description = "列表") + private List items; + + @Schema(description = "总数") + private Long total; + + @Schema(description = "页码") + private Long page; + + @Schema(description = "每页数量") + private Long pageSize; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeRunService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeRunService.java index f2d8755..8319c2c 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeRunService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeRunService.java @@ -28,11 +28,14 @@ import org.springframework.stereotype.Service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.nio.file.Files; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -46,7 +49,7 @@ public class DedupeRunService { private final OssStorageService ossStorageService; public DedupeRunVo run(DedupeRunRequest request) { - if (!request.isKeepIntegerIds() && !request.isKeepUnderscoreIds()) { + if (!request.isKeepIntegerIds() && !request.isKeepUnderscoreIds() && !request.isKeepIntegerMainIdsWhenNoSubIds()) { throw new BusinessException("请至少选择一种 ID 保留规则"); } @@ -63,9 +66,11 @@ public class DedupeRunService { task.setFinishedAt(LocalDateTime.now()); fileTaskMapper.insert(task); + boolean folderMode = request.getArchiveName() != null && !request.getArchiveName().isBlank(); List items = new ArrayList<>(); int successCount = 0; int failedCount = 0; + List archiveEntries = new ArrayList<>(); for (DedupeSourceFileDto sourceFile : request.getFiles()) { DedupeResultItemVo item = new DedupeResultItemVo(); @@ -81,13 +86,28 @@ public class DedupeRunService { File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "dedupe-result")); File outputFile = buildNamedOutputFile(outputDir, outputFilename); - cleanExcelByLegacyRules(inputFile, outputFile, request.getSelectedColumns(), request.isKeepIntegerIds(), request.isKeepUnderscoreIds()); + cleanExcelByLegacyRules( + inputFile, + outputFile, + request.getSelectedColumns(), + request.isKeepIntegerIds(), + request.isKeepUnderscoreIds(), + request.isKeepIntegerMainIdsWhenNoSubIds() + ); + + if (folderMode) { + archiveEntries.add(new DedupeArchiveEntry(sourceFile.getRelativePath(), inputName, outputFile)); + successCount++; + continue; + } String ossObjectKey = ossStorageService.uploadResultFile(outputFile, "DEDUPE"); String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); + String downloadFilename = request.getFiles().size() == 1 ? inputName : outputFile.getName(); + item.setSuccess(true); - item.setOutputFilename(outputFile.getName()); + item.setOutputFilename(downloadFilename); item.setDownloadUrl(downloadUrl); successCount++; @@ -95,7 +115,7 @@ public class DedupeRunService { resultEntity.setTaskId(task.getId()); resultEntity.setModuleType("DEDUPE"); resultEntity.setSourceFilename(inputName); - resultEntity.setResultFilename(outputFile.getName()); + resultEntity.setResultFilename(downloadFilename); resultEntity.setResultFileUrl(downloadUrl); resultEntity.setResultFileSize(outputFile.length()); resultEntity.setResultContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); @@ -119,6 +139,32 @@ public class DedupeRunService { items.add(item); } + if (folderMode && !archiveEntries.isEmpty()) { + File zipFile = packageFolderDedupeResultsAsZip(request.getArchiveName(), archiveEntries); + String ossObjectKey = ossStorageService.uploadResultFile(zipFile, "DEDUPE"); + String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); + + DedupeResultItemVo item = new DedupeResultItemVo(); + item.setSourceFilename(request.getArchiveName()); + item.setOutputFilename(zipFile.getName()); + item.setSuccess(true); + item.setDownloadUrl(downloadUrl); + + FileResultEntity resultEntity = new FileResultEntity(); + resultEntity.setTaskId(task.getId()); + resultEntity.setModuleType("DEDUPE"); + resultEntity.setSourceFilename(request.getArchiveName()); + resultEntity.setResultFilename(zipFile.getName()); + resultEntity.setResultFileUrl(downloadUrl); + resultEntity.setResultFileSize(zipFile.length()); + resultEntity.setResultContentType("application/zip"); + resultEntity.setSuccess(1); + resultEntity.setCreatedAt(LocalDateTime.now()); + fileResultMapper.insert(resultEntity); + item.setResultId(resultEntity.getId()); + items.add(0, item); + } + task.setSuccessFileCount(successCount); task.setFailedFileCount(failedCount); task.setResultJson(JSONUtil.toJsonStr(items)); @@ -136,17 +182,17 @@ public class DedupeRunService { public List listHistory() { return fileResultMapper.selectList(new LambdaQueryWrapper() .eq(FileResultEntity::getModuleType, "DEDUPE") - .eq(FileResultEntity::getSuccess, 1) .orderByDesc(FileResultEntity::getCreatedAt) .last("limit 50")) .stream() .map(entity -> { DedupeResultItemVo vo = new DedupeResultItemVo(); vo.setResultId(entity.getId()); - vo.setSourceFilename(entity.getCreatedAt() == null ? "" : entity.getCreatedAt().toLocalDate().toString().replace("-", "")); + vo.setSourceFilename(entity.getSourceFilename()); vo.setOutputFilename(entity.getResultFilename()); - vo.setDownloadUrl(entity.getResultFileUrl()); - vo.setSuccess(true); + vo.setDownloadUrl(entity.getSuccess() != null && entity.getSuccess() == 1 ? entity.getResultFileUrl() : null); + vo.setSuccess(entity.getSuccess() != null && entity.getSuccess() == 1); + vo.setError(entity.getErrorMessage()); return vo; }) .toList(); @@ -173,7 +219,8 @@ public class DedupeRunService { } private void cleanExcelByLegacyRules(File inputFile, File outputFile, List selectedColumns, - boolean keepIntegerIds, boolean keepUnderscoreIds) throws Exception { + boolean keepIntegerIds, boolean keepUnderscoreIds, + boolean keepIntegerMainIdsWhenNoSubIds) throws Exception { DataFormatter formatter = new DataFormatter(); try (FileInputStream fis = new FileInputStream(inputFile); Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(fis); @@ -215,6 +262,26 @@ public class DedupeRunService { } Integer idColumnIndex = headerMap.get("id"); + Map mainIdHasSubIdMap = new HashMap<>(); + if (idColumnIndex != null) { + for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { + Row row = sheet.getRow(rowNum); + if (row == null) { + continue; + } + String idValue = normalizeCellText(formatter.formatCellValue(row.getCell(idColumnIndex))); + String mainId = extractMainId(idValue); + if (mainId.isEmpty()) { + continue; + } + if (!mainIdHasSubIdMap.containsKey(mainId)) { + mainIdHasSubIdMap.put(mainId, false); + } + if (idValue.matches("\\d+_\\d+")) { + mainIdHasSubIdMap.put(mainId, true); + } + } + } int outputRowIndex = 1; for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { Row row = sheet.getRow(rowNum); @@ -223,7 +290,7 @@ public class DedupeRunService { } if (idColumnIndex != null) { String idValue = normalizeCellText(formatter.formatCellValue(row.getCell(idColumnIndex))); - if (!shouldKeepId(idValue, keepIntegerIds, keepUnderscoreIds)) { + if (!shouldKeepId(idValue, keepIntegerIds, keepUnderscoreIds, keepIntegerMainIdsWhenNoSubIds, mainIdHasSubIdMap)) { continue; } } @@ -242,14 +309,68 @@ public class DedupeRunService { } } - private boolean shouldKeepId(String text, boolean keepIntegerIds, boolean keepUnderscoreIds) { + private File packageFolderDedupeResultsAsZip(String archiveName, List archiveEntries) { + File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "dedupe-result")); + File zipFile = buildNamedOutputFile(outputDir, archiveName + ".zip"); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + for (DedupeArchiveEntry entry : archiveEntries) { + String zipEntryName = buildFolderZipEntry(entry.relativePath(), entry.inputName(), entry.inputName(), false); + zos.putNextEntry(new ZipEntry(zipEntryName)); + Files.copy(entry.outputFile().toPath(), zos); + zos.closeEntry(); + } + } catch (Exception ex) { + throw new BusinessException("去重结果打包失败:" + ex.getMessage()); + } + return zipFile; + } + + private String buildFolderZipEntry(String relativePath, String inputName, String outputFilename, boolean includeSourceStemFolder) { + String normalizedRelativePath = relativePath == null ? "" : relativePath.replace('\\', '/'); + String relativeDir = normalizedRelativePath.contains("/") + ? normalizedRelativePath.substring(0, normalizedRelativePath.lastIndexOf('/')) + : ""; + List parts = new ArrayList<>(); + if (!relativeDir.isBlank()) { + parts.add(relativeDir); + } + if (includeSourceStemFolder) { + parts.add(FileUtil.mainName(inputName)); + } + parts.add(outputFilename); + return String.join("/", parts); + } + + private boolean shouldKeepId(String text, boolean keepIntegerIds, boolean keepUnderscoreIds, + boolean keepIntegerMainIdsWhenNoSubIds, Map mainIdHasSubIdMap) { if (text == null || text.isBlank()) { return false; } + if (keepUnderscoreIds && text.matches("\\d+_\\d+")) { + return true; + } if (keepIntegerIds && text.matches("\\d+")) { return true; } - return keepUnderscoreIds && text.matches("\\d+_\\d+"); + if (keepIntegerMainIdsWhenNoSubIds && text.matches("\\d+")) { + String mainId = extractMainId(text); + return !mainId.isEmpty() && !Boolean.TRUE.equals(mainIdHasSubIdMap.get(mainId)); + } + return false; + } + + private String extractMainId(String text) { + if (text == null || text.isBlank()) { + return ""; + } + if (text.matches("\\d+")) { + return text; + } + if (text.matches("\\d+_\\d+")) { + int idx = text.indexOf('_'); + return idx > 0 ? text.substring(0, idx) : ""; + } + return ""; } private File findLocalSourceFile(String fileKey) { @@ -300,4 +421,7 @@ public class DedupeRunService { .trim() .replaceAll("\\s+", " "); } + + private record DedupeArchiveEntry(String relativePath, String inputName, File outputFile) { + } } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeTotalDataService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeTotalDataService.java new file mode 100644 index 0000000..3629af9 --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/dedupe/service/DedupeTotalDataService.java @@ -0,0 +1,215 @@ +package com.nanri.aiimage.modules.dedupe.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.nanri.aiimage.common.exception.BusinessException; +import com.nanri.aiimage.modules.dedupe.mapper.DedupeTotalDataMapper; +import com.nanri.aiimage.modules.dedupe.model.dto.DedupeTotalDataCreateRequest; +import com.nanri.aiimage.modules.dedupe.model.dto.DedupeTotalDataUpdateRequest; +import com.nanri.aiimage.modules.dedupe.model.entity.DedupeTotalDataEntity; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataImportVo; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataItemVo; +import com.nanri.aiimage.modules.dedupe.model.vo.DedupeTotalDataPageVo; +import lombok.RequiredArgsConstructor; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.InputStream; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Service +@RequiredArgsConstructor +public class DedupeTotalDataService { + + private final DedupeTotalDataMapper dedupeTotalDataMapper; + + public DedupeTotalDataPageVo page(long page, long pageSize, String keyword) { + long safePage = Math.max(page, 1); + long safePageSize = Math.min(Math.max(pageSize, 1), 100); + String safeKeyword = keyword == null ? "" : keyword.trim(); + LambdaQueryWrapper query = new LambdaQueryWrapper() + .like(!safeKeyword.isEmpty(), DedupeTotalDataEntity::getDataValue, safeKeyword) + .orderByDesc(DedupeTotalDataEntity::getId); + Long total = dedupeTotalDataMapper.selectCount(query); + List items = dedupeTotalDataMapper.selectList(query.last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize)) + .stream() + .map(this::toItemVo) + .toList(); + DedupeTotalDataPageVo vo = new DedupeTotalDataPageVo(); + vo.setItems(items); + vo.setTotal(total); + vo.setPage(safePage); + vo.setPageSize(safePageSize); + return vo; + } + + @Transactional + public DedupeTotalDataItemVo create(DedupeTotalDataCreateRequest request) { + String dataValue = normalizeDataValue(request.getDataValue()); + ensureUnique(dataValue, null); + DedupeTotalDataEntity entity = new DedupeTotalDataEntity(); + entity.setDataValue(dataValue); + dedupeTotalDataMapper.insert(entity); + return toItemVo(getById(entity.getId())); + } + + @Transactional + public DedupeTotalDataImportVo importFromExcel(MultipartFile file) { + if (file == null || file.isEmpty()) { + throw new BusinessException("请上传 xlsx 文件"); + } + String filename = file.getOriginalFilename() == null ? "" : file.getOriginalFilename().toLowerCase(); + if (!(filename.endsWith(".xlsx") || filename.endsWith(".xls"))) { + throw new BusinessException("仅支持 .xlsx 或 .xls 文件"); + } + + DataFormatter formatter = new DataFormatter(); + try (InputStream inputStream = file.getInputStream(); + Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(inputStream)) { + Sheet sheet = workbook.getSheetAt(0); + Row headerRow = sheet.getRow(0); + if (headerRow == null) { + throw new BusinessException("Excel 表头为空"); + } + + Map headerMap = new HashMap<>(); + for (int i = 0; i < headerRow.getLastCellNum(); i++) { + Cell cell = headerRow.getCell(i); + String value = normalizeExcelText(cell == null ? null : formatter.formatCellValue(cell)); + if (!value.isBlank() && !headerMap.containsKey(value)) { + headerMap.put(value, i); + } + } + + Integer asinIndex = headerMap.get("ASIN"); + if (asinIndex == null) { + throw new BusinessException("缺少 ASIN 列"); + } + + Set seenInFile = new HashSet<>(); + int totalRows = Math.max(sheet.getLastRowNum(), 0); + int asinCount = 0; + int insertedCount = 0; + int skippedCount = 0; + + for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { + Row row = sheet.getRow(rowNum); + if (row == null) { + skippedCount++; + continue; + } + String asin = normalizeExcelText(formatter.formatCellValue(row.getCell(asinIndex))); + if (asin.isBlank()) { + skippedCount++; + continue; + } + asinCount++; + String dataValue = normalizeDataValue(asin); + if (!seenInFile.add(dataValue)) { + skippedCount++; + continue; + } + if (existsDataValue(dataValue)) { + skippedCount++; + continue; + } + DedupeTotalDataEntity entity = new DedupeTotalDataEntity(); + entity.setDataValue(dataValue); + dedupeTotalDataMapper.insert(entity); + insertedCount++; + } + + DedupeTotalDataImportVo vo = new DedupeTotalDataImportVo(); + vo.setTotalRows(totalRows); + vo.setAsinCount(asinCount); + vo.setInsertedCount(insertedCount); + vo.setSkippedCount(skippedCount); + return vo; + } catch (BusinessException e) { + throw e; + } catch (Exception e) { + throw new BusinessException("导入 Excel 失败"); + } + } + + @Transactional + public DedupeTotalDataItemVo update(Long id, DedupeTotalDataUpdateRequest request) { + DedupeTotalDataEntity entity = getById(id); + String dataValue = normalizeDataValue(request.getDataValue()); + ensureUnique(dataValue, id); + entity.setDataValue(dataValue); + dedupeTotalDataMapper.updateById(entity); + return toItemVo(getById(id)); + } + + @Transactional + public void delete(Long id) { + DedupeTotalDataEntity entity = getById(id); + dedupeTotalDataMapper.deleteById(entity.getId()); + } + + private DedupeTotalDataEntity getById(Long id) { + DedupeTotalDataEntity entity = dedupeTotalDataMapper.selectById(id); + if (entity == null) { + throw new BusinessException("数据不存在"); + } + return entity; + } + + private String normalizeDataValue(String value) { + String dataValue = value == null ? "" : value.trim(); + if (dataValue.isEmpty()) { + throw new BusinessException("数据不能为空"); + } + return dataValue; + } + + private void ensureUnique(String dataValue, Long excludeId) { + LambdaQueryWrapper query = new LambdaQueryWrapper() + .eq(DedupeTotalDataEntity::getDataValue, dataValue) + .last("LIMIT 1"); + DedupeTotalDataEntity exists = dedupeTotalDataMapper.selectOne(query); + if (exists != null && (excludeId == null || !exists.getId().equals(excludeId))) { + throw new BusinessException("数据已存在"); + } + } + + private boolean existsDataValue(String dataValue) { + LambdaQueryWrapper query = new LambdaQueryWrapper() + .eq(DedupeTotalDataEntity::getDataValue, dataValue) + .last("LIMIT 1"); + return dedupeTotalDataMapper.selectOne(query) != null; + } + + private String normalizeExcelText(String value) { + if (value == null) { + return ""; + } + return value.replace("\ufeff", "") + .replace("\u3000", " ") + .replace("\r\n", " ") + .replace("\r", " ") + .replace("\n", " ") + .replace("\t", " ") + .trim() + .replaceAll("\\s+", " "); + } + + private DedupeTotalDataItemVo toItemVo(DedupeTotalDataEntity entity) { + DedupeTotalDataItemVo vo = new DedupeTotalDataItemVo(); + vo.setId(entity.getId()); + vo.setDataValue(entity.getDataValue()); + vo.setCreatedAt(entity.getCreatedAt()); + return vo; + } +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/file/controller/FileUploadController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/file/controller/FileUploadController.java index 210e3f2..12cffdf 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/file/controller/FileUploadController.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/file/controller/FileUploadController.java @@ -46,8 +46,9 @@ public class FileUploadController { }) public ApiResponse upload( @Parameter(name = "file", description = "待上传的 Excel 或业务源文件", required = true, in = ParameterIn.QUERY) - MultipartFile file) throws Exception { - return ApiResponse.success(localFileStorageService.saveTempFile(file)); + MultipartFile file, + @RequestParam(required = false) String relativePath) throws Exception { + return ApiResponse.success(localFileStorageService.saveTempFile(file, relativePath)); } @GetMapping("/excel-info") diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/file/model/vo/UploadFileVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/file/model/vo/UploadFileVo.java index de83fe0..c500ff9 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/file/model/vo/UploadFileVo.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/file/model/vo/UploadFileVo.java @@ -18,4 +18,7 @@ public class UploadFileVo { @Schema(description = "文件大小") private Long size; + + @Schema(description = "相对上传目录路径") + private String relativePath; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/file/service/LocalFileStorageService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/file/service/LocalFileStorageService.java index ca18468..865bf52 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/file/service/LocalFileStorageService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/file/service/LocalFileStorageService.java @@ -29,7 +29,7 @@ public class LocalFileStorageService { private final StorageProperties storageProperties; - public UploadFileVo saveTempFile(MultipartFile file) throws IOException { + public UploadFileVo saveTempFile(MultipartFile file, String relativePath) throws IOException { File tempDir = FileUtil.file(storageProperties.getLocalTempDir()); File parentDir = tempDir.getParentFile(); if (parentDir != null) { @@ -46,6 +46,7 @@ public class LocalFileStorageService { vo.setOriginalFilename(file.getOriginalFilename()); vo.setLocalPath(target.getAbsolutePath()); vo.setSize(file.getSize()); + vo.setRelativePath(relativePath); return vo; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/controller/SplitRunController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/controller/SplitRunController.java index d46a0c2..879dd69 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/split/controller/SplitRunController.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/controller/SplitRunController.java @@ -46,7 +46,8 @@ public class SplitRunController { - splitMode=rows_per_file 时按固定条数切分; - splitMode=parts 时按总条数尽量均分; - 输出文件命名遵循 原文件名_split_序号.xlsx; - - 返回结果中 rowCount 表示该结果文件包含的数据行数。 + - 本次拆分任务产生的所有 xlsx 会统一打成一个 zip 上传; + - 返回结果中 rowCount 表示该压缩包包含的数据总行数,entries 表示压缩包内文件摘要。 """) @ApiResponses({ @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "执行成功,返回拆分结果统计", content = @Content(schema = @Schema(implementation = SplitRunVo.class))), diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitRunRequest.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitRunRequest.java index de8fefb..97dbcb9 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitRunRequest.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitRunRequest.java @@ -30,4 +30,7 @@ public class SplitRunRequest { @Schema(description = "按份数拆分时的份数") private Integer parts; + + @Schema(description = "文件夹上传场景下的总压缩包名称(不含扩展名)") + private String archiveName; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitSourceFileDto.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitSourceFileDto.java index 2316ba4..f5a5b25 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitSourceFileDto.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/dto/SplitSourceFileDto.java @@ -14,4 +14,7 @@ public class SplitSourceFileDto { @Schema(description = "原始文件名") private String originalFilename; + + @Schema(description = "相对上传目录路径") + private String relativePath; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitArchiveEntryVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitArchiveEntryVo.java new file mode 100644 index 0000000..c2977de --- /dev/null +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitArchiveEntryVo.java @@ -0,0 +1,15 @@ +package com.nanri.aiimage.modules.split.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "拆分压缩包内文件项") +public class SplitArchiveEntryVo { + + @Schema(description = "文件名") + private String filename; + + @Schema(description = "该文件包含的数据行数") + private Integer rowCount; +} diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitResultItemVo.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitResultItemVo.java index 95e1c3d..80dc455 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitResultItemVo.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/model/vo/SplitResultItemVo.java @@ -3,6 +3,8 @@ package com.nanri.aiimage.modules.split.model.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + @Data @Schema(description = "数据拆分结果项") public class SplitResultItemVo { @@ -22,9 +24,15 @@ public class SplitResultItemVo { @Schema(description = "错误信息") private String error; - @Schema(description = "结果行数") + @Schema(description = "结果总行数") private Integer rowCount; @Schema(description = "下载地址") private String downloadUrl; + + @Schema(description = "压缩包内文件数量") + private Integer entryCount; + + @Schema(description = "压缩包内文件列表") + private List entries; } diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/split/service/SplitRunService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/split/service/SplitRunService.java index 555b546..53015a0 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/split/service/SplitRunService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/split/service/SplitRunService.java @@ -3,13 +3,15 @@ package com.nanri.aiimage.modules.split.service; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.nanri.aiimage.common.exception.BusinessException; import com.nanri.aiimage.config.StorageProperties; +import com.nanri.aiimage.modules.file.service.oss.OssStorageService; import com.nanri.aiimage.modules.split.model.dto.SplitRunRequest; import com.nanri.aiimage.modules.split.model.dto.SplitSourceFileDto; +import com.nanri.aiimage.modules.split.model.vo.SplitArchiveEntryVo; import com.nanri.aiimage.modules.split.model.vo.SplitResultItemVo; import com.nanri.aiimage.modules.split.model.vo.SplitRunVo; -import com.nanri.aiimage.modules.file.service.oss.OssStorageService; import com.nanri.aiimage.modules.task.mapper.FileResultMapper; import com.nanri.aiimage.modules.task.mapper.FileTaskMapper; import com.nanri.aiimage.modules.task.model.entity.FileResultEntity; @@ -20,6 +22,7 @@ import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; @@ -28,18 +31,28 @@ import org.springframework.stereotype.Service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.nio.file.Files; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; @Service @RequiredArgsConstructor public class SplitRunService { + private static final String MODULE_TYPE = "SPLIT"; + private static final String ZIP_CONTENT_TYPE = "application/zip"; + private static final String SPLIT_MODE_ROWS_PER_FILE = "rows_per_file"; + private static final String SPLIT_MODE_PARTS = "parts"; + private static final String HEADER_SUFFIX_MARKER = "idASIN\u56fd\u5bb6\u72b6\u6001\u4ef7\u683c\u53d8\u4f53\u6570\u91cf"; + private static final String HEADER_STOP_COLUMN = "\u7f29\u7565\u56fe\u5730\u57408"; + private static final DateTimeFormatter ZIP_NAME_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + private final FileTaskMapper fileTaskMapper; private final FileResultMapper fileResultMapper; private final StorageProperties storageProperties; @@ -49,8 +62,8 @@ public class SplitRunService { validateRequest(request); FileTaskEntity task = new FileTaskEntity(); - task.setTaskNo("SPLIT-" + IdUtil.getSnowflakeNextIdStr()); - task.setModuleType("SPLIT"); + task.setTaskNo(MODULE_TYPE + "-" + IdUtil.getSnowflakeNextIdStr()); + task.setModuleType(MODULE_TYPE); task.setTaskMode("IMMEDIATE"); task.setStatus("SUCCESS"); task.setSourceFileCount(request.getFiles().size()); @@ -61,56 +74,42 @@ public class SplitRunService { task.setFinishedAt(LocalDateTime.now()); fileTaskMapper.insert(task); + boolean folderMode = request.getArchiveName() != null && !request.getArchiveName().isBlank(); List items = new ArrayList<>(); int successCount = 0; int failedCount = 0; + List allChunkResults = new ArrayList<>(); + List successSourceNames = new ArrayList<>(); for (SplitSourceFileDto sourceFile : request.getFiles()) { try { File inputFile = findLocalSourceFile(sourceFile.getFileKey()); if (inputFile == null || !inputFile.exists()) { - throw new BusinessException("上传文件不存在,请重新上传"); + throw new BusinessException("Uploaded source file does not exist, please upload again."); } - String inputName = sourceFile.getOriginalFilename() == null ? inputFile.getName() : sourceFile.getOriginalFilename(); + + String inputName = sourceFile.getOriginalFilename() == null + ? inputFile.getName() + : sourceFile.getOriginalFilename(); List chunkResults = splitExcelByLegacyRules(inputFile, inputName, request); for (SplitChunkResult chunkResult : chunkResults) { - SplitResultItemVo item = new SplitResultItemVo(); - item.setSourceFilename(inputName); - item.setOutputFilename(chunkResult.outputFile().getName()); - item.setSuccess(true); - item.setRowCount(chunkResult.rowCount()); - - String ossObjectKey = ossStorageService.uploadResultFile(chunkResult.outputFile(), "SPLIT"); - String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); - - FileResultEntity resultEntity = new FileResultEntity(); - resultEntity.setTaskId(task.getId()); - resultEntity.setModuleType("SPLIT"); - resultEntity.setSourceFilename(inputName); - resultEntity.setResultFilename(chunkResult.outputFile().getName()); - resultEntity.setResultFileUrl(downloadUrl); - resultEntity.setResultFileSize(chunkResult.outputFile().length()); - resultEntity.setResultContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - resultEntity.setRowCount(chunkResult.rowCount()); - resultEntity.setSuccess(1); - resultEntity.setCreatedAt(LocalDateTime.now()); - fileResultMapper.insert(resultEntity); - item.setDownloadUrl(downloadUrl); - item.setResultId(resultEntity.getId()); - items.add(item); + allChunkResults.add(new TaskSplitChunkResult(sourceFile.getRelativePath(), inputName, chunkResult.outputFile(), chunkResult.rowCount())); } + successSourceNames.add(inputName); successCount++; } catch (Exception ex) { SplitResultItemVo item = new SplitResultItemVo(); item.setSourceFilename(sourceFile.getOriginalFilename()); item.setSuccess(false); item.setError(ex.getMessage()); + item.setEntries(new ArrayList<>()); + item.setEntryCount(0); items.add(item); failedCount++; FileResultEntity resultEntity = new FileResultEntity(); resultEntity.setTaskId(task.getId()); - resultEntity.setModuleType("SPLIT"); + resultEntity.setModuleType(MODULE_TYPE); resultEntity.setSourceFilename(sourceFile.getOriginalFilename()); resultEntity.setSuccess(0); resultEntity.setErrorMessage(ex.getMessage()); @@ -119,6 +118,38 @@ public class SplitRunService { } } + if (!allChunkResults.isEmpty()) { + File zipFile = packageTaskSplitResultsAsZip(request.getArchiveName(), successSourceNames, allChunkResults); + String ossObjectKey = ossStorageService.uploadResultFile(zipFile, MODULE_TYPE); + String downloadUrl = ossStorageService.generateDownloadUrl(ossObjectKey); + + SplitResultItemVo item = new SplitResultItemVo(); + item.setSourceFilename(folderMode && request.getArchiveName() != null && !request.getArchiveName().isBlank() + ? request.getArchiveName() + : successSourceNames.size() == 1 ? successSourceNames.get(0) : "Current split task"); + item.setOutputFilename(zipFile.getName()); + item.setSuccess(true); + item.setRowCount(allChunkResults.stream().mapToInt(TaskSplitChunkResult::rowCount).sum()); + item.setDownloadUrl(downloadUrl); + item.setEntryCount(allChunkResults.size()); + item.setEntries(allChunkResults.stream().map(this::toArchiveEntry).toList()); + + FileResultEntity resultEntity = new FileResultEntity(); + resultEntity.setTaskId(task.getId()); + resultEntity.setModuleType(MODULE_TYPE); + resultEntity.setSourceFilename(item.getSourceFilename()); + resultEntity.setResultFilename(zipFile.getName()); + resultEntity.setResultFileUrl(downloadUrl); + resultEntity.setResultFileSize(zipFile.length()); + resultEntity.setResultContentType(ZIP_CONTENT_TYPE); + resultEntity.setRowCount(item.getRowCount()); + resultEntity.setSuccess(1); + resultEntity.setCreatedAt(LocalDateTime.now()); + fileResultMapper.insert(resultEntity); + item.setResultId(resultEntity.getId()); + items.add(0, item); + } + task.setSuccessFileCount(successCount); task.setFailedFileCount(failedCount); task.setResultJson(JSONUtil.toJsonStr(items)); @@ -135,19 +166,21 @@ public class SplitRunService { public List listHistory() { return fileResultMapper.selectList(new LambdaQueryWrapper() - .eq(FileResultEntity::getModuleType, "SPLIT") - .eq(FileResultEntity::getSuccess, 1) + .eq(FileResultEntity::getModuleType, MODULE_TYPE) .orderByDesc(FileResultEntity::getCreatedAt) .last("limit 100")) .stream() .map(entity -> { SplitResultItemVo vo = new SplitResultItemVo(); vo.setResultId(entity.getId()); - vo.setSourceFilename(entity.getCreatedAt() == null ? "" : entity.getCreatedAt().toLocalDate().toString().replace("-", "")); + vo.setSourceFilename(entity.getSourceFilename()); vo.setOutputFilename(entity.getResultFilename()); - vo.setDownloadUrl(entity.getResultFileUrl()); + vo.setDownloadUrl(entity.getSuccess() != null && entity.getSuccess() == 1 ? entity.getResultFileUrl() : null); vo.setRowCount(entity.getRowCount()); - vo.setSuccess(true); + vo.setSuccess(entity.getSuccess() != null && entity.getSuccess() == 1); + vo.setError(entity.getErrorMessage()); + vo.setEntryCount(0); + vo.setEntries(new ArrayList<>()); return vo; }) .toList(); @@ -155,55 +188,45 @@ public class SplitRunService { public void deleteHistory(Long resultId) { FileResultEntity entity = fileResultMapper.selectById(resultId); - if (entity == null || !"SPLIT".equals(entity.getModuleType())) { - throw new BusinessException("记录不存在"); + if (entity == null || !MODULE_TYPE.equals(entity.getModuleType())) { + throw new BusinessException("Split result record does not exist."); } fileResultMapper.deleteById(resultId); } public Resource getResultFile(Long resultId) { FileResultEntity entity = fileResultMapper.selectById(resultId); - if (entity == null || entity.getResultFileUrl() == null || !"SPLIT".equals(entity.getModuleType())) { - throw new BusinessException("结果文件不存在"); + if (entity == null || entity.getResultFileUrl() == null || !MODULE_TYPE.equals(entity.getModuleType())) { + throw new BusinessException("Split result file does not exist."); } + File file = new File(entity.getResultFileUrl()); if (!file.exists()) { - throw new BusinessException("结果文件不存在"); + throw new BusinessException("Split result file does not exist."); } return new FileSystemResource(file); } - private List splitExcelByLegacyRules(File inputFile, String originalFilename, SplitRunRequest request) throws Exception { + private List splitExcelByLegacyRules( + File inputFile, + String originalFilename, + SplitRunRequest request + ) throws Exception { DataFormatter formatter = new DataFormatter(); - try (FileInputStream fis = new FileInputStream(inputFile); Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(fis)) { + try (FileInputStream fis = new FileInputStream(inputFile); + Workbook workbook = WorkbookFactory.create(fis)) { Sheet sheet = workbook.getSheetAt(0); Row headerRow = sheet.getRow(0); if (headerRow == null) { - throw new BusinessException("Excel 表头为空"); + throw new BusinessException("Excel header row is empty."); } - Map headerMap = new HashMap<>(); - for (int i = 0; i < headerRow.getLastCellNum(); i++) { - Cell cell = headerRow.getCell(i); - String value = normalizeCellText(cell == null ? null : formatter.formatCellValue(cell)); - if (value.isBlank()) { - continue; - } - value = value.split("idASIN国家状态价格变体数量", 2)[0].trim().isEmpty() - ? value - : value.split("idASIN国家状态价格变体数量", 2)[0].trim(); - if (headerMap.containsKey(value)) { - continue; - } - headerMap.put(value, i); - if ("缩略图地址8".equals(value)) { - break; - } - } - - List missing = request.getSelectedColumns().stream().filter(column -> !headerMap.containsKey(column)).toList(); + Map headerMap = buildHeaderMap(headerRow, formatter); + List missing = request.getSelectedColumns().stream() + .filter(column -> !headerMap.containsKey(column)) + .toList(); if (!missing.isEmpty()) { - throw new BusinessException("缺少列:" + String.join("、", missing)); + throw new BusinessException("Missing required columns: " + String.join(", ", missing)); } List> rowsData = new ArrayList<>(); @@ -215,39 +238,23 @@ public class SplitRunService { List projected = new ArrayList<>(); for (String column : request.getSelectedColumns()) { Integer sourceIndex = headerMap.get(column); - String value = sourceIndex == null ? "" : normalizeCellText(formatter.formatCellValue(row.getCell(sourceIndex))); + String value = sourceIndex == null + ? "" + : normalizeCellText(formatter.formatCellValue(row.getCell(sourceIndex))); projected.add(value); } rowsData.add(projected); } - int totalRows = rowsData.size(); - if (totalRows == 0) { - throw new BusinessException("没有可拆分的数据行"); - } - - List>> chunks = new ArrayList<>(); - if ("rows_per_file".equals(request.getSplitMode())) { - int chunkSize = request.getRowsPerFile(); - for (int i = 0; i < totalRows; i += chunkSize) { - chunks.add(rowsData.subList(i, Math.min(i + chunkSize, totalRows))); - } - } else { - int actualParts = Math.min(request.getParts(), totalRows); - int base = totalRows / actualParts; - int remainder = totalRows % actualParts; - int start = 0; - for (int i = 0; i < actualParts; i++) { - int size = base + (i < remainder ? 1 : 0); - int end = start + size; - chunks.add(rowsData.subList(start, end)); - start = end; - } + if (rowsData.isEmpty()) { + throw new BusinessException("No data rows available for splitting."); } + List>> chunks = buildChunks(rowsData, request); File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "split-result")); String sourceStem = FileUtil.mainName(originalFilename); List results = new ArrayList<>(); + for (int i = 0; i < chunks.size(); i++) { File outputFile = buildNamedOutputFile(outputDir, sourceStem + "_split_" + (i + 1) + ".xlsx"); try (XSSFWorkbook outputWorkbook = new XSSFWorkbook()) { @@ -269,19 +276,63 @@ public class SplitRunService { } results.add(new SplitChunkResult(outputFile, chunks.get(i).size())); } + return results; } } + private Map buildHeaderMap(Row headerRow, DataFormatter formatter) { + Map headerMap = new HashMap<>(); + for (int i = 0; i < headerRow.getLastCellNum(); i++) { + Cell cell = headerRow.getCell(i); + String value = normalizeHeaderName(cell == null ? null : formatter.formatCellValue(cell)); + if (value.isBlank() || headerMap.containsKey(value)) { + continue; + } + headerMap.put(value, i); + if (HEADER_STOP_COLUMN.equals(value)) { + break; + } + } + return headerMap; + } + + private List>> buildChunks(List> rowsData, SplitRunRequest request) { + int totalRows = rowsData.size(); + List>> chunks = new ArrayList<>(); + + if (SPLIT_MODE_ROWS_PER_FILE.equals(request.getSplitMode())) { + int chunkSize = request.getRowsPerFile(); + for (int i = 0; i < totalRows; i += chunkSize) { + chunks.add(rowsData.subList(i, Math.min(i + chunkSize, totalRows))); + } + return chunks; + } + + int actualParts = Math.min(request.getParts(), totalRows); + int base = totalRows / actualParts; + int remainder = totalRows % actualParts; + int start = 0; + for (int i = 0; i < actualParts; i++) { + int size = base + (i < remainder ? 1 : 0); + int end = start + size; + chunks.add(rowsData.subList(start, end)); + start = end; + } + return chunks; + } + private void validateRequest(SplitRunRequest request) { - if (!List.of("rows_per_file", "parts").contains(request.getSplitMode())) { - throw new BusinessException("拆分模式不合法"); + if (!List.of(SPLIT_MODE_ROWS_PER_FILE, SPLIT_MODE_PARTS).contains(request.getSplitMode())) { + throw new BusinessException("Invalid split mode."); } - if ("rows_per_file".equals(request.getSplitMode()) && (request.getRowsPerFile() == null || request.getRowsPerFile() <= 0)) { - throw new BusinessException("每份条数不合法"); + if (SPLIT_MODE_ROWS_PER_FILE.equals(request.getSplitMode()) + && (request.getRowsPerFile() == null || request.getRowsPerFile() <= 0)) { + throw new BusinessException("Invalid rowsPerFile value."); } - if ("parts".equals(request.getSplitMode()) && (request.getParts() == null || request.getParts() <= 0)) { - throw new BusinessException("拆分份数不合法"); + if (SPLIT_MODE_PARTS.equals(request.getSplitMode()) + && (request.getParts() == null || request.getParts() <= 0)) { + throw new BusinessException("Invalid parts value."); } } @@ -290,8 +341,11 @@ public class SplitRunService { if (!baseDir.exists()) { return null; } - List matchedFiles = FileUtil.loopFiles(baseDir, pathname -> pathname.isFile() && pathname.getName().startsWith(fileKey)); - return matchedFiles.isEmpty() ? null : matchedFiles.getFirst(); + List matchedFiles = FileUtil.loopFiles( + baseDir, + pathname -> pathname.isFile() && pathname.getName().startsWith(fileKey) + ); + return matchedFiles.isEmpty() ? null : matchedFiles.get(0); } private File buildNamedOutputFile(File outputDir, String filename) { @@ -299,6 +353,7 @@ public class SplitRunService { if (!candidate.exists()) { return candidate; } + String mainName = FileUtil.mainName(filename); String extName = FileUtil.extName(filename); int index = 2; @@ -314,6 +369,61 @@ public class SplitRunService { } } + private File packageTaskSplitResultsAsZip(String archiveName, List successSourceNames, List chunkResults) { + File outputDir = FileUtil.mkdir(FileUtil.file(storageProperties.getLocalTempDir(), "split-result")); + String zipFilename = archiveName != null && !archiveName.isBlank() + ? archiveName + ".zip" + : successSourceNames.size() == 1 + ? FileUtil.mainName(successSourceNames.getFirst()) + ".zip" + : LocalDateTime.now().format(ZIP_NAME_DATE_FORMATTER) + ".zip"; + File zipFile = buildNamedOutputFile(outputDir, zipFilename); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + for (TaskSplitChunkResult chunkResult : chunkResults) { + String zipEntryName = buildFolderZipEntry(chunkResult.relativePath(), chunkResult.sourceFilename(), chunkResult.outputFile().getName(), true); + ZipEntry entry = new ZipEntry(zipEntryName); + zos.putNextEntry(entry); + Files.copy(chunkResult.outputFile().toPath(), zos); + zos.closeEntry(); + } + } catch (Exception ex) { + throw new BusinessException("拆分结果打包失败:" + ex.getMessage()); + } + return zipFile; + } + + private String buildFolderZipEntry(String relativePath, String inputName, String outputFilename, boolean includeSourceStemFolder) { + String normalizedRelativePath = relativePath == null ? "" : relativePath.replace('\\', '/'); + String relativeDir = normalizedRelativePath.contains("/") + ? normalizedRelativePath.substring(0, normalizedRelativePath.lastIndexOf('/')) + : ""; + List parts = new ArrayList<>(); + if (!relativeDir.isBlank()) { + parts.add(relativeDir); + } + if (includeSourceStemFolder) { + parts.add(FileUtil.mainName(inputName)); + } + parts.add(outputFilename); + return String.join("/", parts); + } + + private SplitArchiveEntryVo toArchiveEntry(TaskSplitChunkResult chunkResult) { + SplitArchiveEntryVo vo = new SplitArchiveEntryVo(); + vo.setFilename(chunkResult.outputFile().getName()); + vo.setRowCount(chunkResult.rowCount()); + return vo; + } + + private String normalizeHeaderName(String value) { + String normalized = normalizeCellText(value); + if (normalized.isBlank()) { + return normalized; + } + + String prefix = normalized.split(HEADER_SUFFIX_MARKER, 2)[0].trim(); + return prefix.isEmpty() ? normalized : prefix; + } + private String normalizeCellText(String value) { if (value == null) { return ""; @@ -330,4 +440,7 @@ public class SplitRunService { private record SplitChunkResult(File outputFile, int rowCount) { } + + private record TaskSplitChunkResult(String relativePath, String sourceFilename, File outputFile, int rowCount) { + } } diff --git a/backend-java/src/main/resources/db/V3__create_dedupe_total_data.sql b/backend-java/src/main/resources/db/V3__create_dedupe_total_data.sql new file mode 100644 index 0000000..0f9ca2d --- /dev/null +++ b/backend-java/src/main/resources/db/V3__create_dedupe_total_data.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS biz_dedupe_total_data ( + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', + data_value VARCHAR(128) NOT NULL COMMENT '去重总数据值', + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + UNIQUE KEY uk_data_value (data_value), + KEY idx_created_at (created_at) +) COMMENT='数据去重总数据表'; diff --git a/backend-java/src/main/resources/db/V4__rename_convert_template_to_five_countries.sql b/backend-java/src/main/resources/db/V4__rename_convert_template_to_five_countries.sql new file mode 100644 index 0000000..8b923aa --- /dev/null +++ b/backend-java/src/main/resources/db/V4__rename_convert_template_to_five_countries.sql @@ -0,0 +1,5 @@ +UPDATE biz_convert_template +SET template_name = '五国模板', + output_filename = '英国.txt、法国.txt、德国.txt、西班牙.txt、意大利.txt', + updated_at = CURRENT_TIMESTAMP +WHERE template_code = 'uk_offer'; diff --git a/backend/.device_id b/backend/.device_id new file mode 100644 index 0000000..6e07d8f --- /dev/null +++ b/backend/.device_id @@ -0,0 +1 @@ +8cecee3bc02a178bf372ca1c3d02fc5cae3c0a51c8346f6e6a710988599c08be \ No newline at end of file diff --git a/backend/__pycache__/ali_oss.cpython-311.pyc b/backend/__pycache__/ali_oss.cpython-311.pyc new file mode 100644 index 0000000..26cc96a Binary files /dev/null and b/backend/__pycache__/ali_oss.cpython-311.pyc differ diff --git a/backend/__pycache__/ali_oss.cpython-312.pyc b/backend/__pycache__/ali_oss.cpython-312.pyc new file mode 100644 index 0000000..1053f3e Binary files /dev/null and b/backend/__pycache__/ali_oss.cpython-312.pyc differ diff --git a/backend/__pycache__/ali_oss.cpython-39.pyc b/backend/__pycache__/ali_oss.cpython-39.pyc new file mode 100644 index 0000000..573a87f Binary files /dev/null and b/backend/__pycache__/ali_oss.cpython-39.pyc differ diff --git a/backend/__pycache__/app.cpython-311.pyc b/backend/__pycache__/app.cpython-311.pyc new file mode 100644 index 0000000..d267e73 Binary files /dev/null and b/backend/__pycache__/app.cpython-311.pyc differ diff --git a/backend/__pycache__/config.cpython-311.pyc b/backend/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000..e65d9f5 Binary files /dev/null and b/backend/__pycache__/config.cpython-311.pyc differ diff --git a/backend/__pycache__/config.cpython-312.pyc b/backend/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000..4fefbc2 Binary files /dev/null and b/backend/__pycache__/config.cpython-312.pyc differ diff --git a/backend/__pycache__/config.cpython-39.pyc b/backend/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000..81cae7a Binary files /dev/null and b/backend/__pycache__/config.cpython-39.pyc differ diff --git a/backend/__pycache__/db.cpython-311.pyc b/backend/__pycache__/db.cpython-311.pyc new file mode 100644 index 0000000..9216b0d Binary files /dev/null and b/backend/__pycache__/db.cpython-311.pyc differ diff --git a/backend/ali_oss.py b/backend/ali_oss.py new file mode 100644 index 0000000..b31ee99 --- /dev/null +++ b/backend/ali_oss.py @@ -0,0 +1,36 @@ +import argparse +import base64 +import re +import time +import alibabacloud_oss_v2 as oss +import requests + +from config import region, endpoint, bucket, file_url_pre, bucket_path + + +def upload_file(file_content: bytes, key: str): + credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() + cfg = oss.config.load_default() + cfg.credentials_provider = credentials_provider + cfg.region = region + cfg.endpoint = endpoint + client = oss.Client(cfg) + + result = client.put_object( + oss.PutObjectRequest( + bucket=bucket, # 存储空间名称 + key=key, # 对象名称 + body=file_content # 读取文件内容 + ) + ) + # print(result) + return file_url_pre + key + + + + +# 脚本入口,当文件被直接运行时调用main函数 +if __name__ == "__main__": + with open("测试图片数据/IMG_2685.JPG", "rb") as f: + file_content = f.read() + upload_file(file_content,key=bucket_path+"test.png") \ No newline at end of file diff --git a/backend/app.py b/backend/app.py new file mode 100644 index 0000000..201ace9 --- /dev/null +++ b/backend/app.py @@ -0,0 +1,38 @@ +""" +卖相AI - Flask 后端 +按功能拆分为蓝图:认证(auth)、主页面(main)、管理员API(admin_api)、版本(version) +""" +import os +import secrets +from datetime import timedelta + +from flask import Flask +from flask_cors import CORS + +from utils.db import init_db +from blueprints.auth import auth +from blueprints.main import main +from blueprints.admin_api import admin_api +from blueprints.version import version_bp + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +app = Flask(__name__, template_folder=BASE_DIR, static_folder=BASE_DIR) + +CORS(app) +app.secret_key = os.environ.get('SECRET_KEY', secrets.token_hex(32)) +app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) + +# 注册蓝图 +app.register_blueprint(auth) +app.register_blueprint(main) +app.register_blueprint(admin_api) +app.register_blueprint(version_bp) + + +def run_app(host='0.0.0.0', port=15124): + init_db() + app.run(host=host, port=port, threaded=True, use_reloader=False) + + +if __name__ == '__main__': + run_app() diff --git a/backend/blueprints/__init__.py b/backend/blueprints/__init__.py new file mode 100644 index 0000000..836aa1e --- /dev/null +++ b/backend/blueprints/__init__.py @@ -0,0 +1 @@ +# Blueprints 包 diff --git a/backend/blueprints/__pycache__/__init__.cpython-311.pyc b/backend/blueprints/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..936e378 Binary files /dev/null and b/backend/blueprints/__pycache__/__init__.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/__init__.cpython-312.pyc b/backend/blueprints/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..0bb197f Binary files /dev/null and b/backend/blueprints/__pycache__/__init__.cpython-312.pyc differ diff --git a/backend/blueprints/__pycache__/__init__.cpython-39.pyc b/backend/blueprints/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..b7806be Binary files /dev/null and b/backend/blueprints/__pycache__/__init__.cpython-39.pyc differ diff --git a/backend/blueprints/__pycache__/admin_api.cpython-311.pyc b/backend/blueprints/__pycache__/admin_api.cpython-311.pyc new file mode 100644 index 0000000..454cf8d Binary files /dev/null and b/backend/blueprints/__pycache__/admin_api.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/admin_api.cpython-312.pyc b/backend/blueprints/__pycache__/admin_api.cpython-312.pyc new file mode 100644 index 0000000..1a75368 Binary files /dev/null and b/backend/blueprints/__pycache__/admin_api.cpython-312.pyc differ diff --git a/backend/blueprints/__pycache__/admin_api.cpython-39.pyc b/backend/blueprints/__pycache__/admin_api.cpython-39.pyc new file mode 100644 index 0000000..4a2a7bb Binary files /dev/null and b/backend/blueprints/__pycache__/admin_api.cpython-39.pyc differ diff --git a/backend/blueprints/__pycache__/admin_history.cpython-311.pyc b/backend/blueprints/__pycache__/admin_history.cpython-311.pyc new file mode 100644 index 0000000..8fdc8bd Binary files /dev/null and b/backend/blueprints/__pycache__/admin_history.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/admin_users.cpython-311.pyc b/backend/blueprints/__pycache__/admin_users.cpython-311.pyc new file mode 100644 index 0000000..5c88c41 Binary files /dev/null and b/backend/blueprints/__pycache__/admin_users.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/admin_versions.cpython-311.pyc b/backend/blueprints/__pycache__/admin_versions.cpython-311.pyc new file mode 100644 index 0000000..309a20f Binary files /dev/null and b/backend/blueprints/__pycache__/admin_versions.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/auth.cpython-311.pyc b/backend/blueprints/__pycache__/auth.cpython-311.pyc new file mode 100644 index 0000000..f5f8202 Binary files /dev/null and b/backend/blueprints/__pycache__/auth.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/auth.cpython-312.pyc b/backend/blueprints/__pycache__/auth.cpython-312.pyc new file mode 100644 index 0000000..cd1faab Binary files /dev/null and b/backend/blueprints/__pycache__/auth.cpython-312.pyc differ diff --git a/backend/blueprints/__pycache__/auth.cpython-39.pyc b/backend/blueprints/__pycache__/auth.cpython-39.pyc new file mode 100644 index 0000000..3f8fdc1 Binary files /dev/null and b/backend/blueprints/__pycache__/auth.cpython-39.pyc differ diff --git a/backend/blueprints/__pycache__/main.cpython-311.pyc b/backend/blueprints/__pycache__/main.cpython-311.pyc new file mode 100644 index 0000000..bd52ed9 Binary files /dev/null and b/backend/blueprints/__pycache__/main.cpython-311.pyc differ diff --git a/backend/blueprints/__pycache__/main.cpython-312.pyc b/backend/blueprints/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..bc4d2ca Binary files /dev/null and b/backend/blueprints/__pycache__/main.cpython-312.pyc differ diff --git a/backend/blueprints/__pycache__/main.cpython-39.pyc b/backend/blueprints/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000..a407705 Binary files /dev/null and b/backend/blueprints/__pycache__/main.cpython-39.pyc differ diff --git a/backend/blueprints/__pycache__/version.cpython-312.pyc b/backend/blueprints/__pycache__/version.cpython-312.pyc new file mode 100644 index 0000000..e7f2ea8 Binary files /dev/null and b/backend/blueprints/__pycache__/version.cpython-312.pyc differ diff --git a/backend/blueprints/__pycache__/version.cpython-39.pyc b/backend/blueprints/__pycache__/version.cpython-39.pyc new file mode 100644 index 0000000..6da875c Binary files /dev/null and b/backend/blueprints/__pycache__/version.cpython-39.pyc differ diff --git a/backend/blueprints/admin_api.py b/backend/blueprints/admin_api.py new file mode 100644 index 0000000..51db218 --- /dev/null +++ b/backend/blueprints/admin_api.py @@ -0,0 +1,723 @@ +""" +管理员 API 蓝图:用户管理、生成历史、版本管理(后台) +""" +import json +import os +import re + +import requests +from flask import Blueprint, request, jsonify, session + +import pymysql +from werkzeug.security import generate_password_hash + +from utils.db import get_db +from utils.auth import admin_required, get_current_admin_role +from ali_oss import upload_file as oss_upload_file + +try: + from config import bucket_path, backend_java_base_url +except ImportError: + bucket_path = os.environ.get('BUCKET_PATH', 'nanri-image/') + backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://127.0.0.1:18080').rstrip('/') + +admin_api = Blueprint('admin_api', __name__, url_prefix='/api/admin') + + +def _safe_version_key(version): + """将版本号转为安全的 OSS 对象名部分""" + s = (version or '').strip() + s = re.sub(r'[^\w.\-]', '_', s) + return s or 'unknown' + + +def _proxy_backend_java(method, path, *, params=None, json_data=None, files=None, data=None): + url = f"{backend_java_base_url}{path}" + try: + resp = requests.request(method=method, url=url, params=params, json=json_data, files=files, data=data, timeout=10) + except requests.RequestException: + return None, jsonify({'success': False, 'error': 'backend-java 服务不可用'}), 502 + try: + data = resp.json() + except ValueError: + data = None + if resp.status_code >= 400: + if isinstance(data, dict): + return data, jsonify({'success': False, 'error': data.get('message') or data.get('error') or 'backend-java 请求失败'}), resp.status_code + return None, jsonify({'success': False, 'error': 'backend-java 请求失败'}), resp.status_code + if not isinstance(data, dict): + return None, jsonify({'success': False, 'error': 'backend-java 返回格式错误'}), 502 + if not data.get('success'): + return data, jsonify({'success': False, 'error': data.get('message') or '操作失败'}), 200 + return data, None, 200 + + +# ---------- 用户管理 ---------- + +@admin_api.route('/users') +@admin_required +def list_users(): + """分页获取用户列表;支持用户名模糊搜索、指定管理员所属普通用户筛选""" + role, current_row = get_current_admin_role() + if not role: + return jsonify({'success': False, 'error': '需要管理员权限'}), 403 + page = max(1, int(request.args.get('page', 1))) + page_size = min(50, max(5, int(request.args.get('page_size', 15)))) + offset = (page - 1) * page_size + search_username = (request.args.get('username') or request.args.get('search') or '').strip() + created_by_id_arg = request.args.get('created_by_id') or request.args.get('admin_id') + created_by_id = int(created_by_id_arg) if created_by_id_arg and str(created_by_id_arg).isdigit() else None + if role != 'super_admin': + created_by_id = None + try: + conn = get_db() + with conn.cursor() as cur: + if role == 'super_admin': + where_parts = ["1=1"] + params = [] + if search_username: + where_parts.append("u.username LIKE %s") + params.append("%" + search_username + "%") + if created_by_id is not None: + where_parts.append("u.created_by_id = %s") + params.append(created_by_id) + where_sql = " AND ".join(where_parts) + cur.execute( + """SELECT u.id, u.username, u.is_admin, u.role, u.created_at, u.created_by_id, + creator.username AS creator_username + FROM users u + LEFT JOIN users creator ON creator.id = u.created_by_id + WHERE """ + where_sql + """ ORDER BY u.id LIMIT %s OFFSET %s""", + tuple(params) + (page_size, offset), + ) + rows = cur.fetchall() + cur.execute("SELECT COUNT(*) as total FROM users u WHERE " + where_sql, tuple(params)) + total = cur.fetchone()['total'] + cur.execute("SELECT id, username FROM users WHERE role = 'admin' ORDER BY id") + admins = [{'id': r['id'], 'username': r['username']} for r in cur.fetchall()] + else: + admin_id = current_row['id'] + where_parts = ["(u.id = %s OR (u.role = 'normal' AND u.created_by_id = %s))"] + params = [admin_id, admin_id] + if search_username: + where_parts.append("u.username LIKE %s") + params.append("%" + search_username + "%") + where_sql = " AND ".join(where_parts) + cur.execute( + """SELECT u.id, u.username, u.is_admin, u.role, u.created_at, u.created_by_id, + creator.username AS creator_username + FROM users u + LEFT JOIN users creator ON creator.id = u.created_by_id + WHERE """ + where_sql + """ ORDER BY u.id LIMIT %s OFFSET %s""", + tuple(params) + (page_size, offset), + ) + rows = cur.fetchall() + cur.execute( + "SELECT COUNT(*) as total FROM users u WHERE " + where_sql, + tuple(params), + ) + total = cur.fetchone()['total'] + admins = [] + items = [ + { + 'id': r['id'], + 'username': r['username'], + 'is_admin': bool(r.get('is_admin')), + 'role': r.get('role') or 'normal', + 'created_by_id': r.get('created_by_id'), + 'creator_username': r.get('creator_username') or '', + 'created_at': r['created_at'].strftime('%Y-%m-%d %H:%M') if r.get('created_at') else '', + } + for r in rows + ] + conn.close() + return jsonify({ + 'success': True, + 'items': items, + 'total': total, + 'page': page, + 'page_size': page_size, + 'current_user_role': role, + 'admins': admins, + }) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/user', methods=['POST']) +@admin_required +def create_user(): + data = request.get_json() or {} + username = (data.get('username') or '').strip() + password = data.get('password') or '' + role, current_row = get_current_admin_role() + if not role: + return jsonify({'success': False, 'error': '需要管理员权限'}), 403 + want_role = (data.get('role') or 'normal').strip() or 'normal' + if want_role not in ('admin', 'normal'): + want_role = 'normal' + if role == 'admin' and want_role == 'admin': + return jsonify({'success': False, 'error': '仅超级管理员可创建管理员'}) + if want_role == 'admin': + want_created_by = current_row['id'] + elif role == 'super_admin': + want_created_by = data.get('created_by_id') + else: + want_created_by = current_row['id'] + if not username or not password: + return jsonify({'success': False, 'error': '用户名和密码不能为空'}) + if len(username) < 2: + return jsonify({'success': False, 'error': '用户名至少2个字符'}) + if len(password) < 6: + return jsonify({'success': False, 'error': '密码至少6个字符'}) + if want_role == 'normal' and role == 'super_admin' and want_created_by is None: + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT id FROM users WHERE role = 'admin' ORDER BY id LIMIT 1") + r = cur.fetchone() + conn.close() + want_created_by = r['id'] if r else current_row['id'] + except Exception: + want_created_by = current_row['id'] + if want_role == 'normal' and want_created_by is None: + want_created_by = current_row['id'] + is_admin = 1 if want_role in ('super_admin', 'admin') else 0 + pwd_hash = generate_password_hash(password, method='pbkdf2:sha256') + column_ids = data.get('column_ids') + if column_ids is None: + column_ids = [] + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "INSERT INTO users (username, password_hash, is_admin, role, created_by_id) VALUES (%s, %s, %s, %s, %s)", + (username, pwd_hash, is_admin, want_role, want_created_by), + ) + new_uid = cur.lastrowid + _set_user_column_permissions(cur, new_uid, column_ids) + conn.commit() + conn.close() + return jsonify({'success': True, 'msg': '用户创建成功'}) + except pymysql.IntegrityError: + return jsonify({'success': False, 'error': '用户名已存在'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/user/', methods=['PUT']) +@admin_required +def update_user(uid): + """更新用户(密码、角色)""" + data = request.get_json() or {} + password = data.get('password') + want_role = (data.get('role') or '').strip() or data.get('role') + role, current_row = get_current_admin_role() + if not role: + return jsonify({'success': False, 'error': '需要管理员权限'}), 403 + if want_role is None and not password: + return jsonify({'success': False, 'error': '请提供要修改的内容'}) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT id, role, created_by_id FROM users WHERE id = %s", (uid,)) + target = cur.fetchone() + if not target: + conn.close() + return jsonify({'success': False, 'error': '用户不存在'}) + if role == 'admin': + if target['role'] != 'normal' or target.get('created_by_id') != current_row['id']: + conn.close() + return jsonify({'success': False, 'error': '只能编辑自己创建的普通用户'}), 403 + want_role = None + else: + if target.get('role') == 'super_admin': + conn.close() + return jsonify({'success': False, 'error': '不能修改超级管理员'}) + if want_role == 'super_admin': + return jsonify({'success': False, 'error': '不能将用户设为超级管理员'}) + if want_role not in ('admin', 'normal', None, ''): + want_role = None + if password: + if len(password) < 6: + conn.close() + return jsonify({'success': False, 'error': '密码至少6个字符'}) + pwd_hash = generate_password_hash(password, method='pbkdf2:sha256') + cur.execute("UPDATE users SET password_hash = %s WHERE id = %s", (pwd_hash, uid)) + if want_role is not None and want_role != '': + is_admin = 1 if want_role == 'admin' else 0 + cur.execute( + "UPDATE users SET is_admin = %s, role = %s WHERE id = %s", + (is_admin, want_role, uid), + ) + column_ids = data.get('column_ids') + if column_ids is not None: + _set_user_column_permissions(cur, uid, column_ids) + conn.commit() + conn.close() + return jsonify({'success': True, 'msg': '更新成功'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/user/', methods=['DELETE']) +@admin_required +def delete_user(uid): + """删除用户""" + if session.get('user_id') == uid: + return jsonify({'success': False, 'error': '不能删除当前登录账号'}) + role, current_row = get_current_admin_role() + if not role: + return jsonify({'success': False, 'error': '需要管理员权限'}), 403 + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT id, role, created_by_id FROM users WHERE id = %s", (uid,)) + target = cur.fetchone() + if not target: + conn.close() + return jsonify({'success': False, 'error': '用户不存在'}) + if target.get('role') == 'super_admin': + conn.close() + return jsonify({'success': False, 'error': '不能删除超级管理员'}) + if role == 'admin': + if target.get('role') != 'normal' or target.get('created_by_id') != current_row['id']: + conn.close() + return jsonify({'success': False, 'error': '只能删除自己创建的普通用户'}), 403 + cur.execute("DELETE FROM users WHERE id = %s", (uid,)) + affected = cur.rowcount + conn.commit() + conn.close() + if affected == 0: + return jsonify({'success': False, 'error': '用户不存在'}) + return jsonify({'success': True, 'msg': '删除成功'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +# ---------- 生成历史 ---------- + +@admin_api.route('/history') +@admin_required +def history(): + """管理员分页获取所有生成记录""" + page = max(1, int(request.args.get('page', 1))) + page_size = min(50, max(10, int(request.args.get('page_size', 15)))) + offset = (page - 1) * page_size + user_id = request.args.get('user_id', type=int) + time_start = (request.args.get('time_start') or '').strip() + time_end = (request.args.get('time_end') or '').strip() + conditions, params = [], [] + if user_id: + conditions.append("h.user_id = %s") + params.append(user_id) + if time_start: + conditions.append("h.created_at >= %s") + params.append(time_start) + if time_end: + conditions.append("h.created_at <= %s") + params.append(time_end + ' 23:59:59' if len(time_end) <= 10 else time_end) + where_clause = " AND ".join(conditions) if conditions else "1=1" + params_count = params[:] + params.extend([page_size, offset]) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + """SELECT h.id, h.user_id, h.created_at, h.panel_type, h.original_urls, h.params, h.result_urls, + h.long_image_url, u.username + FROM image_history h + LEFT JOIN users u ON h.user_id = u.id + WHERE """ + where_clause + """ ORDER BY h.created_at DESC LIMIT %s OFFSET %s""", + params, + ) + rows = cur.fetchall() + cur.execute("SELECT COUNT(*) as total FROM image_history h WHERE " + where_clause, params_count) + total = cur.fetchone()['total'] + conn.close() + + def _parse_json(val, default=None): + if val is None: + return default if default is not None else [] + if isinstance(val, (list, dict)): + return val + try: + return json.loads(val) + except Exception: + return default if default is not None else [] + + items = [] + for r in rows: + items.append({ + 'id': r['id'], + 'user_id': r['user_id'], + 'username': r.get('username') or '-', + 'created_at': r['created_at'].strftime('%Y-%m-%d %H:%M') if r['created_at'] else '', + 'panel_type': r['panel_type'] or '', + 'original_urls': _parse_json(r['original_urls'], []), + 'params': _parse_json(r['params'], {}), + 'result_urls': _parse_json(r['result_urls'], []), + 'long_image_url': (r.get('long_image_url') or '').strip() or None, + }) + return jsonify({'success': True, 'items': items, 'total': total, 'page': page, 'page_size': page_size}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +# ---------- 栏目权限配置 ---------- + +@admin_api.route('/columns') +@admin_required +def list_columns(): + """获取栏目列表(用于栏目配置与用户权限选择)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT id, name, column_key, created_at FROM columns ORDER BY id" + ) + rows = cur.fetchall() + conn.close() + items = [ + { + 'id': r['id'], + 'name': r['name'] or '', + 'column_key': r['column_key'] or '', + 'created_at': r['created_at'].strftime('%Y-%m-%d %H:%M') if r.get('created_at') else '', + } + for r in rows + ] + return jsonify({'success': True, 'items': items}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/column', methods=['POST']) +@admin_required +def create_column(): + """新增栏目""" + data = request.get_json() or {} + name = (data.get('name') or '').strip() + column_key = (data.get('column_key') or '').strip() + if not name: + return jsonify({'success': False, 'error': '栏目名不能为空'}) + if not column_key: + return jsonify({'success': False, 'error': '栏目标识不能为空'}) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "INSERT INTO columns (name, column_key) VALUES (%s, %s)", + (name, column_key), + ) + cid = cur.lastrowid + conn.commit() + conn.close() + return jsonify({'success': True, 'msg': '创建成功', 'id': cid}) + except pymysql.IntegrityError: + return jsonify({'success': False, 'error': '栏目标识已存在'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/column/', methods=['PUT']) +@admin_required +def update_column(cid): + """更新栏目""" + data = request.get_json() or {} + name = (data.get('name') or '').strip() + column_key = (data.get('column_key') or '').strip() + if not name: + return jsonify({'success': False, 'error': '栏目名不能为空'}) + if not column_key: + return jsonify({'success': False, 'error': '栏目标识不能为空'}) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "UPDATE columns SET name = %s, column_key = %s WHERE id = %s", + (name, column_key, cid), + ) + if cur.rowcount == 0: + conn.close() + return jsonify({'success': False, 'error': '栏目不存在'}) + conn.commit() + conn.close() + return jsonify({'success': True, 'msg': '更新成功'}) + except pymysql.IntegrityError: + return jsonify({'success': False, 'error': '栏目标识已存在'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/column/', methods=['DELETE']) +@admin_required +def delete_column(cid): + """删除栏目(会同步删除用户栏目权限关联)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("DELETE FROM user_column_permission WHERE column_id = %s", (cid,)) + cur.execute("DELETE FROM columns WHERE id = %s", (cid,)) + if cur.rowcount == 0: + conn.close() + return jsonify({'success': False, 'error': '栏目不存在'}) + conn.commit() + conn.close() + return jsonify({'success': True, 'msg': '删除成功'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/user//columns') +@admin_required +def get_user_columns(uid): + """获取某用户的栏目权限 ID 列表(编辑用户时回显)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT column_id FROM user_column_permission WHERE user_id = %s", + (uid,), + ) + rows = cur.fetchall() + conn.close() + column_ids = [r['column_id'] for r in rows] + return jsonify({'success': True, 'column_ids': column_ids}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/user//column-permissions') +@admin_required +def get_user_column_permissions(uid): + """根据用户获取其拥有的栏目权限详细信息""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + """ + SELECT c.id, c.name, c.column_key, c.created_at + FROM user_column_permission ucp + JOIN columns c ON c.id = ucp.column_id + WHERE ucp.user_id = %s + ORDER BY c.id + """, + (uid,), + ) + rows = cur.fetchall() + conn.close() + items = [ + { + 'id': r['id'], + 'name': r['name'] or '', + 'column_key': r['column_key'] or '', + 'created_at': r['created_at'].strftime('%Y-%m-%d %H:%M') if r.get('created_at') else '', + } + for r in rows + ] + return jsonify({'success': True, 'items': items}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +def _set_user_column_permissions(cur, user_id, column_ids): + """设置用户栏目权限:先删后插。cur 为已打开的游标。""" + cur.execute("DELETE FROM user_column_permission WHERE user_id = %s", (user_id,)) + if column_ids: + column_ids = [int(x) for x in column_ids if x] + for cid in column_ids: + cur.execute( + "INSERT INTO user_column_permission (user_id, column_id) VALUES (%s, %s)", + (user_id, cid), + ) + + +# ---------- 版本管理(web_config) ---------- + +@admin_api.route('/versions') +@admin_required +def list_versions(): + """获取版本列表""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT id, version, file_url, created_at FROM web_config ORDER BY created_at DESC" + ) + rows = cur.fetchall() + conn.close() + items = [ + { + 'id': r['id'], + 'version': r['version'] or '', + 'file_url': r['file_url'] or '', + 'created_at': r['created_at'].strftime('%Y-%m-%d %H:%M') if r.get('created_at') else '', + } + for r in rows + ] + return jsonify({'success': True, 'items': items}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@admin_api.route('/version', methods=['POST']) +@admin_required +def upload_version(): + """接收版本号 + zip 文件,上传到 OSS,写入 web_config""" + version = (request.form.get('version') or '').strip() + if not version: + return jsonify({'success': False, 'error': '请填写版本号'}) + file_storage = request.files.get('file') + if not file_storage or file_storage.filename == '': + return jsonify({'success': False, 'error': '请选择要上传的 zip 压缩包'}) + if not (file_storage.filename or '').lower().endswith('.zip'): + return jsonify({'success': False, 'error': '仅支持 .zip 格式'}) + try: + file_content = file_storage.read() + if not file_content: + return jsonify({'success': False, 'error': '文件为空'}) + safe_key = _safe_version_key(version) + key = f"{bucket_path}versions/{safe_key}.zip" + file_url = oss_upload_file(file_content, key) + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "INSERT INTO web_config (version, file_url) VALUES (%s, %s)", + (version, file_url) + ) + conn.commit() + conn.close() + return jsonify({ + 'success': True, + 'version': version, + 'file_url': file_url, + 'msg': '上传成功', + }) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +# ---------- 数据去重总数据 ---------- + +@admin_api.route('/dedupe-total-data') +@admin_required +def list_dedupe_total_data(): + page = max(1, int(request.args.get('page', 1))) + page_size = min(100, max(1, int(request.args.get('page_size', 15)))) + keyword = (request.args.get('keyword') or '').strip() + data, error_response, status = _proxy_backend_java( + 'GET', + '/api/admin/dedupe-total-data', + params={'page': page, 'pageSize': page_size, 'keyword': keyword}, + ) + if error_response is not None: + return error_response, status + payload = data.get('data') or {} + items = [ + { + 'id': item.get('id'), + 'data_value': item.get('dataValue') or '', + 'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16], + } + for item in (payload.get('items') or []) + ] + return jsonify({ + 'success': True, + 'items': items, + 'total': payload.get('total') or 0, + 'page': payload.get('page') or page, + 'page_size': payload.get('pageSize') or page_size, + }) + + +@admin_api.route('/dedupe-total-data/import', methods=['POST']) +@admin_required +def import_dedupe_total_data(): + file_storage = request.files.get('file') + if not file_storage or file_storage.filename == '': + return jsonify({'success': False, 'error': '请选择 Excel 文件'}) + files = { + 'file': (file_storage.filename, file_storage.stream, file_storage.mimetype or 'application/octet-stream') + } + result, error_response, status = _proxy_backend_java( + 'POST', + '/api/admin/dedupe-total-data/import', + files=files, + ) + if error_response is not None: + return error_response, status + summary = result.get('data') or {} + return jsonify({ + 'success': True, + 'msg': result.get('message') or '导入成功', + 'summary': { + 'total_rows': summary.get('totalRows') or 0, + 'asin_count': summary.get('asinCount') or 0, + 'inserted_count': summary.get('insertedCount') or 0, + 'skipped_count': summary.get('skippedCount') or 0, + }, + }) + + +@admin_api.route('/dedupe-total-data', methods=['POST']) +@admin_required +def create_dedupe_total_data(): + data = request.get_json() or {} + payload = {'dataValue': (data.get('data_value') or '').strip()} + result, error_response, status = _proxy_backend_java( + 'POST', + '/api/admin/dedupe-total-data', + json_data=payload, + ) + if error_response is not None: + return error_response, status + item = result.get('data') or {} + return jsonify({ + 'success': True, + 'msg': result.get('message') or '创建成功', + 'item': { + 'id': item.get('id'), + 'data_value': item.get('dataValue') or '', + 'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16], + }, + }) + + +@admin_api.route('/dedupe-total-data/', methods=['PUT']) +@admin_required +def update_dedupe_total_data(item_id): + data = request.get_json() or {} + payload = {'dataValue': (data.get('data_value') or '').strip()} + result, error_response, status = _proxy_backend_java( + 'PUT', + f'/api/admin/dedupe-total-data/{item_id}', + json_data=payload, + ) + if error_response is not None: + return error_response, status + item = result.get('data') or {} + return jsonify({ + 'success': True, + 'msg': result.get('message') or '更新成功', + 'item': { + 'id': item.get('id'), + 'data_value': item.get('dataValue') or '', + 'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16], + }, + }) + + +@admin_api.route('/dedupe-total-data/', methods=['DELETE']) +@admin_required +def delete_dedupe_total_data(item_id): + result, error_response, status = _proxy_backend_java( + 'DELETE', + f'/api/admin/dedupe-total-data/{item_id}', + ) + if error_response is not None: + return error_response, status + return jsonify({ + 'success': True, + 'msg': result.get('message') or '删除成功', + }) diff --git a/backend/blueprints/auth.py b/backend/blueprints/auth.py new file mode 100644 index 0000000..5a459c1 --- /dev/null +++ b/backend/blueprints/auth.py @@ -0,0 +1,74 @@ +""" +认证蓝图:登录、登出、登录状态校验 +""" +from flask import Blueprint, request, redirect, url_for, session, jsonify +from werkzeug.security import check_password_hash + +from utils.db import get_db +from utils.auth import login_required, is_session_user_valid +from utils.render import render_html + +auth = Blueprint('auth', __name__, url_prefix='') + + +@auth.route('/login', methods=['GET', 'POST']) +def login(): + if session.get('user_id') and is_session_user_valid(): + return redirect(url_for('main.admin_page')) + if request.method == 'POST': + data = request.get_json() if request.is_json else request.form + username = (data.get('username') or '').strip() + password = data.get('password') or '' + if not username or not password: + if request.is_json: + return jsonify({'success': False, 'error': '请输入用户名和密码'}) + return render_html('login.html', error='请输入用户名和密码') + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT id, password_hash, machine, is_admin FROM users WHERE username = %s", + (username,) + ) + row = cur.fetchone() + if row and check_password_hash(row['password_hash'], password): + session.permanent = True + session['user_id'] = row['id'] + session['username'] = username + if request.is_json: + return jsonify({'success': True, 'redirect': url_for('main.admin_page')}) + return redirect(url_for('main.admin_page')) + conn.close() + except Exception as e: + if request.is_json: + return jsonify({'success': False, 'error': str(e)}) + return render_html('login.html', error='登录失败,请稍后重试') + if request.is_json: + return jsonify({'success': False, 'error': '用户名或密码错误'}) + return render_html('login.html', error='用户名或密码错误') + return render_html('login.html') + + +@auth.route('/api/auth/check') +@login_required +def api_auth_check(): + """校验登录状态,用于页面加载时判断是否已登录""" + if not session.get('user_id'): + return jsonify({'logged_in': False}) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT machine, is_admin FROM users WHERE id = %s", (session['user_id'],)) + row = cur.fetchone() + conn.close() + if not row: + return jsonify({'logged_in': False}) + except Exception: + return jsonify({'logged_in': False}) + return jsonify({'logged_in': True, 'redirect': url_for('main.admin_page')}) + + +@auth.route('/logout') +def logout(): + session.clear() + return redirect(url_for('auth.login')) diff --git a/backend/blueprints/main.py b/backend/blueprints/main.py new file mode 100644 index 0000000..7bbcdfc --- /dev/null +++ b/backend/blueprints/main.py @@ -0,0 +1,38 @@ +""" +主页面蓝图:首页、管理后台页、静态文件 +""" +import os +from flask import Blueprint, redirect, url_for, send_file, session + +from utils.auth import login_required, admin_required, is_session_user_valid +from utils.render import render_html + +main = Blueprint('main', __name__, url_prefix='') + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +STATIC_DIR = os.path.join(BASE_DIR, 'static') + + +@main.route('/') +def index(): + if session.get('user_id') and is_session_user_valid(): + return redirect(url_for('main.admin_page')) + return redirect(url_for('auth.login')) + + +@main.route('/admin') +@login_required +@admin_required +def admin_page(): + return render_html('admin.html') + + +@main.route('/static/') +def serve_static(filename): + """提供 static 目录及子目录下的静态文件访问""" + filepath = os.path.normpath(os.path.join(STATIC_DIR, filename)) + static_abs = os.path.abspath(STATIC_DIR) + file_abs = os.path.abspath(filepath) + if not file_abs.startswith(static_abs) or not os.path.isfile(file_abs): + return '', 404 + return send_file(file_abs, as_attachment=False) diff --git a/backend/blueprints/version.py b/backend/blueprints/version.py new file mode 100644 index 0000000..300d3cc --- /dev/null +++ b/backend/blueprints/version.py @@ -0,0 +1,40 @@ +""" +版本公开 API 蓝图:当前版本、最新版本下载链接 +""" +import os +from flask import Blueprint, jsonify + +from utils.db import get_db + +version_bp = Blueprint('version', __name__, url_prefix='/api') + + +@version_bp.route('/version') +def api_version(): + """检测更新:返回当前版本及可选的最新版本信息""" + return jsonify({ + 'version': os.environ.get('APP_VERSION', '1.0.0'), + 'desc': '', + 'url': os.environ.get('APP_UPDATE_URL', ''), + }) + + +@version_bp.route('/version/latest') +def api_version_latest(): + """GET 获取最新版本的下载链接(按创建时间取最新一条)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT version, file_url FROM web_config ORDER BY created_at DESC LIMIT 1" + ) + row = cur.fetchone() + conn.close() + if not row: + return jsonify({'version': None, 'file_url': None}) + return jsonify({ + 'version': row['version'] or '', + 'file_url': row['file_url'] or '', + }) + except Exception as e: + return jsonify({'error': str(e)}), 500 diff --git a/backend/config.py b/backend/config.py new file mode 100644 index 0000000..f32d0ac --- /dev/null +++ b/backend/config.py @@ -0,0 +1,38 @@ +base_url = "https://api.coze.cn/v1" +coze_token = "sat_12nW40INoJxArrDXbY4lSCoudbqkOYTcphC99BP2efWyzxmsk4q81WDX3ezWgqZ5" +workflow_id = "7608812635877900322" +STITCH_WORKFLOW_ID = "7608813873483300907" + + +# MySQL 配置 +mysql_host = "8.136.19.173" +mysql_user = "aiimage" +mysql_password = "WTFrb5y6hNLz6hNy" # 请修改为您的数据库密码 +mysql_database = "aiimage" + + +cache_path = "./user_data" + +region = "cn-hangzhou" +endpoint = "oss-cn-hangzhou.aliyuncs.com" +bucket = "nanri-ai-images" +accessKeyId = "LTAI5tNpyvzMNz9f2dHarsm8" +accessKeySecret = "bQSZnFH455i8tzyOgeahJmUzwmhynz" +bucket_path = "nanri-image/" + +file_url_pre = f"https://{bucket}.oss-cn-hangzhou.aliyuncs.com/" + +import os +backend_java_base_url = os.environ.get('BACKEND_JAVA_BASE_URL', 'http://127.0.0.1:18080').rstrip('/') +os.environ['OSS_ACCESS_KEY_ID'] = accessKeyId +os.environ['OSS_ACCESS_KEY_SECRET'] = accessKeySecret +os.environ['SECRET_KEY'] = "ddffc7c1d02121d9554d7b080b2511b6" + + +debug = True +version = "1.0.0" +APP_UPDATE_URL = "" +os.environ['APP_VERSION'] = version +os.environ['APP_UPDATE_URL'] = version + + diff --git a/backend/requirement.txt b/backend/requirement.txt new file mode 100644 index 0000000..1eb81b2 --- /dev/null +++ b/backend/requirement.txt @@ -0,0 +1,61 @@ +alibabacloud-oss-v2==1.2.4 +annotated-types==0.7.0 +anyio==4.12.1 +Authlib==1.6.8 +blinker==1.9.0 +bottle==0.13.4 +certifi==2026.1.4 +cffi==2.0.0 +charset-normalizer==3.4.4 +click==8.1.8 +clr_loader==0.2.10 +colorama==0.4.6 +cozepy==0.20.0 +crcmod-plus==2.3.1 +cryptography==41.0.0 +distro==1.9.0 +et_xmlfile==2.0.0 +exceptiongroup==1.3.1 +Flask==3.1.3 +flask-cors==6.0.2 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.11 +importlib_metadata==8.7.1 +itsdangerous==2.2.0 +Jinja2==3.1.6 +MarkupSafe==3.0.3 +Nuitka==2.8.6 +numpy==1.25.2 +openpyxl==3.1.5 +ordered-set==4.1.0 +pandas==2.3.3 +pillow==11.3.0 +pip==26.0.1 +proxy_tools==0.1.0 +psutil==7.2.2 +pycparser==2.23 +pycryptodome==3.23.0 +pydantic==2.12.5 +pydantic_core==2.41.5 +PyMySQL==1.1.2 +PyQt5==5.15.11 +PyQt5-Qt5==5.15.2 +PyQt5_sip==12.17.1 +python-dateutil==2.9.0.post0 +pythonnet==3.0.5 +pytz==2026.1.post1 +pywebview==6.1 +requests==2.32.5 +setuptools==80.9.0 +six==1.17.0 +typing_extensions==4.15.0 +typing-inspection==0.4.2 +tzdata==2025.3 +urllib3==2.6.3 +websockets==14.2 +Werkzeug==3.1.6 +wheel==0.45.1 +zipp==3.23.0 +zstandard==0.25.0 diff --git a/backend/static/bg.jpg b/backend/static/bg.jpg new file mode 100644 index 0000000..de6e38d Binary files /dev/null and b/backend/static/bg.jpg differ diff --git a/backend/tool/__pycache__/devices.cpython-39.pyc b/backend/tool/__pycache__/devices.cpython-39.pyc new file mode 100644 index 0000000..efea90f Binary files /dev/null and b/backend/tool/__pycache__/devices.cpython-39.pyc differ diff --git a/backend/tool/devices.py b/backend/tool/devices.py new file mode 100644 index 0000000..a82b5d5 --- /dev/null +++ b/backend/tool/devices.py @@ -0,0 +1,249 @@ +import hashlib +import platform +import subprocess +import uuid +import os +from typing import Optional + + +class DeviceIDGenerator: + """ + Windows设备唯一ID生成器 + 通过收集多个硬件特征来生成稳定的设备唯一标识符 + """ + + def __init__(self, use_cache: bool = True, cache_file: str = ".device_id"): + """ + 初始化设备ID生成器 + + Args: + use_cache: 是否使用本地缓存 + cache_file: 缓存文件名 + """ + self.use_cache = use_cache + self.cache_file = cache_file + + def _run_wmic_command(self, command: str) -> Optional[str]: + """ + 执行WMIC命令并返回结果 + + Args: + command: WMIC命令 + + Returns: + 命令执行结果,失败则返回None + """ + try: + result = subprocess.run( + command, + shell=True, + capture_output=True, + text=True, + timeout=10 + ) + if result.returncode == 0 and result.stdout.strip(): + return result.stdout.strip() + except (subprocess.TimeoutExpired, Exception): + pass + return None + + def _get_motherboard_serial(self) -> Optional[str]: + """获取主板序列号""" + return self._run_wmic_command("wmic baseboard get serialnumber /value") + + def _get_cpu_id(self) -> Optional[str]: + """获取CPU ID""" + return self._run_wmic_command("wmic cpu get processorid /value") + + def _get_bios_serial(self) -> Optional[str]: + """获取BIOS序列号""" + return self._run_wmic_command("wmic bios get serialnumber /value") + + def _get_disk_serial(self) -> Optional[str]: + """获取系统盘序列号""" + return self._run_wmic_command("wmic diskdrive get serialnumber /value") + + def _get_machine_guid(self) -> Optional[str]: + """获取Windows机器GUID""" + try: + result = subprocess.run( + 'reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography" /v MachineGuid', + shell=True, + capture_output=True, + text=True, + timeout=10 + ) + if result.returncode == 0: + for line in result.stdout.split('\n'): + if 'MachineGuid' in line: + return line.split()[-1] + except Exception: + pass + return None + + def _extract_value(self, wmic_output: str) -> str: + """从WMIC输出中提取实际值""" + if not wmic_output: + return "" + + lines = wmic_output.split('\n') + for line in lines: + if '=' in line and not line.strip().endswith('='): + return line.split('=', 1)[1].strip() + return "" + + def _collect_hardware_info(self) -> dict: + """ + 收集硬件信息 + + Returns: + 包含各种硬件信息的字典 + """ + hardware_info = {} + + # 主板序列号 + motherboard = self._get_motherboard_serial() + hardware_info['motherboard'] = self._extract_value(motherboard) if motherboard else "" + + # CPU ID + cpu_id = self._get_cpu_id() + hardware_info['cpu'] = self._extract_value(cpu_id) if cpu_id else "" + + # BIOS序列号 + bios = self._get_bios_serial() + hardware_info['bios'] = self._extract_value(bios) if bios else "" + + # 硬盘序列号 + disk = self._get_disk_serial() + hardware_info['disk'] = self._extract_value(disk) if disk else "" + + # Windows机器GUID + machine_guid = self._get_machine_guid() + hardware_info['machine_guid'] = machine_guid if machine_guid else "" + + # 计算机名称 + hardware_info['computer_name'] = platform.node() + + # MAC地址(作为备用) + hardware_info['mac_address'] = ':'.join(['{:02x}'.format((uuid.getnode() >> elements) & 0xff) + for elements in range(0, 2*6, 2)][::-1]) + + return hardware_info + + def _generate_device_id(self, hardware_info: dict) -> str: + """ + 基于硬件信息生成设备ID + + Args: + hardware_info: 硬件信息字典 + + Returns: + 32位十六进制设备ID + """ + # 过滤掉空值,并按键排序确保一致性 + filtered_info = {k: v for k, v in hardware_info.items() if v and v.strip()} + + # 如果没有任何硬件信息,使用MAC地址作为后备方案 + if not filtered_info: + filtered_info = {'mac_address': hardware_info.get('mac_address', str(uuid.getnode()))} + + # 将所有信息连接成字符串 + info_string = '|'.join(f"{k}:{v}" for k, v in sorted(filtered_info.items())) + + # 使用SHA256生成哈希值 + hash_object = hashlib.sha256(info_string.encode('utf-8')) + device_id = hash_object.hexdigest() + + return device_id + + def _load_cached_device_id(self) -> Optional[str]: + """从缓存文件加载设备ID""" + try: + if os.path.exists(self.cache_file): + with open(self.cache_file, 'r', encoding='utf-8') as f: + cached_id = f.read().strip() + if len(cached_id) == 64: # SHA256哈希长度 + return cached_id + except Exception: + pass + return None + + def _save_device_id_to_cache(self, device_id: str) -> None: + """将设备ID保存到缓存文件""" + try: + with open(self.cache_file, 'w', encoding='utf-8') as f: + f.write(device_id) + except Exception: + pass + + def get_device_id(self) -> str: + """ + 获取设备唯一ID + + Returns: + 64字符的十六进制设备ID + """ + # 如果启用缓存,先尝试从缓存加载 + if self.use_cache: + cached_id = self._load_cached_device_id() + if cached_id: + return cached_id + + # 收集硬件信息 + hardware_info = self._collect_hardware_info() + + # 生成设备ID + device_id = self._generate_device_id(hardware_info) + + # 保存到缓存 + if self.use_cache: + self._save_device_id_to_cache(device_id) + + return device_id + + def get_device_id_short(self, length: int = 16) -> str: + """ + 获取短版本的设备ID + + Args: + length: 返回ID的长度 + + Returns: + 指定长度的设备ID + """ + full_id = self.get_device_id() + return full_id[:length] + + def get_hardware_info(self) -> dict: + """ + 获取硬件信息(用于调试) + + Returns: + 硬件信息字典 + """ + return self._collect_hardware_info() + + +# 使用示例 +def main(): + """使用示例""" + # 创建设备ID生成器实例 + device_generator = DeviceIDGenerator() + + # 获取完整设备ID(64字符) + device_id = device_generator.get_device_id() + print(f"完整设备ID: {device_id}") + + # 获取短版本设备ID(16字符) + short_id = device_generator.get_device_id_short(16) + print(f"短设备ID: {short_id}") + + # 查看硬件信息(调试用) + hardware_info = device_generator.get_hardware_info() + print("\n硬件信息:") + for key, value in hardware_info.items(): + print(f" {key}: {value}") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/backend/utils/__init__.py b/backend/utils/__init__.py new file mode 100644 index 0000000..ea41342 --- /dev/null +++ b/backend/utils/__init__.py @@ -0,0 +1 @@ +# Utils 包:数据库、认证装饰器、模板渲染等 diff --git a/backend/utils/__pycache__/__init__.cpython-311.pyc b/backend/utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..bebca67 Binary files /dev/null and b/backend/utils/__pycache__/__init__.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/__init__.cpython-312.pyc b/backend/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..ac66fbc Binary files /dev/null and b/backend/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/backend/utils/__pycache__/__init__.cpython-39.pyc b/backend/utils/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..5e4624c Binary files /dev/null and b/backend/utils/__pycache__/__init__.cpython-39.pyc differ diff --git a/backend/utils/__pycache__/auth.cpython-311.pyc b/backend/utils/__pycache__/auth.cpython-311.pyc new file mode 100644 index 0000000..3b0f649 Binary files /dev/null and b/backend/utils/__pycache__/auth.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/auth.cpython-312.pyc b/backend/utils/__pycache__/auth.cpython-312.pyc new file mode 100644 index 0000000..680ff01 Binary files /dev/null and b/backend/utils/__pycache__/auth.cpython-312.pyc differ diff --git a/backend/utils/__pycache__/auth.cpython-39.pyc b/backend/utils/__pycache__/auth.cpython-39.pyc new file mode 100644 index 0000000..f652ac1 Binary files /dev/null and b/backend/utils/__pycache__/auth.cpython-39.pyc differ diff --git a/backend/utils/__pycache__/db.cpython-311.pyc b/backend/utils/__pycache__/db.cpython-311.pyc new file mode 100644 index 0000000..2115e39 Binary files /dev/null and b/backend/utils/__pycache__/db.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/db.cpython-312.pyc b/backend/utils/__pycache__/db.cpython-312.pyc new file mode 100644 index 0000000..fef6ce0 Binary files /dev/null and b/backend/utils/__pycache__/db.cpython-312.pyc differ diff --git a/backend/utils/__pycache__/db.cpython-39.pyc b/backend/utils/__pycache__/db.cpython-39.pyc new file mode 100644 index 0000000..d80fda9 Binary files /dev/null and b/backend/utils/__pycache__/db.cpython-39.pyc differ diff --git a/backend/utils/__pycache__/helpers.cpython-311.pyc b/backend/utils/__pycache__/helpers.cpython-311.pyc new file mode 100644 index 0000000..a0229d1 Binary files /dev/null and b/backend/utils/__pycache__/helpers.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/render.cpython-311.pyc b/backend/utils/__pycache__/render.cpython-311.pyc new file mode 100644 index 0000000..3640106 Binary files /dev/null and b/backend/utils/__pycache__/render.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/render.cpython-312.pyc b/backend/utils/__pycache__/render.cpython-312.pyc new file mode 100644 index 0000000..71c8de0 Binary files /dev/null and b/backend/utils/__pycache__/render.cpython-312.pyc differ diff --git a/backend/utils/__pycache__/render.cpython-39.pyc b/backend/utils/__pycache__/render.cpython-39.pyc new file mode 100644 index 0000000..4c1dcd1 Binary files /dev/null and b/backend/utils/__pycache__/render.cpython-39.pyc differ diff --git a/backend/utils/auth.py b/backend/utils/auth.py new file mode 100644 index 0000000..efe8eb3 --- /dev/null +++ b/backend/utils/auth.py @@ -0,0 +1,81 @@ +""" +认证装饰器与 session 校验 +""" +from functools import wraps +from flask import request, redirect, url_for, session, jsonify + +from utils.db import get_db + + +def is_session_user_valid(): + """校验 session 中的 user_id 是否在数据库中仍存在;不存在则清除 session 并返回 False""" + uid = session.get('user_id') + if not uid: + return False + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT id FROM users WHERE id = %s", (uid,)) + row = cur.fetchone() + conn.close() + if not row: + session.clear() + return False + return True + except Exception: + session.clear() + return False + + +def get_current_admin_role(): + """获取当前登录用户的管理角色:super_admin / admin / None(非管理员)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute( + "SELECT id, username, is_admin, role, created_by_id FROM users WHERE id = %s", + (session['user_id'],) + ) + row = cur.fetchone() + conn.close() + if not row or not row.get('is_admin'): + return None, None + return row.get('role') or ('super_admin' if row.get('created_by_id') is None else 'admin'), row + except Exception: + return None, None + + +def login_required(f): + @wraps(f) + def decorated(*args, **kwargs): + if not session.get('user_id') or not is_session_user_valid(): + if request.headers.get('X-Requested-With') == 'XMLHttpRequest': + return jsonify({'success': False, 'error': '未登录'}), 401 + return redirect(url_for('auth.login')) + return f(*args, **kwargs) + return decorated + + +def admin_required(f): + @wraps(f) + def decorated(*args, **kwargs): + if not session.get('user_id'): + if request.headers.get('X-Requested-With') == 'XMLHttpRequest': + return jsonify({'success': False, 'error': '未登录'}), 401 + return redirect(url_for('auth.login')) + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT is_admin, role FROM users WHERE id = %s", (session['user_id'],)) + row = cur.fetchone() + conn.close() + if not row or not row.get('is_admin'): + if request.headers.get('X-Requested-With') == 'XMLHttpRequest': + return jsonify({'success': False, 'error': '需要管理员权限'}), 403 + return redirect(url_for('main.admin_page')) + except Exception as e: + if request.headers.get('X-Requested-With') == 'XMLHttpRequest': + return jsonify({'success': False, 'error': str(e)}), 500 + return redirect(url_for('main.admin_page')) + return f(*args, **kwargs) + return decorated diff --git a/backend/utils/db.py b/backend/utils/db.py new file mode 100644 index 0000000..bb156fd --- /dev/null +++ b/backend/utils/db.py @@ -0,0 +1,140 @@ +""" +数据库连接与初始化 +""" +import os +import pymysql +from werkzeug.security import generate_password_hash + +try: + from config import mysql_host, mysql_user, mysql_password, mysql_database +except ImportError: + mysql_host = os.environ.get('MYSQL_HOST', 'localhost') + mysql_user = os.environ.get('MYSQL_USER', 'root') + mysql_password = os.environ.get('MYSQL_PASSWORD', '') + mysql_database = os.environ.get('MYSQL_DATABASE', 'maixiang_ai') + + +def get_db(): + return pymysql.connect( + host=mysql_host, + user=mysql_user, + password=mysql_password, + database=mysql_database, + charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor + ) + + +def _create_initial_admin(): + """若没有任何管理员,则创建默认超级管理员(首次启动时,仅一个)""" + try: + conn = get_db() + with conn.cursor() as cur: + cur.execute("SELECT id FROM users WHERE role = 'super_admin' LIMIT 1") + if cur.fetchone(): + conn.close() + return + admin_user = os.environ.get('ADMIN_USER', 'admin') + admin_pwd = os.environ.get('ADMIN_PASSWORD', 'admin123') + pwd_hash = generate_password_hash(admin_pwd, method='pbkdf2:sha256') + cur.execute( + "INSERT INTO users (username, password_hash, is_admin, role) VALUES (%s, %s, 1, 'super_admin')", + (admin_user, pwd_hash) + ) + conn.commit() + conn.close() + except Exception: + pass + + +def init_db(): + """初始化数据库表,若不存在则创建""" + conn = pymysql.connect( + host=mysql_host, + user=mysql_user, + password=mysql_password, + charset='utf8mb4' + ) + try: + with conn.cursor() as cur: + cur.execute(f"CREATE DATABASE IF NOT EXISTS `{mysql_database}` DEFAULT CHARSET utf8mb4") + cur.execute(f"USE `{mysql_database}`") + cur.execute(""" + CREATE TABLE IF NOT EXISTS users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(64) NOT NULL UNIQUE, + password_hash VARCHAR(256) NOT NULL, + is_admin TINYINT(1) DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + """) + cur.execute(""" + CREATE TABLE IF NOT EXISTS image_history ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + panel_type VARCHAR(64) DEFAULT '', + original_urls JSON, + params JSON, + result_urls JSON, + long_image_url VARCHAR(1024) DEFAULT NULL, + INDEX idx_user_created (user_id, created_at DESC) + ) + """) + try: + cur.execute("ALTER TABLE image_history ADD COLUMN long_image_url VARCHAR(1024) DEFAULT NULL") + except Exception: + pass + try: + cur.execute("ALTER TABLE users ADD COLUMN machine VARCHAR(64) DEFAULT NULL") + except Exception: + pass + try: + cur.execute("ALTER TABLE users ADD COLUMN role VARCHAR(20) DEFAULT 'normal'") + except Exception: + pass + try: + cur.execute("ALTER TABLE users ADD COLUMN created_by_id INT NULL") + except Exception: + pass + cur.execute(""" + CREATE TABLE IF NOT EXISTS web_config ( + id INT AUTO_INCREMENT PRIMARY KEY, + version VARCHAR(64) NOT NULL, + file_url VARCHAR(1024) NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + """) + cur.execute(""" + CREATE TABLE IF NOT EXISTS columns ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(128) NOT NULL COMMENT '栏目名', + column_key VARCHAR(64) NOT NULL COMMENT '栏目标识', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY uk_column_key (column_key) + ) + """) + cur.execute(""" + CREATE TABLE IF NOT EXISTS user_column_permission ( + user_id INT NOT NULL, + column_id INT NOT NULL, + PRIMARY KEY (user_id, column_id), + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + FOREIGN KEY (column_id) REFERENCES columns(id) ON DELETE CASCADE + ) + """) + try: + cur.execute("UPDATE users SET role = 'normal' WHERE (role IS NULL OR role = '') AND (is_admin = 0 OR is_admin IS NULL)") + cur.execute("SELECT MIN(id) AS mid FROM users WHERE is_admin = 1") + row = cur.fetchone() + if row and row.get('mid'): + mid = row['mid'] + cur.execute("UPDATE users SET role = 'super_admin' WHERE id = %s", (mid,)) + cur.execute("UPDATE users SET role = 'admin' WHERE is_admin = 1 AND id != %s", (mid,)) + cur.execute("UPDATE users SET created_by_id = %s WHERE role = 'admin' AND (created_by_id IS NULL)", (mid,)) + except Exception: + pass + conn.commit() + finally: + conn.close() + _create_initial_admin() diff --git a/backend/utils/render.py b/backend/utils/render.py new file mode 100644 index 0000000..745e027 --- /dev/null +++ b/backend/utils/render.py @@ -0,0 +1,22 @@ +""" +模板渲染:支持加密 HTML 解密后渲染 +""" +import os +from flask import render_template, render_template_string + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +def render_html(template_name: str, **context): + """读取 HTML 模板:若为加密文件则先解密,再渲染。未加密或解密失败时按明文渲染。""" + path = os.path.join(BASE_DIR, "web_source", template_name) + if not os.path.isfile(path): + return render_template(template_name, **context) + with open(path, "rb") as f: + raw = f.read() + try: + from html_crypto import decrypt + content = decrypt(raw).decode("utf-8") + except Exception: + content = raw.decode("utf-8", errors="replace") + return render_template_string(content, **context) diff --git a/backend/web_source/admin.html b/backend/web_source/admin.html new file mode 100644 index 0000000..2f6a304 --- /dev/null +++ b/backend/web_source/admin.html @@ -0,0 +1,1121 @@ + + + + + + 管理后台 - 南日AI + + + + +

管理后台

+ +
+
用户管理
+
栏目权限配置
+
数据去重总数据
+
查看生成记录
+
版本管理
+
+ + +
+
+

创建用户

+

无注册入口,仅管理员可在此创建用户。层级:超级管理员 → 管理员 → 普通号。

+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ +
+ +

+
+ +
+

用户列表

+
+
+ + +
+ + +
+ + + + + + + + + + + + +
ID用户名角色所属管理员创建时间操作
+ +
+
+ + +
+
+

新增栏目

+
+
+ + +
+
+ + +
+ +
+

+
+
+

栏目列表

+ + + + + + + + + + + +
ID栏目名栏目标识创建时间操作
+
+
+ + +
+
+

发布新版本

+
+ + +
+
+ + +
+ +

+
+
+

版本列表

+ + + + + + + + + + +
版本号下载链接发布时间操作
+
+
+ + +
+
+

新增总数据

+
+
+ + +
+ +
+

+
+
+

总数据列表

+
+
+ + +
+ +
+ + + + + + + + + + +
ID总数据值创建时间操作
+ +
+
+ + +
+
+

筛选条件

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+

生成记录

+ + + + + + + + + + + +
ID用户类型创建时间结果预览
+ +
+
+ + + + + + + + + + + + + diff --git a/backend/web_source/login.html b/backend/web_source/login.html new file mode 100644 index 0000000..6e2b784 --- /dev/null +++ b/backend/web_source/login.html @@ -0,0 +1,164 @@ + + + + + + 登录 - 南日AI + + + +
+ 南日AI +
+ + + + + diff --git a/frontend-vue/src/pages/brand/components/BrandConvertTab.vue b/frontend-vue/src/pages/brand/components/BrandConvertTab.vue index 85d2977..3fd8a4c 100644 --- a/frontend-vue/src/pages/brand/components/BrandConvertTab.vue +++ b/frontend-vue/src/pages/brand/components/BrandConvertTab.vue @@ -4,142 +4,167 @@
+ +
+
转换结果
+ +
+
+
+ 已处理文件 + {{ convertSummary.total }} +
+
+ 成功结果 + {{ convertSummary.successCount }} +
+
+ 失败文件 + {{ convertSummary.failedCount }}
- -
-
转换说明
-
- +
+
+ 生成的结果压缩包列表 +
- -
+
+ 暂无转换结果,完成格式转换后会在这里展示结果压缩包 +
-
- - - {{ convertRunning ? '正在生成并上传结果,请稍候…' : '选择文件后即可执行格式转换,结果会显示在右侧供下载' }} - -
- +
    +
  • +
    + {{ item.sourceFilename || '-' }} +
    压缩包文件:{{ item.outputFilename }}
    +
    错误信息:{{ item.error }}
    +
    -
    -
    转换结果
    - -
    -
    -
    - 已处理文件 - {{ convertSummary.total }} -
    -
    - 成功结果 - {{ convertSummary.successCount }} -
    -
    - 失败文件 - {{ convertSummary.failedCount }} +
    + + {{ item.success ? '已完成' : '失败' }} + + + +
    +
  • +
- -
-
- 生成的 txt 列表 -
- -
- 暂无转换结果,完成格式转换后会在这里展示输出文件 -
- -
    -
  • -
    - {{ item.sourceFilename || '-' }} -
    输出文件:{{ item.outputFilename }}
    -
    错误信息:{{ item.error }}
    -
    - -
    - - {{ item.success ? '已完成' : '失败' }} - - - -
    -
  • -
-
- - + @@ -148,53 +173,89 @@ import { computed, onMounted, ref } from 'vue' import { ElMessage } from 'element-plus' import BrandTopBar from './BrandTopBar.vue' -import { expandBrandFolder } from '@/shared/api/brand' -import { deleteConvertHistory, getConvertHistory, getConvertTemplates, runConvert, type ConvertResultItem, type ConvertRunVo, type ConvertTemplateVo } from '@/shared/api/java-modules' +import { expandBrandFolder, getBrandTemplateXlsxUrl, getBrandTemplateZipUrl } from '@/shared/api/brand' +import type { BrandExpandFolderItem } from '@/shared/api/brand' +import { + deleteConvertHistory, + deleteConvertTemplate, + getConvertHistory, + getConvertTemplates, + importConvertTemplate, + runConvert, + setDefaultConvertTemplate, + type ConvertResultItem, + type ConvertRunVo, + type ConvertTemplateVo, +} from '@/shared/api/java-modules' import { getPywebviewApi, type UploadedJavaFile } from '@/shared/bridges/pywebview' const convertSelectedPaths = ref([]) +const convertArchiveName = ref('') const convertUploadedFiles = ref([]) const convertRunning = ref(false) const convertResultItems = ref([]) const convertSummary = ref({ total: 0, successCount: 0, failedCount: 0, items: [] }) const convertTemplates = ref([]) const convertTemplateId = ref('') +const templateUploading = ref(false) +const templateSavingDefault = ref(false) +const templateDeleting = ref(false) +const templateInputRef = ref() + const convertDisplayPaths = computed(() => convertSelectedPaths.value.slice(0, 8)) const currentConvertTemplate = computed( () => convertTemplates.value.find((item) => item.id === convertTemplateId.value) || null, ) +const canDeleteCurrentTemplate = computed( + () => Boolean(currentConvertTemplate.value && !currentConvertTemplate.value.builtIn), +) -async function uploadPathsToJava(paths: string[]) { +async function uploadPathsToJava(paths: Array) { const api = getPywebviewApi() if (!api?.upload_file_to_java) { throw new Error('当前桌面端未提供文件上传桥接能力') } + const uploaded: UploadedJavaFile[] = [] - for (const path of paths) { - const result = await api.upload_file_to_java(path) + for (const item of paths) { + const filePath = typeof item === 'string' ? item : item.absolutePath + const relativePath = typeof item === 'string' ? undefined : item.relativePath + const result = await api.upload_file_to_java(filePath, relativePath) if (!result?.success || !result.data) { - throw new Error(result?.error || result?.message || `上传失败:${path}`) + throw new Error(result?.error || result?.message || `上传失败:${filePath}`) } uploaded.push(result.data) } return uploaded } -async function loadConvertTemplates() { +async function loadConvertTemplates(preferredTemplateId?: string) { const templates = await getConvertTemplates() convertTemplates.value = templates || [] + + if (preferredTemplateId && convertTemplates.value.some((item) => item.id === preferredTemplateId)) { + convertTemplateId.value = preferredTemplateId + return + } + + const existing = convertTemplates.value.find((item) => item.id === convertTemplateId.value) + if (existing) { + convertTemplateId.value = existing.id + return + } + const defaultTemplate = convertTemplates.value.find((item) => item.isDefault) if (defaultTemplate) { convertTemplateId.value = defaultTemplate.id return } - if (convertTemplates.value.length && !convertTemplates.value.some((item) => item.id === convertTemplateId.value)) { - convertTemplateId.value = convertTemplates.value[0].id - } + + convertTemplateId.value = convertTemplates.value[0]?.id || '' } async function handleSelectedPaths(paths: string[], successMessage: string) { convertSelectedPaths.value = paths + convertArchiveName.value = '' convertUploadedFiles.value = await uploadPathsToJava(paths) ElMessage.success(successMessage) } @@ -225,10 +286,13 @@ async function selectConvertFolder() { try { const folder = await api.select_brand_folder() if (!folder) return + convertArchiveName.value = folder.split(/[/\\]/).filter(Boolean).pop() || '' const result = await expandBrandFolder(folder) - if (result.success && result.paths?.length) { - await handleSelectedPaths(result.paths, `已选择文件夹内 ${result.paths.length} 个 xlsx 文件`) + if (result.success && result.items?.length) { + convertSelectedPaths.value = result.items.map((item) => item.relativePath) + convertUploadedFiles.value = await uploadPathsToJava(result.items) + ElMessage.success(`已选择文件夹内 ${result.items.length} 个 xlsx 文件`) return } @@ -238,6 +302,116 @@ async function selectConvertFolder() { } } +function openTemplatePicker() { + templateInputRef.value?.click() +} + +async function handleTemplateFileChange(event: Event) { + const input = event.target as HTMLInputElement + const file = input.files?.[0] + input.value = '' + + if (!file) { + return + } + + try { + templateUploading.value = true + const templateContent = await file.text() + const templateName = file.name.replace(/\.[^.]+$/, '') || file.name + + const template = await importConvertTemplate({ + templateName, + templateContent, + }) + + await loadConvertTemplates(template.id) + ElMessage.success(`模板已上传:${template.templateName}`) + } catch (error) { + ElMessage.error(error instanceof Error ? error.message : '模板上传失败') + } finally { + templateUploading.value = false + } +} + +async function saveCurrentTemplateAsDefault() { + if (!currentConvertTemplate.value) { + ElMessage.warning('请先选择模板') + return + } + + try { + templateSavingDefault.value = true + await setDefaultConvertTemplate(currentConvertTemplate.value.templateCode || currentConvertTemplate.value.id) + await loadConvertTemplates(currentConvertTemplate.value.id) + ElMessage.success('默认模板已更新') + } catch (error) { + ElMessage.error(error instanceof Error ? error.message : '设置默认模板失败') + } finally { + templateSavingDefault.value = false + } +} + +async function removeCurrentTemplate() { + if (!currentConvertTemplate.value) { + ElMessage.warning('请先选择模板') + return + } + if (currentConvertTemplate.value.builtIn) { + ElMessage.warning('内置模板不允许删除') + return + } + + try { + templateDeleting.value = true + await deleteConvertTemplate(currentConvertTemplate.value.templateCode || currentConvertTemplate.value.id) + const deletedTemplateId = currentConvertTemplate.value.id + await loadConvertTemplates() + if (convertTemplateId.value === deletedTemplateId) { + convertTemplateId.value = convertTemplates.value[0]?.id || '' + } + ElMessage.success('模板已删除') + } catch (error) { + ElMessage.error(error instanceof Error ? error.message : '删除模板失败') + } finally { + templateDeleting.value = false + } +} + +async function saveTemplateFromUrl(url: string, fallbackFilename: string, bridgeMethod?: 'save_template_xlsx' | 'save_template_zip') { + const api = getPywebviewApi() + + if (bridgeMethod && api?.[bridgeMethod]) { + const result = await api[bridgeMethod]!() + if (result.success) { + ElMessage.success(`已保存:${result.path || fallbackFilename}`) + } else if (result.error && result.error !== '用户取消') { + ElMessage.error(result.error) + } + return + } + + if (api?.save_file_from_url) { + const result = await api.save_file_from_url(url, fallbackFilename) + if (result.success) { + ElMessage.success(`已保存:${result.path || fallbackFilename}`) + } else if (result.error && result.error !== '用户取消') { + ElMessage.error(result.error) + } + return + } + + window.open(url, '_blank') +} + +async function downloadTemplateXlsx() { + await saveTemplateFromUrl(getBrandTemplateXlsxUrl(), '品牌文档格式_模板.xlsx', 'save_template_xlsx') +} + +async function downloadTemplateZip() { + await saveTemplateFromUrl(getBrandTemplateZipUrl(), '模板2-以文件夹方式上传.zip', 'save_template_zip') +} + async function submitConvertRun() { if (!convertUploadedFiles.value.length) { ElMessage.warning('请先选择待转换 Excel 文件或文件夹') @@ -251,8 +425,16 @@ async function submitConvertRun() { try { convertRunning.value = true const result = await runConvert({ - files: convertUploadedFiles.value.map((item) => ({ fileKey: item.fileKey, originalFilename: item.originalFilename })), + files: convertUploadedFiles.value.map((item) => ({ + fileKey: item.fileKey, + originalFilename: item.originalFilename, + relativePath: item.relativePath, + })), templateId: convertTemplateId.value, + archiveName: + convertUploadedFiles.value.some((item) => !!item.relativePath) && convertArchiveName.value + ? convertArchiveName.value + : undefined, }) convertSummary.value = result convertResultItems.value = result.items || [] @@ -318,58 +500,490 @@ onMounted(() => { diff --git a/frontend-vue/src/pages/brand/components/BrandDedupeTab.vue b/frontend-vue/src/pages/brand/components/BrandDedupeTab.vue index 6789bcc..bbafb93 100644 --- a/frontend-vue/src/pages/brand/components/BrandDedupeTab.vue +++ b/frontend-vue/src/pages/brand/components/BrandDedupeTab.vue @@ -4,143 +4,141 @@
-
读取首个 Excel 文件的第一行作为表头,用于动态选择需要保留的列。
-
+
+
去重结果
-
ID 保留规则
-
-
-
+ @@ -149,16 +147,18 @@ import { computed, onMounted, ref } from 'vue' import { ElMessage } from 'element-plus' import BrandTopBar from './BrandTopBar.vue' -import { expandBrandFolder } from '@/shared/api/brand' +import { expandBrandFolder, type BrandExpandFolderItem } from '@/shared/api/brand' import { deleteDedupeHistory, getDedupeHistory, getExcelInfo, runDedupe, type DedupeResultItem, type DedupeRunVo } from '@/shared/api/java-modules' import { getPywebviewApi, type UploadedJavaFile } from '@/shared/bridges/pywebview' const cleanAvailableColumns = ref([]) const cleanSelectedColumns = ref([]) const cleanSelectedPaths = ref([]) +const cleanArchiveName = ref('') const cleanUploadedFiles = ref([]) -const cleanKeepIntegerIds = ref(true) +const cleanKeepIntegerIds = ref(false) const cleanKeepUnderscoreIds = ref(true) +const cleanKeepIntegerMainIdsWhenNoSubIds = ref(true) const cleanRunning = ref(false) const cleanResultItems = ref([]) const cleanSummary = ref({ total: 0, successCount: 0, failedCount: 0, items: [] }) @@ -172,16 +172,18 @@ function clearAllCleanColumns() { cleanSelectedColumns.value = [] } -async function uploadPathsToJava(paths: string[]) { +async function uploadPathsToJava(paths: Array) { const api = getPywebviewApi() if (!api?.upload_file_to_java) { throw new Error('当前桌面端未提供文件上传桥接能力') } const uploaded: UploadedJavaFile[] = [] - for (const path of paths) { - const result = await api.upload_file_to_java(path) + for (const item of paths) { + const filePath = typeof item === 'string' ? item : item.absolutePath + const relativePath = typeof item === 'string' ? undefined : item.relativePath + const result = await api.upload_file_to_java(filePath, relativePath) if (!result?.success || !result.data) { - throw new Error(result?.error || result?.message || `上传失败:${path}`) + throw new Error(result?.error || result?.message || `上传失败:${filePath}`) } uploaded.push(result.data) } @@ -209,6 +211,7 @@ async function loadCleanHeaders(fileKey: string) { async function handleSelectedPaths(paths: string[], successMessage: string) { cleanSelectedPaths.value = paths + cleanArchiveName.value = '' cleanUploadedFiles.value = await uploadPathsToJava(paths) if (cleanUploadedFiles.value.length > 0) { await loadCleanHeaders(cleanUploadedFiles.value[0].fileKey) @@ -242,10 +245,16 @@ async function selectCleanFolder() { try { const folder = await api.select_brand_folder() if (!folder) return + cleanArchiveName.value = folder.split(/[/\\]/).filter(Boolean).pop() || '' const result = await expandBrandFolder(folder) - if (result.success && result.paths?.length) { - await handleSelectedPaths(result.paths, `已选择文件夹内 ${result.paths.length} 个 xlsx 文件`) + if (result.success && result.items?.length) { + cleanSelectedPaths.value = result.items.map((item) => item.relativePath) + cleanUploadedFiles.value = await uploadPathsToJava(result.items) + if (cleanUploadedFiles.value.length > 0) { + await loadCleanHeaders(cleanUploadedFiles.value[0].fileKey) + } + ElMessage.success(`已选择文件夹内 ${result.items.length} 个 xlsx 文件`) return } @@ -264,7 +273,7 @@ async function submitCleanRun() { ElMessage.warning('请至少选择一列保留列') return } - if (!cleanKeepIntegerIds.value && !cleanKeepUnderscoreIds.value) { + if (!cleanKeepIntegerIds.value && !cleanKeepUnderscoreIds.value && !cleanKeepIntegerMainIdsWhenNoSubIds.value) { ElMessage.warning('请至少选择一种 ID 保留规则') return } @@ -272,10 +281,15 @@ async function submitCleanRun() { try { cleanRunning.value = true const result = await runDedupe({ - files: cleanUploadedFiles.value.map((item) => ({ fileKey: item.fileKey, originalFilename: item.originalFilename })), + files: cleanUploadedFiles.value.map((item) => ({ fileKey: item.fileKey, originalFilename: item.originalFilename, relativePath: item.relativePath })), selectedColumns: cleanSelectedColumns.value, keepIntegerIds: cleanKeepIntegerIds.value, keepUnderscoreIds: cleanKeepUnderscoreIds.value, + keepIntegerMainIdsWhenNoSubIds: cleanKeepIntegerMainIdsWhenNoSubIds.value, + archiveName: + cleanUploadedFiles.value.some((item) => !!item.relativePath) && cleanArchiveName.value + ? cleanArchiveName.value + : undefined, }) cleanSummary.value = result cleanResultItems.value = result.items || [] @@ -340,65 +354,440 @@ onMounted(() => { diff --git a/frontend-vue/src/pages/brand/components/BrandSplitTab.vue b/frontend-vue/src/pages/brand/components/BrandSplitTab.vue index 48d5696..903fa2b 100644 --- a/frontend-vue/src/pages/brand/components/BrandSplitTab.vue +++ b/frontend-vue/src/pages/brand/components/BrandSplitTab.vue @@ -12,7 +12,7 @@ -
+