|
|
@@ -172,13 +172,33 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- getBookColor: function(article, idx) {
|
|
|
- if (article && article.relatedDimensions) {
|
|
|
- var dims = article.relatedDimensions.split(',')
|
|
|
- var firstDim = (dims[0] || '').trim().toLowerCase()
|
|
|
- if (DIMENSION_COLORS[firstDim]) {
|
|
|
- return DIMENSION_COLORS[firstDim].bg
|
|
|
+ // 提取首个维度 code(兼容字符串 "mind,emotion" / JSON 字符串 / 数组 ['mind','emotion'])
|
|
|
+ getFirstDimension: function(article) {
|
|
|
+ if (!article || !article.relatedDimensions) return ''
|
|
|
+ var raw = article.relatedDimensions
|
|
|
+ var first = ''
|
|
|
+ if (typeof raw === 'string') {
|
|
|
+ var trimmed = raw.trim()
|
|
|
+ if (trimmed.indexOf('[') === 0) {
|
|
|
+ try {
|
|
|
+ var parsed = JSON.parse(trimmed)
|
|
|
+ if (Array.isArray(parsed)) first = parsed[0] || ''
|
|
|
+ } catch (e) {
|
|
|
+ first = ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!first) {
|
|
|
+ first = trimmed.split(',')[0] || ''
|
|
|
}
|
|
|
+ } else if (Array.isArray(raw)) {
|
|
|
+ first = raw[0] || ''
|
|
|
+ }
|
|
|
+ return String(first).trim().toLowerCase()
|
|
|
+ },
|
|
|
+ getBookColor: function(article, idx) {
|
|
|
+ var firstDim = this.getFirstDimension(article)
|
|
|
+ if (firstDim && DIMENSION_COLORS[firstDim]) {
|
|
|
+ return DIMENSION_COLORS[firstDim].bg
|
|
|
}
|
|
|
if (article && article.dimensionCode && DIMENSION_COLORS[article.dimensionCode]) {
|
|
|
return DIMENSION_COLORS[article.dimensionCode].bg
|
|
|
@@ -186,12 +206,9 @@ export default {
|
|
|
return FALLBACK_GRADIENTS[idx % FALLBACK_GRADIENTS.length].bg
|
|
|
},
|
|
|
getTextColor: function(article, idx) {
|
|
|
- if (article && article.relatedDimensions) {
|
|
|
- var dims = article.relatedDimensions.split(',')
|
|
|
- var firstDim = (dims[0] || '').trim().toLowerCase()
|
|
|
- if (DIMENSION_COLORS[firstDim]) {
|
|
|
- return DIMENSION_COLORS[firstDim].text
|
|
|
- }
|
|
|
+ var firstDim = this.getFirstDimension(article)
|
|
|
+ if (firstDim && DIMENSION_COLORS[firstDim]) {
|
|
|
+ return DIMENSION_COLORS[firstDim].text
|
|
|
}
|
|
|
if (article && article.dimensionCode && DIMENSION_COLORS[article.dimensionCode]) {
|
|
|
return DIMENSION_COLORS[article.dimensionCode].text
|