diff --git a/pages-subpackage/ai_features/recording_duration/recording_duration.vue b/pages-subpackage/ai_features/recording_duration/recording_duration.vue index 994baae..5388b10 100644 --- a/pages-subpackage/ai_features/recording_duration/recording_duration.vue +++ b/pages-subpackage/ai_features/recording_duration/recording_duration.vue @@ -55,9 +55,13 @@ 时长趋势图 - - 📊 图表区域 - 此处将显示录音时长趋势图表 + + @@ -140,12 +144,17 @@ export default { totalDuration: '0 分钟', recordingCount: '0', dataList: [], - loading: false + loading: false, + chartWidth: 0, + chartHeight: 300, + chartData: [] } }, onLoad() { // 页面加载时获取数据 this.loadData(); + // 初始化图表尺寸 + this.initChartSize(); }, onReady() { // 页面渲染完成后,查询实际导航栏高度并更新位置 @@ -378,11 +387,11 @@ export default { this.processStatisticsData(statisticsList); // 刷新成功后显示提示 - uni.showToast({ - title: '刷新成功', - icon: 'success', - duration: 1500 - }); + uni.showToast({ + title: '刷新成功', + icon: 'success', + duration: 1500 + }); } else { throw new Error('请求失败,状态码: ' + res.statusCode); @@ -469,6 +478,165 @@ export default { dataListCount: this.dataList.length, statisticsListLength: statisticsList.length }); + + // 准备图表数据并绘制 + this.prepareChartData(statisticsList); + }, + /** + * 初始化图表尺寸 + */ + initChartSize() { + // 获取屏幕宽度 + const systemInfo = uni.getSystemInfoSync(); + const screenWidth = systemInfo.windowWidth || 375; + // 图表宽度 = 屏幕宽度 - 左右边距(60rpx = 30px) - 卡片内边距(60rpx = 30px) + this.chartWidth = screenWidth - 60; + }, + /** + * 准备图表数据 + */ + prepareChartData(statisticsList) { + if (!statisticsList || statisticsList.length === 0) { + this.chartData = []; + return; + } + + // 按日期正序排列(从旧到新,用于图表显示) + const sortedList = [...statisticsList].sort((a, b) => { + const dateA = new Date(a.statisticsDate); + const dateB = new Date(b.statisticsDate); + return dateA - dateB; + }); + + // 提取日期和时长数据 + this.chartData = sortedList.map(item => ({ + date: item.statisticsDate, + duration: item.salesTotalDuration || 0 + })); + + // 延迟绘制,确保canvas已渲染 + this.$nextTick(() => { + setTimeout(() => { + this.drawChart(); + }, 100); + }); + }, + /** + * 绘制趋势图 + */ + drawChart() { + if (!this.chartData || this.chartData.length === 0) { + return; + } + + const ctx = uni.createCanvasContext('trendChart', this); + const width = this.chartWidth; + const height = this.chartHeight; + + // 图表边距 + const padding = { + top: 40, + right: 20, + bottom: 50, + left: 50 + }; + + // 绘图区域 + const chartWidth = width - padding.left - padding.right; + const chartHeight = height - padding.top - padding.bottom; + + // 清空画布 + ctx.clearRect(0, 0, width, height); + + // 计算数据范围 + const durations = this.chartData.map(item => item.duration); + const maxDuration = Math.max(...durations, 1); + const minDuration = Math.min(...durations, 0); + const range = maxDuration - minDuration || 1; + + // 计算Y轴刻度(向上取整到合适的值) + const yMax = Math.ceil(maxDuration / 100) * 100; + const yStep = yMax / 5; + + // 绘制Y轴刻度和标签 + ctx.setFillStyle('#666666'); + ctx.setFontSize(10); + for (let i = 0; i <= 5; i++) { + const y = padding.top + chartHeight - (chartHeight / 5) * i; + const value = Math.round(yStep * i); + ctx.fillText(value.toString(), 5, y + 4); + + // 绘制网格线 + ctx.setStrokeStyle('#e0e0e0'); + ctx.setLineWidth(1); + ctx.beginPath(); + ctx.moveTo(padding.left, y); + ctx.lineTo(padding.left + chartWidth, y); + ctx.stroke(); + } + + // 绘制X轴日期标签 + const dataCount = this.chartData.length; + const xStep = chartWidth / Math.max(dataCount - 1, 1); + + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const date = new Date(item.date); + const month = date.getMonth() + 1; + const day = date.getDate(); + const label = `${month}/${day}`; + + ctx.setFillStyle('#666666'); + ctx.setFontSize(10); + ctx.fillText(label, x - 15, height - padding.bottom + 20); + }); + + // 绘制折线 + ctx.setStrokeStyle('#007aff'); + ctx.setLineWidth(2); + ctx.beginPath(); + + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const y = padding.top + chartHeight - ((item.duration / yMax) * chartHeight); + + if (index === 0) { + ctx.moveTo(x, y); + } else { + ctx.lineTo(x, y); + } + }); + + ctx.stroke(); + + // 绘制数据点 + ctx.setFillStyle('#007aff'); + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const y = padding.top + chartHeight - ((item.duration / yMax) * chartHeight); + + ctx.beginPath(); + ctx.arc(x, y, 4, 0, 2 * Math.PI); + ctx.fill(); + }); + + // 绘制坐标轴 + ctx.setStrokeStyle('#333333'); + ctx.setLineWidth(1); + + // Y轴 + ctx.beginPath(); + ctx.moveTo(padding.left, padding.top); + ctx.lineTo(padding.left, padding.top + chartHeight); + ctx.stroke(); + + // X轴 + ctx.beginPath(); + ctx.moveTo(padding.left, padding.top + chartHeight); + ctx.lineTo(padding.left + chartWidth, padding.top + chartHeight); + ctx.stroke(); + + ctx.draw(); } } } @@ -694,21 +862,15 @@ export default { border-bottom: 1rpx solid #e9ecef; } -.chart-placeholder { - padding: 80rpx 30rpx; - text-align: center; +.chart-container { + padding: 30rpx; + display: flex; + justify-content: center; + align-items: center; } -.placeholder-text { +.chart-canvas { display: block; - font-size: 48rpx; - margin-bottom: 20rpx; -} - -.placeholder-desc { - display: block; - font-size: 28rpx; - color: #666666; } .list-item { diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js.map index e398f89..5793d83 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js.map @@ -1 +1 @@ -{"version":3,"file":"recording_duration.js","sources":["pages-subpackage/ai_features/recording_duration/recording_duration.vue","../../../work/soft/HBuilderX.4.87.20251210/plugins/uniapp-cli-vite/uniPage:/cGFnZXMtc3VicGFja2FnZVxhaV9mZWF0dXJlc1xyZWNvcmRpbmdfZHVyYXRpb25ccmVjb3JkaW5nX2R1cmF0aW9uLnZ1ZQ"],"sourcesContent":["\n\n\n\n\n\n","import MiniProgramPage from 'D:/work2/code/smartDriveEEUniApp1111/pages-subpackage/ai_features/recording_duration/recording_duration.vue'\nwx.createPage(MiniProgramPage)"],"names":["wx","uni","getApiUrl","post","recordingCount"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"recording_duration.js","sources":["pages-subpackage/ai_features/recording_duration/recording_duration.vue","../../../work/soft/HBuilderX.4.87.20251210/plugins/uniapp-cli-vite/uniPage:/cGFnZXMtc3VicGFja2FnZVxhaV9mZWF0dXJlc1xyZWNvcmRpbmdfZHVyYXRpb25ccmVjb3JkaW5nX2R1cmF0aW9uLnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/work2/code/smartDriveEEUniApp1111/pages-subpackage/ai_features/recording_duration/recording_duration.vue'\nwx.createPage(MiniProgramPage)"],"names":["wx","uni","getApiUrl","post","recordingCount"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js index e537562..399759e 100644 --- a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js +++ b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.js @@ -12,7 +12,7 @@ function getSystemInfo() { windowHeight: windowInfo.windowHeight }; } catch (e) { - common_vendor.index.__f__("warn", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:99", "[RecordingDuration] Failed to use wx.getWindowInfo, fallback to getSystemInfoSync:", e); + common_vendor.index.__f__("warn", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:103", "[RecordingDuration] Failed to use wx.getWindowInfo, fallback to getSystemInfoSync:", e); } } try { @@ -23,7 +23,7 @@ function getSystemInfo() { windowHeight: systemInfo.windowHeight }; } catch (e) { - common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:113", "[RecordingDuration] Failed to get system info:", e); + common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:117", "[RecordingDuration] Failed to get system info:", e); return { statusBarHeight: 20, windowWidth: 375, @@ -54,11 +54,15 @@ const _sfc_main = { totalDuration: "0 分钟", recordingCount: "0", dataList: [], - loading: false + loading: false, + chartWidth: 0, + chartHeight: 300, + chartData: [] }; }, onLoad() { this.loadData(); + this.initChartSize(); }, onReady() { this.$nextTick(() => { @@ -71,7 +75,7 @@ const _sfc_main = { const totalHeight = statusBarHeightRpx + actualHeightRpx; const adjustedHeight = Math.max(totalHeight - 4, 0); this.$set(this, "contentTop", adjustedHeight + "rpx"); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:166", "[RecordingDuration] 使用实际导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 总高度:", totalHeight, "rpx, 调整后:", adjustedHeight, "rpx"); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:175", "[RecordingDuration] 使用实际导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 总高度:", totalHeight, "rpx, 调整后:", adjustedHeight, "rpx"); } else { const systemInfo = getSystemInfo(); const statusBarHeight = systemInfo.statusBarHeight; @@ -90,7 +94,7 @@ const _sfc_main = { const tabbarHeightRpx = tabbarHeight * 2; const adjustedBottom = Math.max(tabbarHeightRpx - 4, 0); this.$set(this, "contentBottom", adjustedBottom + "rpx"); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:190", "[RecordingDuration] 使用实际tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx"); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:199", "[RecordingDuration] 使用实际tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx"); } else { this.$set(this, "contentBottom", "0rpx"); } @@ -105,7 +109,7 @@ const _sfc_main = { const totalHeight = statusBarHeightRpx + actualHeightRpx; const adjustedHeight = Math.max(totalHeight - 4, 0); this.$set(this, "contentTop", adjustedHeight + "rpx"); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:209", "[RecordingDuration] 延迟更新导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 总高度:", totalHeight, "rpx, 调整后:", adjustedHeight, "rpx"); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:218", "[RecordingDuration] 延迟更新导航栏高度:", actualHeight, "px =", actualHeightRpx, "rpx, 总高度:", totalHeight, "rpx, 调整后:", adjustedHeight, "rpx"); } }).exec(); const queryTabbar2 = common_vendor.index.createSelectorQuery().in(this); @@ -115,7 +119,7 @@ const _sfc_main = { const tabbarHeightRpx = tabbarHeight * 2; const adjustedBottom = Math.max(tabbarHeightRpx - 4, 0); this.$set(this, "contentBottom", adjustedBottom + "rpx"); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:221", "[RecordingDuration] 延迟更新tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx"); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:230", "[RecordingDuration] 延迟更新tabbar高度:", tabbarHeight, "px =", tabbarHeightRpx, "rpx, 调整后:", adjustedBottom, "rpx"); } }).exec(); }, 200); @@ -150,7 +154,7 @@ const _sfc_main = { salesPhone: loginResponse.phone || null }; } catch (e) { - common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:258", "获取用户信息失败:", e); + common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:267", "获取用户信息失败:", e); return { salesId: null, salesPhone: null }; } }, @@ -211,8 +215,8 @@ const _sfc_main = { const queryString = Object.keys(queryParams).filter((key) => queryParams[key] !== null && queryParams[key] !== void 0 && queryParams[key] !== "").map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryParams[key])}`).join("&"); const baseUrl = common_config.getApiUrl("/api/audio-statistics/sales"); const url = queryString ? `${baseUrl}?${queryString}` : baseUrl; - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:338", "[RecordingDuration] 请求参数:", queryParams); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:339", "[RecordingDuration] 请求URL:", url); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:347", "[RecordingDuration] 请求参数:", queryParams); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:348", "[RecordingDuration] 请求URL:", url); common_vendor.index.showLoading({ title: "加载中...", mask: true @@ -233,8 +237,8 @@ const _sfc_main = { return; } const statisticsList = result.data || []; - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:374", "[RecordingDuration] 返回数据:", statisticsList); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:375", "[RecordingDuration] 返回结果:", result); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:383", "[RecordingDuration] 返回数据:", statisticsList); + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:384", "[RecordingDuration] 返回结果:", result); this.processStatisticsData(statisticsList); common_vendor.index.showToast({ title: "刷新成功", @@ -246,7 +250,7 @@ const _sfc_main = { } } catch (error) { common_vendor.index.hideLoading(); - common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:393", "[RecordingDuration] 加载数据失败:", error); + common_vendor.index.__f__("error", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:402", "[RecordingDuration] 加载数据失败:", error); common_vendor.index.showToast({ title: error.message || "加载失败,请重试", icon: "none", @@ -300,12 +304,126 @@ const _sfc_main = { this.dataList = formattedList; const recordingCount = firstItem.salesRecordingCountStatistic || firstItem.salesRecordingCount || 0; this.recordingCount = String(recordingCount); - common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:466", "[RecordingDuration] 数据处理完成:", { + common_vendor.index.__f__("log", "at pages-subpackage/ai_features/recording_duration/recording_duration.vue:475", "[RecordingDuration] 数据处理完成:", { totalDuration: this.totalDuration, recordingCount: this.recordingCount, dataListCount: this.dataList.length, statisticsListLength: statisticsList.length }); + this.prepareChartData(statisticsList); + }, + /** + * 初始化图表尺寸 + */ + initChartSize() { + const systemInfo = common_vendor.index.getSystemInfoSync(); + const screenWidth = systemInfo.windowWidth || 375; + this.chartWidth = screenWidth - 60; + }, + /** + * 准备图表数据 + */ + prepareChartData(statisticsList) { + if (!statisticsList || statisticsList.length === 0) { + this.chartData = []; + return; + } + const sortedList = [...statisticsList].sort((a, b) => { + const dateA = new Date(a.statisticsDate); + const dateB = new Date(b.statisticsDate); + return dateA - dateB; + }); + this.chartData = sortedList.map((item) => ({ + date: item.statisticsDate, + duration: item.salesTotalDuration || 0 + })); + this.$nextTick(() => { + setTimeout(() => { + this.drawChart(); + }, 100); + }); + }, + /** + * 绘制趋势图 + */ + drawChart() { + if (!this.chartData || this.chartData.length === 0) { + return; + } + const ctx = common_vendor.index.createCanvasContext("trendChart", this); + const width = this.chartWidth; + const height = this.chartHeight; + const padding = { + top: 40, + right: 20, + bottom: 50, + left: 50 + }; + const chartWidth = width - padding.left - padding.right; + const chartHeight = height - padding.top - padding.bottom; + ctx.clearRect(0, 0, width, height); + const durations = this.chartData.map((item) => item.duration); + const maxDuration = Math.max(...durations, 1); + Math.min(...durations, 0); + const yMax = Math.ceil(maxDuration / 100) * 100; + const yStep = yMax / 5; + ctx.setFillStyle("#666666"); + ctx.setFontSize(10); + for (let i = 0; i <= 5; i++) { + const y = padding.top + chartHeight - chartHeight / 5 * i; + const value = Math.round(yStep * i); + ctx.fillText(value.toString(), 5, y + 4); + ctx.setStrokeStyle("#e0e0e0"); + ctx.setLineWidth(1); + ctx.beginPath(); + ctx.moveTo(padding.left, y); + ctx.lineTo(padding.left + chartWidth, y); + ctx.stroke(); + } + const dataCount = this.chartData.length; + const xStep = chartWidth / Math.max(dataCount - 1, 1); + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const date = new Date(item.date); + const month = date.getMonth() + 1; + const day = date.getDate(); + const label = `${month}/${day}`; + ctx.setFillStyle("#666666"); + ctx.setFontSize(10); + ctx.fillText(label, x - 15, height - padding.bottom + 20); + }); + ctx.setStrokeStyle("#007aff"); + ctx.setLineWidth(2); + ctx.beginPath(); + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const y = padding.top + chartHeight - item.duration / yMax * chartHeight; + if (index === 0) { + ctx.moveTo(x, y); + } else { + ctx.lineTo(x, y); + } + }); + ctx.stroke(); + ctx.setFillStyle("#007aff"); + this.chartData.forEach((item, index) => { + const x = padding.left + xStep * index; + const y = padding.top + chartHeight - item.duration / yMax * chartHeight; + ctx.beginPath(); + ctx.arc(x, y, 4, 0, 2 * Math.PI); + ctx.fill(); + }); + ctx.setStrokeStyle("#333333"); + ctx.setLineWidth(1); + ctx.beginPath(); + ctx.moveTo(padding.left, padding.top); + ctx.lineTo(padding.left, padding.top + chartHeight); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(padding.left, padding.top + chartHeight); + ctx.lineTo(padding.left + chartWidth, padding.top + chartHeight); + ctx.stroke(); + ctx.draw(); } } }; @@ -351,7 +469,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { } : {}, { l: common_vendor.t($data.totalDuration), m: common_vendor.t($data.recordingCount), - n: common_vendor.f($data.dataList, (item, index, i0) => { + n: $data.chartWidth + "px", + o: $data.chartHeight + "px", + p: common_vendor.f($data.dataList, (item, index, i0) => { return { a: common_vendor.t(item.date), b: common_vendor.t(item.description), @@ -360,8 +480,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { e: index }; }), - o: $data.contentTop, - p: $data.contentBottom + q: $data.contentTop, + r: $data.contentBottom }); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-582d7c51"]]); diff --git a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxml b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxml index 12c4746..60026dc 100644 --- a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxml +++ b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxml @@ -1 +1 @@ -录音时长统计{{c}}{{option.a}}刷新{{l}}总录音时长{{m}}录音总条数时长趋势图📊 图表区域此处将显示录音时长趋势图表详细数据{{item.a}}{{item.b}}{{item.c}}{{item.d}} \ No newline at end of file +录音时长统计{{c}}{{option.a}}刷新{{l}}总录音时长{{m}}录音总条数时长趋势图详细数据{{item.a}}{{item.b}}{{item.c}}{{item.d}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxss b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxss index db195ef..3a77277 100644 --- a/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxss +++ b/unpackage/dist/dev/mp-weixin/pages-subpackage/ai_features/recording_duration/recording_duration.wxss @@ -189,19 +189,14 @@ padding: 30rpx; border-bottom: 1rpx solid #e9ecef; } -.chart-placeholder.data-v-582d7c51 { - padding: 80rpx 30rpx; - text-align: center; +.chart-container.data-v-582d7c51 { + padding: 30rpx; + display: flex; + justify-content: center; + align-items: center; } -.placeholder-text.data-v-582d7c51 { +.chart-canvas.data-v-582d7c51 { display: block; - font-size: 48rpx; - margin-bottom: 20rpx; -} -.placeholder-desc.data-v-582d7c51 { - display: block; - font-size: 28rpx; - color: #666666; } .list-item.data-v-582d7c51 { display: flex;