feat(ui): unify list-page enterprise visual pattern
This commit is contained in:
@@ -31,6 +31,29 @@ const missing = [
|
|||||||
...requiredUnifiedTokens.filter((t) => !unified.includes(t))
|
...requiredUnifiedTokens.filter((t) => !unified.includes(t))
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const pageContractChecks = [
|
||||||
|
"src/views/ia/ProjectMilestones.vue",
|
||||||
|
"src/views/ia/SubjectManagement.vue",
|
||||||
|
"src/views/ia/RiskIssueSae.vue",
|
||||||
|
"src/views/ia/RiskIssuePd.vue",
|
||||||
|
"src/views/ia/RiskIssueMonitoringVisits.vue"
|
||||||
|
];
|
||||||
|
|
||||||
|
const requiredPageClasses = [
|
||||||
|
"ctms-page-shell",
|
||||||
|
"unified-action-bar",
|
||||||
|
"ctms-table-card"
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const file of pageContractChecks) {
|
||||||
|
const content = readFileSync(file, "utf8");
|
||||||
|
for (const className of requiredPageClasses) {
|
||||||
|
if (!content.includes(className)) {
|
||||||
|
missing.push(`${file}:${className}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (missing.length) {
|
if (missing.length) {
|
||||||
console.error("UI contract check failed. Missing:", missing.join(", "));
|
console.error("UI contract check failed. Missing:", missing.join(", "));
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page ctms-page-shell">
|
||||||
<div v-if="study.currentStudy" class="unified-shell">
|
<div v-if="study.currentStudy" class="unified-shell ctms-table-card">
|
||||||
<section class="unified-section">
|
<section class="unified-action-bar">
|
||||||
<div class="card-header">
|
<div class="card-header ctms-page-header-row">
|
||||||
<div>
|
<div>
|
||||||
<div class="card-title">{{ TEXT.modules.projectMilestones.listTitle }}</div>
|
<div class="card-title">{{ TEXT.modules.projectMilestones.listTitle }}</div>
|
||||||
<div class="card-subtitle">
|
<div class="card-subtitle">
|
||||||
@@ -21,7 +21,8 @@
|
|||||||
<el-button size="small" @click="loadMilestones">{{ TEXT.common.actions.refresh }}</el-button>
|
<el-button size="small" @click="loadMilestones">{{ TEXT.common.actions.refresh }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="unified-section ctms-page-content-grid">
|
||||||
<el-table :data="rows" v-loading="loading" class="ctms-table" style="width: 100%">
|
<el-table :data="rows" v-loading="loading" class="ctms-table" style="width: 100%">
|
||||||
<el-table-column prop="name" :label="TEXT.modules.projectMilestones.columns.name" min-width="140" />
|
<el-table-column prop="name" :label="TEXT.modules.projectMilestones.columns.name" min-width="140" />
|
||||||
<el-table-column prop="planDate" :label="TEXT.modules.projectMilestones.columns.planDate" min-width="170">
|
<el-table-column prop="planDate" :label="TEXT.modules.projectMilestones.columns.planDate" min-width="170">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page ctms-page-shell">
|
||||||
<template v-if="study.currentStudy">
|
<template v-if="study.currentStudy">
|
||||||
<el-card shadow="never" class="main-content-card unified-shell">
|
<el-card shadow="never" class="main-content-card unified-shell ctms-table-card">
|
||||||
<div class="filter-container unified-action-bar">
|
<div class="filter-container unified-action-bar">
|
||||||
<div class="filter-left">
|
<div class="filter-left">
|
||||||
<el-form :inline="true" :model="filters" class="filter-form">
|
<el-form :inline="true" :model="filters" class="filter-form">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page ctms-page-shell">
|
||||||
<el-card shadow="never" class="main-content-card unified-shell">
|
<el-card shadow="never" class="main-content-card unified-shell ctms-table-card">
|
||||||
<div class="filter-container unified-action-bar">
|
<div class="filter-container unified-action-bar">
|
||||||
<el-form :inline="true" class="filter-form">
|
<el-form :inline="true" class="filter-form">
|
||||||
<el-form-item class="filter-item-form">
|
<el-form-item class="filter-item-form">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page ctms-page-shell">
|
||||||
<el-card shadow="never" class="main-content-card unified-shell">
|
<el-card shadow="never" class="main-content-card unified-shell ctms-table-card">
|
||||||
<div class="filter-container unified-action-bar">
|
<div class="filter-container unified-action-bar">
|
||||||
<el-form :inline="true" class="filter-form">
|
<el-form :inline="true" class="filter-form">
|
||||||
<el-form-item class="filter-item-form">
|
<el-form-item class="filter-item-form">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page ctms-page-shell">
|
||||||
<el-card shadow="never" class="main-content-card unified-shell">
|
<el-card shadow="never" class="main-content-card unified-shell ctms-table-card">
|
||||||
<div class="filter-container unified-action-bar">
|
<div class="filter-container unified-action-bar">
|
||||||
<el-form :inline="true" :model="filters" class="filter-form">
|
<el-form :inline="true" :model="filters" class="filter-form">
|
||||||
<el-form-item label="" class="filter-item-form">
|
<el-form-item label="" class="filter-item-form">
|
||||||
|
|||||||
Reference in New Issue
Block a user