x
This commit is contained in:
@@ -70,7 +70,7 @@ onUnmounted(() => {
|
||||
<t-alert
|
||||
v-if="!state.backendDbReady"
|
||||
:title="state.backendDbMessage"
|
||||
type="warning"
|
||||
theme="warning"
|
||||
show-icon
|
||||
:closable="false"
|
||||
style="margin-bottom: 16px;"
|
||||
@@ -99,45 +99,12 @@ onUnmounted(() => {
|
||||
.page-header h1 { font-size: var(--text-2xl); font-weight: var(--font-bold); color: var(--text-primary); margin: 0; }
|
||||
.page-header p { color: var(--text-tertiary); margin: var(--space-1) 0 0; font-size: var(--text-sm); }
|
||||
|
||||
.inventory-layout { display: flex; gap: var(--space-6); min-height: calc(100vh - 200px); }
|
||||
.inventory-sidebar-wrapper { width: 200px; flex-shrink: 0; }
|
||||
.inventory-layout { display: flex; gap: var(--space-6); align-items: flex-start; }
|
||||
.inventory-sidebar-wrapper { width: 200px; flex-shrink: 0; position: sticky; top: 80px; }
|
||||
.inventory-content { flex: 1; min-width: 0; }
|
||||
|
||||
.inventory-content-header { margin-bottom: var(--space-4); }
|
||||
.inventory-breadcrumb { font-size: var(--text-sm); color: var(--text-tertiary); }
|
||||
.inventory-breadcrumb .sep { margin: 0 var(--space-2); }
|
||||
.inventory-breadcrumb .current { color: var(--text-primary); font-weight: var(--font-medium); }
|
||||
|
||||
.inventory-sidebar-wrapper :deep(.t-menu) {
|
||||
border-right: none;
|
||||
background: transparent;
|
||||
}
|
||||
.inventory-sidebar-wrapper :deep(.sidebar-group-title) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: var(--space-3) var(--space-4);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-semibold);
|
||||
color: var(--text-tertiary);
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
.inventory-sidebar-wrapper :deep(.t-menu__item) {
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
font-size: var(--text-sm);
|
||||
margin: 2px var(--space-2);
|
||||
border-radius: var(--radius-md);
|
||||
padding: 0 var(--space-4);
|
||||
}
|
||||
.inventory-sidebar-wrapper :deep(.t-is-active) {
|
||||
background: var(--primary-50);
|
||||
color: var(--primary-600);
|
||||
font-weight: var(--font-medium);
|
||||
}
|
||||
.inventory-sidebar-wrapper :deep(.t-menu__item:hover) {
|
||||
background: var(--bg-tertiary);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -5,34 +5,88 @@ const { state, menuGroups, openGroups, toggleGroup, handleMenuClick } = useInven
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<t-menu
|
||||
:default-expanded="Object.keys(openGroups)"
|
||||
model-value=""
|
||||
class="inventory-sidebar"
|
||||
>
|
||||
<nav class="sidebar-nav">
|
||||
<div v-for="group in menuGroups" :key="group.key" class="sidebar-group">
|
||||
<div class="sidebar-group-title" @click="toggleGroup(group.key)">
|
||||
<span>{{ group.title }}</span>
|
||||
<span class="group-arrow">{{ openGroups[group.key] ? '▾' : '▸' }}</span>
|
||||
</div>
|
||||
<template v-if="openGroups[group.key]">
|
||||
<t-menu-item
|
||||
<div
|
||||
v-for="item in group.items"
|
||||
:key="item.key"
|
||||
:value="item.key"
|
||||
:class="['sidebar-item', { active: state.activeTab === item.key }]"
|
||||
@click="handleMenuClick(item.key)"
|
||||
>
|
||||
{{ item.label }}
|
||||
</t-menu-item>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</t-menu>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.sidebar-nav {
|
||||
background: var(--bg-primary);
|
||||
border: 1px solid var(--border-light);
|
||||
border-radius: var(--radius-lg);
|
||||
padding: var(--space-2);
|
||||
}
|
||||
|
||||
.sidebar-group {
|
||||
margin-bottom: var(--space-2);
|
||||
}
|
||||
|
||||
.sidebar-group:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.sidebar-group-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: var(--space-2) var(--space-3);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-semibold);
|
||||
color: var(--text-tertiary);
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
border-radius: var(--radius-sm);
|
||||
transition: background 0.15s;
|
||||
}
|
||||
|
||||
.sidebar-group-title:hover {
|
||||
background: var(--bg-tertiary);
|
||||
}
|
||||
|
||||
.group-arrow {
|
||||
font-size: 10px;
|
||||
color: var(--text-tertiary);
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 36px;
|
||||
padding: 0 var(--space-3) 0 var(--space-6);
|
||||
margin: 1px var(--space-1);
|
||||
font-size: var(--text-sm);
|
||||
color: var(--text-secondary);
|
||||
border-radius: var(--radius-md);
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
transition: all 0.15s;
|
||||
}
|
||||
|
||||
.sidebar-item:hover {
|
||||
background: var(--bg-tertiary);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.sidebar-item.active {
|
||||
background: var(--primary-50);
|
||||
color: var(--primary-600);
|
||||
font-weight: var(--font-medium);
|
||||
}
|
||||
</style>
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{E as e,h as t,n,v as r}from"./index-DhEa-EvN.js";var i={};function a(n,i){return e(),r(`div`,null,[...i[0]||=[t(`div`,{class:`page-header`},[t(`h1`,{class:`page-title`},`设计体系`),t(`p`,{class:`page-subtitle`},`迁移中...`)],-1)]])}var o=n(i,[[`render`,a]]);export{o as default};
|
||||
import{E as e,h as t,n,v as r}from"./index-EqJJKSSk.js";var i={};function a(n,i){return e(),r(`div`,null,[...i[0]||=[t(`div`,{class:`page-header`},[t(`h1`,{class:`page-title`},`设计体系`),t(`p`,{class:`page-subtitle`},`迁移中...`)],-1)]])}var o=n(i,[[`render`,a]]);export{o as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.sidebar-nav[data-v-8d87a791]{background:var(--bg-primary);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--space-2)}.sidebar-group[data-v-8d87a791]{margin-bottom:var(--space-2)}.sidebar-group[data-v-8d87a791]:last-child{margin-bottom:0}.sidebar-group-title[data-v-8d87a791]{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);justify-content:space-between;align-items:center;transition:background .15s;display:flex}.sidebar-group-title[data-v-8d87a791]:hover{background:var(--bg-tertiary)}.group-arrow[data-v-8d87a791]{font-size:10px;transition:transform .2s}.sidebar-item[data-v-8d87a791]{height:36px;padding:0 var(--space-3) 0 var(--space-6);margin:1px var(--space-1);font-size:var(--text-sm);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;transition:all .15s;display:flex}.sidebar-item[data-v-8d87a791]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-item.active[data-v-8d87a791]{background:var(--primary-50);color:var(--primary-600);font-weight:var(--font-medium)}.inventory-tab[data-v-b02ca093]{padding:0}.table-header[data-v-b02ca093]{margin-bottom:16px}.suppliers-tab[data-v-46312435]{padding:0}.table-header[data-v-46312435]{margin-bottom:16px}.customers-tab[data-v-910d60b4]{padding:0}.table-header[data-v-910d60b4]{margin-bottom:16px}.movements-tab[data-v-79f8d5e3],.page-container[data-v-75abaab9]{padding:0}.page-header[data-v-75abaab9]{margin-bottom:var(--space-6)}.page-header h1[data-v-75abaab9]{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary);margin:0}.page-header p[data-v-75abaab9]{color:var(--text-tertiary);margin:var(--space-1) 0 0;font-size:var(--text-sm)}.inventory-layout[data-v-75abaab9]{gap:var(--space-6);align-items:flex-start;display:flex}.inventory-sidebar-wrapper[data-v-75abaab9]{flex-shrink:0;width:200px;position:sticky;top:80px}.inventory-content[data-v-75abaab9]{flex:1;min-width:0}.inventory-content-header[data-v-75abaab9]{margin-bottom:var(--space-4)}.inventory-breadcrumb[data-v-75abaab9]{font-size:var(--text-sm);color:var(--text-tertiary)}.inventory-breadcrumb .sep[data-v-75abaab9]{margin:0 var(--space-2)}.inventory-breadcrumb .current[data-v-75abaab9]{color:var(--text-primary);font-weight:var(--font-medium)}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.group-arrow[data-v-b5fce634]{color:var(--text-tertiary);font-size:10px;transition:transform .2s}.inventory-tab[data-v-b02ca093]{padding:0}.table-header[data-v-b02ca093]{margin-bottom:16px}.suppliers-tab[data-v-46312435]{padding:0}.table-header[data-v-46312435]{margin-bottom:16px}.customers-tab[data-v-910d60b4]{padding:0}.table-header[data-v-910d60b4]{margin-bottom:16px}.movements-tab[data-v-79f8d5e3],.page-container[data-v-de14c186]{padding:0}.page-header[data-v-de14c186]{margin-bottom:var(--space-6)}.page-header h1[data-v-de14c186]{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary);margin:0}.page-header p[data-v-de14c186]{color:var(--text-tertiary);margin:var(--space-1) 0 0;font-size:var(--text-sm)}.inventory-layout[data-v-de14c186]{gap:var(--space-6);min-height:calc(100vh - 200px);display:flex}.inventory-sidebar-wrapper[data-v-de14c186]{flex-shrink:0;width:200px}.inventory-content[data-v-de14c186]{flex:1;min-width:0}.inventory-content-header[data-v-de14c186]{margin-bottom:var(--space-4)}.inventory-breadcrumb[data-v-de14c186]{font-size:var(--text-sm);color:var(--text-tertiary)}.inventory-breadcrumb .sep[data-v-de14c186]{margin:0 var(--space-2)}.inventory-breadcrumb .current[data-v-de14c186]{color:var(--text-primary);font-weight:var(--font-medium)}.inventory-sidebar-wrapper[data-v-de14c186] .t-menu{background:0 0;border-right:none}.inventory-sidebar-wrapper[data-v-de14c186] .sidebar-group-title{padding:var(--space-3) var(--space-4);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.inventory-sidebar-wrapper[data-v-de14c186] .t-menu__item{height:36px;line-height:36px;font-size:var(--text-sm);margin:2px var(--space-2);border-radius:var(--radius-md);padding:0 var(--space-4)}.inventory-sidebar-wrapper[data-v-de14c186] .t-is-active{background:var(--primary-50);color:var(--primary-600);font-weight:var(--font-medium)}.inventory-sidebar-wrapper[data-v-de14c186] .t-menu__item:hover{background:var(--bg-tertiary)}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{E as e,I as t,O as n,S as r,_ as i,b as a,g as o,h as s,j as c,k as l,n as u,o as d,r as f,s as p,u as m,v as h,x as g}from"./index-DhEa-EvN.js";var _={class:`login-container`},v={class:`login-card`},y=u(r({__name:`LoginView`,setup(r){let u=m(),y=c({username:``,password:``,error:``,loading:!1}),b=async()=>{y.error=``,y.loading=!0;try{let e=await p(`/api/auth/login/json`,{method:`POST`,body:JSON.stringify({username:y.username,password:y.password})});d(e.access_token,e.user),f(`登录成功`,`success`),u.push(`/`)}catch(e){y.error=e.message||`登录失败`}finally{y.loading=!1}};return(r,c)=>{let u=n(`t-input`),d=n(`t-form-item`),f=n(`t-alert`),p=n(`t-button`),m=n(`t-form`);return e(),h(`div`,_,[s(`div`,v,[c[2]||=s(`div`,{class:`login-header`},[s(`div`,{class:`login-logo`},`G`),s(`h1`,{class:`login-title`},`Gemold`),s(`p`,{class:`login-subtitle`},`模具制造管理系统`)],-1),g(m,{onSubmit:b},{default:l(()=>[g(d,{label:`用户名`},{default:l(()=>[g(u,{modelValue:y.username,"onUpdate:modelValue":c[0]||=e=>y.username=e,placeholder:`请输入用户名`,clearable:``},null,8,[`modelValue`])]),_:1}),g(d,{label:`密码`},{default:l(()=>[g(u,{modelValue:y.password,"onUpdate:modelValue":c[1]||=e=>y.password=e,type:`password`,placeholder:`请输入密码`,clearable:``},null,8,[`modelValue`])]),_:1}),y.error?(e(),o(f,{key:0,theme:`error`,message:y.error,style:{"margin-bottom":`16px`}},null,8,[`message`])):i(``,!0),g(p,{theme:`primary`,block:``,type:`submit`,loading:y.loading},{default:l(()=>[a(t(y.loading?`登录中...`:`登录`),1)]),_:1},8,[`loading`])]),_:1})])])}}}),[[`__scopeId`,`data-v-c91bfbf2`]]);export{y as default};
|
||||
import{E as e,I as t,O as n,S as r,_ as i,b as a,g as o,h as s,j as c,k as l,n as u,o as d,r as f,s as p,u as m,v as h,x as g}from"./index-EqJJKSSk.js";var _={class:`login-container`},v={class:`login-card`},y=u(r({__name:`LoginView`,setup(r){let u=m(),y=c({username:``,password:``,error:``,loading:!1}),b=async()=>{y.error=``,y.loading=!0;try{let e=await p(`/api/auth/login/json`,{method:`POST`,body:JSON.stringify({username:y.username,password:y.password})});d(e.access_token,e.user),f(`登录成功`,`success`),u.push(`/`)}catch(e){y.error=e.message||`登录失败`}finally{y.loading=!1}};return(r,c)=>{let u=n(`t-input`),d=n(`t-form-item`),f=n(`t-alert`),p=n(`t-button`),m=n(`t-form`);return e(),h(`div`,_,[s(`div`,v,[c[2]||=s(`div`,{class:`login-header`},[s(`div`,{class:`login-logo`},`G`),s(`h1`,{class:`login-title`},`Gemold`),s(`p`,{class:`login-subtitle`},`模具制造管理系统`)],-1),g(m,{onSubmit:b},{default:l(()=>[g(d,{label:`用户名`},{default:l(()=>[g(u,{modelValue:y.username,"onUpdate:modelValue":c[0]||=e=>y.username=e,placeholder:`请输入用户名`,clearable:``},null,8,[`modelValue`])]),_:1}),g(d,{label:`密码`},{default:l(()=>[g(u,{modelValue:y.password,"onUpdate:modelValue":c[1]||=e=>y.password=e,type:`password`,placeholder:`请输入密码`,clearable:``},null,8,[`modelValue`])]),_:1}),y.error?(e(),o(f,{key:0,theme:`error`,message:y.error,style:{"margin-bottom":`16px`}},null,8,[`message`])):i(``,!0),g(p,{theme:`primary`,block:``,type:`submit`,loading:y.loading},{default:l(()=>[a(t(y.loading?`登录中...`:`登录`),1)]),_:1},8,[`loading`])]),_:1})])])}}}),[[`__scopeId`,`data-v-c91bfbf2`]]);export{y as default};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{E as e,h as t,n,v as r}from"./index-DhEa-EvN.js";var i={};function a(n,i){return e(),r(`div`,null,[...i[0]||=[t(`div`,{class:`page-header`},[t(`h1`,{class:`page-title`},`灰度发布与回滚`),t(`p`,{class:`page-subtitle`},`迁移中...`)],-1)]])}var o=n(i,[[`render`,a]]);export{o as default};
|
||||
import{E as e,h as t,n,v as r}from"./index-EqJJKSSk.js";var i={};function a(n,i){return e(),r(`div`,null,[...i[0]||=[t(`div`,{class:`page-header`},[t(`h1`,{class:`page-title`},`灰度发布与回滚`),t(`p`,{class:`page-subtitle`},`迁移中...`)],-1)]])}var o=n(i,[[`render`,a]]);export{o as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -61,7 +61,7 @@
|
||||
} catch (e) {}
|
||||
})();
|
||||
</script>
|
||||
<script type="module" crossorigin src="/static/assets/index-DhEa-EvN.js"></script>
|
||||
<script type="module" crossorigin src="/static/assets/index-EqJJKSSk.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/assets/index-9snwVMjk.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user