feat(ui): 优化控制台响应式布局与视觉体验
前端验证 / verify (push) Failing after 15m3s

- 统一页面标题、圆角、字体和响应式断点,调整暗色主题及图表配色
- 新增表格列标签插件,在窄屏下将表格转换为卡片布局,优化实例、订单、工单等列表展示
- 支持移动端点击订单行进入详情,并完善订单凭据的打印布局
- 在财务中心展示本月及累计消费,补充充值关闭时的提示
- 优化工单详情布局,将附件上传入口整合至富文本编辑器工具栏
- 调整实例操作按钮、SSH 密钥操作及安全菜单图标
- 为多个页面显式导入 definePageMeta,完善页面元数据声明
This commit is contained in:
cneicy committed 2026-11-07 00:09:57 +08:00
1 parent 5d080cacec
commit 42dfead9cd
145 files changed
+1762 -599

No files matched your search

+36
View File
@@ -41,6 +41,7 @@ import PaymentDialog from "~/components/PaymentDialog.vue";
import tag from "primevue/tag";
import skeleton from "primevue/skeleton";
import { t as bandwidth_display_t } from "~/lib/bandwidth-display.js";
import { logoUrl } from "~/utils/brand.js";
// 仅从符合续费周期格式的描述中提取商品名,避免把日期区间重复显示成产品标题。
function D(e) {
let t = e.description?.trim() || ``,
@@ -747,6 +748,41 @@ var ue = {
: createCommentVNode(``, !0),
createElementVNode(`div`, me, [
createElementVNode(`article`, he, [
createElementVNode(
`div`,
{
class: `receipt-print-head`,
},
[
createElementVNode(`img`, {
src: logoUrl,
alt: `破碎工坊云`,
class: `receipt-print-logo`,
}),
createElementVNode(
`div`,
{
class: `receipt-print-meta`,
},
[
createElementVNode(
`strong`,
null,
`订单凭据`,
),
createElementVNode(
`span`,
null,
`订单号 #` +
toDisplayString(
unref(j).id,
),
1,
),
],
),
],
),
createElementVNode(`header`, ge, [
createElementVNode(`div`, _e, [
createElementVNode(`span`, ve, [
+23 -6
View File
@@ -217,6 +217,17 @@ var Se = {
function Y(e) {
return C(e, w.value) || `/bills`;
}
function openMobileOrder({ originalEvent, data }) {
if (!window.matchMedia(`(width < 640px)`).matches) return;
const target = originalEvent.target;
if (
target.closest(`a, button, input, [role="checkbox"]`) ||
target.closest(`td`)?.cellIndex === 0
)
return;
const destination = C(data.id, w.value);
if (destination) navigateTo(destination);
}
let X = computed(() =>
N.value.filter(
(e) => String(e.status) === `Unpaid` && e.type !== `on_demand`,
@@ -639,6 +650,7 @@ var Se = {
first: (unref(K) - 1) * unref(q),
dataKey: `id`,
rowSelectable: Be,
onRowClick: openMobileOrder,
metaKeySelection: !1,
},
{
@@ -670,7 +682,7 @@ var Se = {
{
header: `下单时间`,
style: {
"min-width": `170px`,
"white-space": `nowrap`,
},
},
{
@@ -692,7 +704,7 @@ var Se = {
{
header: `ID`,
style: {
width: `120px`,
"white-space": `nowrap`,
},
},
{
@@ -747,6 +759,7 @@ var Se = {
{
header: `商品`,
style: {
width: `100%`,
"min-width": `220px`,
},
},
@@ -777,7 +790,7 @@ var Se = {
{
header: `支付方式`,
style: {
"min-width": `130px`,
"white-space": `nowrap`,
},
},
{
@@ -797,7 +810,7 @@ var Se = {
{
header: `状态`,
style: {
width: `110px`,
"white-space": `nowrap`,
},
},
{
@@ -824,8 +837,10 @@ var Se = {
y,
{
header: `总价`,
headerClass: `amount-heading`,
bodyClass: `amount-cell`,
style: {
width: `120px`,
"white-space": `nowrap`,
},
},
{
@@ -844,8 +859,10 @@ var Se = {
y,
{
header: ``,
bodyClass: `action-cell`,
style: {
width: `115px`,
width: `1%`,
"white-space": `nowrap`,
},
},
{
+1
View File
@@ -2,6 +2,7 @@
/**
* 旧订单详情路由适配层:复用 /orders/[id] 的详情实现,并以完整地址为组件键以响应查询 ID 变化。
*/
import { definePageMeta } from "#imports";
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/_id_.gjoJy9S8.css";
definePageMeta({
+1
View File
@@ -2,6 +2,7 @@
/**
* 旧支付结果路由适配层:复用订单详情及服务端订单查询,不能仅凭跳入此路径认定付款成功。
*/
import { definePageMeta } from "#imports";
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/_id_.gjoJy9S8.css";
definePageMeta({
+1
View File
@@ -2,6 +2,7 @@
/**
* 旧订单支付路由适配层:复用订单详情,详情页根据 /pay 后缀展示支付流程;本文件不自行确认支付结果。
*/
import { definePageMeta } from "#imports";
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/_id_.gjoJy9S8.css";
definePageMeta({