Explorar o código

fix(system): 修复消息内容白色文字问题

- 在查看消息时,将内容中的白色文字替换为黑色文字
- 在提交表单时,将内容中的所有颜色样式替换为白色背景下的可读颜色
- 添加接收人列显示- 注释掉不必要的代码
fugui001 hai 4 meses
pai
achega
1c4a931be2
Modificáronse 1 ficheiros con 42 adicións e 3 borrados
  1. 42 3
      src/views/system/business/receivers/index.vue

+ 42 - 3
src/views/system/business/receivers/index.vue

@@ -32,7 +32,7 @@
               >删除</el-button
             >
           </el-col>
-<!--          <el-col :span="1.5">
+          <!--          <el-col :span="1.5">
             <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:receivers:export']">导出</el-button>
           </el-col>-->
           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
@@ -42,7 +42,7 @@
       <el-table v-loading="loading" border :data="receiversList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="" align="center" prop="id" v-if="false" />
-<!--        <el-table-column label="接收人 ID" align="center" prop="userId" />-->
+        <!--        <el-table-column label="接收人 ID" align="center" prop="userId" />-->
         <el-table-column label="标题" align="center" prop="title" />
         <el-table-column label="消息内容" align="center" prop="contentText" :show-overflow-tooltip="true" />
         <el-table-column label="发送时间" align="center" prop="sendTime" width="180">
@@ -52,6 +52,7 @@
         </el-table-column>
         <el-table-column label="发送对象" align="center" prop="targetType" />
         <el-table-column label="发送人" align="center" prop="sendName" />
+        <el-table-column label="接收人" align="center" prop="receiveUserName" />
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
@@ -197,18 +198,55 @@ const handleAdd = () => {
 /** 修改按钮操作 */
 const handleUpdate = async (row?: ReceiversVO) => {
   reset();
+
   const _id = row?.id || ids.value[0];
   const res = await getReceivers(_id);
+
+  let processedContent = res.data.content;
+
+  if (processedContent) {
+    // 将白色替换为黑色
+    // 处理 rgb(255, 255, 255) 格式,正确转义括号
+    processedContent = processedContent.replace(/color:\s*rgb\(\s*255\s*,\s*255\s*,\s*255\s*\)/gi, 'color: rgb(0, 0, 0)');
+
+    // 处理十六进制白色 #ffffff 和 #fff
+    processedContent = processedContent.replace(/color:\s*#ffffff/gi, 'color: rgb(0, 0, 0)');
+    processedContent = processedContent.replace(/color:\s*#fff/gi, 'color: rgb(0, 0, 0)');
+
+    // 处理 white 关键字
+    processedContent = processedContent.replace(/color:\s*white/gi, 'color: rgb(0, 0, 0)');
+
+    res.data.content = processedContent;
+  }
+
   Object.assign(form.value, res.data);
   dialog.visible = true;
   dialog.title = '查看消息';
 };
-
 /** 提交按钮 */
 const submitForm = () => {
   receiversFormRef.value?.validate(async (valid: boolean) => {
     if (valid) {
       buttonLoading.value = true;
+
+      let processedContent = form.value.content;
+
+      if (processedContent) {
+        // 为没有颜色样式的<p>标签添加默认白色颜色
+        processedContent = processedContent.replace(/<p>([\s\S]*?)<\/p>/gi, (match, content) => {
+          if (!match.includes('color:')) {
+            return `<p><span style="color: rgb(255, 255, 255);">${content}</span></p>`;
+          }
+          return match;
+        });
+
+        // 将所有颜色相关的样式替换为白色 - 确保在黑色背景下可读
+        processedContent = processedContent.replace(/color:\s*[^;"}>']*/gi, 'color: rgb(255, 255, 255)');
+
+        // 更新回 form
+        form.value.content = processedContent;
+      }
+
       if (form.value.id) {
         await updateReceivers(form.value).finally(() => (buttonLoading.value = false));
       } else {
@@ -221,6 +259,7 @@ const submitForm = () => {
   });
 };
 
+
 /** 删除按钮操作 */
 const handleDelete = async (row?: ReceiversVO) => {
   const _ids = row?.id || ids.value;