From 74960e7d4f3042fb9e0ec54af823a360d4aa2bbe Mon Sep 17 00:00:00 2001
From: liuwh <964324856@qq.com>
Date: Tue, 17 Sep 2024 17:17:45 +0800
Subject: [PATCH] 提交

---
 gz-customerSystem/src/assets/images/workDash_6.png         |    0 
 gz-customerSystem/src/assets/images/disputeLedger_5.png    |    0 
 gz-customerSystem/src/assets/images/workDash_1.png         |    0 
 gz-customerSystem/src/assets/images/disputeLedger_4.png    |    0 
 gz-customerSystem/src/assets/images/workDash_7.png         |    0 
 gz-customerSystem/src/views/disputeLedger/index.jsx        |  451 +++++++++++
 gz-customerSystem/src/assets/images/workDash_5.png         |    0 
 gz-customerSystem/src/assets/images/disputeLedger_6.png    |    0 
 gz-customerSystem/src/assets/images/disputeLedger_3.png    |    0 
 gz-customerSystem/src/assets/images/workDash_2.png         |    0 
 gz-customerSystem/src/utils/utility.js                     |    6 
 gz-customerSystem/src/views/workDash/index.jsx             |  806 +++++++++++++++++++++
 gz-customerSystem/src/assets/images/disputeLedger_7.png    |    0 
 gz-customerSystem/src/assets/images/workDash_4.png         |    0 
 gz-customerSystem/src/components/NewTableSearch/index.jsx  |  149 ++-
 gz-customerSystem/src/assets/images/index.js               |  310 ++++---
 gz-customerSystem/src/views/workDash/index.less            |  313 ++++++++
 gz-customerSystem/src/assets/images/disputeLedger_2.png    |    0 
 gz-customerSystem/src/views/comprehensive/index.jsx        |  100 +-
 gz-customerSystem/src/api/appUrl.js                        |    6 
 gz-customerSystem/src/views/comprehensive/index.less       |   10 
 gz-customerSystem/src/assets/images/workDash_9.png         |    0 
 gz-customerSystem/src/router/router.js                     |    5 
 gz-customerSystem/src/assets/images/disputeLedger_1.png    |    0 
 gz-customerSystem/src/assets/images/workDash_3.png         |    0 
 gz-customerSystem/src/assets/images/workDash_8.png         |    0 
 gz-customerSystem/src/views/disputeLedger/index.less       |  112 ++
 gz-customerSystem/src/components/NewTableSearch/index.less |    5 
 28 files changed, 2,008 insertions(+), 265 deletions(-)

diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js
index 20217be..9a37c3e 100644
--- a/gz-customerSystem/src/api/appUrl.js
+++ b/gz-customerSystem/src/api/appUrl.js
@@ -2,15 +2,15 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-02-16 11:25:57
- * @LastEditTime: 2024-09-14 15:43:38
+ * @LastEditTime: 2024-09-15 10:34:45
  * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description: api地址
  */
 export const debug = {
   // web服务
-  // baseUrl: 'http://gz.hugeinfo.com.cn',
-  baseUrl: "http://4gg4nv.natappfree.cc",
+  baseUrl: 'http://gz.hugeinfo.com.cn',
+  // baseUrl: "http://4gg4nv.natappfree.cc",
   // baseUrl: 'http://mdqgnh.natappfree.cc',
 
   // 附件服务
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_1.png b/gz-customerSystem/src/assets/images/disputeLedger_1.png
new file mode 100644
index 0000000..86bd13a
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_1.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_2.png b/gz-customerSystem/src/assets/images/disputeLedger_2.png
new file mode 100644
index 0000000..cf3e3fb
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_2.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_3.png b/gz-customerSystem/src/assets/images/disputeLedger_3.png
new file mode 100644
index 0000000..6587d5d
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_3.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_4.png b/gz-customerSystem/src/assets/images/disputeLedger_4.png
new file mode 100644
index 0000000..5292a83
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_4.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_5.png b/gz-customerSystem/src/assets/images/disputeLedger_5.png
new file mode 100644
index 0000000..48934ee
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_5.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_6.png b/gz-customerSystem/src/assets/images/disputeLedger_6.png
new file mode 100644
index 0000000..241fb44
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_6.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/disputeLedger_7.png b/gz-customerSystem/src/assets/images/disputeLedger_7.png
new file mode 100644
index 0000000..56850ef
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/disputeLedger_7.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/index.js b/gz-customerSystem/src/assets/images/index.js
index d5aff9f..fff1650 100644
--- a/gz-customerSystem/src/assets/images/index.js
+++ b/gz-customerSystem/src/assets/images/index.js
@@ -2,147 +2,179 @@
  * @Company: hugeInfo
  * @Author: lwh
  * @Date: 2023-04-24 16:12:00
- * @LastEditTime: 2024-09-11 09:44:38
- * @LastEditors: dminyi 1301963064@qq.com
+ * @LastEditTime: 2024-09-17 12:30:42
+ * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description:
  */
-import ledger_1 from "./ledger_1.png";
-import ledger_2 from "./ledger_2.png";
-import ledger_3 from "./ledger_3.png";
-import ledger_4 from "./ledger_4.png";
-import ledger_5 from "./ledger_5.png";
-import ledger_6 from "./ledger_6.png";
-import ledger_7 from "./ledger_7.png";
-import ledger_8 from "./ledger_8.png";
-import ledger_9 from "./ledger_9.svg";
-import ledger_10 from "./ledger_10.png";
-import ledger_11 from "./ledger_11.png";
-import ledger_12 from "./ledger_12.png";
-import ledger_13 from "./ledger_13.png";
-import mediateBigData_1 from "./mediateBigData_1.png";
-import mediateBigData_2 from "./mediateBigData_2.png";
-import mediateBigData_3 from "./mediateBigData_3.png";
-import mediateBigData_4 from "./mediateBigData_4.png";
-import mediateBigData_5 from "./mediateBigData_5.png";
-import mediateBigData_6 from "./mediateBigData_6.png";
-import mediateBigData_7 from "./mediateBigData_7.png";
-import mediateBigData_8 from "./mediateBigData_8.png";
-import caseDetail from "./caseDetail.png";
-import caseDetailResult from "./caseDetailResult.png";
-import process from "./process.png";
-import add from "./add.png";
-import del from "./del.png";
-import question from "./question.png";
-import question1 from "./question1.png";
-import person from "./person.png";
-import link from "./link.png";
-import check from "./check.png";
-import image from "./image.png";
-import applyMaterials from "./applyMaterials.png";
-import applyMaterials_active from "./applyMaterials_active.png";
-import evidenceMaterials from "./evidenceMaterials.png";
-import evidenceMaterials_active from "./evidenceMaterials_active.png";
-import closeIcon from "./closeIcon.png";
-import backgroundImage from "./backgroundImage.jpg";
-import logo1 from "./logo1.png";
-import register from "./register.png";
-import Matter from "./matter.png";
-import transfer from "./transfer.png";
-import empty from "./empty.png";
-import feedback from "./feedback.png";
-import fold from "./fold.png";
-import down from "./down.png";
-import tip from "./tip.png";
-import apply from "./apply.png";
-import examine from "./examine.png";
-import knock from "./knock.png";
-import edit from "./edit.png";
-import applyRecord from "./applyRecord.png";
-import downO from "./downO.png";
-import up from "./up.png";
-import Audit from "./Audit.png";
-import aiPerson from "./aiPerson.png";
-import caselogo from "./caselogo.png";
-import tab1 from "./tab1.png";
-import tab2 from "./tab2.png";
-import tab3 from "./tab3.png";
-import tab4 from "./tab4.png";
-import tab5 from "./tab5.png";
-import tab6 from "./tab6.png";
-import visitInto from "./visitInto.png";
-import checkInto from "./checkInto.png";
-import floating from "./floating.png";
-import Aimge from "./Aimge.png";
-import yewu from "./yewu.png";
+import ledger_1 from './ledger_1.png';
+import ledger_2 from './ledger_2.png';
+import ledger_3 from './ledger_3.png';
+import ledger_4 from './ledger_4.png';
+import ledger_5 from './ledger_5.png';
+import ledger_6 from './ledger_6.png';
+import ledger_7 from './ledger_7.png';
+import ledger_8 from './ledger_8.png';
+import ledger_9 from './ledger_9.svg';
+import ledger_10 from './ledger_10.png';
+import ledger_11 from './ledger_11.png';
+import ledger_12 from './ledger_12.png';
+import ledger_13 from './ledger_13.png';
+import mediateBigData_1 from './mediateBigData_1.png';
+import mediateBigData_2 from './mediateBigData_2.png';
+import mediateBigData_3 from './mediateBigData_3.png';
+import mediateBigData_4 from './mediateBigData_4.png';
+import mediateBigData_5 from './mediateBigData_5.png';
+import mediateBigData_6 from './mediateBigData_6.png';
+import mediateBigData_7 from './mediateBigData_7.png';
+import mediateBigData_8 from './mediateBigData_8.png';
+import caseDetail from './caseDetail.png';
+import caseDetailResult from './caseDetailResult.png';
+import process from './process.png';
+import add from './add.png';
+import del from './del.png';
+import question from './question.png';
+import question1 from './question1.png';
+import person from './person.png';
+import link from './link.png';
+import check from './check.png';
+import image from './image.png';
+import applyMaterials from './applyMaterials.png';
+import applyMaterials_active from './applyMaterials_active.png';
+import evidenceMaterials from './evidenceMaterials.png';
+import evidenceMaterials_active from './evidenceMaterials_active.png';
+import closeIcon from './closeIcon.png';
+import backgroundImage from './backgroundImage.jpg';
+import logo1 from './logo1.png';
+import register from './register.png';
+import Matter from './matter.png';
+import transfer from './transfer.png';
+import empty from './empty.png';
+import feedback from './feedback.png';
+import fold from './fold.png';
+import down from './down.png';
+import tip from './tip.png';
+import apply from './apply.png';
+import examine from './examine.png';
+import knock from './knock.png';
+import edit from './edit.png';
+import applyRecord from './applyRecord.png';
+import downO from './downO.png';
+import up from './up.png';
+import Audit from './Audit.png';
+import aiPerson from './aiPerson.png';
+import caselogo from './caselogo.png';
+import tab1 from './tab1.png';
+import tab2 from './tab2.png';
+import tab3 from './tab3.png';
+import tab4 from './tab4.png';
+import tab5 from './tab5.png';
+import tab6 from './tab6.png';
+import visitInto from './visitInto.png';
+import checkInto from './checkInto.png';
+import floating from './floating.png';
+import Aimge from './Aimge.png';
+import yewu from './yewu.png';
+import disputeLedger_1 from './disputeLedger_1.png';
+import disputeLedger_2 from './disputeLedger_2.png';
+import disputeLedger_3 from './disputeLedger_3.png';
+import disputeLedger_4 from './disputeLedger_4.png';
+import disputeLedger_5 from './disputeLedger_5.png';
+import disputeLedger_6 from './disputeLedger_6.png';
+import disputeLedger_7 from './disputeLedger_7.png';
+import workDash_1 from './workDash_1.png';
+import workDash_2 from './workDash_2.png';
+import workDash_3 from './workDash_3.png';
+import workDash_4 from './workDash_4.png';
+import workDash_5 from './workDash_5.png';
+import workDash_6 from './workDash_6.png';
+import workDash_7 from './workDash_7.png';
+import workDash_8 from './workDash_8.png';
+import workDash_9 from './workDash_9.png';
 
 export {
-  ledger_1,
-  ledger_2,
-  ledger_3,
-  ledger_4,
-  ledger_5,
-  ledger_6,
-  ledger_7,
-  ledger_8,
-  ledger_9,
-  ledger_10,
-  ledger_11,
-  ledger_12,
-  ledger_13,
-  mediateBigData_1,
-  mediateBigData_2,
-  mediateBigData_3,
-  mediateBigData_4,
-  mediateBigData_5,
-  mediateBigData_6,
-  mediateBigData_7,
-  mediateBigData_8,
-  caseDetail,
-  caseDetailResult,
-  process,
-  add,
-  del,
-  question,
-  question1,
-  person,
-  link,
-  check,
-  image,
-  applyMaterials,
-  applyMaterials_active,
-  evidenceMaterials,
-  evidenceMaterials_active,
-  closeIcon,
-  backgroundImage,
-  logo1,
-  register,
-  Matter,
-  transfer,
-  empty,
-  feedback,
-  fold,
-  down,
-  tip,
-  apply,
-  examine,
-  knock,
-  edit,
-  applyRecord,
-  downO,
-  up,
-  Audit,
-  aiPerson,
-  caselogo,
-  tab1,
-  tab2,
-  tab3,
-  tab4,
-  tab5,
-  tab6,
-  visitInto,
-  checkInto,
-  floating,
-  Aimge,
-  yewu
-};
\ No newline at end of file
+	ledger_1,
+	ledger_2,
+	ledger_3,
+	ledger_4,
+	ledger_5,
+	ledger_6,
+	ledger_7,
+	ledger_8,
+	ledger_9,
+	ledger_10,
+	ledger_11,
+	ledger_12,
+	ledger_13,
+	mediateBigData_1,
+	mediateBigData_2,
+	mediateBigData_3,
+	mediateBigData_4,
+	mediateBigData_5,
+	mediateBigData_6,
+	mediateBigData_7,
+	mediateBigData_8,
+	caseDetail,
+	caseDetailResult,
+	process,
+	add,
+	del,
+	question,
+	question1,
+	person,
+	link,
+	check,
+	image,
+	applyMaterials,
+	applyMaterials_active,
+	evidenceMaterials,
+	evidenceMaterials_active,
+	closeIcon,
+	backgroundImage,
+	logo1,
+	register,
+	Matter,
+	transfer,
+	empty,
+	feedback,
+	fold,
+	down,
+	tip,
+	apply,
+	examine,
+	knock,
+	edit,
+	applyRecord,
+	downO,
+	up,
+	Audit,
+	aiPerson,
+	caselogo,
+	tab1,
+	tab2,
+	tab3,
+	tab4,
+	tab5,
+	tab6,
+	visitInto,
+	checkInto,
+	floating,
+	Aimge,
+	yewu,
+	disputeLedger_1,
+	disputeLedger_2,
+	disputeLedger_3,
+	disputeLedger_4,
+	disputeLedger_5,
+	disputeLedger_6,
+	disputeLedger_7,
+	workDash_1,
+	workDash_2,
+	workDash_3,
+	workDash_4,
+	workDash_5,
+	workDash_6,
+	workDash_7,
+	workDash_8,
+	workDash_9,
+};
diff --git a/gz-customerSystem/src/assets/images/workDash_1.png b/gz-customerSystem/src/assets/images/workDash_1.png
new file mode 100644
index 0000000..ea64404
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_1.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_2.png b/gz-customerSystem/src/assets/images/workDash_2.png
new file mode 100644
index 0000000..1c183bf
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_2.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_3.png b/gz-customerSystem/src/assets/images/workDash_3.png
new file mode 100644
index 0000000..5e150ee
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_3.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_4.png b/gz-customerSystem/src/assets/images/workDash_4.png
new file mode 100644
index 0000000..6183590
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_4.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_5.png b/gz-customerSystem/src/assets/images/workDash_5.png
new file mode 100644
index 0000000..b66aa65
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_5.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_6.png b/gz-customerSystem/src/assets/images/workDash_6.png
new file mode 100644
index 0000000..ea48506
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_6.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_7.png b/gz-customerSystem/src/assets/images/workDash_7.png
new file mode 100644
index 0000000..35fd673
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_7.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_8.png b/gz-customerSystem/src/assets/images/workDash_8.png
new file mode 100644
index 0000000..0ca38ee
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_8.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/workDash_9.png b/gz-customerSystem/src/assets/images/workDash_9.png
new file mode 100644
index 0000000..4d35e33
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/workDash_9.png
Binary files differ
diff --git a/gz-customerSystem/src/components/NewTableSearch/index.jsx b/gz-customerSystem/src/components/NewTableSearch/index.jsx
index 5e8a818..e08aa71 100644
--- a/gz-customerSystem/src/components/NewTableSearch/index.jsx
+++ b/gz-customerSystem/src/components/NewTableSearch/index.jsx
@@ -18,7 +18,7 @@
  * handleSearch, // 搜索
  * exportButton //导出按钮
  */
-const NewTableSearch = ({ form, itemData, labelLength = 5, rowNum = 3, handleReset, handleSearch, exportButton }) => {
+const NewTableSearch = ({ form, itemData, labelLength = 5, rowNum = 3, handleReset, handleSearch, exportButtonShow = true, exportButton }) => {
   const [searchMore, setSearchMore] = useState(false);
 
   const span = 24 / rowNum;
@@ -60,80 +60,91 @@
 
   return (
     <Form form={form} labelAlign="right" className="tableSearch">
-
-      {itemData.map((x, t) => {
-        let placeholder = x.placeholder || setPlaceholder(x.name, x.type);
-        let allowClear = x.allowClear || true;
-        let dom = null;
-        let rules = {};
-        if (x.type === 'Input') {
-          dom = <Input placeholder={placeholder} allowClear {...x} />;
-          rules = { max: x.max || 32, message: '搜索内容过长' };
-        }
-        if (x.type === 'Select') {
-          dom = (
-            <Select allowClear placeholder={placeholder} {...x}>
-              {x.selectdata?.map((y) => (
-                <Option key={y.value}>{y.label}</Option>
-              ))}
-            </Select>
-          );
-        }
-        if (x.type === 'RangePicker') {
-          rules = { type: 'array' };
-          dom = (
-            <RangePicker
-              style={{ width: '100%' }}
-              ranges={{
-                '今日': [$$.myMoment(), $$.myMoment()],
-                '本月': [$$.myMoment().startOf('month'), $$.myMoment().endOf('month')],
-              }}
-              allowClear
-              {...x}
-            />
-          );
-        }
-        if (x.type === 'TreeSelect') {
-          dom = (
-            <TreeSelect
-              showSearch
-              placeholder={placeholder}
-              dropdownStyle={{ maxHeight: 500, overflow: 'auto' }}
-              treeData={x.treedata}
-              treeDefaultExpandAll
-              allowClear
-              filterTreeNode={(inputValue, treeNode) => (treeNode.label.indexOf(inputValue) !== -1 ? true : false)}
-              {...x}
-            />
-          );
-        }
-        return (
-          <Row className='tableSearch-searchMore-row' gutter={[24, 16]} style={display && { display: searchMore ? 'block' : t < lineNum ? 'block' : 'none' }}>
-            <Col span={x.span || 8} key={t + 1}>
-              <Form.Item name={x.name} rules={[rules]} label={<div style={{ width: `${fontSize * labelLength}px` }}>{x.label}</div>}>
-                {dom}
-              </Form.Item>
+      <Row className='tableSearch-searchMore-row' gutter={[24, 16]} >
+        {itemData.map((x, t) => {
+          let placeholder = x.placeholder || setPlaceholder(x.name, x.type);
+          let allowClear = x.allowClear || true;
+          let dom = null;
+          let rules = {};
+          if (x.type === 'Input') {
+            dom = <Input placeholder={placeholder} allowClear {...x} />;
+            rules = { max: x.max || 32, message: '搜索内容过长' };
+          }
+          if (x.type === 'Select') {
+            dom = (
+              <Select allowClear placeholder={placeholder} {...x}>
+                {x.selectdata?.map((y) => (
+                  <Option key={y.value}>{y.label}</Option>
+                ))}
+              </Select>
+            );
+          }
+          if (x.type === 'RangePicker') {
+            rules = { type: 'array' };
+            dom = (
+              <RangePicker
+                style={{ width: '100%' }}
+                ranges={{
+                  '今日': [$$.myMoment(), $$.myMoment()],
+                  '本月': [$$.myMoment().startOf('month'), $$.myMoment().endOf('month')],
+                }}
+                allowClear
+                {...x}
+              />
+            );
+          }
+          if (x.type === 'TreeSelect') {
+            dom = (
+              <TreeSelect
+                showSearch
+                placeholder={placeholder}
+                dropdownStyle={{ maxHeight: 500, overflow: 'auto' }}
+                treeData={x.treedata}
+                treeDefaultExpandAll
+                allowClear
+                filterTreeNode={(inputValue, treeNode) => (treeNode.label.indexOf(inputValue) !== -1 ? true : false)}
+                {...x}
+              />
+            );
+          }
+          if (x.type === 'null') {
+            dom = (
+              <Col span={x.span || 8}></Col>
+            );
+          }
+          return (
+            <Col span={x.span || 8} style={display && { display: searchMore ? 'block' : t < lineNum ? 'block' : 'none' }} key={t + 1}>
+              {
+                x.type === 'null' ? <>{ dom }</> :
+                  <Form.Item name={x.name} rules={[rules]} label={<div style={{ width: `${fontSize * labelLength}px` }}>{x.label}</div>}>
+                    {dom}
+                  </Form.Item>
+              }
             </Col>
-          </Row>
-          // <div>
-          //   <Col span={8} style={display && { display: searchMore ? 'block' : t < lineNum ? 'block' : 'none' }} key={t + 1}>
-          //     <Form.Item name={x.name} rules={[rules]} label={<div style={{ width: `${fontSize * labelLength}px` }}>{x.label}</div>}>
-          //       {dom}
-          //     </Form.Item>
-          //   </Col>
-          //   <Col span={8}></Col>
-          //   <Col span={8}></Col>
-          // </div>
-        );
-      })}
+            // <div>
+            //   <Col span={8} style={display && { display: searchMore ? 'block' : t < lineNum ? 'block' : 'none' }} key={t + 1}>
+            //     <Form.Item name={x.name} rules={[rules]} label={<div style={{ width: `${fontSize * labelLength}px` }}>{x.label}</div>}>
+            //       {dom}
+            //     </Form.Item>
+            //   </Col>
+            //   <Col span={8}></Col>
+            //   <Col span={8}></Col>
+            // </div>
+          );
+        })}
+      </Row>
+      <div className='NewTableSearch-border'></div>
       <Row style={{ marginTop: '16px' }}>
         <Col span={24} style={{ textAlign: 'left' }}>
           <Button className="public-buttonMargin" type="primary" htmlType="submit" icon={<SearchOutlined />} onClick={handleSearch}>
             查询
           </Button>
-          <Button className="public-buttonMargin" type="primary" ghost htmlType="submit" onClick={exportButton}>
-            导出查询结果
-          </Button>
+          {
+            exportButtonShow &&
+            <Button className="public-buttonMargin" type="primary" ghost htmlType="submit" onClick={exportButton}>
+              导出查询结果
+            </Button>
+          }
           <Button onClick={handleReset}>
             重置条件
           </Button>
diff --git a/gz-customerSystem/src/components/NewTableSearch/index.less b/gz-customerSystem/src/components/NewTableSearch/index.less
index 1cde11a..b6b389f 100644
--- a/gz-customerSystem/src/components/NewTableSearch/index.less
+++ b/gz-customerSystem/src/components/NewTableSearch/index.less
@@ -17,3 +17,8 @@
     margin-bottom: 16px;
   }
 }
+
+.NewTableSearch-border {
+  margin: 12px 0;
+  border-bottom: 1px solid #E5E6EB;
+}
diff --git a/gz-customerSystem/src/router/router.js b/gz-customerSystem/src/router/router.js
index fdd2660..a482be0 100644
--- a/gz-customerSystem/src/router/router.js
+++ b/gz-customerSystem/src/router/router.js
@@ -2,7 +2,7 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-03-28 11:22:41
- * @LastEditTime: 2024-09-14 16:09:40
+ * @LastEditTime: 2024-09-17 10:42:26
  * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description: 路由
@@ -130,6 +130,7 @@
 import Comprehensive from '../views/comprehensive';
 // 纠纷台账
 import DisputeLedger from '../views/disputeLedger';
+import WorkDash from '../views/workDash';
 
 // 数据分析
 import DataSearch from '../views/statistic/dataSearch';
@@ -235,6 +236,8 @@
 						<Route path="comprehensive" element={<Comprehensive />} />
             {/* 纠纷台账 */}
 						<Route path="account" element={<DisputeLedger />} />
+            {/* 解纷态势 */}
+						<Route path="workDash" element={<WorkDash />} />
 						{/* 数据分析 */}
 						<Route path="dataSearch" element={<DataSearch />} />
 						{/* 调解视窗成功页 */}
diff --git a/gz-customerSystem/src/utils/utility.js b/gz-customerSystem/src/utils/utility.js
index bc2e5b1..69fb8b2 100644
--- a/gz-customerSystem/src/utils/utility.js
+++ b/gz-customerSystem/src/utils/utility.js
@@ -2,8 +2,8 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-02-16 11:57:54
- * @LastEditTime: 2024-09-12 10:55:38
- * @LastEditors: dminyi 1301963064@qq.com
+ * @LastEditTime: 2024-09-15 10:36:03
+ * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description: 公共模块方法
  */
@@ -15,7 +15,7 @@
 import moment from 'moment';
 import { pdf, jpg, file, word, excel } from '../assets/images/icon';
 
-export const isDebug = true; // 是否测试环境
+export const isDebug = false; // 是否测试环境
 
 export const appUrl = isDebug ? debug : web; // api
 
diff --git a/gz-customerSystem/src/views/comprehensive/index.jsx b/gz-customerSystem/src/views/comprehensive/index.jsx
index f06c4a7..f1bd214 100644
--- a/gz-customerSystem/src/views/comprehensive/index.jsx
+++ b/gz-customerSystem/src/views/comprehensive/index.jsx
@@ -5,7 +5,7 @@
 import { FolderFilled } from '@ant-design/icons';
 import * as $$ from '../../utils/utility';
 import { useLocation, useNavigate } from 'react-router-dom';
-import TableView from '../../components/TableView';
+import TableView from '../../components/TableViewCanSort';
 import NewTableSearch from '../../components/NewTableSearch';
 import MyTabs from '../../components/MyTabs';
 import './index.less'
@@ -42,9 +42,9 @@
   // 表头
   const columns = () => {
     const columnsData = [
-      { title: '事项状态', width: 80, dataIndex: 'statusName' },
-      { title: '事项来源', width: 80, dataIndex: 'canalName' },
-      { title: '事项等级', width: 80, dataIndex: 'caseLevel' },
+      { title: '事项状态', width: 100, dataIndex: 'statusName' },
+      { title: '事项来源', width: 100, dataIndex: 'canalName' },
+      { title: '事项等级', width: 100, dataIndex: 'caseLevel' },
       { title: '纠纷类型', width: 150, dataIndex: 'caseTypeName' },
       { title: '承办部门', width: 150, dataIndex: 'mediateDeptName' },
       { title: '配合部门', width: 150, dataIndex: 'assistUnitName' },
@@ -171,8 +171,8 @@
     if (res.type) {
       setSearch(submitData);
       setData({
-        total: res.data?.totalElements,
-        tableData: res.data?.content || [],
+        total: 0,
+        tableData: [],
       });
     }
   }
@@ -205,7 +205,11 @@
             form={form}
             itemData={[
               { type: 'RangePicker', name: 'acceptTime', label: '办结时间', span: 8 },
+              { type: 'null'},
+              { type: 'null'},
               { type: 'RangePicker', name: 'acceptTime', label: '归档时间', span: 8 },
+              { type: 'null'},
+              { type: 'null'},
               {
                 type: 'Select',
                 name: 'joinRole',
@@ -216,46 +220,62 @@
                   { label: '我协助的', value: '2' },
                 ],
               },
-              {
-                type: 'Select',
-                name: 'joinRole',
-                label: '承办部门',
-                selectdata: [
-                  { label: '我负责的', value: '1' },
-                  { label: '我协助的', value: '2' },
-                ],
-              },
-              {
-                type: 'Select',
-                name: 'joinRole',
-                label: '登记机构',
-                selectdata: [
-                  { label: '我负责的', value: '1' },
-                  { label: '我协助的', value: '2' },
-                ],
-              },
-              { type: 'Input', name: 'defendants', label: '被申请人' },
-              { type: 'Input', name: 'caseNo', label: '调解案号' },
+              // {
+              //   type: 'Select',
+              //   name: 'joinRole',
+              //   label: '承办部门',
+              //   selectdata: [
+              //     { label: '我负责的', value: '1' },
+              //     { label: '我协助的', value: '2' },
+              //   ],
+              // },
+              // {
+              //   type: 'Select',
+              //   name: 'joinRole',
+              //   label: '登记机构',
+              //   selectdata: [
+              //     { label: '我负责的', value: '1' },
+              //     { label: '我协助的', value: '2' },
+              //   ],
+              // },
+              // { type: 'Input', name: 'defendants', label: '被申请人' },
+              // { type: 'Input', name: 'caseNo', label: '调解案号' },
             ]}
             handleReset={() => handleSearch('reset')}
             handleSearch={() => handleSearch('search')}
           />
         </div>
 
-        <div style={{ marginTop: '8px' }} className="pageTable">
-          <TableView
-            showHeader
-            title="查询结果"
-            columns={columns()}
-            dataSource={data.tableData}
-            pagination={{
-              current: search.page,
-              pageSize: search.size,
-              total: data.total,
-              onChange: (page, pageSize) => handleChangePage(page, pageSize),
-            }}
-            rowClassName={(record) => (record.id === data.tableActive ? 'tableRowActive' : '')}
-          />
+        <div style={{ marginTop: '8px' }} className="comprehensive-table">
+          {
+            data.tableData?.length > 0 ?
+              <TableView
+                showHeader
+                title="查询结果"
+                columns={columns()}
+                dataSource={data.tableData}
+                pagination={{
+                  current: search.page,
+                  pageSize: search.size,
+                  total: data.total,
+                  onChange: (page, pageSize) => handleChangePage(page, pageSize),
+                }}
+                rowClassName={(record) => (record.id === data.tableActive ? 'tableRowActive' : '')}
+              /> :
+              <TableView
+                showHeader
+                title="查询结果"
+                columns={columns()}
+                dataSource={data.tableData}
+                pagination={{
+                  current: search.page,
+                  pageSize: search.size,
+                  total: data.total,
+                  onChange: (page, pageSize) => handleChangePage(page, pageSize),
+                }}
+                rowClassName={(record) => (record.id === data.tableActive ? 'tableRowActive' : '')}
+              />
+          }
         </div>
       </div>
     </NewPage>
diff --git a/gz-customerSystem/src/views/comprehensive/index.less b/gz-customerSystem/src/views/comprehensive/index.less
index 165fe16..6376fdf 100644
--- a/gz-customerSystem/src/views/comprehensive/index.less
+++ b/gz-customerSystem/src/views/comprehensive/index.less
@@ -1,5 +1,7 @@
 .comprehensive {
-	position: relative;
+	display: flex;
+  flex-direction: column;
+  height: calc(100% - 68px);
 	margin: 0 16px;
 	&-title {
 		// margin: 0 16px;
@@ -14,4 +16,10 @@
 	&-red {
 		color: #f53f3f;
 	}
+  &-table {
+    background-color: #ffffff;
+    padding: 16px;
+    flex: 1;
+    margin-bottom: 16px;
+  }
 }
diff --git a/gz-customerSystem/src/views/disputeLedger/index.jsx b/gz-customerSystem/src/views/disputeLedger/index.jsx
index 402ed27..bbb53eb 100644
--- a/gz-customerSystem/src/views/disputeLedger/index.jsx
+++ b/gz-customerSystem/src/views/disputeLedger/index.jsx
@@ -2,16 +2,20 @@
  * @Company: hugeInfo
  * @Author: lwh
  * @Date: 2024-09-14 15:59:17
- * @LastEditTime: 2024-09-14 16:03:34
+ * @LastEditTime: 2024-09-17 17:12:37
  * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description: 
  */
-import React, { useState, useEffect, useMemo } from 'react';
+import React, { useState, useEffect, useRef, useMemo } from 'react';
 import * as $$ from '../../utils/utility';
-import { Form, Typography, Button, Space } from 'antd';
+import { Form, Typography, Row, Col, Space } from 'antd';
 import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
+import { disputeLedger_1, disputeLedger_2, disputeLedger_3, disputeLedger_4, disputeLedger_5, disputeLedger_6, disputeLedger_7 } from '../../assets/images';
 import NewPage from '../../components/NewPage/index';
+import * as echarts from 'echarts';
+import NewTableSearch from '../../components/NewTableSearch';
+import './index.less'
 
 const { Link } = Typography;
 
@@ -26,14 +30,443 @@
 }
 
 const DisputeLedger = () => {
+  const [form] = Form.useForm();
+  // 数据汇总选择
+  const [activeKey, setActiveKey] = useState(0)
+  const [tabsData, setTabsData] = useState([
+    { icon: disputeLedger_1, title: '全部', value: '5032', active: true },
+    { icon: disputeLedger_2, title: '综治中心', value: '1022', per: '20.3%' },
+    { icon: disputeLedger_3, title: '12345', value: '1006', per: '19.8%' },
+    { icon: disputeLedger_4, title: '人民调解', value: '2201', per: '40.3%' },
+    { icon: disputeLedger_5, title: '信访', value: '221', per: '4.2%' },
+    { icon: disputeLedger_6, title: '劳动仲裁', value: '98', per: '1.8%' },
+    { icon: disputeLedger_7, title: '非警务纠纷', value: '432', per: '8.3%' },
+  ]);
+
+  // 搜索 or 重置
+  function handleSearch(type, session) {
+
+  }
 
   return (
-    <NewPage
-      pageHead={
-        { breadcrumbData: [{ title: '工作台' }, { title: '纠纷台账' }], title: '纠纷台账' }
-      }
-    ></NewPage>
+    <NewPage pageHead={{ breadcrumbData: [{ title: '工作台' }, { title: '纠纷台账' }], title: '纠纷台账' }}>
+      <div className='comprehensive'>
+        <div className="pageSearch">
+          <div className='comprehensive-title'>查询条件</div>
+          <NewTableSearch
+            exportButtonShow={false}
+            labelLength={6}
+            rowNum={4.5}
+            form={form}
+            itemData={[
+              { type: 'TreeSelect', name: 'mediateUnitId', label: '区域', placeholder: '请选择', treedata: [] },
+              { type: 'RangePicker', name: 'createTime', label: '登记时间', span: 8 },
+              { type: 'RangePicker', name: 'endTime', label: '办结时间', span: 8 },
+              {
+                type: 'Select',
+                name: 'name1',
+                label: '纠纷类型',
+                span: 8,
+                selectdata: [
+                  { label: '全部', value: '1' },
+                  { label: '市场监管', value: '2' },
+                  { label: '劳动社保', value: '3' },
+                  { label: '城市管理', value: '4' },
+                  { label: '交通运输', value: '5' },
+                  { label: '教育医疗', value: '6' },
+                  { label: '公共服务', value: '7' },
+                ],
+              },
+              {
+                type: 'Select',
+                name: 'name2',
+                label: '化解状况',
+                span: 8,
+                selectdata: [
+                  { label: '全部', value: '1' },
+                  { label: '化解中', value: '2' },
+                  { label: '化解成功', value: '3' },
+                  { label: '化解不成功', value: '4' },
+                ],
+              },
+              {
+                type: 'Select',
+                name: 'name3',
+                label: '重大矛盾纠纷',
+                span: 8,
+                selectdata: [
+                  { label: '不限', value: '1' },
+                ],
+              },
+              {
+                type: 'Select',
+                name: 'name4',
+                label: '重点人员',
+                span: 8,
+                selectdata: [
+                  { label: '不限', value: '1' },
+                ],
+              },
+            ]}
+            handleReset={() => handleSearch('reset')}
+            handleSearch={() => handleSearch('search')}
+          />
+        </div>
+        <div className='disputeLedger-row'>
+          <div className='comprehensive-title'>数据汇总</div>
+          <div className='disputeLedger-d'>
+            {
+              tabsData.map((item, index) => (
+                <div onClick={() => setActiveKey(index)} className={`disputeLedger-card ${activeKey === index ? 'disputeLedger-card-active' : ''}`} span={3.4} key={index}>
+                  <div >
+                    <div className='disputeLedger-card-content'>
+                      <div className={`disputeLedger-card-content-t ${activeKey === index ? 'disputeLedger-card-content-t-active' : ''}`}>{item.title}</div>
+                      <div><span className='disputeLedger-card-title'>{item.value}</span> <span className='disputeLedger-unit'>件</span> {item.per && < span className='disputeLedger-unit'>| {item.per}</span>}</div>
+                    </div>
+                    {activeKey === index && <img src={item.icon} alt="" />}
+                  </div>
+                </div>
+              ))
+            }
+          </div>
+        </div>
+
+        {/* 图表 */}
+        <div className='disputeLedger-green'>
+          <div style={{ display: 'flex', flexDirection: 'column', gap: 12, marginBottom: '12px' }}>
+            <Space className='big-green-main-space' direction='vertical'>
+              <div style={{ margin: '0 12px' }}>
+                <div className='disputeLedger-green-title'>纠纷类型(全部)</div>
+                <div style={{ paddingBottom: '12px' }}>
+                  <MyLTopChartPie data={
+                    [
+                      { value: 22, name: '市场监管' },
+                      { value: 28, name: '劳动社保' },
+                      { value: 15, name: '城市管理' },
+                      { value: 10, name: '交通运输' },
+                      { value: 5, name: '教育医疗' },
+                      { value: 20, name: '公共服务' },
+                    ]
+                  } />
+                </div>
+              </div>
+            </Space>
+            <Space style={{ position: 'relative' }} className='big-green-main-space' direction='vertical'>
+              <div style={{ margin: '0 12px' }}>
+                <div className='disputeLedger-green-title'>化解状况(全部)</div>
+                <div style={{ paddingBottom: '12px' }}>
+                  <MyLTopChartPie1 data={
+                    [
+                      { value: 90, name: '小学' },
+                      { value: 200, name: '初中' },
+                      { value: 100, name: '高中' },
+                      { value: 300, name: '大学本科' },
+                      { value: 200, name: '硕士' },
+                      { value: 100, name: '其他' },
+                    ]
+                  } />
+                </div>
+              </div>
+            </Space>
+          </div>
+          <Space style={{ flex: '1', marginBottom: '12px' }} className='big-green-main-space' direction='vertical'>
+            <div className='big-green-main-title-display'>
+              <div className='disputeLedger-green-title'>数据统计(全部)</div>
+            </div>
+            <div style={{ width: '100%', height: '200px', marginTop: '12px' }}>
+              <MyChartBar data={[220, 5211, 2500, 3152, 8362, 26220, 8442, 2600, 1850, 1302, 850, 1048]} dataAxis={['本级', '越秀区', '海珠区', '荔湾区', '天河区', '白云区', '黄埔区', '花都区', '番禺区', '南沙区', '从化区', '增城区']} />
+
+            </div>
+          </Space>
+        </div>
+      </div >
+    </NewPage >
   )
 }
 
-export default DisputeLedger;
\ No newline at end of file
+export default DisputeLedger;
+
+// 柱状图
+const MyChartBar = ({ data, dataAxis }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartBar'), 'dark');
+    // let data = [123, 98, 245, 234, 356, 148];
+    // let dataAxis = ['低收入家庭', '单亲家庭', '流动家庭', '犯罪家庭', '无家庭', '其他']
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 10,
+        y: 20,
+        x2: 20,
+        y2: 0,
+        containLabel: true,
+      },
+      tooltip: {
+        trigger: 'axis',
+        axisPointer: {
+          type: 'none'
+        },
+        formatter: function (params) {
+          return params[0].name + ': ' + params[0].value + '人';
+        }
+      },
+      xAxis: [{
+        type: 'category',
+        // boundaryGap: false,
+        data: dataAxis,
+
+        axisLabel: {
+          interval: dataAxis?.length > 15 ? 1 : 0,
+          formatter: function (value) {
+            // 如果标签长度超过4,将剩余的文字替换为省略号
+            if (value.length > 4) {
+              return value.slice(0, 4) + '...';
+            } else {
+              return value;
+            }
+          }
+        },
+      }],
+      yAxis: {
+        splitLine: {
+          lineStyle: {
+            type: 'dashed',
+            color: '#ccc'
+          }
+        },
+
+      },
+      dataZoom: [
+        {
+          type: 'inside'
+        }
+      ],
+      series: [
+        {
+          type: 'bar',
+          name: 'bar1',
+          stack: 'one',
+          showBackground: false,
+          barWidth: 28, // 柱子宽度
+          itemStyle: {
+            color: '#3788C5'
+          },
+          label: {
+            show: true,
+            position: 'top',
+            valueAnimation: false
+          },
+          emphasis: {
+            itemStyle: {
+              opacity: 0.7
+            }
+          },
+          data: data
+        },
+      ]
+    });
+  }, [data]);
+
+  useEffect(() => {
+    // if (myChart && myChartRef.current.clientHeight !== 0) {
+    //   myChart.forceFit();
+    // }
+  });
+
+  return <div id="chartBar" ref={myChartRef} style={{ height: '494px', width: '100%' }} />;
+};
+
+const MyLTopChartPie = ({ data }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartLTopPie'), 'dark');
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 5,
+        y: 12,
+        x2: 20,
+        y2: 0,
+      },
+      legend: {
+        orient: 'vertical', // 垂直排列
+        top: 'center',
+        right: 10,
+        data: [
+          {
+            name: '市场监管',
+            icon: 'circle', // 图例标记的形状
+          },
+          {
+            name: '劳动社保',
+            icon: 'circle',
+          },
+          {
+            name: '城市管理',
+            icon: 'circle',
+          },
+          {
+            name: '交通运输',
+            icon: 'circle',
+          },
+          {
+            name: '教育医疗',
+            icon: 'circle',
+          },
+          {
+            name: '公共服务',
+            icon: 'circle',
+          }
+          // ... 其他数据
+        ]
+      },
+      series: [
+        {
+          name: '纠纷类型',
+          type: 'pie',
+          radius: '90%',
+          center: ['30%', '50%'],
+          color: ['#FCE996', '#FFCF8B', '#86E8DD', '#FDCDC5', '#C396ED', '#9FD4FD'],
+          labelLine: { // 关闭引导线
+            show: false
+          },
+          label: {
+            show: true,
+            position: 'inside', // 设置文字在扇形区域内
+            formatter: '{d}%', // 标签文本格式器
+            rich: {
+              a: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              b: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              c: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              d: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              e: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              f: {
+                lineHeight: 25,
+                align: 'center'
+              }
+            },
+            // normal: {
+            //   show: false,
+            // },
+          },
+          data: data
+        },
+      ]
+    });
+  }, [data]);
+
+
+  return <div id="chartLTopPie" ref={myChartRef} style={{ height: '230px', width: '100%' }} />;
+};
+
+const MyLTopChartPie1 = ({ data }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartLTopPie1'), 'dark');
+    // let data = [123, 98, 245, 234, 356, 148];
+    // let dataAxis = ['低收入家庭', '单亲家庭', '流动家庭', '犯罪家庭', '无家庭', '其他']
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 5,
+        y: 12,
+        x2: 20,
+        y2: 0,
+        containLabel: true,
+      },
+      legend: {
+        orient: 'vertical', // 垂直排列
+        top: 'center',
+        right: 10,
+        data: [
+          {
+            name: '化解中',
+            icon: 'circle', // 图例标记的形状
+          },
+          {
+            name: '化解成功',
+            icon: 'circle',
+          },
+          {
+            name: '化解不成功',
+            icon: 'circle',
+          },
+
+        ]
+      },
+      series: [
+        {
+          name: '化解状况',
+          type: 'pie',
+          radius: ['60%', '90%'], // 设置饼图的内半径和外半径,实现扇形区域
+          center: ['30%', '50%'],
+          color: ['#B6DDF1', '#3A8AC6', '#094282'],
+          data: [
+            { value: 24, name: '化解中' },
+            { value: 30, name: '化解成功' },
+            { value: 46, name: '化解不成功' },
+          ],
+          label: {
+            show: true,
+            position: 'inside', // 设置文字在扇形区域内
+            formatter: '{d}%', // 标签文本格式器
+            rich: {
+              a: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              b: {
+                lineHeight: 25,
+                align: 'center'
+              },
+            }
+          }
+        }
+      ]
+    });
+  }, [data]);
+
+  useEffect(() => {
+    // if (myChart && myChartRef.current.clientHeight !== 0) {
+    //   myChart.forceFit();
+    // }
+  });
+
+  return <div id="chartLTopPie1" ref={myChartRef} style={{ height: '230px', width: '100%' }} />;
+};
diff --git a/gz-customerSystem/src/views/disputeLedger/index.less b/gz-customerSystem/src/views/disputeLedger/index.less
index e69de29..df51d26 100644
--- a/gz-customerSystem/src/views/disputeLedger/index.less
+++ b/gz-customerSystem/src/views/disputeLedger/index.less
@@ -0,0 +1,112 @@
+.disputeLedger {
+	&-row {
+		margin-top: 12px;
+		background-color: #fff;
+		padding: 12px 16px 16px 16px;
+	}
+	&-d {
+		display: flex;
+		gap: 24px;
+		align-items: center;
+		justify-content: space-between;
+	}
+	&-card {
+		position: relative;
+		flex: 1;
+		// width: 167px;
+		height: 75px;
+		background: #f2f3f5;
+		border: 0.5px solid #e5e6eb;
+		border-radius: 4px;
+		& img {
+			width: 40px;
+			position: absolute;
+			right: 0;
+			top: 14px;
+		}
+		&-active {
+			background: #e8f8ff;
+			border: 1px solid #b6ddf1;
+		}
+		&-content {
+			padding: 12px 16px;
+			&-t {
+				margin-bottom: 4px;
+				&-active {
+					color: #1a6fb8;
+				}
+			}
+		}
+		&-title {
+			font-size: 18px;
+			line-height: 26px;
+		}
+	}
+	&-title {
+		font-size: 14px;
+		color: #1d2129;
+	}
+	&-unit {
+		color: #86909c;
+		font-size: 12px;
+		line-height: 20px;
+	}
+	&-green {
+		margin: 12px 0;
+    display: flex;
+    gap: 12px;
+		&-title {
+			font-size: 16px;
+			padding: 12px 16px;
+			color: rgba(0, 0, 0, 0.85);
+		}
+	}
+}
+
+.big-green {
+	&-main {
+		&-space {
+			width: 389px;
+			background-color: #fff;
+		}
+		&-title {
+			background: #105489;
+			height: 36px;
+			padding: 0 12px 0 8px;
+			color: #fff;
+			display: flex;
+			align-items: center;
+			&-t {
+				line-height: 30px;
+				height: 24px;
+				margin-left: 8px;
+			}
+			&-display {
+				display: flex;
+				align-items: end;
+			}
+			&-bias {
+				transform: rotate(-45deg);
+				height: 1px;
+				width: 5px;
+				background-color: rgba(255, 255, 255, 0.4);
+				position: relative;
+				top: -2px;
+				left: -1px;
+			}
+			&-line {
+				flex: 1;
+				height: 1px;
+				// transform: skewX(-45deg);
+				background-color: rgba(255, 255, 255, 0.4);
+			}
+
+			&-graph {
+				background: #ffc97a;
+				width: 20px;
+				height: 3px;
+				transform: skewX(-45deg);
+			}
+		}
+	}
+}
diff --git a/gz-customerSystem/src/views/workDash/index.jsx b/gz-customerSystem/src/views/workDash/index.jsx
new file mode 100644
index 0000000..2eac1db
--- /dev/null
+++ b/gz-customerSystem/src/views/workDash/index.jsx
@@ -0,0 +1,806 @@
+/*
+ * @Company: hugeInfo
+ * @Author: lwh
+ * @Date: 2024-09-14 15:59:17
+ * @LastEditTime: 2024-09-17 17:12:08
+ * @LastEditors: lwh
+ * @Version: 1.0.0
+ * @Description: 
+ */
+import React, { useState, useEffect, useRef, useMemo } from 'react';
+import * as $$ from '../../utils/utility';
+import { Form, Typography, Row, Col, Space, Divider, Badge } from 'antd';
+import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
+import { workDash_1, workDash_2, workDash_3, workDash_4, workDash_5, workDash_6, workDash_7, workDash_8, workDash_9, disputeLedger_1, disputeLedger_2, disputeLedger_3, disputeLedger_4, disputeLedger_5, disputeLedger_6, disputeLedger_7 } from '../../assets/images';
+import NewPage from '../../components/NewPage/index';
+import * as echarts from 'echarts';
+import TableView from '../../components/TableViewCanSort';
+import NewTableSearch from '../../components/NewTableSearch';
+import publicDataStatus from '../../status/publicData';
+import './index.less'
+
+const { Link } = Typography;
+
+// 调度中心列表
+function getMyMediationDataApi(submitData) {
+  return $$.ax.request({ url: 'caseDisp/pageQuery', type: 'get', data: submitData, service: 'disp' });
+}
+
+// 获取列表分类tab
+function getTabsDataApi() {
+  return $$.ax.request({ url: 'caseDisp/getApplyCanal', type: 'get', service: 'disp' });
+}
+
+const WorkDash = () => {
+  const [form] = Form.useForm();
+
+  // 搜索
+  const [search, setSearch] = useState({ page: 1, size: 10, });
+
+  // 数据
+  const [data, setData] = useState({
+    tableData: [
+      { createTime: '2024-09-14 15:59:17', statusName: '已关闭', caseLevel: '一般', caseTypeName: '城市管理', canalName: '综合执法', inputUnitName: '综合执法', assistUnitName: '综合执法', closeTime: '2024-09-14 15:59:17', mediResult: '22_00025-1', plaintiffList: [{ trueName: '张三' }, { trueName: '李四' }], defendantList: [{ trueName: '王五' }] },
+      { createTime: '2024-09-14 15:59:17', statusName: '已关闭', caseLevel: '一般', caseTypeName: '城市管理', canalName: '综合执法', inputUnitName: '综合执法', assistUnitName: '综合执法', closeTime: '2024-09-14 15:59:17', mediResult: '22_00025-1', plaintiffList: [{ trueName: '张三' }, { trueName: '李四' }], defendantList: [{ trueName: '王五' }] },
+      { createTime: '2024-09-14 15:59:17', statusName: '已关闭', caseLevel: '一般', caseTypeName: '城市管理', canalName: '综合执法', inputUnitName: '综合执法', assistUnitName: '综合执法', closeTime: '2024-09-14 15:59:17', mediResult: '22_00025-1', plaintiffList: [{ trueName: '张三' }, { trueName: '李四' }], defendantList: [{ trueName: '王五' }] },
+      { createTime: '2024-09-14 15:59:17', statusName: '已关闭', caseLevel: '一般', caseTypeName: '城市管理', canalName: '综合执法', inputUnitName: '综合执法', assistUnitName: '综合执法', closeTime: '2024-09-14 15:59:17', mediResult: '22_00025-1', plaintiffList: [{ trueName: '张三' }, { trueName: '李四' }], defendantList: [{ trueName: '王五' }] },
+      { createTime: '2024-09-14 15:59:17', statusName: '已关闭', caseLevel: '一般', caseTypeName: '城市管理', canalName: '综合执法', inputUnitName: '综合执法', assistUnitName: '综合执法', closeTime: '2024-09-14 15:59:17', mediResult: '22_00025-1', plaintiffList: [{ trueName: '张三' }, { trueName: '李四' }], defendantList: [{ trueName: '王五' }] },
+    ]
+  });
+
+  	// 调解组织select框数据
+	const [adjustOrgData, setAdjustOrgData] = useState([]);
+
+
+
+
+  // 搜索 or 重置
+  function handleSearch(type, session) {
+
+  }
+
+  // 表头
+  const columns = () => {
+    const columnsData = [
+      { title: '登记时间', width: 150, dataIndex: 'createTime', render: (text) => <span>{$$.dateFormat(text)}</span> },
+      { title: '事项状态', width: 100, dataIndex: 'statusName' },
+      { title: '事项等级', width: 100, dataIndex: 'caseLevel' },
+      { title: '事项类型', width: 150, dataIndex: 'caseTypeName' },
+      { title: '问题属地', width: 100, dataIndex: 'canalName' },
+      { title: '登记机构', width: 150, dataIndex: 'inputUnitName' },
+      { title: '承办部门', width: 100, dataIndex: 'assistUnitName' },
+      { title: '办结时间', width: 100, dataIndex: 'closeTime', render: (text) => <span>{$$.dateFormat(text)}</span> },
+      // 22_00025-1 成功 22_00025-2 化解不成功
+      { title: '化解结果', width: 100, dataIndex: 'mediResult', render: (text) => <div className={text === '22_00025-1' ? 'comprehensive-green' : text === '22_00025-2' ? 'comprehensive-red' : '-'} >{text === '22_00025-1' ? '化解成功' : text === '22_00025-2' ? '化解不成功' : '-'}</div> },
+      { title: '申请方', width: 100, dataIndex: 'action', render: (text, record) => <div>{record.plaintiffList?.length > 0 ? record.plaintiffList?.map(i => i.trueName)?.join(',') : '-'}</div> },
+      { title: '被申请方', width: 100, dataIndex: 'action', render: (text, record) => <div>{record.defendantList?.length > 0 ? record.defendantList?.map(i => i.trueName)?.join(',') : '-'}</div> },
+      {
+        title: '操作',
+        dataIndex: 'action',
+        width: 50,
+        render: (_, record) => {
+          return <Link onClick={() => handleJump(record)}>详情</Link>;
+        },
+      },
+    ];
+    return columnsData;
+  };
+
+  // 跳转详情页
+  function handleJump(type, info) {
+
+  }
+
+  // 初始化
+  useEffect(() => {
+    // publicDataStatus.getUnitData((data) => setAdjustOrgData(data));
+
+  }, []);
+
+  return (
+    <NewPage pageHead={{ breadcrumbData: [{ title: '工作台' }, { title: '解纷态势' }], title: '解纷态势' }}>
+      <div className='comprehensive'>
+        <div className="pageSearch">
+          <div className='comprehensive-title'>查询条件</div>
+          <NewTableSearch
+            exportButtonShow={false}
+            labelLength={6}
+            rowNum={4.5}
+            form={form}
+            itemData={[
+              { type: 'TreeSelect', name: 'mediateUnitId', label: '区域', placeholder: '请选择', treedata: adjustOrgData },
+              { type: 'RangePicker', name: 'createTime', label: '登记时间', span: 8 },
+              { type: 'RangePicker', name: 'endTime', label: '办结时间', span: 8 },
+              {
+                type: 'Select',
+                name: 'name1',
+                label: '纠纷类型',
+                span: 8,
+                selectdata: [
+                  { label: '全部', value: '1' },
+                  { label: '市场监管', value: '2' },
+                  { label: '劳动社保', value: '3' },
+                  { label: '城市管理', value: '4' },
+                  { label: '交通运输', value: '5' },
+                  { label: '教育医疗', value: '6' },
+                  { label: '公共服务', value: '7' },
+                ],
+              },
+              {
+                type: 'Select',
+                name: 'name2',
+                label: '事项状态',
+                span: 8,
+                selectdata: [
+                  { label: '全部', value: '1' },
+                  { label: '化解中', value: '2' },
+                  { label: '化解成功', value: '3' },
+                  { label: '化解不成功', value: '4' },
+                ],
+              },
+            ]}
+            handleReset={() => handleSearch('reset')}
+            handleSearch={() => handleSearch('search')}
+          />
+        </div>
+        <div className='disputeLedger-row'>
+          <div className='comprehensive-title'>数据总览</div>
+          <div>
+            <Space className='workDash-d' align='center' split={<Divider type="vertical" style={{ height: '48px' }} />}>
+              <div className='workDash-item'>
+                <div className='workDash-item-img'>
+                  <img src={workDash_1} alt="" srcset="" />
+                </div>
+                <div className='workDash-item-div'>
+                  <div className='workDash-item-title'>总登记</div>
+                  <div className='workDash-item-value'>3301</div>
+                </div>
+              </div>
+              <div className='workDash-item'>
+                <div className='workDash-item-img'>
+                  <img src={workDash_2} alt="" srcset="" />
+                </div>
+                <div className='workDash-item-div'>
+                  <div className='workDash-item-title'>办理中</div>
+                  <div className='workDash-item-value'>103</div>
+                </div>
+              </div>
+              <div className='workDash-item1'>
+                <div className='workDash-item-img'>
+                  <img src={workDash_3} alt="" srcset="" />
+                </div>
+                <div className='workDash-item-div'>
+                  <div className='workDash-item-title'><div style={{ width: '50px' }}>已结案</div><div style={{ width: '36px' }}></div> <Badge dot size='30' status="success" text={<Space split={<Divider type="vertical" />}><span style={{ color: '#4E5969', fontSize: '14px' }}>化解成功:3066件 | 成功率:<span style={{ color: '#00B42A' }}>90.3%</span></span></Space>} /></div>
+                  <div className='workDash-item-value'><div style={{ width: '50px' }}>3166</div><div style={{ width: '36px' }}></div><Badge status="error" text={<Space split={<Divider type="vertical" />}><span style={{ color: '#4E5969', fontSize: '14px' }}>化解不成功:100件</span></Space>} /></div>
+                </div>
+              </div>
+              <div className='workDash-item'>
+                <div className='workDash-item-img'>
+                  <img src={workDash_4} alt="" srcset="" />
+                </div>
+                <div className='workDash-item-div'>
+                  <div className='workDash-item-title'>不予受理</div>
+                  <div className='workDash-item-value'>32</div>
+                </div>
+              </div>
+            </Space>
+          </div>
+        </div>
+
+        {/* 图表 */}
+        <div className='disputeLedger-green'>
+          <Space style={{ flex: '1' }} className='big-green-main-space' direction='vertical'>
+            <div className='big-green-main-title-display'>
+              <div className='disputeLedger-green-title'>数据统计</div>
+            </div>
+            <div style={{ width: '100%', height: '300px', marginTop: '12px' }}>
+              <MyChartBar data={[220, 5211, 2500, 3152, 8362, 26220, 8442, 2600, 1850, 1302, 850, 1048]} dataAxis={['本级', '越秀区', '海珠区', '荔湾区', '天河区', '白云区', '黄埔区', '花都区', '番禺区', '南沙区', '从化区', '增城区']} />
+            </div>
+          </Space>
+        </div>
+        <div style={{ marginBottom: '12px', width: '100%', display: 'flex', gap: '12px', justifyContent: 'space-between' }} >
+          <Row gutter={16}>
+            <Col span={16}>
+              <div className='workDash-main'>
+                <div style={{ width: '100%' }}>
+                  <div className='big-green-main-title-display'>
+                    <div className='disputeLedger-green-title'>事项来源</div>
+                  </div>
+                  <div className='workDash-main-card-one'>
+                    <div className='workDash-main-card'>
+                      <div className='workDash-main-card-head'>
+                        <div className='workDash-main-card-head-l'><div className='workDash-main-card-head-l-img'><img src={workDash_6} alt="" srcset="" /></div></div>
+                        <div className='workDash-main-card-head-r'><div className='workDash-main-card-head-r-title'>大厅来访</div><div className='workDash-main-card-head-r-value'>2233<span className='workDash-main-card-head-r-subValue'>&nbsp;|&nbsp;40%</span></div></div>
+                      </div>
+                      <div className='workDash-main-card-body'>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解中</div>
+                          <div className='workDash-main-card-body-flex-value'>100</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功</div>
+                          <div className='workDash-main-card-body-flex-value'>2132</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解不成功</div>
+                          <div className='workDash-main-card-body-flex-value'>50</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功率</div>
+                          <div className='workDash-main-card-body-flex-value'>84.3%</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>不予受理</div>
+                          <div className='workDash-main-card-body-flex-value'>3</div>
+                        </div>
+                      </div>
+                    </div>
+
+                    <div className='workDash-main-card'>
+                      <div className='workDash-main-card-head'>
+                        <div className='workDash-main-card-head-l workDash-bg_2'><div className='workDash-main-card-head-l-img workDash-bg_2_img'><img src={workDash_7} alt="" srcset="" /></div></div>
+                        <div className='workDash-main-card-head-r workDash-bg_2_r'><div className='workDash-main-card-head-r-title'>线上来访</div><div className='workDash-main-card-head-r-value'>430<span className='workDash-main-card-head-r-subValue'>&nbsp;|&nbsp;17%</span></div></div>
+                      </div>
+                      <div className='workDash-main-card-body'>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解中</div>
+                          <div className='workDash-main-card-body-flex-value'>30</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功</div>
+                          <div className='workDash-main-card-body-flex-value'>400</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解不成功</div>
+                          <div className='workDash-main-card-body-flex-value'>7</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功率</div>
+                          <div className='workDash-main-card-body-flex-value'>95.3%</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>不予受理</div>
+                          <div className='workDash-main-card-body-flex-value'>3</div>
+                        </div>
+                      </div>
+                    </div>
+
+                    <div className='workDash-main-card'>
+                      <div className='workDash-main-card-head'>
+                        <div className='workDash-main-card-head-l workDash-bg_3'><div className='workDash-main-card-head-l-img workDash-bg_3_img'><img src={workDash_8} alt="" srcset="" /></div></div>
+                        <div className='workDash-main-card-head-r workDash-bg_3_r'><div className='workDash-main-card-head-r-title'>自行排查</div><div className='workDash-main-card-head-r-value'>672<span className='workDash-main-card-head-r-subValue'>&nbsp;|&nbsp;20%</span></div></div>
+                      </div>
+                      <div className='workDash-main-card-body'>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解中</div>
+                          <div className='workDash-main-card-body-flex-value'>80</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功</div>
+                          <div className='workDash-main-card-body-flex-value'>520</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解不成功</div>
+                          <div className='workDash-main-card-body-flex-value'>70</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功率</div>
+                          <div className='workDash-main-card-body-flex-value'>92.3%</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>不予受理</div>
+                          <div className='workDash-main-card-body-flex-value'>2</div>
+                        </div>
+                      </div>
+                    </div>
+
+                    <div className='workDash-main-card'>
+                      <div className='workDash-main-card-head'>
+                        <div className='workDash-main-card-head-l workDash-bg_4'><div className='workDash-main-card-head-l-img workDash-bg_4_img'><img src={workDash_9} alt="" srcset="" /></div></div>
+                        <div className='workDash-main-card-head-r workDash-bg_4_r'><div className='workDash-main-card-head-r-title'>协同推送</div><div className='workDash-main-card-head-r-value'>1094<span className='workDash-main-card-head-r-subValue'>&nbsp;|&nbsp;33%</span></div></div>
+                      </div>
+                      <div className='workDash-main-card-body'>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解中</div>
+                          <div className='workDash-main-card-body-flex-value'>165</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功</div>
+                          <div className='workDash-main-card-body-flex-value'>776</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解不成功</div>
+                          <div className='workDash-main-card-body-flex-value'>150</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>化解成功率</div>
+                          <div className='workDash-main-card-body-flex-value'>94.3%</div>
+                        </div>
+                        <div className='workDash-main-card-body-flex'>
+                          <div className='workDash-main-card-body-flex-title'>不予受理</div>
+                          <div className='workDash-main-card-body-flex-value'>31</div>
+                        </div>
+                      </div>
+                    </div>
+
+                  </div>
+                </div>
+              </div>
+            </Col>
+            <Col span={8}>
+              <div className='workDash-main1'>
+                <div className='big-green-main-title-display'>
+                  <div className='disputeLedger-green-title'>工作效能</div>
+                </div>
+                <div className='workDash-main1-chart'>
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>事项分派</div>
+                      <div className='workDash-main1-flex-l-value'>320<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-green'>平均耗时<br />1.5小时</div>
+                  </div>
+
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>事项办理</div>
+                      <div className='workDash-main1-flex-l-value'>299<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-orange'>平均耗时<br />80.3小时</div>
+                  </div>
+
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>事项签收</div>
+                      <div className='workDash-main1-flex-l-value'>320<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-blue'>平均耗时<br />5.5小时</div>
+                  </div>
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>申请审批</div>
+                      <div className='workDash-main1-flex-l-value'>108<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-blue'>平均耗时<br />4小时</div>
+                  </div>
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>事项受理</div>
+                      <div className='workDash-main1-flex-l-value'>318<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-blue'>平均耗时<br />15.5小时</div>
+                  </div>
+                  <div className='workDash-main1-flex'>
+                    <div className='workDash-main1-flex-l'>
+                      <div className='workDash-main1-flex-l-title'>督办回复</div>
+                      <div className='workDash-main1-flex-l-value'>52<span className='workDash-main1-flex-l-subValue'>件</span></div>
+                    </div>
+                    <div className='workDash-main1-flex-r workDash-main1-flex-r-blue'>平均耗时<br />12.3小时</div>
+                  </div>
+                </div>
+              </div>
+            </Col>
+
+          </Row>
+        </div>
+
+        <div style={{ marginBottom: '12px', width: '100%' }} >
+          <Row gutter={16}>
+            <Col span={8}>
+              <div className='workDash-main-flex_1'>
+                <div className='big-green-main-title-display'>
+                  <div className='disputeLedger-green-title'>纠纷类型</div>
+                </div>
+                <div style={{ width: '100%', height: '242px', marginTop: '12px' }}>
+                  <MyLTopChartPie data={
+                    [
+                      { value: 22, name: '市场监管' },
+                      { value: 28, name: '劳动社保' },
+                      { value: 15, name: '城市管理' },
+                      { value: 10, name: '交通运输' },
+                      { value: 5, name: '教育医疗' },
+                      { value: 20, name: '公共服务' },
+                    ]
+                  } />
+                </div>
+              </div>
+            </Col>
+            <Col span={8}>
+              <div className='workDash-main-flex_1'>
+                <div className='big-green-main-title-display'>
+                  <div className='disputeLedger-green-title'>化解状况</div>
+                </div>
+                <div style={{ width: '100%', height: '242px', marginTop: '12px' }}>
+                  <MyLTopChartPie1 data={
+                    [
+                      { value: 90, name: '小学' },
+                      { value: 200, name: '初中' },
+                      { value: 100, name: '高中' },
+                      { value: 300, name: '大学本科' },
+                      { value: 200, name: '硕士' },
+                      { value: 100, name: '其他' },
+                    ]
+                  } />
+                </div>
+              </div>
+            </Col>
+            <Col span={8}>
+              <div className='workDash-main-flex_1'>
+                <div className='big-green-main-title-display'>
+                  <div className='disputeLedger-green-title'>事项等级</div>
+                </div>
+                <div className='workDash-grade'>
+                  <div className='workDash-grade-item workDash-grade-item-orange'>
+                    <div className='workDash-grade-item-t'><div className='workDash-grade-item-t-orange'>3级事件</div><div className='workDash-grade-item-t-value'>3201<span className='workDash-grade-item-t-unit'>件</span></div></div>
+                    <div className='workDash-grade-item-b'>
+                      <div className='workDash-grade-item-b-bg'>
+                        <div className='workDash-grade-item-b-bg-orange'></div>
+                      </div>
+                    </div>
+                  </div>
+                  <div className='workDash-grade-item workDash-grade-item-blue'>
+                    <div className='workDash-grade-item-t'><div className='workDash-grade-item-t-blue'>2级事件</div><div className='workDash-grade-item-t-value'>104<span className='workDash-grade-item-t-unit'>件</span></div></div>
+                    <div className='workDash-grade-item-b'>
+                      <div className='workDash-grade-item-b-bg'>
+                        <div className='workDash-grade-item-b-bg-blue'></div>
+                      </div>
+                    </div>
+                  </div>
+                  <div className='workDash-grade-item workDash-grade-item-red'>
+                    <div className='workDash-grade-item-t'><div className='workDash-grade-item-t-red'>1级事件</div><div className='workDash-grade-item-t-value'>52<span className='workDash-grade-item-t-unit'>件</span></div></div>
+                    <div className='workDash-grade-item-b'>
+                      <div className='workDash-grade-item-b-bg'>
+                        <div className='workDash-grade-item-b-bg-red'></div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </Col>
+          </Row>
+
+
+
+        </div>
+        <div style={{ width: '100%', display: 'flex', gap: '12px', justifyContent: 'space-between' }} >
+          <div className='workDash-main-flex_1' style={{ marginBottom: '12px', }}>
+            <div className='big-green-main-title-display-table'>
+              <div className='disputeLedger-green-title'>实时动态</div>
+              <div style={{ padding: '4px 16px 16px' }}>
+                <TableView
+                  columns={columns()}
+                  dataSource={data.tableData}
+                />
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </NewPage >
+  )
+}
+
+export default WorkDash;
+
+// 柱状图
+const MyChartBar = ({ data, dataAxis }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartBar'), 'dark');
+    // let data = [123, 98, 245, 234, 356, 148];
+    // let dataAxis = ['低收入家庭', '单亲家庭', '流动家庭', '犯罪家庭', '无家庭', '其他']
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 10,
+        y: 20,
+        x2: 20,
+        y2: 0,
+        containLabel: true,
+      },
+      tooltip: {
+        trigger: 'axis',
+        axisPointer: {
+          type: 'none'
+        },
+        formatter: function (params) {
+          return params[0].name + ': ' + params[0].value + '人';
+        }
+      },
+      xAxis: [{
+        type: 'category',
+        // boundaryGap: false,
+        data: dataAxis,
+
+        axisLabel: {
+          interval: dataAxis?.length > 15 ? 1 : 0,
+          formatter: function (value) {
+            // 如果标签长度超过4,将剩余的文字替换为省略号
+            if (value.length > 4) {
+              return value.slice(0, 4) + '...';
+            } else {
+              return value;
+            }
+          }
+        },
+      }],
+      yAxis: {
+        splitLine: {
+          lineStyle: {
+            type: 'dashed',
+            color: '#ccc'
+          }
+        },
+
+      },
+      dataZoom: [
+        {
+          type: 'inside'
+        }
+      ],
+      series: [
+        {
+          type: 'bar',
+          name: '化解中',
+          data: [1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320],
+          barWidth: 24, // 设置柱子宽度
+          label: {
+            show: true,
+            position: 'top',
+            valueAnimation: false
+          },
+          emphasis: {
+            itemStyle: {
+              opacity: 0.7
+            }
+          },
+          itemStyle: {
+            color: '#57a9fb',
+            borderWidth: 2 // 设置边框宽度
+          }
+        },
+        {
+          type: 'bar',
+          name: '化解成功',
+          data: [920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920],
+          barWidth: 24, // 设置柱子宽度
+          label: {
+            show: true,
+            position: 'top',
+            valueAnimation: false
+          },
+          emphasis: {
+            itemStyle: {
+              opacity: 0.7
+            }
+          },
+          itemStyle: {
+            color: '#23c343',
+            borderWidth: 2, // 设置边框宽度
+            left: 0 // 设置左边距,以实现重叠效果
+          }
+        },
+        {
+          type: 'bar',
+          name: '化解不成功',
+          data: [400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400],
+          barWidth: 24, // 设置柱子宽度
+          label: {
+            show: true,
+            position: 'top',
+            valueAnimation: false
+          },
+          emphasis: {
+            itemStyle: {
+              opacity: 0.7
+            }
+          },
+          itemStyle: {
+            color: '#F76560',
+            borderWidth: 2, // 设置边框宽度
+            left: 0 // 设置左边距,以实现重叠效果
+          }
+        }
+      ]
+    });
+  }, [data]);
+
+  useEffect(() => {
+    // if (myChart && myChartRef.current.clientHeight !== 0) {
+    //   myChart.forceFit();
+    // }
+  });
+
+  return <div id="chartBar" ref={myChartRef} style={{ height: '230px', width: '100%' }} />;
+};
+
+const MyLTopChartPie = ({ data }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartLTopPie'), 'dark');
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 5,
+        y: 12,
+        x2: 20,
+        y2: 0,
+      },
+      legend: {
+        orient: 'vertical', // 垂直排列
+        top: 'center',
+        right: 10,
+        data: [
+          {
+            name: '市场监管',
+            icon: 'circle', // 图例标记的形状
+          },
+          {
+            name: '劳动社保',
+            icon: 'circle',
+          },
+          {
+            name: '城市管理',
+            icon: 'circle',
+          },
+          {
+            name: '交通运输',
+            icon: 'circle',
+          },
+          {
+            name: '教育医疗',
+            icon: 'circle',
+          },
+          {
+            name: '公共服务',
+            icon: 'circle',
+          }
+          // ... 其他数据
+        ]
+      },
+      series: [
+        {
+          name: '纠纷类型',
+          type: 'pie',
+          radius: '90%',
+          center: ['30%', '50%'],
+          color: ['#FCE996', '#FFCF8B', '#86E8DD', '#FDCDC5', '#C396ED', '#9FD4FD'],
+          labelLine: { // 关闭引导线
+            show: false
+          },
+          label: {
+            show: true,
+            position: 'inside', // 设置文字在扇形区域内
+            formatter: '{d}%', // 标签文本格式器
+            rich: {
+              a: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              b: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              c: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              d: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              e: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              f: {
+                lineHeight: 25,
+                align: 'center'
+              }
+            },
+            // normal: {
+            //   show: false,
+            // },
+          },
+          data: data
+        },
+      ]
+    });
+  }, [data]);
+
+
+  return <div id="chartLTopPie" ref={myChartRef} style={{ height: '230px', width: '100%' }} />;
+};
+
+const MyLTopChartPie1 = ({ data }) => {
+  const myChartRef = useRef();
+  // 图表
+  const [myChart, setMyChart] = useState();
+
+
+  // 加载图表数据
+  useEffect(() => {
+    var myChart = echarts.init(document.getElementById('chartLTopPie1'), 'dark');
+    // let data = [123, 98, 245, 234, 356, 148];
+    // let dataAxis = ['低收入家庭', '单亲家庭', '流动家庭', '犯罪家庭', '无家庭', '其他']
+
+    // 绘制图表
+    myChart.setOption({
+      backgroundColor: '#fff',
+      grid: {
+        x: 5,
+        y: 12,
+        x2: 20,
+        y2: 0,
+        containLabel: true,
+      },
+      legend: {
+        orient: 'vertical', // 垂直排列
+        top: 'center',
+        right: 10,
+        data: [
+          {
+            name: '化解中',
+            icon: 'circle', // 图例标记的形状
+          },
+          {
+            name: '化解成功',
+            icon: 'circle',
+          },
+          {
+            name: '化解不成功',
+            icon: 'circle',
+          },
+
+        ]
+      },
+      series: [
+        {
+          name: '化解状况',
+          type: 'pie',
+          radius: ['60%', '90%'], // 设置饼图的内半径和外半径,实现扇形区域
+          center: ['30%', '50%'],
+          color: ['#B6DDF1', '#3A8AC6', '#094282'],
+          data: [
+            { value: 24, name: '化解中' },
+            { value: 30, name: '化解成功' },
+            { value: 46, name: '化解不成功' },
+          ],
+          label: {
+            show: true,
+            position: 'inside', // 设置文字在扇形区域内
+            formatter: '{d}%', // 标签文本格式器
+            rich: {
+              a: {
+                lineHeight: 25,
+                align: 'center'
+              },
+              b: {
+                lineHeight: 25,
+                align: 'center'
+              },
+            }
+          }
+        }
+      ]
+    });
+  }, [data]);
+
+  useEffect(() => {
+  });
+
+  return <div id="chartLTopPie1" ref={myChartRef} style={{ height: '230px', width: '100%' }} />;
+};
diff --git a/gz-customerSystem/src/views/workDash/index.less b/gz-customerSystem/src/views/workDash/index.less
new file mode 100644
index 0000000..0f74b79
--- /dev/null
+++ b/gz-customerSystem/src/views/workDash/index.less
@@ -0,0 +1,313 @@
+.workDash {
+	&-d {
+		display: flex;
+		width: 100%;
+		justify-content: space-around;
+		// & .ant-space-item {
+		//   flex: 1;
+		// }
+	}
+	&-item {
+		flex: 1;
+		display: flex;
+		gap: 16px;
+		&-img {
+			width: 48px;
+			height: 48px;
+			background-color: rgba(242, 243, 245, 0.95);
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			& img {
+				width: 24px;
+				height: 24px;
+			}
+		}
+		&-div {
+		}
+		&-title {
+			font-size: 14px;
+			line-height: 22px;
+			color: #4e5969;
+			display: flex;
+		}
+		&-value {
+			color: #1d2129;
+			font-size: 18px;
+			line-height: 26px;
+			display: flex;
+		}
+	}
+	&-item1 {
+		flex: 2;
+		display: flex;
+		gap: 16px;
+	}
+	&-main {
+		display: flex;
+		flex: 2;
+		background-color: #fff;
+		&-flex_1 {
+			flex: 1;
+			background-color: #fff;
+		}
+		&-card {
+			// width: 197px;
+			&-one {
+				padding: 0 16px 16px;
+				display: flex;
+				gap: 24px;
+				justify-content: space-between;
+			}
+			&-head {
+				display: flex;
+				&-l {
+					width: 80px;
+					height: 80px;
+					background-color: #08979c;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					border-radius: 5px 0px 0px 5px;
+					&-img {
+						width: 48px;
+						height: 48px;
+						border-radius: 50%;
+						background-color: #96e0d7;
+						display: flex;
+						justify-content: center;
+						align-items: center;
+						& img {
+							width: 24px;
+							height: 24px;
+						}
+					}
+				}
+				&-r {
+					background: linear-gradient(271deg, #13c2c2 0%, rgba(5, 174, 174, 0.8) 14%);
+					color: #fff;
+					display: flex;
+					flex-direction: column;
+					align-items: flex-start;
+					justify-content: center;
+					border-radius: 0px 5px 5px 0px;
+					padding-left: 16px;
+					flex: 1;
+					&-title {
+						font-size: 14px;
+					}
+					&-value {
+						font-size: 20px;
+						line-height: 28px;
+						font-weight: 500;
+						display: flex;
+						align-items: center;
+						height: 28px;
+					}
+					&-subValue {
+						font-size: 12px;
+						line-height: 28px;
+						font-weight: 400;
+						position: relative;
+						top: 2px;
+					}
+				}
+			}
+			&-body {
+				display: flex;
+				flex-wrap: wrap;
+				padding: 10px;
+				gap: 16px;
+        margin-top: 12px;
+				&-flex {
+					display: flex;
+					flex-direction: column;
+					gap: 4px;
+
+					&-title {
+						font-size: 12px;
+						line-height: 20px;
+						color: #4e5969;
+					}
+					&-value {
+						color: #1d2129;
+						font-size: 14px;
+						line-height: 22px;
+					}
+				}
+			}
+		}
+	}
+	&-main1 {
+		// display: flex;
+		flex: 1;
+		background-color: #fff;
+		&-chart {
+			display: flex;
+			flex-wrap: wrap;
+			padding: 0 16px 12px;
+		}
+		&-flex {
+			width: 50%;
+			display: flex;
+			gap: 16px;
+			justify-content: center;
+			padding: 11px 0;
+			&-l {
+				font-size: 14px;
+				line-height: 22px;
+				color: #4e5969;
+				display: flex;
+				flex-direction: column;
+				gap: 4px;
+				&-value {
+					color: #1d2129;
+					font-size: 18px;
+					line-height: 26px;
+				}
+				&-subValue {
+					font-size: 14px;
+					line-height: 22px;
+					color: #4e5969;
+				}
+			}
+			&-r {
+				width: 72px;
+				height: 48px;
+				padding: 4px 12px;
+				text-align: center;
+				font-size: 12px;
+				line-height: 20px;
+				&-green {
+					background: #e8ffea;
+					color: #00b42a;
+				}
+				&-orange {
+					background: #fff7e6;
+					color: #ef6c24;
+				}
+				&-blue {
+					background: #e6f7ff;
+					color: #1890ff;
+				}
+			}
+		}
+	}
+	&-grade {
+		padding: 16px;
+		display: flex;
+		flex-direction: column;
+		gap: 8px;
+		&-item {
+			padding: 12px 8px;
+			&-t {
+				display: flex;
+				justify-content: space-between;
+				&-orange {
+					padding: 2px 12px;
+					color: #ef6c24;
+					border-radius: 2px;
+					background: #fff7e6;
+					border: 1px solid #fa8c16;
+				}
+				&-blue {
+					padding: 2px 12px;
+					color: #3491fa;
+					border-radius: 2px;
+					background: #e8f7ff;
+					border: 1px solid #3491fa;
+				}
+				&-red {
+					padding: 2px 12px;
+					color: #f76560;
+					border-radius: 2px;
+					background: #ffece8;
+					border: 1px solid #f53f3f;
+				}
+				&-value {
+					font-size: 18px;
+					line-height: 28px;
+					margin-right: 4px;
+				}
+				&-unit {
+					font-size: 12px;
+					line-height: 20px;
+					color: #86909c;
+				}
+			}
+			&-b {
+				margin-top: 8px;
+				&-bg {
+					height: 3px;
+					width: 100%;
+					background: #e9eaeb;
+					position: relative;
+					&-orange {
+						width: 80%;
+						height: 3px;
+						position: absolute;
+						top: 0;
+						left: 0;
+						background: linear-gradient(270deg, #ffc069 0%, #fa8c16);
+					}
+					&-blue {
+						width: 20%;
+						height: 3px;
+						position: absolute;
+						top: 0;
+						left: 0;
+						background: linear-gradient(270deg,#57a9fb 0%, #3491fa);
+					}
+          &-red {
+						width: 10%;
+						height: 3px;
+						position: absolute;
+						top: 0;
+						left: 0;
+						background: linear-gradient(270deg,#f76560 0%, #f53f3f);
+					}
+				}
+			}
+			&-orange {
+				border: 1px solid #fa8c16;
+			}
+			&-blue {
+				border: 1px solid #3491fa;
+			}
+			&-red {
+				border: 1px solid #f76560;
+			}
+		}
+	}
+}
+
+.workDash-bg_2 {
+	background: #1890ff;
+	&_img {
+		background-color: #91d5ff;
+	}
+	&_r {
+		background: linear-gradient(271deg, #1890ff 0%, rgba(24, 144, 255, 0.8) 14%);
+	}
+}
+
+.workDash-bg_3 {
+	background: #ef6c24;
+	&_img {
+		background-color: #ffcba1;
+	}
+	&_r {
+		background: linear-gradient(271deg, #ef6c24 0%, rgba(239, 108, 36, 0.8) 14%);
+	}
+}
+
+.workDash-bg_4 {
+	background: #d10269;
+	&_img {
+		background-color: #ffa6c6;
+	}
+	&_r {
+		background: linear-gradient(271deg, #d10269 0%, rgba(209, 2, 105, 0.8) 14%);
+	}
+}

--
Gitblit v1.8.0