From f128d679cacda2a6b5b730ad0368b5fe73f887f7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 14 二月 2025 15:27:02 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/menu/components/code/sandbox/index.scss                                     |    7 
 src/menu/debug/index.scss                                                       |  104 --
 src/templates/zshare/modalform/index.jsx                                        |    8 
 src/menu/components/timeline/normal-timeline/index.jsx                          |    3 
 src/tabviews/custom/components/editor/braft-editor/index.jsx                    |   22 
 src/menu/components/card/table-card/index.jsx                                   |    4 
 src/tabviews/zshare/deepseek/index.jsx                                          |   41 +
 src/utils/utils-custom.js                                                       |   86 ++
 src/tabviews/zshare/actionList/excelInbutton/index.jsx                          |   50 +
 src/menu/components/chart/antv-scatter/index.jsx                                |    3 
 src/tabviews/basetable/index.jsx                                                |    2 
 src/menu/components/tree/antd-tree/index.jsx                                    |    3 
 src/menu/components/editor/braft-editor/index.scss                              |   18 
 src/tabviews/zshare/actionList/normalbutton/index.jsx                           |   30 
 src/views/mobdesign/index.jsx                                                   |    2 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx            |    8 
 src/views/menudesign/index.jsx                                                  |    3 
 src/menu/components/module/invoice/index.jsx                                    |    2 
 src/menu/components/form/tab-form/index.jsx                                     |   69 -
 src/menu/components/carousel/prop-card/index.jsx                                |    4 
 src/menu/components/card/double-data-card/index.jsx                             |    4 
 src/router/index.js                                                             |    2 
 src/tabviews/custom/components/timeline/normal-timeline/index.jsx               |    2 
 src/menu/components/card/data-card/index.jsx                                    |    4 
 src/menu/components/chart/antv-pie/index.jsx                                    |    2 
 src/tabviews/zshare/mutilform/index.jsx                                         |   27 
 src/menu/components/chart/antv-dashboard/index.jsx                              |    2 
 src/tabviews/custom/index.jsx                                                   |    2 
 src/views/menudesign/index.scss                                                 |    7 
 src/menu/components/card/prop-card/index.jsx                                    |    4 
 src/menu/debug/index.jsx                                                        |  126 ++-
 src/menu/components/table/normal-table/index.jsx                                |    4 
 src/views/mkai/index.scss                                                       |  399 +++++++++++
 package-lock.json                                                               |  167 ++++
 src/menu/components/chart/antv-G6/index.jsx                                     |    2 
 src/menu/components/tree/antd-tree/index.scss                                   |    7 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx |    2 
 src/tabviews/zshare/topSearch/index.jsx                                         |    2 
 src/views/mkai/index.jsx                                                        |  336 +++++++++
 src/menu/components/chart/chart-custom/index.jsx                                |    2 
 src/menu/components/iframe/index.jsx                                            |    2 
 src/menu/components/form/simple-form/index.jsx                                  |   67 -
 src/menu/components/card/balcony/index.scss                                     |    4 
 src/menu/components/chart/antv-bar/index.jsx                                    |    3 
 src/menu/components/code/sandbox/index.jsx                                      |    2 
 src/views/tabledesign/index.jsx                                                 |    3 
 src/api/index.js                                                                |   48 -
 src/menu/components/table/edit-table/index.jsx                                  |    4 
 src/menu/components/carousel/data-card/index.jsx                                |    4 
 src/utils/utils.js                                                              |   50 +
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx           |    7 
 src/index.js                                                                    |    1 
 src/menu/components/card/balcony/index.jsx                                      |   18 
 src/menu/components/form/step-form/index.jsx                                    |   67 -
 src/views/pcdesign/index.jsx                                                    |    2 
 src/templates/zshare/verifycard/index.jsx                                       |    1 
 src/menu/lowerField/index.jsx                                                   |  193 +++++
 src/tabviews/zshare/deepseek/index.scss                                         |    0 
 src/menu/components/editor/braft-editor/index.jsx                               |    4 
 package.json                                                                    |    1 
 src/menu/components/table/base-table/index.jsx                                  |    4 
 src/menu/components/calendar/index.jsx                                          |    2 
 src/views/login/index.jsx                                                       |    5 
 63 files changed, 1,633 insertions(+), 431 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 832b343..30c171f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3172,6 +3172,14 @@
       "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
       "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag=="
     },
+    "@types/hast": {
+      "version": "2.3.10",
+      "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
+      "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
+      "requires": {
+        "@types/unist": "^2"
+      }
+    },
     "@types/hoist-non-react-statics": {
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
@@ -3286,6 +3294,11 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
       "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw=="
+    },
+    "@types/unist": {
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
     },
     "@types/yargs": {
       "version": "13.0.2",
@@ -5605,6 +5618,21 @@
         "supports-color": "^5.3.0"
       }
     },
+    "character-entities": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
+      "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
+    },
+    "character-entities-legacy": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
+      "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
+    },
+    "character-reference-invalid": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
+      "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
+    },
     "chardet": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
@@ -5876,6 +5904,11 @@
       "requires": {
         "delayed-stream": "~1.0.0"
       }
+    },
+    "comma-separated-tokens": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
+      "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
     },
     "command-exists": {
       "version": "1.2.9",
@@ -9570,6 +9603,14 @@
       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
     },
+    "fault": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
+      "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+      "requires": {
+        "format": "^0.2.0"
+      }
+    },
     "faye-websocket": {
       "version": "0.11.3",
       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
@@ -9898,6 +9939,11 @@
         "combined-stream": "^1.0.6",
         "mime-types": "^2.1.12"
       }
+    },
+    "format": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+      "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
     },
     "forwarded": {
       "version": "0.1.2",
@@ -10838,6 +10884,23 @@
         "minimalistic-assert": "^1.0.1"
       }
     },
+    "hast-util-parse-selector": {
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
+      "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="
+    },
+    "hastscript": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
+      "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
+      "requires": {
+        "@types/hast": "^2.0.0",
+        "comma-separated-tokens": "^1.0.0",
+        "hast-util-parse-selector": "^2.0.0",
+        "property-information": "^5.0.0",
+        "space-separated-tokens": "^1.0.0"
+      }
+    },
     "he": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -10873,10 +10936,20 @@
       "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz",
       "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg=="
     },
+    "highlight.js": {
+      "version": "10.7.3",
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+      "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
+    },
     "highlightjs": {
       "version": "9.12.0",
       "resolved": "https://registry.npmjs.org/highlightjs/-/highlightjs-9.12.0.tgz",
       "integrity": "sha512-eAhWMtDZaOZIQdxIP4UEB1vNp/CVXQPdMSihTSuaExhFIRC0BVpXbtP3mTP1hDoGOyh7nbB3cuC3sOPhG5wGDA=="
+    },
+    "highlightjs-vue": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz",
+      "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA=="
     },
     "history": {
       "version": "4.9.0",
@@ -11433,6 +11506,20 @@
         "kind-of": "^3.0.2"
       }
     },
+    "is-alphabetical": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+      "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
+    },
+    "is-alphanumerical": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+      "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+      "requires": {
+        "is-alphabetical": "^1.0.0",
+        "is-decimal": "^1.0.0"
+      }
+    },
     "is-any-array": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.0.tgz",
@@ -11494,6 +11581,11 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
       "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+    },
+    "is-decimal": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+      "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
     },
     "is-descriptor": {
       "version": "0.1.6",
@@ -11568,6 +11660,11 @@
       "requires": {
         "is-extglob": "^2.1.1"
       }
+    },
+    "is-hexadecimal": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+      "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
     },
     "is-mobile": {
       "version": "2.2.2",
@@ -13463,6 +13560,15 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
       "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw="
+    },
+    "lowlight": {
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
+      "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
+      "requires": {
+        "fault": "^1.0.0",
+        "highlight.js": "~10.7.0"
+      }
     },
     "lru-cache": {
       "version": "4.1.5",
@@ -15530,6 +15636,19 @@
         "safe-buffer": "^5.1.1"
       }
     },
+    "parse-entities": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+      "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+      "requires": {
+        "character-entities": "^1.0.0",
+        "character-entities-legacy": "^1.0.0",
+        "character-reference-invalid": "^1.0.0",
+        "is-alphanumerical": "^1.0.0",
+        "is-decimal": "^1.0.0",
+        "is-hexadecimal": "^1.0.0"
+      }
+    },
     "parse-glob": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
@@ -16870,6 +16989,11 @@
       "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
       "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
     },
+    "prismjs": {
+      "version": "1.29.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
+    },
     "private": {
       "version": "0.1.8",
       "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -16931,6 +17055,14 @@
         "loose-envify": "^1.4.0",
         "object-assign": "^4.1.1",
         "react-is": "^16.8.1"
+      }
+    },
+    "property-information": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
+      "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
+      "requires": {
+        "xtend": "^4.0.0"
       }
     },
     "proxy-addr": {
@@ -18621,6 +18753,19 @@
         "resize-observer-polyfill": "^1.5.0"
       }
     },
+    "react-syntax-highlighter": {
+      "version": "15.6.1",
+      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz",
+      "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "highlight.js": "^10.4.1",
+        "highlightjs-vue": "^1.0.0",
+        "lowlight": "^1.17.0",
+        "prismjs": "^1.27.0",
+        "refractor": "^3.6.0"
+      }
+    },
     "reactcss": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
@@ -18730,6 +18875,23 @@
       "version": "0.1.13",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
       "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+    },
+    "refractor": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
+      "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
+      "requires": {
+        "hastscript": "^6.0.0",
+        "parse-entities": "^2.0.0",
+        "prismjs": "~1.27.0"
+      },
+      "dependencies": {
+        "prismjs": {
+          "version": "1.27.0",
+          "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
+          "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA=="
+        }
+      }
     },
     "regenerate": {
       "version": "1.4.0",
@@ -20055,6 +20217,11 @@
       "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
       "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
     },
+    "space-separated-tokens": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
+      "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
+    },
     "spark-md5": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz",
diff --git a/package.json b/package.json
index 8bcac9a..f302d7f 100644
--- a/package.json
+++ b/package.json
@@ -105,6 +105,7 @@
     "react-native": "^0.63.2",
     "react-redux": "^7.1.1",
     "react-router-dom": "^5.0.1",
+    "react-syntax-highlighter": "^15.6.1",
     "redux": "^4.0.4",
     "redux-thunk": "^2.3.0",
     "resolve": "1.12.0",
diff --git a/src/api/index.js b/src/api/index.js
index 2b9e9c6..37f14a6 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -138,36 +138,12 @@
   // }
 
   /**
-   * @description 寰俊涓氬姟璇锋眰
-   * 39涓� qingqiumarket.cn|cloud.mk9h.cn|sso.mk9h.cn
+   * @description 蹇�掓煡璇�
    */
-  wxNginxRequest (url, method, param) {
-    let _url = url
-
-    if (!/^http/.test(url)) {
-      _url = window.GLOB.location + '/' + url
-      if (process.env.NODE_ENV === 'production') {
-        _url = document.location.origin + '/' + url
-      }
-    }
-    if (/qingqiumarket.cn|cloud.mk9h.cn/.test(_url)) {
-      _url = _url.replace('http://qingqiumarket.cn/', 'http://qingqiumarket.cn:8080/')
-      _url = _url.replace('http://cloud.mk9h.cn/', 'http://cloud.mk9h.cn:8080/')
-      _url = _url.replace('https://qingqiumarket.cn/', 'https://qingqiumarket.cn:8443/')
-      _url = _url.replace('https://cloud.mk9h.cn/', 'https://cloud.mk9h.cn:8443/')
-    }
-    
-    if (param) {
-      return axios({
-        url: _url,
-        method,
-        data: param
-      })
-    }
-
+  expressRequest (url) {
     return axios({
-      url: _url,
-      method
+      url: window.GLOB.location + '/' + url,
+      method: 'get'
     })
   }
 
@@ -238,6 +214,9 @@
       } else {
         param.linkurl = window.GLOB.linkurl
       }
+    } else if (binding_type === 'cloud') { // 鐧诲綍浜戠
+      delete param.rduri
+      url = window.atob('aHR0cHM6Ly9jbG91$mkZC5tazloLmNu'.replace('$mk', '')) + '/webapi/dologon/s_visitor_login'
     }
     
     param.LText = md5(window.btoa(_SessionUid + param.timestamp + (param.linkurl || '')))
@@ -1241,19 +1220,8 @@
    * @description oss鏂囦欢涓婁紶
    */
   fileOssUpload (param) {
-    let _url = window.GLOB.location + '/file/oss/upload'
-    if (process.env.NODE_ENV === 'production') {
-      _url = document.location.origin + '/file/oss/upload'
-    }
-    if (/qingqiumarket.cn|cloud.mk9h.cn/.test(_url)) {
-      _url = _url.replace('http://qingqiumarket.cn/', 'http://qingqiumarket.cn:8080/')
-      _url = _url.replace('http://cloud.mk9h.cn/', 'http://cloud.mk9h.cn:8080/')
-      _url = _url.replace('https://qingqiumarket.cn/', 'https://qingqiumarket.cn:8443/')
-      _url = _url.replace('https://cloud.mk9h.cn/', 'https://cloud.mk9h.cn:8443/')
-    }
-    
     return axios({
-      url: _url,
+      url: window.GLOB.location + '/file/oss/upload',
       method: 'post',
       headers: { 'Content-Type': 'multipart/form-data' },
       data: param
diff --git a/src/index.js b/src/index.js
index 42a037d..be6ef97 100644
--- a/src/index.js
+++ b/src/index.js
@@ -199,6 +199,7 @@
       GLOB.host = window.location.host + (_service ? '_' + _service : '')
       GLOB.baseurl = document.location.origin + '/' + GLOB.service
       GLOB.linkurl = GLOB.baseurl + 'index.html'
+      GLOB.location = document.location.origin
     } else {
       GLOB.location = config.host
       GLOB.service = config.service
diff --git a/src/menu/components/calendar/index.jsx b/src/menu/components/calendar/index.jsx
index 00a1663..9c69391 100644
--- a/src/menu/components/calendar/index.jsx
+++ b/src/menu/components/calendar/index.jsx
@@ -129,6 +129,8 @@
       if (card.errors.length === 0) {
         card.$tables = getTables(card)
       }
+
+      delete card.$c_ds
     }
 
     this.setState({
diff --git a/src/menu/components/card/balcony/index.jsx b/src/menu/components/card/balcony/index.jsx
index c1bef15..ea5e4c1 100644
--- a/src/menu/components/card/balcony/index.jsx
+++ b/src/menu/components/card/balcony/index.jsx
@@ -143,6 +143,11 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+    delete card.$c_el
+
     this.setState({
       card: card
     })
@@ -160,8 +165,17 @@
 
   changeStyle = () => {
     const { card } = this.state
+    let options = ['width', 'height', 'background', 'border', 'padding', 'margin', 'shadow', 'clear', 'minHeight', 'position', 'transform']
 
-    MKEmitter.emit('changeStyle', ['width', 'height', 'background', 'border', 'padding', 'margin', 'shadow', 'clear', 'minHeight', 'position', 'transform'], card.style, this.getStyle)
+    if (card.style && !card.style.width) {
+      if (card.style.height) {
+        options = ['height', 'width', 'background', 'border', 'padding', 'margin', 'shadow', 'clear', 'minHeight', 'position', 'transform']
+      } else if (card.style.position && ['fixed', 'absolute'].includes(card.style.position)) {
+        options = ['position', 'width', 'height', 'background', 'border', 'padding', 'margin', 'shadow', 'clear', 'minHeight', 'transform']
+      }
+    }
+
+    MKEmitter.emit('changeStyle', options, card.style, this.getStyle)
   }
 
   getStyle = (style) => {
@@ -277,7 +291,7 @@
     let _style = resetStyle(card.style)
 
     return (
-      <div className="menu-balcony-edit-box" style={_style} id={card.uuid}>
+      <div className={'menu-balcony-edit-box' + (['fixed', 'absolute'].includes(_style.position) ? ' ctrl-position' : '')} style={_style} id={card.uuid}>
         {card.style.height ? <ColumnHeightOutlined className="fixed-height" title="瀹氶珮" /> : null}
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
diff --git a/src/menu/components/card/balcony/index.scss b/src/menu/components/card/balcony/index.scss
index efe4ce6..765264d 100644
--- a/src/menu/components/card/balcony/index.scss
+++ b/src/menu/components/card/balcony/index.scss
@@ -58,6 +58,10 @@
     color: orange;
   }
 }
+.menu-balcony-edit-box.ctrl-position {
+  width: auto!important;
+  height: auto!important;
+}
 .menu-balcony-edit-box::after {
   display: block;
   content: ' ';
diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx
index 6723bb4..7bb6631 100644
--- a/src/menu/components/card/data-card/index.jsx
+++ b/src/menu/components/card/data-card/index.jsx
@@ -149,6 +149,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/card/double-data-card/index.jsx b/src/menu/components/card/double-data-card/index.jsx
index ca1be3d..24430fc 100644
--- a/src/menu/components/card/double-data-card/index.jsx
+++ b/src/menu/components/card/double-data-card/index.jsx
@@ -142,6 +142,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx
index 59cfd1b..ec54ba9 100644
--- a/src/menu/components/card/prop-card/index.jsx
+++ b/src/menu/components/card/prop-card/index.jsx
@@ -135,6 +135,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/card/table-card/index.jsx b/src/menu/components/card/table-card/index.jsx
index 2cb6e75..1da3dd9 100644
--- a/src/menu/components/card/table-card/index.jsx
+++ b/src/menu/components/card/table-card/index.jsx
@@ -138,6 +138,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/carousel/data-card/index.jsx b/src/menu/components/carousel/data-card/index.jsx
index 27bd2fd..ec2cb93 100644
--- a/src/menu/components/carousel/data-card/index.jsx
+++ b/src/menu/components/carousel/data-card/index.jsx
@@ -115,6 +115,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/carousel/prop-card/index.jsx b/src/menu/components/carousel/prop-card/index.jsx
index 194fc41..fa4da5a 100644
--- a/src/menu/components/carousel/prop-card/index.jsx
+++ b/src/menu/components/carousel/prop-card/index.jsx
@@ -114,6 +114,10 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+    delete card.$c_sc
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/chart/antv-G6/index.jsx b/src/menu/components/chart/antv-G6/index.jsx
index 1578066..a90cff0 100644
--- a/src/menu/components/chart/antv-G6/index.jsx
+++ b/src/menu/components/chart/antv-G6/index.jsx
@@ -1342,6 +1342,8 @@
     if (card.errors.length === 0) {
       card.$tables = getTables(card)
     }
+
+    delete card.$c_ds
     
     if (!card.plot.valueField) {
       card.errors.push({ level: 0, detail: '鍥捐〃淇℃伅灏氭湭璁剧疆锛�'})
diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx
index 3436279..3dc4b3f 100644
--- a/src/menu/components/chart/antv-bar/index.jsx
+++ b/src/menu/components/chart/antv-bar/index.jsx
@@ -1286,6 +1286,9 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+
     let columns = card.columns.map(c => c.field)
     if (!card.plot.Xaxis) {
       card.errors.push({ level: 0, detail: '鍧愭爣杞村皻鏈缃紒'})
diff --git a/src/menu/components/chart/antv-dashboard/index.jsx b/src/menu/components/chart/antv-dashboard/index.jsx
index 7ffc5c5..3569139 100644
--- a/src/menu/components/chart/antv-dashboard/index.jsx
+++ b/src/menu/components/chart/antv-dashboard/index.jsx
@@ -465,6 +465,8 @@
     if (card.errors.length === 0) {
       card.$tables = getTables(card)
     }
+
+    delete card.$c_ds
     
     let columns = card.columns.map(c => c.field)
     if (!card.plot.valueField) {
diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx
index 1d531fd..a9f4266 100644
--- a/src/menu/components/chart/antv-pie/index.jsx
+++ b/src/menu/components/chart/antv-pie/index.jsx
@@ -565,6 +565,8 @@
     if (card.errors.length === 0) {
       card.$tables = getTables(card)
     }
+
+    delete card.$c_ds
     
     if (!card.plot.Xaxis) {
       card.errors.push({ level: 0, detail: '鍚嶇О瀛楁灏氭湭璁剧疆锛�'})
diff --git a/src/menu/components/chart/antv-scatter/index.jsx b/src/menu/components/chart/antv-scatter/index.jsx
index 41bf3bd..bfaf069 100644
--- a/src/menu/components/chart/antv-scatter/index.jsx
+++ b/src/menu/components/chart/antv-scatter/index.jsx
@@ -239,6 +239,9 @@
     if (card.errors.length === 0) {
       card.$tables = getTables(card)
     }
+
+    delete card.$c_ds
+    delete card.$c_ac
     
     if (!card.plot.Xaxis) {
       card.errors.push({ level: 0, detail: '鍧愭爣杞村皻鏈缃紒'})
diff --git a/src/menu/components/chart/chart-custom/index.jsx b/src/menu/components/chart/chart-custom/index.jsx
index d5ba312..22f45f6 100644
--- a/src/menu/components/chart/chart-custom/index.jsx
+++ b/src/menu/components/chart/chart-custom/index.jsx
@@ -189,6 +189,8 @@
     if (card.errors.length === 0) {
       card.$tables = getTables(card)
     }
+
+    delete card.$c_ds
     
     this.setState({
       card: card
diff --git a/src/menu/components/code/sandbox/index.jsx b/src/menu/components/code/sandbox/index.jsx
index 62a1e35..79dab64 100644
--- a/src/menu/components/code/sandbox/index.jsx
+++ b/src/menu/components/code/sandbox/index.jsx
@@ -91,6 +91,8 @@
       card.errors = checkComponent(card)
     }
 
+    delete card.$c_ds
+
     this.setState({
       card: card
     })
diff --git a/src/menu/components/code/sandbox/index.scss b/src/menu/components/code/sandbox/index.scss
index c096ca8..2f98095 100644
--- a/src/menu/components/code/sandbox/index.scss
+++ b/src/menu/components/code/sandbox/index.scss
@@ -17,13 +17,6 @@
     padding: 5px;
     background: rgba(255, 255, 255, 0.55);
   }
-  .empty-content {
-    text-align: center;
-    font-size: 30px;
-    margin: 0;
-    line-height: 90px;
-    color: #bcbcbc;
-  }
 }
 .menu-editor-sand-box::after {
   display: block;
diff --git a/src/menu/components/editor/braft-editor/index.jsx b/src/menu/components/editor/braft-editor/index.jsx
index 67fcb70..fe1197a 100644
--- a/src/menu/components/editor/braft-editor/index.jsx
+++ b/src/menu/components/editor/braft-editor/index.jsx
@@ -120,6 +120,8 @@
       }
     }
 
+    delete card.$c_ds
+
     this.setState({
       card: card
     })
@@ -212,7 +214,7 @@
         } trigger="hover">
           <ToolOutlined />
         </Popover>
-        <BraftContent value={card.wrap.datatype !== 'static' ? '<p class="empty-content">瀵屾枃鏈�</p>' : card.html}/>
+        <BraftContent value={card.wrap.datatype !== 'static' ? '<p class="empty-content"><span>瀵屾枃鏈�<span>瀛楃鏇挎崲锛�$blank_space_**$(绌烘牸锛屽叾涓�**浠h〃绌烘牸鏁�)銆� </span></span></p>' : card.html}/>
         <div className="component-name">
           <div className="center">
             <div className="title">{card.name}</div>
diff --git a/src/menu/components/editor/braft-editor/index.scss b/src/menu/components/editor/braft-editor/index.scss
index 6e533e8..4fbde76 100644
--- a/src/menu/components/editor/braft-editor/index.scss
+++ b/src/menu/components/editor/braft-editor/index.scss
@@ -18,11 +18,25 @@
     background: rgba(255, 255, 255, 0.55);
   }
   .empty-content {
-    text-align: center;
     font-size: 30px;
     margin: 0;
-    line-height: 90px;
+    height: 90px;
     color: #bcbcbc;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+
+    span {
+      display: inline-block;
+      text-align: center;
+      span {
+        display: block;
+        font-size: 14px;
+        color: rgba(0, 0, 0, 0.65);
+        white-space: nowrap;
+      }
+    }
   }
 }
 .menu-normal-editor-box.th-light {
diff --git a/src/menu/components/form/simple-form/index.jsx b/src/menu/components/form/simple-form/index.jsx
index 94dee26..6200b70 100644
--- a/src/menu/components/form/simple-form/index.jsx
+++ b/src/menu/components/form/simple-form/index.jsx
@@ -121,72 +121,19 @@
     card.width = card.wrap.width
     card.name = card.wrap.name
     card.errors = []
-    let idCtrl = false
 
+    card.$c_fc = true
     if (card.wrap.datatype === 'dynamic') {
-      let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
-      if (supModule === 'empty') {
-        supModule = ''
-      }
-
       card.$c_ds = true
-      card.errors = checkComponent(card)
-
-      if (card.errors.length === 0) {
-        card.$tables = getTables(card)
-      }
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule) {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ叧鑱斾富琛ㄢ��${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
     } else {
-      let supModule = ''
-      if (card.wrap.datatype === 'static') {
-        supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
-      }
-
-      card.$tables = getTables(card)
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule && card.wrap.datatype === 'static') {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ叧鑱斾富琛ㄢ��${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
+      delete card.$c_ds
     }
 
-    card.idCtrl = idCtrl
+    card.errors = checkComponent(card)
+    card.$tables = getTables(card)
+
+    delete card.$c_ds
+    delete card.$c_fc
 
     this.setState({
       card: card
diff --git a/src/menu/components/form/step-form/index.jsx b/src/menu/components/form/step-form/index.jsx
index e968838..68225bc 100644
--- a/src/menu/components/form/step-form/index.jsx
+++ b/src/menu/components/form/step-form/index.jsx
@@ -128,72 +128,19 @@
     card.width = card.wrap.width
     card.name = card.wrap.name
     card.errors = []
-    let idCtrl = false
 
+    card.$c_fc = true
     if (card.wrap.datatype === 'dynamic') {
-      let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
-      if (supModule === 'empty') {
-        supModule = ''
-      }
-      
       card.$c_ds = true
-      card.errors = checkComponent(card)
-
-      if (card.errors.length === 0) {
-        card.$tables = getTables(card)
-      }
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule) {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
     } else {
-      let supModule = ''
-      if (card.wrap.datatype === 'static') {
-        supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
-      }
-
-      card.$tables = getTables(card)
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule && card.wrap.datatype === 'static') {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
+      delete card.$c_ds
     }
 
-    card.idCtrl = idCtrl
+    card.errors = checkComponent(card)
+    card.$tables = getTables(card)
+
+    delete card.$c_ds
+    delete card.$c_fc
 
     this.setState({
       card: card
diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx
index 7e830ce..86400d1 100644
--- a/src/menu/components/form/tab-form/index.jsx
+++ b/src/menu/components/form/tab-form/index.jsx
@@ -140,72 +140,19 @@
     card.width = card.wrap.width
     card.name = card.wrap.name
     card.errors = []
-    let idCtrl = false
-
+    
+    card.$c_fc = true
     if (card.wrap.datatype === 'dynamic') {
-      let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
-      if (supModule === 'empty') {
-        supModule = ''
-      }
-
       card.$c_ds = true
-      card.errors = checkComponent(card)
-
-      if (card.errors.length === 0) {
-        card.$tables = getTables(card)
-      }
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule) {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
     } else {
-      let supModule = ''
-      if (card.wrap.datatype === 'static') {
-        supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
-      }
-
-      card.$tables = getTables(card)
-
-      card.subcards.forEach(item => {
-        if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
-          card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
-        }
-        if (item.subButton.verify && !item.subButton.output) {
-          if (item.subButton.verify.noteEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
-          } else if (item.subButton.verify.emailEnable === 'true') {
-            card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
-          }
-        }
-        item.fields.forEach(m => {
-          if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
-            idCtrl = true
-          }
-          if (m.type === 'linkMain' && !supModule && card.wrap.datatype === 'static') {
-            card.errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
-          }
-        })
-      })
+      delete card.$c_ds
     }
 
-    card.idCtrl = idCtrl
+    card.errors = checkComponent(card)
+    card.$tables = getTables(card)
+
+    delete card.$c_ds
+    delete card.$c_fc
 
     this.setState({
       card: card
diff --git a/src/menu/components/iframe/index.jsx b/src/menu/components/iframe/index.jsx
index f6ef55f..a77c1bc 100644
--- a/src/menu/components/iframe/index.jsx
+++ b/src/menu/components/iframe/index.jsx
@@ -101,6 +101,8 @@
         card.$tables = getTables(card)
       }
     }
+
+    delete card.$c_ds
     
     this.setState({
       card: card
diff --git a/src/menu/components/module/invoice/index.jsx b/src/menu/components/module/invoice/index.jsx
index 8a17449..b553ab7 100644
--- a/src/menu/components/module/invoice/index.jsx
+++ b/src/menu/components/module/invoice/index.jsx
@@ -210,6 +210,8 @@
     card.$c_ds = card.wrap.datatype === 'dynamic'
     card.errors = checkComponent(card)
 
+    delete card.$c_ds
+
     if (card.errors.length === 0) {
       if (card.buyer.setting.interType === 'system' && card.buyer.setting.execute !== 'false' && !card.buyer.setting.dataresource) {
         card.errors.push({ level: 0, detail: '-璐拱鏂� 鏈缃暟鎹簮锛�'})
diff --git a/src/menu/components/table/base-table/index.jsx b/src/menu/components/table/base-table/index.jsx
index f3983ea..fe42ea2 100644
--- a/src/menu/components/table/base-table/index.jsx
+++ b/src/menu/components/table/base-table/index.jsx
@@ -146,6 +146,10 @@
       if (card.errors.length === 0) {
         card.$tables = getTables(card)
       }
+
+      delete card.$c_ds
+      delete card.$c_ac
+      delete card.$c_cl
     }
 
     this.setState({
diff --git a/src/menu/components/table/edit-table/index.jsx b/src/menu/components/table/edit-table/index.jsx
index 04d7504..7be53fa 100644
--- a/src/menu/components/table/edit-table/index.jsx
+++ b/src/menu/components/table/edit-table/index.jsx
@@ -140,6 +140,10 @@
       if (card.errors.length === 0) {
         card.$tables = getTables(card)
       }
+
+      delete card.$c_ds
+      delete card.$c_ac
+      delete card.$c_cl
     }
 
     this.setState({
diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx
index ba1fc03..7ec4411 100644
--- a/src/menu/components/table/normal-table/index.jsx
+++ b/src/menu/components/table/normal-table/index.jsx
@@ -161,6 +161,10 @@
       if (card.errors.length === 0) {
         card.$tables = getTables(card)
       }
+
+      delete card.$c_ds
+      delete card.$c_ac
+      delete card.$c_cl
     }
 
     this.setState({
diff --git a/src/menu/components/timeline/normal-timeline/index.jsx b/src/menu/components/timeline/normal-timeline/index.jsx
index 22d2344..f8fdcae 100644
--- a/src/menu/components/timeline/normal-timeline/index.jsx
+++ b/src/menu/components/timeline/normal-timeline/index.jsx
@@ -95,6 +95,9 @@
       if (card.errors.length === 0) {
         card.$tables = getTables(card)
       }
+
+      delete card.$c_ds
+      delete card.$c_sc
     }
     
     this.setState({
diff --git a/src/menu/components/tree/antd-tree/index.jsx b/src/menu/components/tree/antd-tree/index.jsx
index 515d1d0..8f2c11d 100644
--- a/src/menu/components/tree/antd-tree/index.jsx
+++ b/src/menu/components/tree/antd-tree/index.jsx
@@ -97,6 +97,9 @@
       card.$tables = getTables(card)
     }
 
+    delete card.$c_ds
+    delete card.$c_ac
+
     if (!card.wrap.parentField || !card.wrap.valueField || !card.wrap.labelField) {
       card.errors.push({ level: 0, detail: '鏈缃熀鏈俊鎭紒'})
     } else {
diff --git a/src/menu/components/tree/antd-tree/index.scss b/src/menu/components/tree/antd-tree/index.scss
index a0eeef9..67dbffc 100644
--- a/src/menu/components/tree/antd-tree/index.scss
+++ b/src/menu/components/tree/antd-tree/index.scss
@@ -19,13 +19,6 @@
     padding: 5px;
     background: rgba(255, 255, 255, 0.55);
   }
-  .empty-content {
-    text-align: center;
-    font-size: 30px;
-    margin: 0;
-    line-height: 90px;
-    color: #bcbcbc;
-  }
   .model-menu-action-list:not(.length0) {
     margin: 10px 0px;
   }
diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx
index faff4b8..75a83a4 100644
--- a/src/menu/debug/index.jsx
+++ b/src/menu/debug/index.jsx
@@ -1,7 +1,7 @@
 import React, { Component } from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Modal, Button, Drawer, Tooltip } from 'antd'
+import { Modal, Button, Tooltip, Table } from 'antd'
 import { ClockCircleOutlined, CheckCircleOutlined, CloseCircleOutlined, LoadingOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
@@ -21,7 +21,72 @@
     successIds: [],
     errorIds: [],
     errorMsg: {},
-    execId: ''
+    execId: '',       
+    columns: [
+      {
+        title: '缁勪欢鍚�',
+        dataIndex: 'name',
+        width: '25%'
+      },
+      {
+        title: '鍚嶇О',
+        dataIndex: 'label',
+        width: '25%'
+      },
+      {
+        title: '涓婄骇',
+        dataIndex: 'supName',
+        width: '20%',
+        render: (_, record) => {
+          if (record.supName) {
+            return `${record.supName}-${record.tabName}`
+          }
+          return ''
+        }
+      },
+      {
+        title: '鐘舵��',
+        dataIndex: 'status',
+        align: 'center',
+        width: '15%',
+        render: (_, record) => {
+          let status = <ClockCircleOutlined />
+
+          if (this.state.successIds.includes(record.uuid)) {
+            status = <CheckCircleOutlined />
+          } else if (this.state.errorIds.includes(record.uuid)) {
+            if (this.state.errorMsg[record.uuid]) {
+              status = <Tooltip placement="topLeft" title={this.state.errorMsg[record.uuid]}>
+                <CloseCircleOutlined />
+              </Tooltip>
+            } else {
+              status = <CloseCircleOutlined />
+            }
+          } else if (record.uuid === this.state.execId) {
+            status = <LoadingOutlined />
+          }
+          return status
+        }
+      },
+      {
+        title: 'DeepSeek',
+        dataIndex: 'DeepSeek',
+        align: 'center',
+        width: '15%',
+        render: (_, record) => {
+          return <span className="anticon anticon-deepseek" onClick={() => {
+            if (record.sql) {
+              sessionStorage.setItem('deepseek_sql', record.sql)
+            }
+            window.open('#/ai')
+          }}>
+            <svg viewBox="0 0 1391 1024" width="1.5em" height="1.5em" fill="currentColor">
+              <path d="M1361.92 83.136c-14.272-7.04-20.416 6.272-28.736 12.992-2.816 2.24-5.248 5.12-7.68 7.68-20.8 22.336-45.056 36.864-76.8 35.136-46.464-2.56-86.08 12.032-121.152 47.616-7.552-43.904-32.256-70.08-69.888-86.912-19.712-8.768-39.68-17.472-53.376-36.48-9.664-13.44-12.288-28.48-17.216-43.264-3.008-8.96-6.08-18.112-16.32-19.712-11.2-1.728-15.552 7.68-19.968 15.424-17.536 32.128-24.32 67.52-23.68 103.296 1.6 80.448 35.52 144.576 103.04 190.144 7.68 5.312 9.6 10.56 7.168 18.176-4.608 15.68-10.048 30.976-14.912 46.592-3.072 10.112-7.68 12.352-18.304 8a308.224 308.224 0 0 1-97.28-66.176c-48-46.4-91.392-97.664-145.472-137.792a655.36 655.36 0 0 0-38.528-26.432c-55.232-53.76 7.232-97.792 21.632-103.04 15.104-5.376 5.312-24.128-43.52-23.936C652.032 24.704 607.36 41.024 550.4 62.72a156.8 156.8 0 0 1-26.048 7.68 542.016 542.016 0 0 0-161.408-5.696c-105.6 11.904-189.888 61.824-251.904 147.2C36.608 314.24 19.072 430.848 40.512 552.32c22.528 128 87.808 234.048 188.16 316.992 104 85.888 223.808 128 360.512 120 82.944-4.864 175.424-16 279.68-104.32 26.368 13.056 53.888 18.24 99.712 22.272 35.2 3.328 69.184-1.792 95.424-7.232 41.216-8.704 38.4-46.848 23.424-53.888-120.576-56.32-94.208-33.408-118.272-51.84 61.376-72.768 153.792-148.224 189.952-392.768 2.816-19.392 0.384-31.552 0-47.36-0.256-9.536 1.92-13.312 12.8-14.4a231.04 231.04 0 0 0 86.592-26.56c78.272-42.88 109.696-113.024 117.184-197.184 1.088-12.928-0.256-26.24-13.76-32.96z m-681.408 757.76c-116.928-92.096-173.696-122.368-197.12-120.96-21.888 1.152-17.984 26.304-13.184 42.624 5.12 16.128 11.648 27.328 20.8 41.408 6.464 9.408 10.752 23.424-6.272 33.92-37.76 23.424-103.232-7.872-106.24-9.472-76.288-44.8-140.032-104.192-184.96-185.344-43.264-78.08-68.48-161.92-72.576-251.328-1.152-21.632 5.184-29.312 26.688-33.152a265.6 265.6 0 0 1 85.696-2.24c119.296 17.472 220.928 71.04 306.048 155.52 48.768 48.32 85.504 105.92 123.392 162.176 40.256 59.776 83.648 116.672 138.88 163.392 19.392 16.32 35.072 28.8 49.92 37.952-44.928 5.056-119.872 6.08-171.008-34.496z m56.064-361.024a17.152 17.152 0 1 1 2.752 9.6 16.896 16.896 0 0 1-2.752-9.664z m174.08 89.472a102.72 102.72 0 0 1-33.024 8.96 70.528 70.528 0 0 1-44.736-14.272c-15.296-12.8-26.176-19.968-30.848-42.496a99.264 99.264 0 0 1 0.832-32.96c4.032-18.368-0.384-30.08-13.248-40.768-10.624-8.768-23.872-11.072-38.592-11.072a31.168 31.168 0 0 1-14.272-4.416c-6.144-3.072-11.136-10.752-6.336-20.16 1.536-3.008 8.96-10.304 10.752-11.712 19.84-11.328 42.88-7.68 64.192 0.896 19.712 8.064 34.56 22.848 56 43.776 21.952 25.28 25.792 32.384 38.4 51.328 9.856 14.848 18.816 30.208 24.96 47.616 3.776 10.88-1.152 19.776-14.08 25.28z"></path>
+            </svg>
+          </span>
+        }
+      }
+    ]
   }
 
   sqlList = []
@@ -1697,6 +1762,7 @@
     _sql = _sql.replace(/@BID@/ig, `'${BID}'`)
     _sql = _sql.replace(/@typename@/ig, `'typename'`)
     _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`)
+    _sql = _sql.replace(/\$check@|@check\$/ig, '')
   
     return _sql
   }
@@ -1962,6 +2028,8 @@
         
         aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
     }
+
+    sql = sql.replace(/\$check@|@check\$/ig, '')
 
     return sql
   }
@@ -2507,51 +2575,29 @@
   }
 
   render() {
-    const { visible, sqlList, status, successIds, errorIds, execId, errorMsg } = this.state
+    const { visible, status, columns, sqlList } = this.state
 
     return (
       <>
-        <Button className="mk-border-yellow" icon="bug" onClick={this.trigger}>璋冭瘯</Button>
-        <Drawer
+        <Button className="mk-border-yellow" icon="bug" onClick={this.trigger}>DeepSeek璋冭瘯</Button>
+        <Modal
           className="debug-modal"
-          width={600}
+          title="DeepSeek璋冭瘯"
+          width="60vw"
           visible={visible}
           closable={false}
-          placement="left"
+          centered={true}
+          footer={null}
           destroyOnClose
         >
-          <div className="mk-sql-wrap">
-            <div className="body">
-              {sqlList.map(item => {
-                let other = ''
-                if (item.supName) {
-                  other = `涓婄骇锛�${item.supName}-${item.tabName}`
-                }
-
-                let status = <ClockCircleOutlined />
-
-                if (successIds.includes(item.uuid)) {
-                  status = <CheckCircleOutlined />
-                } else if (errorIds.includes(item.uuid)) {
-                  if (errorMsg[item.uuid]) {
-                    status = <Tooltip placement="topLeft" title={errorMsg[item.uuid]}>
-                      <CloseCircleOutlined />
-                    </Tooltip>
-                  } else {
-                    status = <CloseCircleOutlined />
-                  }
-                } else if (item.uuid === execId) {
-                  status = <LoadingOutlined />
-                }
-
-                return <div className="sql-item" key={item.uuid}>
-                  <div className="sql-1" title={item.name}><div>{item.name}</div></div>
-                  <div className="sql-2" title={item.label}><div>{item.label}</div></div>
-                  <div className="sql-3" title={other}><div>{other}</div></div>
-                  <div className="sql-4">{status}</div>
-                </div>
-              })}
-            </div>
+          <div className="mk-sql-wrap mk-scrollbar">
+            <Table
+              bordered
+              rowKey="uuid"
+              dataSource={sqlList}
+              columns={columns}
+              pagination={false}
+            />
           </div>
           <div className="mk-footer">
             {status === 'error' ? <Button key="skip" className="mk-border-green" onClick={this.roopSql}>
@@ -2567,7 +2613,7 @@
               鍏抽棴
             </Button>
           </div>
-        </Drawer>
+        </Modal>
       </>
     )
   }
diff --git a/src/menu/debug/index.scss b/src/menu/debug/index.scss
index 9e9bb25..60bc281 100644
--- a/src/menu/debug/index.scss
+++ b/src/menu/debug/index.scss
@@ -1,100 +1,44 @@
 .debug-modal {
-  .ant-drawer-body {
+  .ant-modal-body {
     position: relative;
-    height: 100vh;
     padding: 0 0 50px 0;
     overflow: hidden;
     color: rgba(0, 0, 0, 0.85);
 
     .mk-sql-wrap {
-      padding: 10px;
+      max-height: calc(100vh - 150px);
+      min-height: 50vh;
+      padding: 15px 20px;
 
-      .sql-item {
-        display: flex;
-        min-height: 30px;
-
-        .sql-1, .sql-2 {
-          flex: 1;
-          width: 25%;
-          max-width: 25%;
-          display: flex;
-          align-items: center;
-
-          div {
-            overflow: hidden;
-            word-break: break-word;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-          }
-        }
-        .sql-3 {
-          flex: 1;
-          width: 30%;
-          max-width: 30%;
-          display: flex;
-          align-items: center;
-
-          div {
-            overflow: hidden;
-            word-break: break-word;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-          }
-        }
-        .sql-4 {
-          flex: 1;
-          width: 20%;
-          max-width: 20%;
-          display: flex;
-          justify-content: center;
-          align-items: center;
-
-          .anticon {
-            font-size: 16px;
-          }
-          .anticon-clock-circle {
-            color: #c8c8c8;
-          }
-          .anticon-check-circle {
-            color: #26C281;
-          }
-          .anticon-close-circle {
-            color: red;
-          }
-          .anticon-loading {
-            color: orange;
-          }
-        }
+      .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
+        padding: 12px;
       }
-      .header {
-        border-bottom: 1px solid #e8e8e8;
+      .anticon {
+        font-size: 16px;
       }
-      .body {
-        max-height: calc(100vh - 60px);
-        overflow-y: auto;
+      .anticon-clock-circle {
+        color: #c8c8c8;
       }
-    }
-
-    .mk-sql-wrap .body::-webkit-scrollbar {
-      width: 7px;
-    }
-    .mk-sql-wrap .body::-webkit-scrollbar-thumb {
-      border-radius: 5px;
-      box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13);
-      background: rgba(0, 0, 0, 0.13);
-    }
-    .mk-sql-wrap .body::-webkit-scrollbar-track {
-      box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
-      border-radius: 3px;
-      border: 1px solid rgba(0, 0, 0, 0.07);
-      background: rgba(0, 0, 0, 0);
+      .anticon-check-circle {
+        color: #26C281;
+      }
+      .anticon-close-circle {
+        color: red;
+      }
+      .anticon-loading {
+        color: orange;
+      }
+      .anticon-deepseek {
+        cursor: pointer;
+        color: #4D6BFE;
+      }
     }
   }
   .mk-footer {
     position: absolute;
     bottom: 0px;
     width: 100%;
-    height: 45px;
+    height: 50px;
     line-height: 50px;
     border-top: 1px solid #e8e8e8;
     text-align: right;
diff --git a/src/menu/lowerField/index.jsx b/src/menu/lowerField/index.jsx
index be8e891..7822765 100644
--- a/src/menu/lowerField/index.jsx
+++ b/src/menu/lowerField/index.jsx
@@ -28,8 +28,45 @@
   exec = () => {
     let config = fromJS(this.props.config).toJS()
 
+    let resetForm = (m) => {
+      if (m.field) {
+        m.field = m.field.toLowerCase()
+      }
+      if (m.type === 'split' && m.splitctrl) {
+        m.splitctrl = m.splitctrl.toLowerCase()
+      }
+      if (m.tabField) {
+        m.tabField = m.tabField.toLowerCase()
+      }
+      if (m.linkField) {
+        m.linkField = m.linkField.toLowerCase()
+      }
+      if (m.supField) {
+        m.supField = m.supField.toLowerCase()
+      }
+      if (m.phoneField) {
+        m.phoneField = m.phoneField.toLowerCase()
+      }
+      if (m.linkSubField) {
+        m.linkSubField = m.linkSubField.map(n => n.toLowerCase())
+        m.linkSubField = Array.from(new Set(m.linkSubField))
+      }
+    }
+    let resetMark = (m) => {
+      m.marks = m.marks.map(n => {
+        if (n.field && Array.isArray(n.field)) {
+          if (n.field[1] === 'static') {
+            n.field[0] = n.field[0] === '$Index' ? n.field[0] : n.field[0].toLowerCase()
+          } else {
+            n.field = n.field.map(p => p === '$Index' ? p : p.toLowerCase())
+          }
+        }
+
+        return n
+      })
+    }
     let resetElement = (m) => {
-      if (m.datatype === 'dynamic' && m.field) {
+      if (m.field) {
         m.field = m.field.toLowerCase()
       }
       if (m.posterField) {
@@ -42,13 +79,11 @@
         m.linkurl = m.linkurl.toLowerCase()
       }
       if (m.modal && m.modal.fields) {
+        if (m.modal.setting && m.modal.setting.focus) {
+          m.modal.setting.focus = m.modal.setting.focus.toLowerCase()
+        }
         m.modal.fields = m.modal.fields.map(col => {
-          if (col.field) {
-            col.field = col.field.toLowerCase()
-          }
-          if (col.type === 'split' && col.splitctrl) {
-            col.splitctrl = col.splitctrl.toLowerCase()
-          }
+          resetForm(col)
           return col
         })
       }
@@ -72,6 +107,18 @@
             return col
           })
         }
+        if (m.verify.billcodes) {
+          m.verify.billcodes = m.verify.billcodes.map(col => {
+            if (col.field) {
+              col.field = col.field.toLowerCase()
+            }
+            if (col.linkField && col.linkField !== 'BID') {
+              col.linkField = col.linkField.toLowerCase()
+            }
+            return col
+          })
+        }
+        
         if (m.verify.accountfield && m.verify.accountfield !== 'BID') {
           m.verify.accountfield = m.verify.accountfield.toLowerCase()
         }
@@ -82,6 +129,10 @@
       if (m.controlField) {
         m.controlField = m.controlField.toLowerCase()
       }
+
+      if (m.marks && m.marks.length) {
+        resetMark(m)
+      }
       if (m.config && m.config.components) {
         m.config.components = _replace(m.config.components)
       }
@@ -89,6 +140,14 @@
     let _replace = (components) => {
       return components.map(item => {
         if (item.type === 'tabs') {
+          if (item.setting) {
+            if (item.setting.controlField) {
+              item.setting.controlField = item.setting.controlField.toLowerCase()
+            }
+            if (item.setting.selectField) {
+              item.setting.selectField = item.setting.selectField.toLowerCase()
+            }
+          }
           item.subtabs.forEach(tab => {
             tab.components = _replace(tab.components)
           })
@@ -143,6 +202,9 @@
               if (col.field) {
                 col.field = col.field.toLowerCase()
               }
+              if (col.dateShift) {
+                col.dateShift = col.dateShift.toLowerCase()
+              }
               return col
             })
           }
@@ -156,8 +218,16 @@
 
         if (item.subcards) {
           item.subcards.forEach(card => {
-            if (card.setting && card.setting.controlField) {
-              card.setting.controlField = card.setting.controlField.toLowerCase()
+            if (card.setting) {
+              if (card.setting.controlField) {
+                card.setting.controlField = card.setting.controlField.toLowerCase()
+              }
+              if (card.setting.bgField) {
+                card.setting.bgField = card.setting.bgField.toLowerCase()
+              }
+              if (card.setting.menuType) {
+                card.setting.menuType = card.setting.menuType.toLowerCase()
+              }
             }
             if (card.elements) {
               card.elements = card.elements.map(m => {
@@ -175,14 +245,16 @@
 
             if (card.fields) {
               card.fields = card.fields.map(m => {
-                if (m.field) {
-                  m.field = m.field.toLowerCase()
-                }
-                if (m.type === 'split' && m.splitctrl) {
-                  m.splitctrl = m.splitctrl.toLowerCase()
-                }
+                resetForm(m)
                 return m
               })
+            }
+            if (card.subButton) {
+              resetElement(card.subButton)
+
+              if (card.subButton.resetForms) {
+                card.subButton.resetForms = card.subButton.resetForms.map(n => n.toLowerCase())
+              }
             }
           })
         }
@@ -220,6 +292,9 @@
           if (item.plot.gender) {
             item.plot.gender = item.plot.gender.toLowerCase()
           }
+          if (item.plot.menuType) {
+            item.plot.menuType = item.plot.menuType.toLowerCase()
+          }
           if (item.Yaxis) {
             if (Array.isArray(item.Yaxis)) {
               item.Yaxis = item.Yaxis.map(m => {
@@ -238,14 +313,36 @@
           let _update = (cols) => {
             return cols.map(col => {
               if (col.type === 'custom' && col.elements) {
+                if (col.sortField) {
+                  col.sortField = col.sortField.toLowerCase()
+                }
                 col.elements = col.elements.map(m => {
                   resetElement(m)
                   return m
                 })
               } else if (col.type === 'colspan') {
                 col.subcols = _update(col.subcols)
-              } else if (col.field) {
-                col.field = col.field.toLowerCase()
+              } else {
+                if (col.field) {
+                  col.field = col.field.toLowerCase()
+  
+                  if (col.editable === 'true') {
+                    if (col.linkSubField) {
+                      col.linkSubField = col.linkSubField.map(n => n.toLowerCase())
+                      col.linkSubField = Array.from(new Set(col.linkSubField))
+                    }
+                    if (col.clearField) {
+                      col.clearField = col.clearField.toLowerCase()
+                    }
+                    if (col.ctrlField) {
+                      col.ctrlField = col.ctrlField.toLowerCase()
+                    }
+                  }
+                }
+
+                if (col.marks && col.marks.length) {
+                  resetMark(col)
+                }
               }
               
               return col
@@ -253,9 +350,35 @@
           }
 
           item.cols = _update(item.cols)
+
+          if (item.lineMarks) {
+            item.lineMarks = item.lineMarks.map(n => {
+              if (n.field && Array.isArray(n.field)) {
+                if (n.field[1] === 'static') {
+                  n.field[0] = n.field[0] === '$Index' ? n.field[0] : n.field[0].toLowerCase()
+                } else {
+                  n.field = n.field.map(p => p === '$Index' ? p : p.toLowerCase())
+                }
+              }
+      
+              return n
+            })
+          }
+        }
+
+        if (item.subMenus) {
+          item.subMenus = item.subMenus.map(m => {
+            if (m.setting && m.setting.tip) {
+              m.setting.tip = m.setting.tip.toLowerCase()
+            }
+            return m
+          })
         }
 
         if (item.wrap) {
+          if (item.wrap.field) {
+            item.wrap.field = item.wrap.field.toLowerCase()
+          }
           if (item.wrap.tipField) {
             item.wrap.tipField = item.wrap.tipField.toLowerCase()
           }
@@ -280,6 +403,42 @@
           if (item.wrap.link) {
             item.wrap.link = item.wrap.link.toLowerCase()
           }
+          if (item.wrap.linkField) {
+            item.wrap.linkField = item.wrap.linkField.toLowerCase()
+          }
+          if (item.wrap.focus) {
+            item.wrap.focus = item.wrap.focus.toLowerCase()
+          }
+          if (item.wrap.refocus) {
+            item.wrap.refocus = item.wrap.refocus.toLowerCase()
+          }
+          if (item.wrap.statusControl) {
+            item.wrap.statusControl = item.wrap.statusControl.toLowerCase()
+          }
+          if (item.wrap.timeField) {
+            item.wrap.timeField = item.wrap.timeField.toLowerCase()
+          }
+          if (item.wrap.endField) {
+            item.wrap.endField = item.wrap.endField.toLowerCase()
+          }
+          if (item.wrap.remarkField) {
+            item.wrap.remarkField = item.wrap.remarkField.toLowerCase()
+          }
+          if (item.wrap.colorField) {
+            item.wrap.colorField = item.wrap.colorField.toLowerCase()
+          }
+          if (item.wrap.menuType) {
+            item.wrap.menuType = item.wrap.menuType.toLowerCase()
+          }
+
+          if (item.type === 'timeline') {
+            if (item.wrap.label) {
+              item.wrap.label = item.wrap.label.toLowerCase()
+            }
+            if (item.wrap.node) {
+              item.wrap.node = item.wrap.node.toLowerCase()
+            }
+          }
         }
 
         return item
diff --git a/src/router/index.js b/src/router/index.js
index 80346cf..fe59aa7 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -26,6 +26,7 @@
 const SystemProc = asyncLoadComponent(() => import('@/views/systemproc'))
 // const SystemCheck = asyncLoadComponent(() => import('@/views/syscheck'))
 const MkIframe = asyncLoadComponent(() => import('@/views/mkiframe'))
+const MkAi = asyncLoadComponent(() => import('@/views/mkai'))
 
 const routers = [
   {path: '/login', name: 'login', component: Login},
@@ -55,6 +56,7 @@
   {path: '/view/:menuId', name: 'iframe', component: MkIframe},
   {path: '/view/:menuId/:bid', name: 'iframe', component: MkIframe},
   {path: '/interface', name: 'interface', component: Interface},
+  {path: '/ai', name: 'ai', component: MkAi},
   // {path: '/syscheck', name: 'syscheck', component: SystemCheck}
 ]
 
diff --git a/src/tabviews/basetable/index.jsx b/src/tabviews/basetable/index.jsx
index 32a42d2..4472ee5 100644
--- a/src/tabviews/basetable/index.jsx
+++ b/src/tabviews/basetable/index.jsx
@@ -17,6 +17,7 @@
 const FlowFloat = asyncComponent(() => import('@/tabviews/zshare/flowFloat'))
 const SettingComponent = asyncComponent(() => import('@/tabviews/zshare/settingcomponent'))
 const TableNodes = asyncComponent(() => import('@/tabviews/zshare/tablenodes'))
+const DeepSeek = asyncComponent(() => import('@/tabviews/zshare/deepseek'))
 const AutoMatic = asyncComponent(() => import('@/tabviews/zshare/automatic'))
 const DebugTable = asyncComponent(() => import('@/tabviews/debugtable'))
 
@@ -849,6 +850,7 @@
           {config.process === 'true' ? <FlowFloat config={config}/> : null}
           <SettingComponent config={config} shortcuts={shortcuts || []}/>
           <TableNodes config={config} />
+          <DeepSeek/>
         </div>
       </div>
     )
diff --git a/src/tabviews/custom/components/editor/braft-editor/index.jsx b/src/tabviews/custom/components/editor/braft-editor/index.jsx
index 067b69f..eff5b65 100644
--- a/src/tabviews/custom/components/editor/braft-editor/index.jsx
+++ b/src/tabviews/custom/components/editor/braft-editor/index.jsx
@@ -63,6 +63,17 @@
       } else {
         _data = [_data]
       }
+    } else if (_config.html) {
+      if (/\$blank_space_\d+\$/ig.test(_config.html)) {
+        _config.html = _config.html.replace(/\$blank_space_\d+\$/ig, (w) => {
+          let n = +w.replace(/blank_space_|\$/ig, '')
+          if (n) {
+            return new Array(n).fill('&nbsp;').join('')
+          }
+
+          return w
+        })
+      }
     }
 
     if (_config.wrap.minHeight) {
@@ -261,6 +272,17 @@
             item.$html = item.$html.replace(reg, item[key])
           })
         }
+
+        if (/\$blank_space_\d+\$/ig.test(item.$html)) {
+          item.$html = item.$html.replace(/\$blank_space_\d+\$/ig, (w) => {
+            let n = +w.replace(/blank_space_|\$/ig, '')
+            if (n) {
+              return new Array(n).fill('&nbsp;').join('')
+            }
+
+            return w
+          })
+        }
       }
     })
 
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
index e0676c2..9fa4831 100644
--- a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -417,7 +417,7 @@
     this.setState({
       loading: true
     })
-    Api.wxNginxRequest(`express/${code}/${order}`, 'get').then(res => {
+    Api.expressRequest(`express/${code}/${order}`).then(res => {
       if (!res || typeof(res) !== 'string') {
         notification.error({
           top: 92,
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index 61a6a47..949577d 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -49,6 +49,7 @@
 const DebugTable = asyncComponent(() => import('@/tabviews/debugtable'))
 const FlowFloat = asyncComponent(() => import('@/tabviews/zshare/flowFloat'))
 const TableNodes = asyncComponent(() => import('@/tabviews/zshare/tablenodes'))
+const DeepSeek = asyncComponent(() => import('@/tabviews/zshare/deepseek'))
 const MkInterfaces = asyncComponent(() => import('@/tabviews/custom/components/interfaces'))
 
 class CustomPage extends Component {
@@ -1841,6 +1842,7 @@
           {config.process === 'true' ? <FlowFloat config={config}/> : null}
           <SettingComponent config={config} shortcuts={shortcuts || []}/>
           <TableNodes config={config} />
+          <DeepSeek/>
         </div>
       </div>
     )
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index ff95a03..6c5f1a0 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -695,17 +695,34 @@
     for (let i = 0; i < 26; i++) {
       cols.push('A' + cols[i])
     }
+    let columns = fromJS(btn.verify.columns).toJS()
+    columns = columns.filter((col, index) => {
+      col.colIndex = cols[index] || (index + 1)
+      if (col.import !== 'init' && (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type))) {
+        col.declen = 0
+        if (/^Decimal/ig.test(col.type)) {
+          col.declen = +col.type.match(/\d+/g)[1]
+        }
+        col.declen = col.declen || 0
+      }
+      if (col.required === 'false') {
+        delete col.min
+        delete col.max
+      }
+
+      return col.import !== 'false'
+    })
 
     let lines = data.map((item, lindex) => {
       let vals = []
-      btn.verify.columns.forEach((col, cindex) => {
-        if (col.import === 'false') return
-
+      columns.forEach(col => {
         let val = item[col.Column] !== undefined ? item[col.Column] : ''
-        let _colindex = cols[cindex] || (cindex + 1)
-        let _position = (_topline + lindex + 1) + '琛� ' + _colindex + '鍒� '
+        let _position = (_topline + lindex + 1) + '琛� ' + col.colIndex + '鍒� '
+        let eLen = errors.length
 
-        if (col.import === 'init') {
+        if (col.$error) {
+
+        } else if (col.import === 'init') {
           if (/^Nvarchar/ig.test(col.type)) {
             val = ''
           } else if (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type)) {
@@ -741,15 +758,26 @@
             if (!val || isNaN(val)) {
               val = 0
             }
-          } else if (!val && val !== 0) {
+          }
+          if (!val && val !== 0) {
             errors.push(_position + '鍐呭涓嶅彲涓虹┖')
           } else if (isNaN(val)) {                                  // 妫�楠屾槸鍚︿负鏁板��
             errors.push(_position + '鍐呭搴斾负鏁板��')
-          } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠�
+          } else if (typeof(col.min) === 'number' && val < col.min) { // 鏈�灏忓�兼楠�
             errors.push(_position + '灏忎簬鏈�灏忓��')
-          } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠�
+          } else if (typeof(col.max) === 'number' && val > col.max) { // 鏈�澶у�兼楠�
             errors.push(_position + '澶т簬鏈�澶у��')
+          } else {
+            let _float = (val + '').split('.')[1]
+            if (_float && _float.length > col.declen) {
+              if (col.declen) {
+                errors.push(_position + `鏁板�间笉鍙ぇ浜�${col.declen}浣嶅皬鏁癭)
+              } else {
+                errors.push(_position + '鏁板�煎簲涓烘暣鏁�')
+              }
+            }
           }
+          val = val + ''
         } else if (col.type === 'date' || col.type === 'datetime') {
           if (typeof(val) === 'number') {
             if (val > 2958465 || val <= 0) {                 // 鏃堕棿杩囧ぇ鎴栧皬浜庣瓑浜�0
@@ -785,6 +813,10 @@
           }
         }
 
+        if (errors.length > eLen) {
+          col.$error = true
+        }
+
         vals.push(val)
       })
 
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 279985e..ab1d815 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1123,20 +1123,22 @@
         let works_flow_sign_field = 'statuscharone'
         let works_flow_sign_label = ''
         let works_begin_branch = ''
-        if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) {
-          works_flow_countersign = 'Y'
-          let mark = line.mark || '宸插鏍�'
-          let fields = ['statuscharone', 'statuschartwo', 'statuscharthree', 'statuscharfour', 'statuscharfive']
-          node.checkUsers.forEach((user, index) => {
-            if (user.worker_id === userid) {
-              works_flow_sign_field = fields[index]
-              works_flow_sign_label = `${user.parentNames[2] || ''}${user.workername || ''}${mark}`
-            } else {
-              works_flow_sign_values += `${user.parentNames[2] || ''}${user.workername || ''}${mark}`
-            }
-          })
-        } else {
-          works_begin_branch = line.mknode === 'startEdge' ? 'Y' : ''
+        if (line) {
+          if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) {
+            works_flow_countersign = 'Y'
+            let mark = line.mark || '宸插鏍�'
+            let fields = ['statuscharone', 'statuschartwo', 'statuscharthree', 'statuscharfour', 'statuscharfive']
+            node.checkUsers.forEach((user, index) => {
+              if (user.worker_id === userid) {
+                works_flow_sign_field = fields[index]
+                works_flow_sign_label = `${user.parentNames[2] || ''}${user.workername || ''}${mark}`
+              } else {
+                works_flow_sign_values += `${user.parentNames[2] || ''}${user.workername || ''}${mark}`
+              }
+            })
+          } else {
+            works_begin_branch = line.mknode === 'startEdge' ? 'Y' : ''
+          }
         }
 
         exps.push(
diff --git a/src/tabviews/zshare/deepseek/index.jsx b/src/tabviews/zshare/deepseek/index.jsx
new file mode 100644
index 0000000..0284392
--- /dev/null
+++ b/src/tabviews/zshare/deepseek/index.jsx
@@ -0,0 +1,41 @@
+import React, { Component } from 'react'
+import { Button, Tooltip } from 'antd'
+
+// import './index.scss'
+
+class DeekSeek extends Component {
+  state = {
+    ds: !window.GLOB.mkHS && localStorage.getItem(window.GLOB.sysSign + 'ds') === 'true'
+  }
+
+  trigger = () => {
+    const { ds } = this.state
+
+    if (!ds) return
+    
+    window.open('#/ai')
+  }
+
+
+  render() {
+    const { ds } = this.state
+
+    if (!ds) return null
+
+    return (
+      <div className="tool-wrap">
+        <Tooltip placement="left" title="DeepSeek">
+          <Button shape="circle" onClick={this.trigger}>
+            <span className="anticon">
+              <svg viewBox="0 0 1024 1024" width="1.5em" height="1.5em" fill="currentColor">
+                <path d="M207.402667 834.133333c-43.349333-43.306667-49.066667-117.333333-13.354667-210.133333a595.626667 595.626667 0 0 1 51.413333-100.906667l1.450667-2.304-1.408-2.304a596.906667 596.906667 0 0 1-51.456-100.906666c-35.669333-92.8-29.994667-166.826667 13.354667-210.176 23.893333-23.893333 58.197333-36.693333 99.626666-36.693334 60.8 0 135.168 27.136 211.498667 74.922667l2.261333 1.450667 2.261334-1.450667C599.466667 197.845333 673.749333 170.666667 734.549333 170.666667c41.472 0 75.776 12.8 99.626667 36.693333 43.264 43.306667 48.981333 117.418667 13.312 210.176-13.866667 35.2-31.104 68.992-51.456 100.906667l-1.450667 2.304 1.450667 2.261333c21.333333 34.133333 38.826667 68.096 51.413333 100.906667 35.712 92.8 30.037333 166.869333-13.226666 210.176-23.893333 23.893333-58.24 36.736-99.669334 36.736-60.8 0-135.168-27.178667-211.498666-74.965334l-2.304-1.365333-2.261334 1.408c-76.373333 47.786667-150.698667 74.965333-211.498666 74.965333-41.472 0-75.776-12.8-99.626667-36.693333l0.042667-0.042667z m581.589333-187.690666a498.090667 498.090667 0 0 0-30.293333-63.658667l-3.2-5.632-3.925334 5.12a941.866667 941.866667 0 0 1-169.301333 169.301333l-5.12 3.968 5.632 3.157334c55.808 31.317333 109.226667 49.578667 151.722667 49.578666 24.021333 0 42.922667-5.888 55.381333-18.346666 12.8-12.8 18.602667-33.024 18.261333-57.429334-0.341333-24.533333-6.784-53.930667-19.157333-86.058666z m-270.72 70.4l2.474667 1.792 2.474666-1.792a848.256 848.256 0 0 0 194.176-193.578667l1.834667-2.474667-1.834667-2.474666a841.898667 841.898667 0 0 0-194.176-193.621334l-2.474666-1.706666-2.474667 1.792a848.341333 848.341333 0 0 0-194.218667 193.536l-1.792 2.474666 1.792 2.517334a861.354667 861.354667 0 0 0 89.344 104.832 842.24 842.24 0 0 0 104.874667 88.746666v-0.042666z m271.616-465.152c-12.501333-12.501333-31.402667-18.389333-55.381333-18.389334-42.581333 0-95.914667 18.304-151.722667 49.621334l-5.632 3.157333 5.12 3.925333a936.021333 936.021333 0 0 1 169.301333 169.301334l3.925334 5.12 3.157333-5.632c12.032-21.504 22.357333-42.837333 30.336-63.658667 12.373333-32.128 18.858667-61.525333 19.2-86.058667 0.298667-24.405333-5.504-44.586667-18.304-57.386666zM252.458667 395.136c8.618667 21.930667 18.773333 43.221333 30.378666 63.701333l3.157334 5.546667 3.925333-5.077333a936.106667 936.106667 0 0 1 169.301333-169.301334l5.12-3.925333-5.632-3.157333c-55.808-31.36-109.184-49.621333-151.722666-49.621334-24.021333 0-42.922667 5.888-55.381334 18.346667-12.8 12.842667-18.602667 33.024-18.261333 57.429333 0.298667 24.533333 6.826667 53.930667 19.114667 86.058667z m0 251.306667c-12.373333 32.128-18.773333 61.525333-19.114667 86.058666-0.341333 24.405333 5.418667 44.586667 18.261333 57.386667 12.501333 12.501333 31.402667 18.389333 55.381334 18.389333 42.538667 0 95.872-18.261333 151.722666-49.578666l5.589334-3.157334-5.12-3.968a936.106667 936.106667 0 0 1-169.258667-169.301333l-3.968-5.12-3.157333 5.632c-11.562667 20.48-21.674667 41.770667-30.293334 63.658667z"></path><path d="M550.869333 593.493333a78.634667 78.634667 0 0 1-108.8-72.704 78.72 78.72 0 1 1 108.8 72.704z"></path>
+              </svg>
+            </span>
+          </Button>
+        </Tooltip>
+      </div>
+    )
+  }
+}
+
+export default DeekSeek
\ No newline at end of file
diff --git a/src/tabviews/zshare/deepseek/index.scss b/src/tabviews/zshare/deepseek/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/tabviews/zshare/deepseek/index.scss
diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index 7838109..fbc3454 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -412,7 +412,7 @@
             })
           } else if (item.regular === 'phone') {
             item.rules.push({
-              pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
+              pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\s?\d{4}\s?\d{4}$/,
               message: item.regularText || dict['phone_error'] || '璇锋纭緭鍏ユ墜鏈哄彿'
             })
           } else if (item.regular === 'email') {
@@ -1559,10 +1559,10 @@
           } else if (item.declare === 'decimal') {
             _item.type = 'number'
             _item.fieldlen = item.decimal || 0
-          } else if (['text', 'textarea', 'linkMain'].includes(item.type)) {
+          } else if (['text', 'textarea', 'linkMain', 'brafteditor'].includes(item.type)) {
             _item.value = _item.value + ''
             _item.value = _item.value.replace(/\t+|\v+/g, '')       // 鍘婚櫎鍒惰〃绗�
-    
+
             if (item.interception !== 'false') {                    // 鍘婚櫎棣栧熬绌烘牸
               if (item.interception === 'func') {
                 try {
@@ -1592,14 +1592,19 @@
                 _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
               }
             }
-            if (item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲
-              _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))
-            }
-            if (item.type === 'text' && item.lenControl && item.lenControl !== 'limit') {
-              if (item.lenControl === 'left') {
-                _item.value = _item.value.substr(0, item.fieldlength)
-              } else {
-                _item.value = _item.value.slice(-item.fieldlength)
+            if (item.type === 'text') {
+              if (/@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲
+                _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))
+              }
+              if (item.lenControl && item.lenControl !== 'limit') {
+                if (item.lenControl === 'left') {
+                  _item.value = _item.value.substr(0, item.fieldlength)
+                } else {
+                  _item.value = _item.value.slice(-item.fieldlength)
+                }
+              }
+              if (item.regular === 'phone') {
+                _item.value = _item.value.replace(/\s+/g, '')
               }
             }
           } else if (item.type === 'datemonth') {
diff --git a/src/tabviews/zshare/topSearch/index.jsx b/src/tabviews/zshare/topSearch/index.jsx
index 088db55..b6eed2b 100644
--- a/src/tabviews/zshare/topSearch/index.jsx
+++ b/src/tabviews/zshare/topSearch/index.jsx
@@ -186,6 +186,7 @@
           } else {
             item.initval = moment(d).subtract(item.$initval, 'month').format('YYYY-MM')
           }
+          item.oriInitval = item.initval
         }
       }
 
@@ -465,6 +466,7 @@
           } else {
             item.initval = moment(d).subtract(item.$initval, 'month').format('YYYY-MM')
           }
+          item.oriInitval = item.initval
         }
       }
 
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx
index 28f2df9..6dc26e9 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx
@@ -122,6 +122,8 @@
                   <Select.Option value="Decimal(18,2)"> Decimal(18,2) </Select.Option>
                   <Select.Option value="Decimal(18,4)"> Decimal(18,4) </Select.Option>
                   <Select.Option value="Decimal(18,6)"> Decimal(18,6) </Select.Option>
+                  <Select.Option value="Decimal(18,8)"> Decimal(18,8) </Select.Option>
+                  <Select.Option value="Decimal(18,10)"> Decimal(18,10) </Select.Option>
                   <Select.Option value="date"> date </Select.Option>
                   <Select.Option value="datetime"> datetime </Select.Option>
                 </Select>
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
index 7931f0e..677ab76 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -78,6 +78,8 @@
           { value: 'Decimal(18,2)', text: 'Decimal(18,2)' },
           { value: 'Decimal(18,4)', text: 'Decimal(18,4)' },
           { value: 'Decimal(18,6)', text: 'Decimal(18,6)' },
+          { value: 'Decimal(18,8)', text: 'Decimal(18,8)' },
+          { value: 'Decimal(18,10)', text: 'Decimal(18,10)' },
           { value: 'date', text: 'date' },
           { value: 'datetime', text: 'datetime' }
         ]
@@ -119,7 +121,7 @@
         unlimit: true,
         editable: true,
         keyVals: ['Int', 'Decimal(18,0)', 'Decimal(18,2)', 'Decimal(18,4)', 'Decimal(18,6)'],
-        render: (text, record) => /^Decimal/ig.test(record.type) || /^int/ig.test(record.type) ? text : ''
+        render: (text, record) => record.required === 'true' && (/^Decimal/ig.test(record.type) || /^int/ig.test(record.type)) ? text : ''
         
       },
       {
@@ -131,7 +133,7 @@
         unlimit: true,
         editable: true,
         keyVals: ['Int', 'Decimal(18,0)', 'Decimal(18,2)', 'Decimal(18,4)', 'Decimal(18,6)'],
-        render: (text, record) => /^Decimal/ig.test(record.type) || /^int/ig.test(record.type) ? text : ''
+        render: (text, record) => record.required === 'true' && (/^Decimal/ig.test(record.type) || /^int/ig.test(record.type)) ? text : ''
       }
     ],
     uniqueColumns: [
@@ -1074,7 +1076,7 @@
             <Button className="excel-col-add mk-red" title="娓呯┖Excel鍒�" onClick={this.clearField}>
               娓呯┖Excel鍒�
             </Button>
-            <Col style={{fontSize: '12px', color: '#757575', paddingLeft: '10px'}} span={24}>娉細鏁板�肩被鍨嬶紙int 鎴� decimal锛夛紝鍐呭涓哄繀濉紱鏈�澶у�煎拰鏈�灏忓�煎湪绫诲瀷涓烘暟鍊兼椂鏈夋晥銆傚鍏�-鍒濆鍖栵細鐢ㄤ簬excel涓笉瀛樺湪锛屽鍏ユ椂闇�瑕佸垵濮嬪寲鐨勫瓧娈�</Col>
+            <Col style={{fontSize: '12px', color: '#757575', paddingLeft: '10px'}} span={24}>娉細鏁板�肩被鍨嬶紙int 鎴� decimal锛夛紝鍐呭涓哄繀濉紱鏈�澶у�煎拰鏈�灏忓�煎湪绫诲瀷涓烘暟鍊兼椂锛堝繀濉級鏈夋晥銆傚鍏�-鍒濆鍖栵細鐢ㄤ簬excel涓笉瀛樺湪锛屽鍏ユ椂闇�瑕佸垵濮嬪寲鐨勫瓧娈�</Col>
             <EditTable actions={['edit', 'move', 'copy', 'del', 'extra:required:鏄惁蹇呭~']} searchKey={searchKey} type="excelcolumn" data={verify.columns} columns={excelColumns} onChange={this.changeColumns}/>
           </TabPane>
           {card.intertype === 'system' ? <TabPane tab={
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index 7914366..645b74d 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -604,7 +604,12 @@
         return
       }
 
-      if (card.intertype === 'system' && verify.dataType !== 'custom' && verify.columns.length > 0 && config.$c_ds && config.setting.interType === 'system' && config.columns && config.columns.length > 0) {
+      let ds = true
+      if (config.wrap && config.wrap.datatype && ['static', 'public'].includes(config.wrap.datatype)) {
+        ds = false
+      }
+
+      if (card.intertype === 'system' && verify.dataType !== 'custom' && verify.columns.length > 0 && ds && config.setting.interType === 'system' && config.columns && config.columns.length > 0) {
         let cols = []
         let columns = config.columns.map(c => c.field)
 
diff --git a/src/templates/zshare/modalform/index.jsx b/src/templates/zshare/modalform/index.jsx
index a860265..de7bc87 100644
--- a/src/templates/zshare/modalform/index.jsx
+++ b/src/templates/zshare/modalform/index.jsx
@@ -41,7 +41,7 @@
   hint: ['label', 'field', 'type', 'blacklist', 'supField', 'message', 'span', 'labelwidth', 'splitline', 'marginTop', 'marginBottom'],
   split: ['label', 'type', 'marginTop', 'marginBottom', 'splitline', 'splitctrl', 'supField', 'opacity'],
   formula: ['label', 'type', 'marginTop', 'marginBottom', 'splitline', 'supField', 'span', 'labelwidth', 'formula', 'eval', 'postfix'],
-  brafteditor: ['required', 'hidelabel', 'hidden', 'readin', 'fieldlength', 'readonly', 'span', 'labelwidth', 'tooltip', 'extra', 'encryption', 'marginTop', 'marginBottom', 'contHeidht'],
+  brafteditor: ['required', 'hidelabel', 'hidden', 'readin', 'fieldlength', 'readonly', 'span', 'labelwidth', 'tooltip', 'interception', 'extra', 'encryption', 'marginTop', 'marginBottom', 'contHeidht'],
   funcvar: ['span', 'labelwidth', 'splitline', 'marginTop', 'marginBottom'],
   linkMain: ['readonly', 'required', 'hidden','declare', 'span', 'labelwidth', 'tooltip', 'interception', 'extra', 'place', 'marginTop', 'marginBottom', 'verifyVal'],
   popSelect: ['initval', 'readonly', 'required', 'hidden', 'readin', 'linkSubField', 'span', 'labelwidth', 'tooltip', 'extra', 'place', 'enter', 'dataSource', 'columns', 'primaryKey', 'order', 'controlField', 'laypage', 'onload', 'searchKey', 'showField', 'popWidth'],
@@ -295,6 +295,10 @@
       if (this.record.interception === 'func') {
         shows.push('func')
       }
+    } else if (type === 'brafteditor') {
+      if (this.record.interception === 'func') {
+        shows.push('func')
+      }
     } else if (type === 'popSelect') {
       if (this.record.enter === 'tab' || this.record.enter === 'sub') {
         shows.push('tabField')
@@ -421,7 +425,9 @@
 
       if (value === 'brafteditor') {
         this.record.encryption = 'true'
+        this.record.interception = 'false'
         _fieldval.encryption = 'true'
+        _fieldval.interception = 'false'
       }
 
       if (value === 'linkMain') {
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index e6c8b75..1b2627f 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -1740,6 +1740,7 @@
     _sql = _sql.replace(/@BID@/ig, `'${BID}'`)
     _sql = _sql.replace(/@typename@/ig, `'typename'`)
     _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`)
+    _sql = _sql.replace(/\$check@|@check\$/ig, '')
   
     return _sql
   }
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 59eee91..c78b049 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -1886,6 +1886,25 @@
     if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
       if (!cell.modal || cell.modal.fields.length === 0) {
         errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+      } else if (cell.OpenType === 'pop') {
+        let forms = []
+        cell.modal.fields.forEach(n => {
+          if (n.type === 'funcvar' && n.field) {
+            forms.push(n.field)
+          }
+        })
+        if (cell.verify && cell.verify.billcodes && cell.verify.billcodes.length > 0) {
+          let bills = cell.verify.billcodes.filter(item => item.status !== 'false').map(item => item.field)
+          bills.forEach(n => {
+            if (!forms.includes(n)) {
+              errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑鍗曞彿鐢熸垚鐨勫嚱鏁板彉閲忊��${n}鈥濅笉瀛樺湪`})
+            }
+          })
+          forms = forms.filter(n => !bills.includes(n))
+        }
+        if (forms.length) {
+          errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+        }
       }
     } else if (cell.OpenType === 'excelIn') {
       if (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0) {
@@ -2085,6 +2104,73 @@
     }
   }
 
+  if (card.$c_fc) {
+    let idCtrl = false
+    let supModule = ''
+
+    if (card.wrap.datatype === 'dynamic') {
+      supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
+      if (supModule === 'empty') {
+        supModule = ''
+      }
+    } else {
+      if (card.wrap.datatype === 'static') {
+        supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
+      } else {
+        supModule = null
+      }
+    }
+
+    card.subcards.forEach(item => {
+      if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
+        errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
+      }
+      if (item.subButton.verify && !item.subButton.output) {
+        if (item.subButton.verify.noteEnable === 'true') {
+          errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
+        } else if (item.subButton.verify.emailEnable === 'true') {
+          errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
+        }
+      }
+
+      let forms = []
+      item.fields.forEach(m => {
+        if (m.type === 'funcvar' && m.field) {
+          forms.push(m.field)
+        }
+        if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
+          idCtrl = true
+        }
+        if (m.type === 'linkMain' && !supModule && supModule !== null) {
+          if (item.setting && item.setting.title) {
+            errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
+          } else {
+            errors.push({ level: 1, detail: `璇锋鏌ュ叧鑱斾富琛ㄢ��${m.label}鈥濇槸鍚︽湁鏁坄})
+          }
+        }
+      })
+      
+      if (item.subButton.verify && item.subButton.verify.billcodes && item.subButton.verify.billcodes.length > 0) {
+        let bills = item.subButton.verify.billcodes.filter(item => item.status !== 'false').map(item => item.field)
+        bills.forEach(n => {
+          if (!forms.includes(n)) {
+            errors.push({ level: 0, detail: `鎸夐挳鈥�${item.subButton.label}鈥濅腑鍗曞彿鐢熸垚鐨勫嚱鏁板彉閲忊��${n}鈥濅笉瀛樺湪`})
+          }
+        })
+        forms = forms.filter(n => !bills.includes(n))
+      }
+      if (forms.length) {
+        if (item.setting && item.setting.title) {
+          errors.push({ level: 0, detail: `鍒嗙粍鈥�${item.setting.title}鈥濅腑鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+        } else {
+          errors.push({ level: 0, detail: `鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+        }
+      }
+    })
+
+    card.idCtrl = idCtrl
+  }
+
   return errors
 }
 
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 09650c6..dbda559 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -1140,16 +1140,34 @@
     cols.push('A' + cols[i])
   }
 
+  let columns = JSON.parse(JSON.stringify(btn.columns))
+  columns = columns.filter((col, index) => {
+    col.colIndex = cols[index] || (index + 1)
+    if (col.import !== 'init' && (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type))) {
+      col.declen = 0
+      if (/^Decimal/ig.test(col.type)) {
+        col.declen = +col.type.match(/\d+/g)[1]
+      }
+      col.declen = col.declen || 0
+    }
+    if (col.required === 'false') {
+      delete col.min
+      delete col.max
+    }
+
+    return col.import !== 'false'
+  })
+
   let _Ltext = data.map((item, lindex) => {
     let vals = []
-    btn.columns.forEach((col, cindex) => {
-      if (col.import === 'false') return
-
+    columns.forEach(col => {
       let val = item[col.Column] !== undefined ? item[col.Column] : ''
-      let _colindex = cols[cindex] || (cindex + 1)
-      let _position = (_topline + lindex + 1) + '琛� ' + _colindex + '鍒� '
+      let _position = (_topline + lindex + 1) + '琛� ' + col.colIndex + '鍒� '
+      let eLen = errors.length
 
-      if (col.import === 'init') {
+      if (col.$error) {
+
+      } else if (col.import === 'init') {
         if (/^Nvarchar/ig.test(col.type)) {
           val = ''
         } else if (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type)) {
@@ -1185,14 +1203,24 @@
           if (!val || isNaN(val)) {
             val = 0
           }
-        } else if (!val && val !== 0) {
+        }
+        if (!val && val !== 0) {
           errors.push(_position + '鍐呭涓嶅彲涓虹┖')
         } else if (isNaN(val)) {                                  // 妫�楠屾槸鍚︿负鏁板��
           errors.push(_position + '鍐呭搴斾负鏁板��')
-        } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠�
+        } else if (typeof(col.min) === 'number' && val < col.min) { // 鏈�灏忓�兼楠�
           errors.push(_position + '灏忎簬鏈�灏忓��')
-        } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠�
+        } else if (typeof(col.max) === 'number' && val > col.max) { // 鏈�澶у�兼楠�
           errors.push(_position + '澶т簬鏈�澶у��')
+        } else {
+          let _float = (val + '').split('.')[1]
+          if (_float && _float.length > col.declen) {
+            if (col.declen) {
+              errors.push(_position + `鏁板�间笉鍙ぇ浜�${col.declen}浣嶅皬鏁癭)
+            } else {
+              errors.push(_position + '鏁板�煎簲涓烘暣鏁�')
+            }
+          }
         }
       } else if (col.type === 'date' || col.type === 'datetime') {
         if (typeof(val) === 'number') {
@@ -1229,6 +1257,10 @@
         }
       }
 
+      if (errors.length > eLen) {
+        col.$error = true
+      }
+
       vals.push(`'${val}'`)
     })
 
diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index e4e1a3d..f62a4c0 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -501,6 +501,11 @@
             localStorage.setItem(_addressUrl, 'true')
             this.queryAddress()
           }
+          if (res.deekseek !== 'true') {
+            localStorage.removeItem(window.GLOB.sysSign + 'ds')
+          } else {
+            localStorage.setItem(window.GLOB.sysSign + 'ds', 'true')
+          }
         } else if (res.ErrCode === 'N') {
           localStorage.removeItem(_authUrl)
           this.setState({
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index f29c056..0c66ca1 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -1356,8 +1356,8 @@
                       {/* 琛ㄥ悕娣诲姞 */}
                       <TableComponent config={config} updatetable={this.updateConfig}/>
                       <Paragraph style={{padding: '15px 0px 0px 32px'}} copyable={{ text: MenuId }}>鑿滃崟ID锛�</Paragraph>
-                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>鑿滃崟缁勪欢锛�<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                       <NormalCss config={config} updateConfig={this.updateConfig}/>
+                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>澶嶅埗鑿滃崟涓嬫墍鏈夌粍浠讹細<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                       <NormalCopy />
                     </> : null}
                   </Panel>
@@ -1386,6 +1386,7 @@
                     <ReplaceField config={config} updateConfig={this.resetConfig}/>
                     <LowerField config={config} updateConfig={this.resetConfig}/>
                     <PictureController/>
+                    <Button onClick={() => window.open('#/ai')}>DeepSeek</Button>
                   </div>} trigger={['hover']}>
                     <div className="mk-button-more">鏇村<DownOutlined/></div>
                   </Dropdown> : null}
diff --git a/src/views/menudesign/index.scss b/src/views/menudesign/index.scss
index 29669ce..24345ee 100644
--- a/src/views/menudesign/index.scss
+++ b/src/views/menudesign/index.scss
@@ -194,7 +194,8 @@
         border-bottom: 1px solid #e8e8e8;
         height: 45px;
         white-space: nowrap;
-        overflow: hidden;
+        overflow-y: hidden;
+        overflow-x: auto;
         z-index: 10;
 
         button {
@@ -232,6 +233,10 @@
           height: 24px;
         }
       }
+
+      .mk-opeartion-list::-webkit-scrollbar {
+        display: none;
+      }
     }
     .menu-view.saving {
       .anticon-tool {
diff --git a/src/views/mkai/index.jsx b/src/views/mkai/index.jsx
new file mode 100644
index 0000000..ec2e43b
--- /dev/null
+++ b/src/views/mkai/index.jsx
@@ -0,0 +1,336 @@
+import React, { Component, useState } from 'react'
+import { fromJS } from 'immutable'
+import { Spin, notification, Tooltip, Input } from 'antd'
+
+import Api from '@/api'
+import Utils from '@/utils/utils.js'
+
+import avatar from '@/assets/img/avatar.jpg'
+import './index.scss'
+
+const { TextArea } = Input
+
+const burl = window.atob('aHR0cHM6Ly9jbG91$mkZC5tazloLmNu'.replace('$mk', ''))
+let logo = window.GLOB.doclogo || ''
+let uavatar = sessionStorage.getItem('avatar') || avatar
+let fullname = sessionStorage.getItem('Full_Name') || ''
+
+const MkLeft = ({ children, newContent }) => {
+  const [status, setStatus] = useState(false)
+
+  const changeStatus = () => {
+    setStatus(!status)
+  }
+
+  return (
+    <div className={'mk-left' + (status ? ' close' : '')}>
+      {!status ? <div className="logo">
+        <img src={logo} alt=""/>
+        <Tooltip placement="bottom" title="鏀惰捣杈规爮">
+          <span className="anticon mk-anticon-close" onClick={changeStatus}>
+            <svg viewBox="0 0 30 30" fill="none"><defs><clipPath id="clip1382_20239"><rect width="30.000000" height="30.000000" fill="white" fillOpacity="0"></rect></clipPath></defs><rect width="30.000000" height="30.000000" fill="#FFFFFF" fillOpacity="0"></rect><g clipPath="url(#clip1382_20239)"><rect id="rect" x="17.420410" y="12.316406" rx="1.000947" width="5.995172" height="2.001895" transform="rotate(137.159 17.420410 12.316406)" fill="currentColor" fillOpacity="1.000000"></rect><rect id="rect" x="12.959473" y="13.728516" rx="0.995190" width="6.002943" height="1.990380" transform="rotate(40.853 12.959473 13.728516)" fill="currentColor" fillOpacity="1.000000"></rect><path id="path" d="M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z" fill="currentColor" fillOpacity="1.000000" fillRule="nonzero"></path><path id="rect" d="M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z" fill="currentColor" fillOpacity="1.000000" fillRule="evenodd"></path></g></svg>
+          </span>
+        </Tooltip>
+      </div> : <div className="logo-open">
+        <div className="d-l">
+          <span className="anticon mk-anticon-deepseek" onClick={changeStatus}>
+            <svg viewBox="0 0 1391 1024" fill="currentColor">
+              <path d="M1361.92 83.136c-14.272-7.04-20.416 6.272-28.736 12.992-2.816 2.24-5.248 5.12-7.68 7.68-20.8 22.336-45.056 36.864-76.8 35.136-46.464-2.56-86.08 12.032-121.152 47.616-7.552-43.904-32.256-70.08-69.888-86.912-19.712-8.768-39.68-17.472-53.376-36.48-9.664-13.44-12.288-28.48-17.216-43.264-3.008-8.96-6.08-18.112-16.32-19.712-11.2-1.728-15.552 7.68-19.968 15.424-17.536 32.128-24.32 67.52-23.68 103.296 1.6 80.448 35.52 144.576 103.04 190.144 7.68 5.312 9.6 10.56 7.168 18.176-4.608 15.68-10.048 30.976-14.912 46.592-3.072 10.112-7.68 12.352-18.304 8a308.224 308.224 0 0 1-97.28-66.176c-48-46.4-91.392-97.664-145.472-137.792a655.36 655.36 0 0 0-38.528-26.432c-55.232-53.76 7.232-97.792 21.632-103.04 15.104-5.376 5.312-24.128-43.52-23.936C652.032 24.704 607.36 41.024 550.4 62.72a156.8 156.8 0 0 1-26.048 7.68 542.016 542.016 0 0 0-161.408-5.696c-105.6 11.904-189.888 61.824-251.904 147.2C36.608 314.24 19.072 430.848 40.512 552.32c22.528 128 87.808 234.048 188.16 316.992 104 85.888 223.808 128 360.512 120 82.944-4.864 175.424-16 279.68-104.32 26.368 13.056 53.888 18.24 99.712 22.272 35.2 3.328 69.184-1.792 95.424-7.232 41.216-8.704 38.4-46.848 23.424-53.888-120.576-56.32-94.208-33.408-118.272-51.84 61.376-72.768 153.792-148.224 189.952-392.768 2.816-19.392 0.384-31.552 0-47.36-0.256-9.536 1.92-13.312 12.8-14.4a231.04 231.04 0 0 0 86.592-26.56c78.272-42.88 109.696-113.024 117.184-197.184 1.088-12.928-0.256-26.24-13.76-32.96z m-681.408 757.76c-116.928-92.096-173.696-122.368-197.12-120.96-21.888 1.152-17.984 26.304-13.184 42.624 5.12 16.128 11.648 27.328 20.8 41.408 6.464 9.408 10.752 23.424-6.272 33.92-37.76 23.424-103.232-7.872-106.24-9.472-76.288-44.8-140.032-104.192-184.96-185.344-43.264-78.08-68.48-161.92-72.576-251.328-1.152-21.632 5.184-29.312 26.688-33.152a265.6 265.6 0 0 1 85.696-2.24c119.296 17.472 220.928 71.04 306.048 155.52 48.768 48.32 85.504 105.92 123.392 162.176 40.256 59.776 83.648 116.672 138.88 163.392 19.392 16.32 35.072 28.8 49.92 37.952-44.928 5.056-119.872 6.08-171.008-34.496z m56.064-361.024a17.152 17.152 0 1 1 2.752 9.6 16.896 16.896 0 0 1-2.752-9.664z m174.08 89.472a102.72 102.72 0 0 1-33.024 8.96 70.528 70.528 0 0 1-44.736-14.272c-15.296-12.8-26.176-19.968-30.848-42.496a99.264 99.264 0 0 1 0.832-32.96c4.032-18.368-0.384-30.08-13.248-40.768-10.624-8.768-23.872-11.072-38.592-11.072a31.168 31.168 0 0 1-14.272-4.416c-6.144-3.072-11.136-10.752-6.336-20.16 1.536-3.008 8.96-10.304 10.752-11.712 19.84-11.328 42.88-7.68 64.192 0.896 19.712 8.064 34.56 22.848 56 43.776 21.952 25.28 25.792 32.384 38.4 51.328 9.856 14.848 18.816 30.208 24.96 47.616 3.776 10.88-1.152 19.776-14.08 25.28z"></path>
+            </svg>
+          </span>
+        </div>
+        <div className="d-o">
+          <Tooltip placement="top" title="鎵撳紑杈规爮">
+            <span className="anticon mk-anticon-open" onClick={changeStatus}>
+              <svg viewBox="0 0 30 30" fill="none"><defs><clipPath id="clip1381_20236"><rect width="30.000000" height="30.000000" fill="white" fillOpacity="0"></rect></clipPath></defs><rect width="30.000000" height="30.000000" fill="#FFFFFF" fillOpacity="0"></rect><g clipPath="url(#clip1381_20236)"><rect id="rect" x="11.572754" y="17.683594" rx="1.000947" width="5.995172" height="2.001895" transform="rotate(-42.841 11.572754 17.683594)" fill="currentColor" fillOpacity="1.000000"></rect><rect id="rect" x="16.033691" y="16.271484" rx="0.995190" width="6.002943" height="1.990380" transform="rotate(-139.147 16.033691 16.271484)" fill="currentColor" fillOpacity="1.000000"></rect><path id="path" d="M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z" fill="currentColor" fillOpacity="1.000000" fillRule="nonzero"></path><path id="rect" d="M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z" fill="currentColor" fillOpacity="1.000000" fillRule="evenodd"></path></g></svg>
+            </span>
+          </Tooltip>
+        </div>
+      </div>}
+      <div className="new-content">
+        {!status ? <div className="wrap" onClick={newContent}>
+          <span className="anticon mk-anticon-new">
+            <svg width="22" height="22" viewBox="0 0 28 28" fill="none"><path d="M9.10999 27C8.92999 27 8.76001 26.96 8.60001 26.9C8.43001 26.83 8.29 26.74 8.16 26.61C8.03 26.49 7.94 26.3499 7.87 26.1899C7.79999 26.0299 7.76001 25.8599 7.76001 25.6899L7.73001 23.04C7.34001 22.98 6.95001 22.8799 6.57001 22.7599C6.19001 22.6299 5.83001 22.48 5.48001 22.29C5.13001 22.1 4.79999 21.88 4.48999 21.63C4.17999 21.39 3.89 21.1199 3.63 20.82C3.37 20.52 3.13999 20.21 2.92999 19.87C2.72999 19.53 2.56001 19.18 2.42001 18.82C2.28001 18.45 2.17001 18.07 2.10001 17.69C2.03001 17.3 2 16.92 2 16.53V9.46995C2 9.03995 2.04 8.61995 2.12 8.19995C2.21 7.77995 2.34 7.36995 2.5 6.96995C2.67 6.57995 2.88 6.19995 3.12 5.84995C3.36 5.48995 3.64001 5.15995 3.95001 4.85995C4.26001 4.55995 4.59999 4.28995 4.95999 4.04995C5.32999 3.80995 5.70999 3.60995 6.10999 3.44995C6.51999 3.27995 6.94 3.15995 7.37 3.07995C7.79999 2.98995 8.23001 2.94995 8.67001 2.94995H13.3C13.46 2.94995 13.61 2.97995 13.76 3.03995C13.9 3.09995 14.03 3.17995 14.14 3.28995C14.25 3.39995 14.33 3.51995 14.39 3.65995C14.45 3.79995 14.48 3.94995 14.48 4.09995C14.48 4.25995 14.45 4.39995 14.39 4.54995C14.33 4.68995 14.25 4.80995 14.14 4.91995C14.03 5.02995 13.9 5.10995 13.76 5.16995C13.61 5.22995 13.46 5.25995 13.3 5.25995H8.67001C8.38001 5.25995 8.09999 5.27995 7.82999 5.33995C7.54999 5.38995 7.27999 5.46995 7.01999 5.57995C6.75999 5.67995 6.50999 5.80995 6.26999 5.96995C6.03999 6.11995 5.82 6.29995 5.62 6.48995C5.42 6.68995 5.23999 6.89995 5.07999 7.12995C4.92999 7.35995 4.78999 7.59995 4.67999 7.85995C4.57999 8.10995 4.49 8.37995 4.44 8.64995C4.38 8.91995 4.35999 9.18995 4.35999 9.46995V16.53C4.35999 16.81 4.38 17.08 4.44 17.36C4.5 17.63 4.58 17.9 4.69 18.16C4.8 18.42 4.93 18.67 5.09 18.9C5.25 19.13 5.43001 19.3499 5.64001 19.5499C5.84001 19.75 6.05999 19.92 6.29999 20.08C6.53999 20.24 6.79 20.37 7.06 20.47C7.32 20.58 7.6 20.66 7.88 20.72C8.16001 20.77 8.44001 20.7999 8.73001 20.7999C8.91001 20.7999 9.08 20.83 9.25 20.9C9.41 20.97 9.55999 21.0599 9.67999 21.18C9.80999 21.3099 9.91001 21.45 9.98001 21.61C10.05 21.77 10.08 21.94 10.09 22.11L10.1 23.74L13.08 21.61C13.84 21.07 14.69 20.7999 15.63 20.7999H19.32C19.61 20.7999 19.89 20.77 20.16 20.72C20.44 20.67 20.71 20.59 20.97 20.4799C21.23 20.3699 21.48 20.24 21.72 20.09C21.95 19.94 22.17 19.76 22.37 19.57C22.57 19.3699 22.75 19.16 22.91 18.93C23.07 18.7 23.2 18.46 23.31 18.2C23.41 17.95 23.5 17.68 23.55 17.41C23.61 17.14 23.63 16.87 23.63 16.59V12.94C23.63 12.79 23.66 12.64 23.72 12.5C23.78 12.36 23.87 12.23 23.98 12.13C24.09 12.02 24.22 11.93 24.36 11.88C24.51 11.82 24.66 11.79 24.82 11.79C24.97 11.79 25.12 11.82 25.27 11.88C25.41 11.93 25.54 12.02 25.65 12.13C25.76 12.23 25.85 12.36 25.91 12.5C25.97 12.64 26 12.79 26 12.94V16.59C26 17.02 25.95 17.44 25.87 17.86C25.78 18.28 25.66 18.69 25.49 19.08C25.32 19.48 25.11 19.8499 24.87 20.2099C24.63 20.57 24.35 20.9 24.04 21.2C23.73 21.5 23.39 21.7699 23.03 22.0099C22.67 22.2499 22.28 22.45 21.88 22.61C21.47 22.77 21.06 22.9 20.63 22.9799C20.2 23.07 19.76 23.11 19.32 23.11H16.4C15.47 23.11 14.62 23.3799 13.86 23.9199L9.91 26.74C9.67 26.91 9.39999 27 9.10999 27Z" fill="currentColor"></path><path d="M24.6805 5.14453H18.1874C17.5505 5.14453 17.0342 5.66086 17.0342 6.29778C17.0342 6.9347 17.5505 7.45102 18.1874 7.45102H24.6805C25.3175 7.45102 25.8338 6.9347 25.8338 6.29778C25.8338 5.66086 25.3175 5.14453 24.6805 5.14453Z" fill="currentColor"></path><path d="M22.6137 3.1804C22.6137 2.52848 22.0852 2 21.4333 2C20.7814 2 20.2529 2.52848 20.2529 3.1804V9.4168C20.2529 10.0687 20.7814 10.5972 21.4333 10.5972C22.0852 10.5972 22.6137 10.0687 22.6137 9.4168V3.1804Z" fill="currentColor"></path></svg>
+          </span>
+          <span>寮�鍚柊瀵硅瘽</span>
+        </div> : <Tooltip placement="top" title="寮�鍚柊瀵硅瘽">
+          <div className="wrap" onClick={newContent}>
+            <span className="anticon mk-anticon-new">
+              <svg width="22" height="22" viewBox="0 0 28 28" fill="none"><path d="M9.10999 27C8.92999 27 8.76001 26.96 8.60001 26.9C8.43001 26.83 8.29 26.74 8.16 26.61C8.03 26.49 7.94 26.3499 7.87 26.1899C7.79999 26.0299 7.76001 25.8599 7.76001 25.6899L7.73001 23.04C7.34001 22.98 6.95001 22.8799 6.57001 22.7599C6.19001 22.6299 5.83001 22.48 5.48001 22.29C5.13001 22.1 4.79999 21.88 4.48999 21.63C4.17999 21.39 3.89 21.1199 3.63 20.82C3.37 20.52 3.13999 20.21 2.92999 19.87C2.72999 19.53 2.56001 19.18 2.42001 18.82C2.28001 18.45 2.17001 18.07 2.10001 17.69C2.03001 17.3 2 16.92 2 16.53V9.46995C2 9.03995 2.04 8.61995 2.12 8.19995C2.21 7.77995 2.34 7.36995 2.5 6.96995C2.67 6.57995 2.88 6.19995 3.12 5.84995C3.36 5.48995 3.64001 5.15995 3.95001 4.85995C4.26001 4.55995 4.59999 4.28995 4.95999 4.04995C5.32999 3.80995 5.70999 3.60995 6.10999 3.44995C6.51999 3.27995 6.94 3.15995 7.37 3.07995C7.79999 2.98995 8.23001 2.94995 8.67001 2.94995H13.3C13.46 2.94995 13.61 2.97995 13.76 3.03995C13.9 3.09995 14.03 3.17995 14.14 3.28995C14.25 3.39995 14.33 3.51995 14.39 3.65995C14.45 3.79995 14.48 3.94995 14.48 4.09995C14.48 4.25995 14.45 4.39995 14.39 4.54995C14.33 4.68995 14.25 4.80995 14.14 4.91995C14.03 5.02995 13.9 5.10995 13.76 5.16995C13.61 5.22995 13.46 5.25995 13.3 5.25995H8.67001C8.38001 5.25995 8.09999 5.27995 7.82999 5.33995C7.54999 5.38995 7.27999 5.46995 7.01999 5.57995C6.75999 5.67995 6.50999 5.80995 6.26999 5.96995C6.03999 6.11995 5.82 6.29995 5.62 6.48995C5.42 6.68995 5.23999 6.89995 5.07999 7.12995C4.92999 7.35995 4.78999 7.59995 4.67999 7.85995C4.57999 8.10995 4.49 8.37995 4.44 8.64995C4.38 8.91995 4.35999 9.18995 4.35999 9.46995V16.53C4.35999 16.81 4.38 17.08 4.44 17.36C4.5 17.63 4.58 17.9 4.69 18.16C4.8 18.42 4.93 18.67 5.09 18.9C5.25 19.13 5.43001 19.3499 5.64001 19.5499C5.84001 19.75 6.05999 19.92 6.29999 20.08C6.53999 20.24 6.79 20.37 7.06 20.47C7.32 20.58 7.6 20.66 7.88 20.72C8.16001 20.77 8.44001 20.7999 8.73001 20.7999C8.91001 20.7999 9.08 20.83 9.25 20.9C9.41 20.97 9.55999 21.0599 9.67999 21.18C9.80999 21.3099 9.91001 21.45 9.98001 21.61C10.05 21.77 10.08 21.94 10.09 22.11L10.1 23.74L13.08 21.61C13.84 21.07 14.69 20.7999 15.63 20.7999H19.32C19.61 20.7999 19.89 20.77 20.16 20.72C20.44 20.67 20.71 20.59 20.97 20.4799C21.23 20.3699 21.48 20.24 21.72 20.09C21.95 19.94 22.17 19.76 22.37 19.57C22.57 19.3699 22.75 19.16 22.91 18.93C23.07 18.7 23.2 18.46 23.31 18.2C23.41 17.95 23.5 17.68 23.55 17.41C23.61 17.14 23.63 16.87 23.63 16.59V12.94C23.63 12.79 23.66 12.64 23.72 12.5C23.78 12.36 23.87 12.23 23.98 12.13C24.09 12.02 24.22 11.93 24.36 11.88C24.51 11.82 24.66 11.79 24.82 11.79C24.97 11.79 25.12 11.82 25.27 11.88C25.41 11.93 25.54 12.02 25.65 12.13C25.76 12.23 25.85 12.36 25.91 12.5C25.97 12.64 26 12.79 26 12.94V16.59C26 17.02 25.95 17.44 25.87 17.86C25.78 18.28 25.66 18.69 25.49 19.08C25.32 19.48 25.11 19.8499 24.87 20.2099C24.63 20.57 24.35 20.9 24.04 21.2C23.73 21.5 23.39 21.7699 23.03 22.0099C22.67 22.2499 22.28 22.45 21.88 22.61C21.47 22.77 21.06 22.9 20.63 22.9799C20.2 23.07 19.76 23.11 19.32 23.11H16.4C15.47 23.11 14.62 23.3799 13.86 23.9199L9.91 26.74C9.67 26.91 9.39999 27 9.10999 27Z" fill="currentColor"></path><path d="M24.6805 5.14453H18.1874C17.5505 5.14453 17.0342 5.66086 17.0342 6.29778C17.0342 6.9347 17.5505 7.45102 18.1874 7.45102H24.6805C25.3175 7.45102 25.8338 6.9347 25.8338 6.29778C25.8338 5.66086 25.3175 5.14453 24.6805 5.14453Z" fill="currentColor"></path><path d="M22.6137 3.1804C22.6137 2.52848 22.0852 2 21.4333 2C20.7814 2 20.2529 2.52848 20.2529 3.1804V9.4168C20.2529 10.0687 20.7814 10.5972 21.4333 10.5972C22.0852 10.5972 22.6137 10.0687 22.6137 9.4168V3.1804Z" fill="currentColor"></path></svg>
+            </span>
+          </div>
+        </Tooltip>}
+      </div>
+      {children}
+      <div className="user">
+        <div className="wrap">
+          <img src={uavatar} alt=""/>
+          <span>{fullname}</span>
+        </div>
+      </div>
+    </div>
+  )
+}
+
+class MkAi extends Component {
+  state = {
+    loading: true,
+    UserID: '',
+    LoginUID: '',
+    textInput: '',
+    type: 'deepseek-chat', // deepseek-chat deepseek-reasoner
+    currentChat: {uuid: Utils.getuuid(), list: [], title: ''}
+  }
+
+  UNSAFE_componentWillMount() {
+    if (sessionStorage.getItem('UserID')) {
+      this.login()
+    }
+  }
+
+  componentDidMount() {
+    if (!sessionStorage.getItem('UserID')) {
+      this.props.history.replace('/login')
+      return
+    }
+
+    let node = document.getElementById('mk-input')
+    node && node.focus()
+  }
+
+  login = () => {
+    window.GLOB.transfer = false
+    Api.getTouristMsg('cloud').then(res => {
+      if (res.status) {
+        this.setState({
+          UserID: res.UserID,
+          LoginUID: res.LoginUID,
+          textInput: sessionStorage.getItem('deepseek_sql') || ''
+        }, () => {
+          sessionStorage.removeItem('deepseek_sql')
+          this.getList()
+        })
+      } else {
+        sessionStorage.clear()
+        this.props.history.replace('/login')
+        window.location.reload()
+      }
+    })
+  }
+
+  getList = () => {
+    const { UserID, LoginUID } = this.state
+
+    Api.genericInterface({
+      func: 's_get_deepseek_list',
+      rduri: burl + '/webapi/dostars',
+      userid: UserID,
+      LoginUID: LoginUID,
+      u_id: sessionStorage.getItem('UserID')
+    }).then(result => {
+      this.setState({loading: false})
+
+      if (!result.status) {
+        notification.error({
+          top: 92,
+          message: result.message,
+          duration: 10
+        })
+      } else {
+        this.setState({
+          chats: result.data || []
+        })
+      }
+    })
+  }
+
+  newContent = () => {
+    this.setState({textInput: '', currentChat: {uuid: Utils.getuuid(), list: [], title: ''}})
+    let node = document.getElementById('mk-input')
+    node && node.focus()
+  }
+
+  changeVal = (e) => {
+    this.setState({textInput: e.target.value})
+  }
+
+  changeType = () => {
+    const { type } = this.state
+
+    this.setState({type: type === 'deepseek-reasoner' ? 'deepseek-chat' : 'deepseek-reasoner'})
+  }
+
+  submit = () => {
+    const { textInput, currentChat, UserID, LoginUID } = this.state
+
+    let val = textInput.replace(/\t+|\v+/g, '').replace(/^\s+|\s+$/g, '')
+
+    if (!val || currentChat.loading) return
+
+    let node = document.getElementById('mk-input')
+    node && node.blur()
+
+    let chat = fromJS(currentChat).toJS()
+    chat.list.push({ role: 'user', content: val })
+    chat.list.push({ role: 'assistant', content: '', loading: true })
+
+    if (!chat.title) {
+      chat.title = val.substr(0, 32)
+    }
+    chat.loading = true
+
+    this.setState({textInput: '', currentChat: chat})
+
+    Api.directRequest({
+      url: burl + '/chat/completions',
+      method: 'post',
+      headers: { 'Content-Type': 'application/json' },
+      data: {
+        model: this.state.type,
+        messages: chat.list,
+        stream: false
+      }
+    }).then(res => {
+      let _chat = fromJS(chat).toJS()
+
+      delete _chat.loading
+      _chat.list.shift()
+
+      let _val = '鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇曘��'
+      if (res.success && res.choices && res.choices[0]) {
+        _val = res.choices[0].message.content
+      }
+
+      _chat.list = _chat.list.map(item => {
+        delete item.step
+        return item
+      })
+
+      _chat.list.push({ role: 'assistant', content: _val, step: true })
+
+      this.setState({currentChat: _chat})
+
+      Api.genericInterface({
+        func: 's_deepseek_ai',
+        rduri: burl + '/webapi/dostars',
+        file_url: '',
+        userid: UserID,
+        LoginUID: LoginUID,
+        u_id: sessionStorage.getItem('UserID'),
+        content: window.btoa(window.encodeURIComponent(_val)),
+        title: window.btoa(window.encodeURIComponent(chat.title)),
+        data_type: 'reply',
+        ID: chat.uuid
+      }).then(r => {
+        if (!r.status) {
+          notification.error({
+            top: 92,
+            message: r.message,
+            duration: 10
+          })
+        }
+      })
+    })
+
+    Api.genericInterface({
+      func: 's_deepseek_ai',
+      rduri: burl + '/webapi/dostars',
+      file_url: '',
+      userid: UserID,
+      LoginUID: LoginUID,
+      u_id: sessionStorage.getItem('UserID'),
+      content: window.btoa(window.encodeURIComponent(val)),
+      title: window.btoa(window.encodeURIComponent(chat.title)),
+      data_type: 'request',
+      ID: chat.uuid
+    }).then(result => {
+      if (!result.status) {
+        notification.error({
+          top: 92,
+          message: result.message,
+          duration: 10
+        })
+      }
+    })
+  }
+
+  render () {
+    const { loading, textInput, type, currentChat } = this.state
+
+    let able = textInput && !/^\s+$/.test(textInput)
+
+    return (
+      <div className="mk-deepseek-wrap">
+        {loading ? <Spin size="large" /> : null}
+        <div className="mk-deepseek-flex">
+          <MkLeft newContent={this.newContent}>
+            <div className="history-wrap mk-scrollbar">
+
+            </div>
+          </MkLeft>
+          <div className="mk-right">
+            <div className="mk-faad">
+              <div className="title">
+                <span>{currentChat.title}</span>
+              </div>
+            </div>
+            <div className="mk-ksje">
+              <div className="tip">
+                <div className="c7e7df4d">
+                  <div className="mk-anticon-deepseek anticon">
+                    <svg viewBox="0 0 30 30" fill="none"><path id="path" d="M27.501 8.46875C27.249 8.3457 27.1406 8.58008 26.9932 8.69922C26.9434 8.73828 26.9004 8.78906 26.8584 8.83398C26.4902 9.22852 26.0605 9.48633 25.5 9.45508C24.6787 9.41016 23.9785 9.66797 23.3594 10.2969C23.2275 9.52148 22.79 9.05859 22.125 8.76172C21.7764 8.60742 21.4238 8.45312 21.1807 8.11719C21.0098 7.87891 20.9639 7.61328 20.8779 7.35156C20.8242 7.19336 20.7695 7.03125 20.5879 7.00391C20.3906 6.97266 20.3135 7.13867 20.2363 7.27734C19.9258 7.84375 19.8066 8.46875 19.8174 9.10156C19.8447 10.5234 20.4453 11.6562 21.6367 12.4629C21.7725 12.5547 21.8076 12.6484 21.7646 12.7832C21.6836 13.0605 21.5869 13.3301 21.501 13.6074C21.4473 13.7852 21.3662 13.8242 21.1768 13.7461C20.5225 13.4727 19.957 13.0684 19.458 12.5781C18.6104 11.7578 17.8438 10.8516 16.8877 10.1426C16.6631 9.97656 16.4395 9.82227 16.207 9.67578C15.2314 8.72656 16.335 7.94727 16.5898 7.85547C16.8574 7.75977 16.6826 7.42773 15.8193 7.43164C14.957 7.43555 14.167 7.72461 13.1611 8.10938C13.0137 8.16797 12.8594 8.21094 12.7002 8.24414C11.7871 8.07227 10.8389 8.0332 9.84766 8.14453C7.98242 8.35352 6.49219 9.23633 5.39648 10.7441C4.08105 12.5547 3.77148 14.6133 4.15039 16.7617C4.54883 19.0234 5.70215 20.8984 7.47559 22.3633C9.31348 23.8809 11.4307 24.625 13.8457 24.4824C15.3125 24.3984 16.9463 24.2012 18.7881 22.6406C19.2529 22.8711 19.7402 22.9629 20.5498 23.0332C21.1729 23.0918 21.7725 23.002 22.2373 22.9062C22.9648 22.752 22.9141 22.0781 22.6514 21.9531C20.5186 20.959 20.9863 21.3633 20.5605 21.0371C21.6445 19.752 23.2783 18.418 23.917 14.0977C23.9668 13.7539 23.9238 13.5391 23.917 13.2598C23.9131 13.0918 23.9512 13.0254 24.1445 13.0059C24.6787 12.9453 25.1973 12.7988 25.6738 12.5352C27.0557 11.7793 27.6123 10.5391 27.7441 9.05078C27.7637 8.82422 27.7402 8.58789 27.501 8.46875ZM15.46 21.8613C13.3926 20.2344 12.3906 19.6992 11.9766 19.7227C11.5898 19.7441 11.6592 20.1875 11.7441 20.4766C11.833 20.7617 11.9492 20.959 12.1123 21.209C12.2246 21.375 12.3018 21.623 12 21.8066C11.334 22.2207 10.1768 21.668 10.1221 21.6406C8.77539 20.8477 7.64941 19.7988 6.85547 18.3652C6.08984 16.9844 5.64453 15.5039 5.57129 13.9238C5.55176 13.541 5.66406 13.4062 6.04297 13.3379C6.54199 13.2461 7.05762 13.2266 7.55664 13.2988C9.66602 13.6074 11.4619 14.5527 12.9668 16.0469C13.8262 16.9004 14.4766 17.918 15.1465 18.9121C15.8584 19.9688 16.625 20.9746 17.6006 21.7988C17.9443 22.0879 18.2197 22.3086 18.4824 22.4707C17.6895 22.5586 16.3652 22.5781 15.46 21.8613ZM16.4502 15.4805C16.4502 15.3105 16.5859 15.1758 16.7568 15.1758C16.7949 15.1758 16.8301 15.1836 16.8613 15.1953C16.9033 15.2109 16.9424 15.2344 16.9727 15.2695C17.0273 15.3223 17.0586 15.4004 17.0586 15.4805C17.0586 15.6504 16.9229 15.7852 16.7529 15.7852C16.582 15.7852 16.4502 15.6504 16.4502 15.4805ZM19.5273 17.0625C19.3301 17.1426 19.1328 17.2129 18.9434 17.2207C18.6494 17.2344 18.3281 17.1152 18.1533 16.9688C17.8828 16.7422 17.6895 16.6152 17.6074 16.2168C17.5732 16.0469 17.5928 15.7852 17.623 15.6348C17.6934 15.3105 17.6152 15.1035 17.3877 14.9141C17.2012 14.7598 16.9658 14.7188 16.7061 14.7188C16.6094 14.7188 16.5205 14.6758 16.4541 14.6406C16.3457 14.5859 16.2568 14.4512 16.3418 14.2852C16.3691 14.2324 16.501 14.1016 16.5322 14.0781C16.8838 13.877 17.29 13.9434 17.666 14.0938C18.0146 14.2363 18.2773 14.498 18.6562 14.8672C19.0439 15.3145 19.1133 15.4395 19.334 15.7734C19.5078 16.0371 19.667 16.3066 19.7754 16.6152C19.8408 16.8066 19.7559 16.9648 19.5273 17.0625Z" fillRule="nonzero" fill="#4D6BFE"></path></svg>
+                  </div>
+                  鎴戞槸 DeepSeek锛屽緢楂樺叴瑙佸埌浣狅紒
+                </div>
+                <div className="a8d0e1d3">鎴戝彲浠ュ府浣犲啓浠g爜銆佽鏂囦欢銆佸啓浣滃悇绉嶅垱鎰忓唴瀹癸紝璇锋妸浣犵殑浠诲姟浜ょ粰鎴戝惂~</div>
+              </div>
+              <div className="input-wrap">
+                <div className="c9dd4ww">
+                  <div className="dd442025">
+                    <div className="fad49dec">
+                      <TextArea id="mk-input" value={textInput} autoSize={{minRows: 2, maxRows: 12}} placeholder="缁� DeepSeek 鍙戦�佹秷鎭� " onChange={this.changeVal} onPressEnter={this.submit}/>
+                    </div>
+                    <div className="ec4f5d61">
+                      {type === 'deepseek-chat' ? <Tooltip placement="left" title="璋冪敤鏂版ā鍨� DeekSeek-R1锛岃В鍐虫帹鐞嗛棶棰�">
+                        <div className="ds-button" onClick={this.changeType}>
+                          <span className="ds-icon">
+                            <svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M2.656 17.344c-1.016-1.015-1.15-2.75-.313-4.925.325-.825.73-1.617 1.205-2.365L3.582 10l-.033-.054c-.5-.799-.91-1.596-1.206-2.365-.836-2.175-.703-3.91.313-4.926.56-.56 1.364-.86 2.335-.86 1.425 0 3.168.636 4.957 1.756l.053.034.053-.034c1.79-1.12 3.532-1.757 4.957-1.757.972 0 1.776.3 2.335.86 1.014 1.015 1.148 2.752.312 4.926a13.892 13.892 0 0 1-1.206 2.365l-.034.054.034.053c.5.8.91 1.596 1.205 2.365.837 2.175.704 3.911-.311 4.926-.56.56-1.364.861-2.335.861-1.425 0-3.168-.637-4.957-1.757L10 16.415l-.053.033c-1.79 1.12-3.532 1.757-4.957 1.757-.972 0-1.776-.3-2.335-.86zm13.631-4.399c-.187-.488-.429-.988-.71-1.492l-.075-.132-.092.12a22.075 22.075 0 0 1-3.968 3.968l-.12.093.132.074c1.308.734 2.559 1.162 3.556 1.162.563 0 1.006-.138 1.298-.43.3-.3.436-.774.428-1.346-.008-.575-.159-1.264-.449-2.017zm-6.345 1.65l.058.042.058-.042a19.881 19.881 0 0 0 4.551-4.537l.043-.058-.043-.058a20.123 20.123 0 0 0-2.093-2.458 19.732 19.732 0 0 0-2.458-2.08L10 5.364l-.058.042A19.883 19.883 0 0 0 5.39 9.942L5.348 10l.042.059c.631.874 1.332 1.695 2.094 2.457a19.74 19.74 0 0 0 2.458 2.08zm6.366-10.902c-.293-.293-.736-.431-1.298-.431-.998 0-2.248.429-3.556 1.163l-.132.074.12.092a21.938 21.938 0 0 1 3.968 3.968l.092.12.074-.132c.282-.504.524-1.004.711-1.492.29-.753.442-1.442.45-2.017.007-.572-.129-1.045-.429-1.345zM3.712 7.055c.202.514.44 1.013.712 1.493l.074.13.092-.119a21.94 21.94 0 0 1 3.968-3.968l.12-.092-.132-.074C7.238 3.69 5.987 3.262 4.99 3.262c-.563 0-1.006.138-1.298.43-.3.301-.436.774-.428 1.346.007.575.159 1.264.448 2.017zm0 5.89c-.29.753-.44 1.442-.448 2.017-.008.572.127 1.045.428 1.345.293.293.736.431 1.298.431.997 0 2.247-.428 3.556-1.162l.131-.074-.12-.093a21.94 21.94 0 0 1-3.967-3.968l-.093-.12-.074.132a11.712 11.712 0 0 0-.71 1.492z" fill="currentColor" stroke="currentColor" strokeWidth=".1"></path><path d="M10.706 11.704A1.843 1.843 0 0 1 8.155 10a1.845 1.845 0 1 1 2.551 1.704z" fill="currentColor" stroke="currentColor" strokeWidth=".2"></path></svg>
+                          </span>
+                          <span className="text">娣卞害鎬濊�� (R1)</span>
+                        </div>
+                      </Tooltip> : <div className="ds-button active" onClick={this.changeType}>
+                        <span className="ds-icon">
+                          <svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M2.656 17.344c-1.016-1.015-1.15-2.75-.313-4.925.325-.825.73-1.617 1.205-2.365L3.582 10l-.033-.054c-.5-.799-.91-1.596-1.206-2.365-.836-2.175-.703-3.91.313-4.926.56-.56 1.364-.86 2.335-.86 1.425 0 3.168.636 4.957 1.756l.053.034.053-.034c1.79-1.12 3.532-1.757 4.957-1.757.972 0 1.776.3 2.335.86 1.014 1.015 1.148 2.752.312 4.926a13.892 13.892 0 0 1-1.206 2.365l-.034.054.034.053c.5.8.91 1.596 1.205 2.365.837 2.175.704 3.911-.311 4.926-.56.56-1.364.861-2.335.861-1.425 0-3.168-.637-4.957-1.757L10 16.415l-.053.033c-1.79 1.12-3.532 1.757-4.957 1.757-.972 0-1.776-.3-2.335-.86zm13.631-4.399c-.187-.488-.429-.988-.71-1.492l-.075-.132-.092.12a22.075 22.075 0 0 1-3.968 3.968l-.12.093.132.074c1.308.734 2.559 1.162 3.556 1.162.563 0 1.006-.138 1.298-.43.3-.3.436-.774.428-1.346-.008-.575-.159-1.264-.449-2.017zm-6.345 1.65l.058.042.058-.042a19.881 19.881 0 0 0 4.551-4.537l.043-.058-.043-.058a20.123 20.123 0 0 0-2.093-2.458 19.732 19.732 0 0 0-2.458-2.08L10 5.364l-.058.042A19.883 19.883 0 0 0 5.39 9.942L5.348 10l.042.059c.631.874 1.332 1.695 2.094 2.457a19.74 19.74 0 0 0 2.458 2.08zm6.366-10.902c-.293-.293-.736-.431-1.298-.431-.998 0-2.248.429-3.556 1.163l-.132.074.12.092a21.938 21.938 0 0 1 3.968 3.968l.092.12.074-.132c.282-.504.524-1.004.711-1.492.29-.753.442-1.442.45-2.017.007-.572-.129-1.045-.429-1.345zM3.712 7.055c.202.514.44 1.013.712 1.493l.074.13.092-.119a21.94 21.94 0 0 1 3.968-3.968l.12-.092-.132-.074C7.238 3.69 5.987 3.262 4.99 3.262c-.563 0-1.006.138-1.298.43-.3.301-.436.774-.428 1.346.007.575.159 1.264.448 2.017zm0 5.89c-.29.753-.44 1.442-.448 2.017-.008.572.127 1.045.428 1.345.293.293.736.431 1.298.431.997 0 2.247-.428 3.556-1.162l.131-.074-.12-.093a21.94 21.94 0 0 1-3.967-3.968l-.093-.12-.074.132a11.712 11.712 0 0 0-.71 1.492z" fill="currentColor" stroke="currentColor" strokeWidth=".1"></path><path d="M10.706 11.704A1.843 1.843 0 0 1 8.155 10a1.845 1.845 0 1 1 2.551 1.704z" fill="currentColor" stroke="currentColor" strokeWidth=".2"></path></svg>
+                        </span>
+                        <span className="text">娣卞害鎬濊�� (R1)</span>
+                      </div>}
+                      {/* <div className="ds-button">
+                        <span className="ds-icon">
+                          <svg width="20" height="20" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="10" r="9" stroke="currentColor" strokeWidth="1.8"></circle><path d="M10 1c1.657 0 3 4.03 3 9s-1.343 9-3 9M10 19c-1.657 0-3-4.03-3-9s1.343-9 3-9M1 10h18" stroke="currentColor" strokeWidth="1.8"></path></svg>
+                        </span>
+                        <span className="text">鑱旂綉鎼滅储</span>
+                      </div> */}
+                      <div className="bf38813a">
+                        {able ? <div className="ds-icon" onClick={this.submit}>
+                          <svg width="14" height="16" viewBox="0 0 14 16" fill="none"><path fillRule="evenodd" clipRule="evenodd" d="M7 16c-.595 0-1.077-.462-1.077-1.032V1.032C5.923.462 6.405 0 7 0s1.077.462 1.077 1.032v13.936C8.077 15.538 7.595 16 7 16z" fill="currentColor"></path><path fillRule="evenodd" clipRule="evenodd" d="M.315 7.44a1.002 1.002 0 0 1 0-1.46L6.238.302a1.11 1.11 0 0 1 1.523 0c.421.403.421 1.057 0 1.46L1.838 7.44a1.11 1.11 0 0 1-1.523 0z" fill="currentColor"></path><path fillRule="evenodd" clipRule="evenodd" d="M13.685 7.44a1.11 1.11 0 0 1-1.523 0L6.238 1.762a1.002 1.002 0 0 1 0-1.46 1.11 1.11 0 0 1 1.523 0l5.924 5.678c.42.403.42 1.056 0 1.46z" fill="currentColor"></path></svg>
+                        </div> : 
+                        <Tooltip placement="top" title="璇疯緭鍏ヤ綘鐨勯棶棰�">
+                          <div className="ds-icon disabled">
+                            <svg width="14" height="16" viewBox="0 0 14 16" fill="none"><path fillRule="evenodd" clipRule="evenodd" d="M7 16c-.595 0-1.077-.462-1.077-1.032V1.032C5.923.462 6.405 0 7 0s1.077.462 1.077 1.032v13.936C8.077 15.538 7.595 16 7 16z" fill="currentColor"></path><path fillRule="evenodd" clipRule="evenodd" d="M.315 7.44a1.002 1.002 0 0 1 0-1.46L6.238.302a1.11 1.11 0 0 1 1.523 0c.421.403.421 1.057 0 1.46L1.838 7.44a1.11 1.11 0 0 1-1.523 0z" fill="currentColor"></path><path fillRule="evenodd" clipRule="evenodd" d="M13.685 7.44a1.11 1.11 0 0 1-1.523 0L6.238 1.762a1.002 1.002 0 0 1 0-1.46 1.11 1.11 0 0 1 1.523 0l5.924 5.678c.42.403.42 1.056 0 1.46z" fill="currentColor"></path></svg>
+                          </div>
+                        </Tooltip>}
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div className="mk-tail">鍐呭鐢� AI 鐢熸垚锛岃浠旂粏鐢勫埆</div>
+          </div>
+        </div>
+      </div>
+    )
+  }
+}
+
+export default MkAi
\ No newline at end of file
diff --git a/src/views/mkai/index.scss b/src/views/mkai/index.scss
new file mode 100644
index 0000000..4bcae79
--- /dev/null
+++ b/src/views/mkai/index.scss
@@ -0,0 +1,399 @@
+.mk-deepseek-wrap {
+  --local-sider-width: 260px;
+  --ds-ease-in-out: cubic-bezier(.4,0,.2,1);
+
+  .ant-spin {
+    position: absolute;
+    z-index: 2;
+    top: 30vh;
+    left: calc(50% - 16px);
+  }
+  .mk-deepseek-flex {
+    display: flex;
+    height: 100vh;
+    overflow: hidden;
+    .mk-left {
+      width: var(--local-sider-width);
+      max-width: var(--local-sider-width);
+      position: relative;
+      top: 0;
+      bottom: 0;
+      left: 0;
+      right: 0;
+      z-index: 2;
+      transition: left 0.2s var(--ds-ease-in-out), max-width 0.2s var(--ds-ease-in-out);
+      flex-shrink: 0;
+      background-color: #f9fbff;
+      flex-direction: column;
+      flex-grow: 0;
+      min-width: 0;
+      display: flex;
+
+      .logo {
+        height: 90px;
+        padding: 25px 10px 25px 20px;
+        box-sizing: border-box;
+        justify-content: space-between;
+        align-items: center;
+        width: 100%;
+        display: flex;
+        img {
+          height: 40px;
+        }
+
+        .mk-anticon-close {
+          color: rgba(139, 139, 139, 1);
+          cursor: pointer;
+          svg {
+            width: 2em;
+          }
+        }
+      }
+      .new-content {
+        align-items: center;
+        margin-bottom: 34px;
+        display: flex;
+
+        .wrap {
+          color: var(--mk-sys-color);
+          background-color: var(--mk-sys-color1);
+          cursor: pointer;
+          width: -moz-fit-content;
+          height: 44px;
+          border-radius: 14px;
+          flex-shrink: 0;
+          align-items: center;
+          width: fit-content;
+          margin: 0 2px 0 14px;
+          font-size: 16px;
+          font-weight: 500;
+          line-height: 20px;
+          display: flex;
+          overflow: hidden;
+          padding: 0 10px;
+          transition: background-color 0.2s;
+
+          .mk-anticon-new {
+            margin-right: 9px;
+          }
+        }
+        .wrap:hover {
+          background-color: var(--mk-sys-color2);
+        }
+      }
+      .history-wrap {
+        flex: 1;
+        padding: 0 10px;
+        overflow-x: hidden;
+        overflow-y: auto;
+      }
+      .user {
+        box-sizing: border-box;
+        align-items: center;
+        padding: 10px 12px;
+        line-height: 20px;
+        display: flex;
+        
+        .wrap {
+          cursor: pointer;
+          box-sizing: border-box;
+          border-radius: 12px;
+          align-items: center;
+          width: 100%;
+          padding: 8px;
+          display: flex;
+          transition: background-color 0.2s;
+
+          img {
+            width: 32px;
+            height: 32px;
+            border-radius: 50%;
+          }
+          span {
+            margin-left: 8px;
+          }
+        }
+        .wrap:hover {
+          background-color: var(--mk-sys-color1);
+        }
+      }
+    }
+    .mk-left.close {
+      max-width: 68px;
+      .logo-open {
+        flex-direction: column;
+        flex-grow: 0;
+        min-width: 0;
+        display: flex;
+        
+        .d-l, .d-o {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+        }
+        .anticon {
+          display: inline-block;
+        }
+        .mk-anticon-deepseek {
+          color: #4D6BFE;
+          width: 32px;
+          height: 32px;
+          font-size: 32px;
+          margin-top: 30px;
+          cursor: pointer;
+        }
+        .mk-anticon-open {
+          color: rgba(139, 139, 139, 1);
+          cursor: pointer;
+          padding: 5px;
+          border-radius: 14px;
+          margin: 30px 0px;
+          transition: background-color 0.2s;
+          svg {
+            width: 26px;
+          }
+        }
+        .mk-anticon-open:hover {
+          background-color: var(--mk-sys-color1);
+        }
+      }
+      .new-content {
+        justify-content: center;
+        .wrap {
+          margin: 0px;
+          background-color: unset;
+          width: 36px;
+          height: 36px;
+          padding: 5px;
+          
+          .anticon {
+            margin-right: 0px;
+          }
+          .mk-anticon-new {
+            color: rgba(139, 139, 139, 1);
+            svg {
+              width: 26px;
+            }
+          }
+        }
+        .wrap:hover {
+          background-color: var(--mk-sys-color1);
+        }
+      }
+      .history-wrap * {
+        display: none;
+      }
+      .user {
+        .wrap {
+          padding: 5px;
+          span {
+            display: none;
+          }
+        }
+      }
+    }
+    .mk-right {
+      position: relative;
+      flex-grow: 1;
+      min-width: 0;
+      display: flex;
+      flex-shrink: 0;
+      flex-direction: column;
+
+      .mk-faad {
+        flex-direction: column;
+        flex-shrink: 0;
+        max-width: 100%;
+        display: flex;
+
+        .title {
+          box-sizing: border-box;
+          background-color: #fff;
+          flex-grow: 0;
+          flex-shrink: 0;
+          justify-content: center;
+          height: 56px;
+          padding-top: 10px;
+          display: flex;
+          position: relative;
+          z-index: 12;
+          margin-top: 10px;
+
+          span {
+            cursor: pointer;
+            white-space: nowrap;
+            text-overflow: ellipsis;
+            color: #262626;
+            box-sizing: border-box;
+            max-width: 100%;
+            height: 40px;
+            transition: box-shadow 0.2s var(--ds-ease-in-out);
+            border-radius: 12px;
+            padding: 8px 12px;
+            font-size: 16px;
+            font-weight: 600;
+            line-height: 24px;
+            overflow: hidden;
+          }
+        }
+      }
+      .mk-ksje {
+        flex-grow: 1;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        flex-direction: column;
+
+        .tip {
+          color: #000;
+          font-size: 14px;
+          .c7e7df4d {
+            display: flex;
+            align-items: center;
+            gap: 14px;
+            margin-top: auto;
+            font-size: 24px;
+            font-weight: 500;
+          }
+          .mk-anticon-deepseek {
+            color: #4D6BFE;
+            width: 60px;
+            height: 60px;
+          }
+          .a8d0e1d3 {
+            color: #404040;
+            margin: 8px 0 20px;
+          }
+        }
+        .input-wrap {
+          width: 800px;
+          .c9dd4ww {
+            cursor: text;
+            box-sizing: border-box;
+            width: 100%;
+            font-size: 16px;
+            line-height: 28px;
+            transition: box-shadow 0.2s var(--ds-ease-in-out);
+            box-shadow: none;
+            background-color: #ffffff;
+            border-radius: 24px;
+            flex-direction: column;
+            display: flex;
+            position: relative;
+
+            .dd442025 {
+              background-color: rgb(243, 244, 246);
+              box-shadow: 0px 0px 0px .5px #dce0e9;
+              border-radius: 24px;
+              z-index: 1;
+              flex-direction: column;
+              justify-content: flex-start;
+              align-items: flex-start;
+              padding: 10px;
+              display: flex;
+              overflow: hidden;
+
+              .fad49dec {
+                cursor: text;
+                width: 100%;
+                .ant-input {
+                  width: 100%;
+                  border: none!important;
+                  box-shadow: none!important;
+                  outline: none!important;
+                  background-color: transparent;
+                  resize: none;
+                }
+              }
+              .ec4f5d61 {
+                width: calc(100% - 2px);
+                padding-left: 2px;
+                flex-wrap: wrap;
+                align-items: center;
+                margin-top: 4px;
+                display: flex;
+
+                .ds-button {
+                  border: 1px solid rgba(0, 0, 0, 0.12);
+                  border-radius: 14px;
+                  justify-content: center;
+                  align-items: center;
+                  height: 28px;
+                  margin-right: 10px;
+                  padding: 0 7px;
+                  display: flex;
+                  color: #4c4c4c;
+                  font-size: 14px;
+                  line-height: 25px;
+                  background-color: #fff;
+                  cursor: pointer;
+
+                  .ds-icon {
+                    margin-right: 4px;
+                  }
+                  .text {
+                    font-size: 12px;
+                  }
+                }
+                .ds-button.active {
+                  background-color: var(--mk-sys-color1);
+                  border-color: var(--mk-sys-color3);
+                  color: var(--mk-sys-color);
+                }
+                .ds-button:not(.active):hover {
+                  background-color: rgba(0, 0, 0, 0.07);
+                }
+                .ds-button.active:hover {
+                  background-color: var(--mk-sys-color2);
+                }
+
+                .bf38813a {
+                  flex: 1;
+                  display: flex;
+                  justify-content: right;
+
+                  .ds-icon {
+                    white-space: nowrap;
+                    cursor: pointer;
+                    color: #fff;
+                    background: var(--mk-sys-color5);
+                    border: none;
+                    border-radius: 16px;
+                    min-width: 32px;
+                    height: 32px;
+                    align-items: center;
+                    justify-content: center;
+                    display: flex;
+                  }
+                  .ds-icon:not(.disabled):hover {
+                    background: var(--mk-sys-color);
+                  }
+
+                  .ds-icon.disabled {
+                    background: var(--mk-sys-color4);
+                    opacity: 0.9;
+                    cursor: not-allowed;
+                  }
+                }
+              }
+            }
+            .ds-icon {
+              height: 20px;
+            }
+          }
+        }
+      }
+      .mk-tail {
+        text-align: center;
+        width: 100%;
+        margin-top: auto;
+        position: absolute;
+        bottom: 0;
+        font-size: 12px;
+        color: rgb(163, 163, 163);
+        margin: 6px 0;
+        line-height: 14px;
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index 4867d20..f2d1763 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -2279,8 +2279,8 @@
                     <TableComponent config={config} updatetable={this.updateConfig}/>
                     <Paragraph style={{padding: '15px 0px 0px 32px'}} copyable={{ text: MenuId }}>鑿滃崟ID锛�</Paragraph>
                     <Paragraph style={{padding: '0px 0px 0px 18px'}} copyable={{ text:  `${window.GLOB.baseurl}mob/index.html#/index/${sessionStorage.getItem('kei_no')}/${sessionStorage.getItem('typename')}/${sessionStorage.getItem('lang')}/${MenuId}/@BID@` }}>鑿滃崟閾炬帴锛�</Paragraph>
-                    <Paragraph style={{padding: '0px 0px 0px 18px'}}>鑿滃崟缁勪欢锛�<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                     <NormalCss config={config} updateConfig={this.updateConfig}/>
+                    <Paragraph style={{padding: '0px 0px 0px 18px'}}>澶嶅埗鑿滃崟涓嬫墍鏈夌粍浠讹細<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                     <NormalCopy />
                   </> : null}
                 </Panel>
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index b4b6958..681427f 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -1904,8 +1904,8 @@
                       {/* 琛ㄥ悕娣诲姞 */}
                       <TableComponent config={config} updatetable={this.updateConfig}/>
                       <Paragraph style={{padding: '15px 0px 0px 32px'}} copyable={{ text: MenuId }}>鑿滃崟ID锛�</Paragraph>
-                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>鑿滃崟缁勪欢锛�<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                       <NormalCss config={config} updateConfig={this.updateConfig}/>
+                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>澶嶅埗鑿滃崟涓嬫墍鏈夌粍浠讹細<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                       <NormalCopy />
                     </> : null}
                   </Panel>
diff --git a/src/views/tabledesign/index.jsx b/src/views/tabledesign/index.jsx
index 122600d..722129a 100644
--- a/src/views/tabledesign/index.jsx
+++ b/src/views/tabledesign/index.jsx
@@ -1069,7 +1069,7 @@
                       {/* 琛ㄥ悕娣诲姞 */}
                       <TableComponent config={config} updatetable={this.updateConfig}/>
                       <Paragraph style={{padding: '15px 0px 0px 32px'}} copyable={{ text: MenuId }}>鑿滃崟ID锛�</Paragraph>
-                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>鑿滃崟缁勪欢锛�<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
+                      <Paragraph style={{padding: '0px 0px 0px 18px'}}>澶嶅埗鑿滃崟涓嬫墍鏈夌粍浠讹細<CopyOutlined onClick={this.copyMenu} style={{cursor: 'pointer', color: '#1890ff'}} /></Paragraph>
                       <NormalCopy />
                     </> : null}
                   </Panel>
@@ -1102,6 +1102,7 @@
                     {config ? <Dropdown placement="bottomCenter" overlay={<div className="mk-opeartion-dropdown-wrap">
                       <ReplaceField config={config} updateConfig={this.resetConfig}/>
                       <LowerField config={config} updateConfig={this.resetConfig}/>
+                      <Button onClick={() => window.open('#/ai')}>DeepSeek</Button>
                     </div>} trigger={['hover']}>
                       <div className="mk-button-more">鏇村<DownOutlined/></div>
                     </Dropdown> : null}

--
Gitblit v1.8.0