diff --git a/frontend/src/styles/base.css b/frontend/src/styles/base.css
index 79a2573..4ae14e9 100644
--- a/frontend/src/styles/base.css
+++ b/frontend/src/styles/base.css
@@ -147,3 +147,41 @@ a {
overflow: auto;
padding-right: 8px;
}
+
+.detail-card {
+ padding: 24px;
+}
+
+.detail-descriptions :is(.el-descriptions__table, .el-descriptions__body) {
+ width: 100%;
+}
+
+.detail-descriptions .el-descriptions__cell {
+ vertical-align: top;
+}
+
+.detail-descriptions .el-descriptions__label.el-descriptions__cell {
+ width: 180px;
+ min-width: 180px;
+ white-space: nowrap;
+ color: var(--text-900);
+ font-weight: 600;
+ background: var(--bg-soft);
+}
+
+.detail-descriptions .el-descriptions__content.el-descriptions__cell {
+ color: var(--text-600);
+ line-height: 1.7;
+ word-break: break-word;
+}
+
+@media (max-width: 768px) {
+ .detail-card {
+ padding: 16px;
+ }
+
+ .detail-descriptions .el-descriptions__label.el-descriptions__cell {
+ width: 132px;
+ min-width: 132px;
+ }
+}
diff --git a/frontend/src/views/FactoryDetail.vue b/frontend/src/views/FactoryDetail.vue
index 12b9d1d..771a4bf 100644
--- a/frontend/src/views/FactoryDetail.vue
+++ b/frontend/src/views/FactoryDetail.vue
@@ -4,17 +4,28 @@
工厂详情
返回
-
-
- {{ factory.factory_name }}
- {{ factory.brand }}
- {{ factory.dealer_name }}
- {{ factory.product_category }}
- {{ formatRegion(factory.province, factory.city, factory.district) }}
- {{ factory.address }}
- {{ factory.website }}
- {{ (factory.usernames || []).join('、') || '-' }}
- {{ factory.material_count }}
+
+
+ {{ displayText(factory.factory_name) }}
+ {{ displayText(factory.brand) }}
+ {{ displayText(factory.dealer_name) }}
+ {{ displayText(factory.product_category) }}
+ {{ displayRegion(factory) }}
+ {{ displayText(factory.address) }}
+
+
+ {{ factory.website }}
+
+ -
+
+ {{ displayList(factory.usernames) }}
+ {{ displayText(factory.material_count) }}
@@ -39,6 +50,12 @@ onMounted(loadDetail)
const goBack = () => {
router.back()
}
+
+const displayText = (value) => value || '-'
+
+const displayList = (value) => (value?.length ? value.join('、') : '-')
+
+const displayRegion = (item) => formatRegion(item.province, item.city, item.district) || '-'
+.website-link {
+ color: var(--brand-500);
+ word-break: break-all;
+}
+
diff --git a/frontend/src/views/MaterialDetail.vue b/frontend/src/views/MaterialDetail.vue
index 7a583c0..a46f4e8 100644
--- a/frontend/src/views/MaterialDetail.vue
+++ b/frontend/src/views/MaterialDetail.vue
@@ -1,34 +1,34 @@
-
+
材料详情
返回
-
-
- {{ material.name }}
- {{ material.major_category_display }}
- {{ material.material_category }}
- {{ material.material_subcategory }}
- {{ material.spec }}
- {{ material.standard }}
- {{ (material.application_scene_display || []).join('、') }}
- {{ material.application_desc }}
- {{ material.replace_type_display }}
- {{ (material.advantage_display || []).join('、') }}
- {{ material.advantage_desc }}
- {{ material.cost_compare }}
- {{ material.cost_desc }}
- {{ material.cases }}
- {{ material.factory_name }}
- {{ material.quality_level }}
- {{ material.durability_level }}
- {{ material.eco_level }}
- {{ material.carbon_level }}
- {{ material.score_level }}
- {{ material.connection_method }}
- {{ material.construction_method }}
- {{ material.limit_condition }}
+
+
+ {{ displayText(material.name) }}
+ {{ displayText(material.major_category_display) }}
+ {{ displayText(material.material_category) }}
+ {{ displayText(material.material_subcategory) }}
+ {{ displayText(material.spec) }}
+ {{ displayText(material.standard) }}
+ {{ displayList(material.application_scene_display) }}
+ {{ displayText(material.application_desc) }}
+ {{ displayText(material.replace_type_display) }}
+ {{ displayList(material.advantage_display) }}
+ {{ displayText(material.advantage_desc) }}
+ {{ formatPercent(material.cost_compare) }}
+ {{ displayText(material.cost_desc) }}
+ {{ displayText(material.cases) }}
+ {{ displayText(material.factory_name) }}
+ {{ formatStarLevel(material.quality_level) }}
+ {{ formatStarLevel(material.durability_level) }}
+ {{ formatStarLevel(material.eco_level) }}
+ {{ formatStarLevel(material.carbon_level) }}
+ {{ formatStarLevel(material.score_level) }}
+ {{ displayText(material.connection_method) }}
+ {{ displayText(material.construction_method) }}
+ {{ displayText(material.limit_condition) }}
宣传页
@@ -56,6 +56,14 @@ onMounted(loadDetail)
const goBack = () => {
router.back()
}
+
+const displayText = (value) => value || '-'
+
+const displayList = (value) => (value?.length ? value.join('、') : '-')
+
+const formatPercent = (value) => (value === null || value === undefined || value === '' ? '-' : `${value}%`)
+
+const formatStarLevel = (value) => (value ? `${value}星` : '-')