From 01d3b0dd65574a8b6ff6ff66b0474f2de82daa6a Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 31 三月 2026 10:34:49 +0800
Subject: [PATCH] 测试完成
---
src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue | 117 +++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 87 insertions(+), 30 deletions(-)
diff --git a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
index c0f9faf..46e59de 100644
--- a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
+++ b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
@@ -2,13 +2,14 @@
<div class="topic-dialog">
<div class="topicdia">
<div style="overflow-x: hidden; overflow-y: auto; max-height: 65vh">
+ <!-- 淇敼杩欓噷锛氫娇鐢� processedTopicList 鑰屼笉鏄� topicList -->
<div
- v-for="(item, index) in topiclist"
- :key="index"
+ v-for="(item, index) in processedTopicList"
+ :key="item.scriptid"
class="ttaabbcc"
>
<div class="describe">
- 绗瑊{ index + 1 }}棰橈細 {{ item.scriptContent }}?
+ 绗瑊{ index + 1 }}棰橈細 {{ item.scriptContent }}
<span>[{{ item.scriptType == 1 ? "鍗曢�夐" : "澶氶�夐" }}]</span>
</div>
<div>
@@ -24,7 +25,11 @@
label="閫夋嫨浜烘暟"
align="center"
min-width="120"
- />
+ >
+ <template slot-scope="{ row }">
+ {{ row.chosenQuantity || 0 }}
+ </template>
+ </el-table-column>
<el-table-column
prop="chosenPercentage"
label="姣斾緥"
@@ -32,8 +37,13 @@
min-width="120"
>
<template slot-scope="{ row }">
- <span v-if="row.chosenPercentage !== null && row.chosenPercentage !== undefined">
- {{ formatPercent(row.chosenPercentage) }}
+ <span
+ v-if="
+ row.chosenPercentage !== null &&
+ row.chosenPercentage !== undefined
+ "
+ >
+ {{ (Number(row.chosenPercentage) * 100).toFixed(2) }}%
</span>
<span v-else>-</span>
</template>
@@ -44,7 +54,20 @@
</div>
</div>
- <div slot="footer" class="dialog-footer" style="text-align: center; padding-top: 20px;">
+ <!-- 濡傛灉娌℃湁鏁版嵁 -->
+ <div
+ v-if="!processedTopicList.length"
+ class="no-data"
+ style="text-align: center; padding: 50px 0"
+ >
+ <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+ </div>
+
+ <div
+ slot="footer"
+ class="dialog-footer"
+ style="text-align: center; padding-top: 20px"
+ >
<el-button @click="handleClose">鍏� 闂�</el-button>
</div>
</div>
@@ -52,52 +75,86 @@
<script>
export default {
- name: 'TopicDialog',
+ name: "TopicDialog",
props: {
rowData: {
type: Object,
- default: () => ({})
+ default: () => ({}),
},
queryParams: {
type: Object,
- default: () => ({})
- }
+ default: () => ({}),
+ },
+ topicList: {
+ type: [Array, Object],
+ default: () => ({}),
+ },
},
data() {
return {
- topiclist: []
+ processedTopicList: [], // 澶勭悊鍚庣殑鏁版嵁
};
},
-
- mounted() {
- this.loadData();
+ watch: {
+ // 鐩戝惉鐖剁粍浠朵紶閫掔殑鏁版嵁鍙樺寲
+ topicList: {
+ immediate: true,
+ handler(newVal) {
+ console.log("TopicDialog鎺ユ敹鍒扮埗缁勪欢鏁版嵁:", newVal);
+ this.processTopicList(newVal);
+ },
+ },
},
-
+ mounted() {
+ console.log("TopicDialog mounted, props:", this.$props);
+ },
methods: {
- // 鍔犺浇鏁版嵁
- async loadData() {
- try {
- // 杩欓噷浠庣埗缁勪欢浼犻�掓暟鎹紝涓嶉渶瑕侀噸鏂拌皟鐢ˋPI
- this.topiclist = this.$parent.topiclist || [];
- } catch (error) {
- console.error('鍔犺浇棰樼洰璇︽儏澶辫触:', error);
- this.$message.error('鍔犺浇棰樼洰璇︽儏澶辫触');
+ // 澶勭悊topicList鏁版嵁
+ processTopicList(data) {
+ console.log("寮�濮嬪鐞嗘暟鎹�:", data);
+
+ if (!data || typeof data !== "object") {
+ this.processedTopicList = [];
+ return;
}
+
+ // 灏嗗璞¤浆鎹负鏁扮粍
+ const result = [];
+
+ Object.keys(data).forEach((key) => {
+ const item = data[key];
+ if (item && item.scriptContent) {
+ // 娣辨嫹璐漣tem锛岄伩鍏嶄慨鏀瑰師鏁版嵁
+ const processedItem = JSON.parse(JSON.stringify(item));
+
+ // 杩囨护details锛屽彧淇濈暀鏈夐�夐」鏂囨湰鐨�
+ if (processedItem.details && Array.isArray(processedItem.details)) {
+ processedItem.details = processedItem.details.filter(
+ (detail) => detail && detail.optionText
+ );
+ }
+
+ result.push(processedItem);
+ }
+ });
+
+ console.log("澶勭悊鍚庣殑鏁版嵁:", result);
+ this.processedTopicList = result;
},
// 鏍煎紡鍖栫櫨鍒嗘瘮
formatPercent(value) {
- if (value === null || value === undefined) return '-';
+ if (value === null || value === undefined) return "-";
const num = parseFloat(value);
- if (isNaN(num)) return '-';
- return `${(num * 100).toFixed(2)}%`;
+ if (isNaN(num)) return "-";
+ return `${num.toFixed(2)}%`; // 娉ㄦ剰锛氫綘鐨勬暟鎹腑鐧惧垎姣斿凡缁忔槸0-100鐨勫舰寮�
},
// 鍏抽棴瀵硅瘽妗�
handleClose() {
- this.$emit('close');
- }
- }
+ this.$emit("close");
+ },
+ },
};
</script>
--
Gitblit v1.9.3