浏览代码

修改psr bug

Renxy 1 年之前
父节点
当前提交
a10a4cfccb
共有 2 个文件被更改,包括 37 次插入1 次删除
  1. 4 0
      src/pages/PSRManage/detail.js
  2. 33 1
      src/utils/exportExcl.js

+ 4 - 0
src/pages/PSRManage/detail.js

@@ -183,6 +183,10 @@ const workConfig = [
     code: '05-010',
     fill: { r: 16, actC: 3, curC: 7 },
   },
+  {
+    code: '05-050',
+    fill: { r: 20, actC: 3, curC: 7 },
+  },
   {
     code: '06-010',
     fill: { r: 24, actC: 3, curC: 7 },

+ 33 - 1
src/utils/exportExcl.js

@@ -110,6 +110,8 @@ var setStyleAndValue = function (cellArr, worksheet) {
     row.every(function (cell, columnid) {
       if (!cell) return true;
       let fill = fillConvert(cell.bg);
+      if (fill?.fgColor?.argb && fill?.fgColor?.argb.includes('rgb'))
+        fill.fgColor.argb = rgbToHex(fill.fgColor.argb);
 
       let font = fontConvert(
         cell.ff,
@@ -165,7 +167,8 @@ var setColumnlen = function (luckyColumnlen, worksheet) {
 };
 
 var fillConvert = function (bg) {
-  if (!bg) {
+  //bg == '#fff'导出excel后会变成 #000FFF(蓝色)
+  if (!bg || bg == '#fff') {
     return {};
   }
   // const bgc = bg.replace('#', '')
@@ -457,3 +460,32 @@ export function getUUID(len = 8, radix = 16) {
 
   return uuid.join('');
 }
+
+function rgbToHex(rgbString) {
+  // var rgbString = "rgb(255, 255, 255)";
+  var hexColor = 'FFFFFF';
+
+  // 使用正则表达式匹配出数字部分
+  var match = rgbString?.match(/\d+/g);
+
+  if (match) {
+    var r = parseInt(match[0]); // 第一个匹配项是红色分量
+    var g = parseInt(match[1]); // 第二个匹配项是绿色分量
+    var b = parseInt(match[2]); // 第三个匹配项是蓝色分量
+
+    console.log('Red:', r);
+    console.log('Green:', g);
+    console.log('Blue:', b);
+    // 将每个RGB分量转换为十六进制,并确保至少两位
+    var redHex = r.toString(16).padStart(2, '0');
+    var greenHex = g.toString(16).padStart(2, '0');
+    var blueHex = b.toString(16).padStart(2, '0');
+
+    // 将三个分量的十六进制值连接起来
+    hexColor = redHex + greenHex + blueHex;
+
+    // 转换为大写字母形式
+    hexColor = hexColor.toUpperCase();
+  }
+  return hexColor;
+}