Ver Fonte

Merge branch 'develop'

xujunjie há 1 ano atrás
pai
commit
2d4b2e2def

+ 1 - 0
.gitignore

@@ -12,3 +12,4 @@
 /.mfsu
 .swc
 /.idea
+/.vscode

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 355
public/Luckysheet/css/luckysheet.css


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 45839
public/Luckysheet/luckysheet.umd.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
public/Luckysheet/luckysheet.umd.js.map


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 10
public/Luckysheet/plugins/css/pluginsCss.css


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 1
public/Luckysheet/plugins/js/plugin.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
public/Luckysheet/plugins/plugins.css


+ 2 - 2
src/pages/PSRManage/components/compareModal.js

@@ -27,9 +27,9 @@ const CompareModal = ({ list, open, onOk, onCancel }) => {
         }}
       >
         <Space direction="vertical">
-          {list?.map((item) => {
+          {list?.map((item, idx) => {
             return (
-              <Checkbox value={item.id}>
+              <Checkbox value={item.id} key={idx}>
                 {dayjs(item.day).format('YYYY-MM')}
               </Checkbox>
             );

+ 13 - 6
src/pages/PSRManage/components/saveOtherModal.js

@@ -2,7 +2,7 @@ import { DatePicker, Modal, Radio } from 'antd';
 import dayjs from 'dayjs';
 
 import { useState } from 'react';
-const SaveModal = ({ loading, open, onCancel, onOk }) => {
+const SaveModal = ({ loading, open, showType, onCancel, onOk }) => {
   const [day, setDay] = useState('1970-01-31');
   const [tab, setTab] = useState(1);
 
@@ -18,11 +18,18 @@ const SaveModal = ({ loading, open, onCancel, onOk }) => {
       onCancel={onCancel}
       onOk={() => onOk(tab == 1 ? { day } : { day, ver_type: 2 })}
     >
-      <span>类型:</span>
-      <Radio.Group onChange={(e) => setTab(e.target.value)} defaultValue={tab}>
-        <Radio.Button value={1}>月版本</Radio.Button>
-        <Radio.Button value={2}>基础版本</Radio.Button>
-      </Radio.Group>
+      {showType && (
+        <>
+          <span>类型:</span>
+          <Radio.Group
+            onChange={(e) => setTab(e.target.value)}
+            defaultValue={tab}
+          >
+            <Radio.Button value={1}>月版本</Radio.Button>
+            <Radio.Button value={2}>基础版本</Radio.Button>
+          </Radio.Group>
+        </>
+      )}
       {tab == '1' && (
         <div style={{ marginTop: '20px' }}>
           <span>月份:</span>

Diff do ficheiro suprimidas por serem muito extensas
+ 462 - 305
src/pages/PSRManage/detail.js


+ 3 - 2
src/pages/PSRManage/index.js

@@ -25,14 +25,15 @@ const PSRManage = () => {
       setSearchData({ ...searchData, current_page: 1, page_size });
     },
   });
-  console.log(data?.list);
   const columns = [
     {
       title: '项目编号',
+      key: 'project_full_code',
       dataIndex: 'project_full_code',
     },
     {
       title: '项目名称',
+      key: 'project_name',
       dataIndex: 'project_name',
     },
     {
@@ -60,7 +61,6 @@ const PSRManage = () => {
       ),
     },
   ];
-  const projectData = [];
 
   const handleSearch = () => {
     run({ ...searchData });
@@ -109,6 +109,7 @@ const PSRManage = () => {
         </Button>
       </div>
       <Table
+        rowKey="id"
         columns={columns}
         dataSource={data?.list}
         onChange={onTableChange}

+ 13 - 8
src/pages/PSRManage/index.less

@@ -1,35 +1,40 @@
-.searchContent{
+.searchContent {
   display: flex;
   align-items: center;
   margin-bottom: 40px;
   width: calc(100% - 55px);
-  .itemFlex{
+  .itemFlex {
     display: flex;
     align-items: center;
     margin-right: 30px;
   }
-  .searchBtnSty{
+  .searchBtnSty {
     margin-right: 20px;
   }
 }
-.titleDev{
+.titleDev {
   display: flex;
   align-items: center;
   margin-bottom: 20px;
-  .title{
+  .title {
     margin-left: 30px;
     font-size: 22px;
   }
 }
-.excelTitle{
+.excelTitle {
   display: flex;
   align-items: center;
   margin-bottom: 20px;
   justify-content: space-between;
 }
-.exportDiv{
+.exportDiv {
   display: flex;
   flex-direction: row-reverse;
   margin-bottom: 20px;
 }
-
+.noData {
+  width: 100%;
+  height: 80vh;
+  text-align: center;
+  line-height: 60vh;
+}

+ 48 - 2
src/utils/exportExcl.js

@@ -17,8 +17,10 @@ export function getExcelBolob(luckysheet) {
     const worksheet = workbook.addWorksheet(table.name);
     const merge = (table.config && table.config.merge) || {};
     const borderInfo = (table.config && table.config.borderInfo) || {};
+    const columnlen = (table.config && table.config.columnlen) || {};
     // 3.设置单元格合并,设置单元格边框,设置单元格样式,设置值
     setStyleAndValue(table.data, worksheet);
+    setColumnlen(columnlen, worksheet);
     setMerge(merge, worksheet);
     setBorder(borderInfo, worksheet);
     return true;
@@ -34,7 +36,6 @@ export function getExcelBolob(luckysheet) {
 }
 
 export function exportExcel(luckysheet, value) {
-  // return
   // 4.写入 buffer
   getExcelBolob(luckysheet).then((blob) => {
     console.log('导出成功!');
@@ -100,6 +101,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,
@@ -141,8 +144,22 @@ var setStyleAndValue = function (cellArr, worksheet) {
   });
 };
 
+//设置导出的列宽
+var setColumnlen = function (luckyColumnlen, worksheet) {
+  const columnlen = Object.values(luckyColumnlen);
+  const result = columnlen.map(function (elem, idx) {
+    return {
+      // header: idx,
+      key: idx,
+      width: elem / 10,
+    };
+  });
+  worksheet.columns = result;
+};
+
 var fillConvert = function (bg) {
-  if (!bg) {
+  //bg == '#fff'导出excel后会变成 #000FFF(蓝色)
+  if (!bg || bg == '#fff') {
     return {};
   }
   // const bgc = bg.replace('#', '')
@@ -434,3 +451,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;
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff