Browse Source

表格联动

Zn 1 year ago
parent
commit
72b8118f32

+ 3 - 3
ruoyi-ui/.env.development

@@ -14,11 +14,11 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
 VUE_APP_BASE_API1 = 'http://192.168.110.70:8066/'
 VUE_APP_BASE_API1 = 'http://192.168.110.70:8066/'
 
 
 #数据引擎模块IP
 #数据引擎模块IP
-VUE_APP_BASE_API2 = 'http://192.168.110.83:8099/'
+VUE_APP_BASE_API2 = 'http://192.168.110.70:8099/'
 
 
 #表单引擎模块IP
 #表单引擎模块IP
 
 
-VUE_APP_BASE_API3 = 'http://192.168.110.83:8088/'
+VUE_APP_BASE_API3 = 'http://192.168.110.70:8088/'
 
 
 #流程引擎模块IP
 #流程引擎模块IP
-VUE_APP_BASE_API4 = 'http://192.168.110.83:8055/'
+VUE_APP_BASE_API4 = 'http://192.168.110.70:8055/'

+ 85 - 2
ruoyi-ui/package-lock.json

@@ -25,6 +25,7 @@
         "bpmn-js-token-simulation": "^0.27.0",
         "bpmn-js-token-simulation": "^0.27.0",
         "bpmn-moddle": "^6.0.0",
         "bpmn-moddle": "^6.0.0",
         "bpmnlint": "^7.8.0",
         "bpmnlint": "^7.8.0",
+        "bpmnlint-utils": "^1.1.1",
         "camunda-bpmn-moddle": "^7.0.1",
         "camunda-bpmn-moddle": "^7.0.1",
         "circular-json": "^0.5.9",
         "circular-json": "^0.5.9",
         "clipboard": "^2.0.8",
         "clipboard": "^2.0.8",
@@ -143,6 +144,11 @@
       "resolved": "https://registry.npmmirror.com/@ant-design/icons/-/icons-2.1.1.tgz",
       "resolved": "https://registry.npmmirror.com/@ant-design/icons/-/icons-2.1.1.tgz",
       "integrity": "sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w=="
       "integrity": "sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w=="
     },
     },
+    "node_modules/@ant-design/icons-svg": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz",
+      "integrity": "sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g=="
+    },
     "node_modules/@ant-design/icons-vue": {
     "node_modules/@ant-design/icons-vue": {
       "version": "2.0.0",
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-2.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-2.0.0.tgz",
@@ -2240,6 +2246,14 @@
         "w3c-keyname": "^2.2.4"
         "w3c-keyname": "^2.2.4"
       }
       }
     },
     },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/@eslint/eslintrc": {
     "node_modules/@eslint/eslintrc": {
       "version": "0.4.3",
       "version": "0.4.3",
       "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
       "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -4129,6 +4143,7 @@
       "version": "4.11.8",
       "version": "4.11.8",
       "resolved": "https://registry.npmmirror.com/ajv/-/ajv-4.11.8.tgz",
       "resolved": "https://registry.npmmirror.com/ajv/-/ajv-4.11.8.tgz",
       "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
       "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
+      "optional": true,
       "dependencies": {
       "dependencies": {
         "co": "^4.6.0",
         "co": "^4.6.0",
         "json-stable-stringify": "^1.0.1"
         "json-stable-stringify": "^1.0.1"
@@ -5002,6 +5017,15 @@
         "node": ">=8"
         "node": ">=8"
       }
       }
     },
     },
+    "node_modules/bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "optional": true,
+      "dependencies": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
     "node_modules/bluebird": {
     "node_modules/bluebird": {
       "version": "3.7.2",
       "version": "3.7.2",
       "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
       "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
@@ -6271,6 +6295,7 @@
       "version": "4.6.0",
       "version": "4.6.0",
       "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz",
       "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz",
       "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
       "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "optional": true,
       "engines": {
       "engines": {
         "iojs": ">= 1.0.0",
         "iojs": ">= 1.0.0",
         "node": ">= 0.12.0"
         "node": ">= 0.12.0"
@@ -6698,6 +6723,11 @@
       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/compute-scroll-into-view": {
+      "version": "1.0.20",
+      "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+      "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+    },
     "node_modules/concat-map": {
     "node_modules/concat-map": {
       "version": "0.0.1",
       "version": "0.0.1",
       "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
       "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
@@ -7573,10 +7603,16 @@
         "node": ">=0.8"
         "node": ">=0.8"
       }
       }
     },
     },
+    "node_modules/dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
     "node_modules/de-indent": {
     "node_modules/de-indent": {
       "version": "1.0.2",
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
       "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
-      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
+      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+      "dev": true
     },
     },
     "node_modules/debug": {
     "node_modules/debug": {
       "version": "2.6.9",
       "version": "2.6.9",
@@ -9518,6 +9554,12 @@
       "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
       "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
       "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
       "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
     },
     },
+    "node_modules/file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "optional": true
+    },
     "node_modules/filesize": {
     "node_modules/filesize": {
       "version": "3.6.1",
       "version": "3.6.1",
       "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz",
       "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz",
@@ -9772,6 +9814,7 @@
       "version": "2.3.3",
       "version": "2.3.3",
       "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
       "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
       "hasInstallScript": true,
       "hasInstallScript": true,
       "optional": true,
       "optional": true,
       "os": [
       "os": [
@@ -10272,6 +10315,7 @@
       "version": "1.2.0",
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
       "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true,
       "bin": {
       "bin": {
         "he": "bin/he"
         "he": "bin/he"
       }
       }
@@ -11264,6 +11308,14 @@
         "node": ">=0.10.0"
         "node": ">=0.10.0"
       }
       }
     },
     },
+    "node_modules/is-plain-object": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
+      "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/is-promise": {
     "node_modules/is-promise": {
       "version": "2.2.2",
       "version": "2.2.2",
       "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz",
       "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz",
@@ -11588,6 +11640,7 @@
       "version": "1.0.2",
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz",
       "resolved": "https://registry.npmmirror.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz",
       "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==",
       "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==",
+      "optional": true,
       "dependencies": {
       "dependencies": {
         "jsonify": "^0.0.1"
         "jsonify": "^0.0.1"
       }
       }
@@ -11635,7 +11688,8 @@
     "node_modules/jsonify": {
     "node_modules/jsonify": {
       "version": "0.0.1",
       "version": "0.0.1",
       "resolved": "https://registry.npmmirror.com/jsonify/-/jsonify-0.0.1.tgz",
       "resolved": "https://registry.npmmirror.com/jsonify/-/jsonify-0.0.1.tgz",
-      "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg=="
+      "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+      "optional": true
     },
     },
     "node_modules/jsprim": {
     "node_modules/jsprim": {
       "version": "1.4.2",
       "version": "1.4.2",
@@ -13200,6 +13254,12 @@
         "thenify-all": "^1.0.0"
         "thenify-all": "^1.0.0"
       }
       }
     },
     },
+    "node_modules/nan": {
+      "version": "2.18.0",
+      "resolved": "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz",
+      "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
+      "optional": true
+    },
     "node_modules/nanoid": {
     "node_modules/nanoid": {
       "version": "3.3.6",
       "version": "3.3.6",
       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
@@ -16897,6 +16957,14 @@
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/scroll-into-view-if-needed": {
+      "version": "2.2.31",
+      "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+      "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+      "dependencies": {
+        "compute-scroll-into-view": "^1.0.20"
+      }
+    },
     "node_modules/select": {
     "node_modules/select": {
       "version": "1.1.2",
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
       "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
@@ -19721,6 +19789,7 @@
       "version": "2.6.12",
       "version": "2.6.12",
       "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
       "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
       "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==",
       "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==",
+      "dev": true,
       "dependencies": {
       "dependencies": {
         "de-indent": "^1.0.2",
         "de-indent": "^1.0.2",
         "he": "^1.1.0"
         "he": "^1.1.0"
@@ -19732,6 +19801,20 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/vue-types": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
+      "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
+      "dependencies": {
+        "is-plain-object": "3.0.1"
+      },
+      "engines": {
+        "node": ">=10.15.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
     "node_modules/vue2-ace-editor": {
     "node_modules/vue2-ace-editor": {
       "version": "0.0.15",
       "version": "0.0.15",
       "resolved": "https://registry.npmmirror.com/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz",
       "resolved": "https://registry.npmmirror.com/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz",

+ 1 - 0
ruoyi-ui/package.json

@@ -52,6 +52,7 @@
     "bpmn-js-token-simulation": "^0.27.0",
     "bpmn-js-token-simulation": "^0.27.0",
     "bpmn-moddle": "^6.0.0",
     "bpmn-moddle": "^6.0.0",
     "bpmnlint": "^7.8.0",
     "bpmnlint": "^7.8.0",
+    "bpmnlint-utils": "^1.1.1",
     "camunda-bpmn-moddle": "^7.0.1",
     "camunda-bpmn-moddle": "^7.0.1",
     "circular-json": "^0.5.9",
     "circular-json": "^0.5.9",
     "clipboard": "^2.0.8",
     "clipboard": "^2.0.8",

+ 17 - 7
ruoyi-ui/src/api/tablelist/commonTable.js

@@ -17,7 +17,7 @@ export function unionListTableData(query) {
     url: '/dragform/common/getTableList',
     url: '/dragform/common/getTableList',
     method: 'get',
     method: 'get',
     params: query,
     params: query,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -27,7 +27,7 @@ export function dragTableInfo(query) {
     url: '/dragform/common/dragTableInfo',
     url: '/dragform/common/dragTableInfo',
     method: 'get',
     method: 'get',
     params: query,
     params: query,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -38,7 +38,7 @@ export function addTableData(data) {
     url: '/dragform/common/batchInsert',
     url: '/dragform/common/batchInsert',
     method: 'post',
     method: 'post',
     data: data,
     data: data,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -48,7 +48,7 @@ export function batchEdit(data) {
     url: '/dragform/common/batchEdit',
     url: '/dragform/common/batchEdit',
     method: 'put',
     method: 'put',
     data: data,
     data: data,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -68,7 +68,7 @@ export function delTableData(data) {
     url: '/dragform/common/batchDelete',
     url: '/dragform/common/batchDelete',
     method: 'delete',
     method: 'delete',
     data: data,
     data: data,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -125,7 +125,7 @@ export function getInfoBySqlKey(sqlKey) {
   return request({
   return request({
     url: '/dragform/form/getInfoBySqlKey/' + sqlKey,
     url: '/dragform/form/getInfoBySqlKey/' + sqlKey,
     method: 'get',
     method: 'get',
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }
 
 
@@ -204,6 +204,16 @@ export function getStatisticList(query) {
     url: '/system/statistic/getStatisticList',
     url: '/system/statistic/getStatisticList',
     method: 'get',
     method: 'get',
     params: query,
     params: query,
-    baseURL: process.env.VUE_APP_BASE_API1
+    baseURL: process.env.VUE_APP_BASE_API3
+  })
+}
+
+// 按钮组操作统一请求
+export function btnCommonApi(data) {
+  return request({
+    url: '/dragform/commonbtn/commonBtnHandle',
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API3
   })
   })
 }
 }

+ 31 - 30
ruoyi-ui/src/views/relateTable/components/RelateTableCard.vue

@@ -192,13 +192,12 @@ export default {
     // 请求数据
     // 请求数据
     async gettableListHandler(tableKey, paramsContion = [], defaultVal ={}){
     async gettableListHandler(tableKey, paramsContion = [], defaultVal ={}){
       const res = await dragTableInfo({queryMap: {tableKey : tableKey }})
       const res = await dragTableInfo({queryMap: {tableKey : tableKey }})
-      this.getTableHandle(res,paramsContion = [],defaultVal = {})
+      this.getTableHandle(res, paramsContion = [],defaultVal = {})
     },
     },
     async getTableHandle(res){
     async getTableHandle(res){
         this.columns = []
         this.columns = []
         // 得到当前模版信息 --- sql columns queryWhere
         // 得到当前模版信息 --- sql columns queryWhere
         this.templateInfo = res.data.resultMap;
         this.templateInfo = res.data.resultMap;
-  
         this.queryParams.orderByColumn =
         this.queryParams.orderByColumn =
           res.data.resultMap.querySql.orderByColumn;
           res.data.resultMap.querySql.orderByColumn;
         this.sortOrder = JSON.parse(res.data.resultMap.querySql.sortOrder);
         this.sortOrder = JSON.parse(res.data.resultMap.querySql.sortOrder);
@@ -229,33 +228,39 @@ export default {
             if(this.newsort == 0){
             if(this.newsort == 0){
               this.getDataHandler()
               this.getDataHandler()
               // this.queryParams.queryMap.sqlkey = this.templateInfo.template.sqlKey;
               // this.queryParams.queryMap.sqlkey = this.templateInfo.template.sqlKey;
-            } else {
-
             }
             }
             let k;
             let k;
+            
             // console.log('conditions', this.tableCondition);
             // console.log('conditions', this.tableCondition);
-            // this.tableCondition[1].
-            this.tableCondition.forEach((item, i) => {
-              let val = item.split('=')
-              if(i!==0){
-                
-                k =val[0].split('.')
-                let str = k[0].trim() + '.' + k[1]
-                this.condition.push({
-                  key: k[0].trim(),
-                  value: k[1]
-                })
-
+           this.contion = this.templateInfo.template.dtTableName + '.' + this.templateInfo.template.primaryKey
+            // this.tableCondition.forEach((item, i) => {
+            //   let val = item.split('=')
+            //   if(i!==0){
                 
                 
-              }
-            })
+            //     k =val[0].split('.')
+            //     let str = k[0].trim() + '.' + k[1]
+            //     this.condition.push({
+            //       key: k[0].trim(),
+            //       value: k[1]
+            //     })
+            //   }
+            // })
+            
         }  
         }  
     },
     },
     // 获取表数据
     // 获取表数据
     async getDataHandler(contion, list){
     async getDataHandler(contion, list){
-      contion?.forEach(item => {
-        this.queryParams.queryMap['#{' + item.key + '.' + item.value] = "'" + list[item.value] + "'";
-      })
+      console.log(contion);
+      console.log(list);
+      if(contion){
+        let key = contion.split('.')
+        this.queryParams.queryMap['#{' + contion] = "'" + list[key[1]] + "'";
+      }
+      this.queryParams.queryMap.sqlkey = this.templateInfo.template.sqlKey;
+      
+      // contion?.forEach(item => {
+      //   this.queryParams.queryMap['#{' + item.key + '.' + item.value] = "'" + list[item.value] + "'";
+      // })
       this.tableList = [];
       this.tableList = [];
       let tableLists = await unionListTableData(this.queryParams)
       let tableLists = await unionListTableData(this.queryParams)
       if(tableLists.code == 200){
       if(tableLists.code == 200){
@@ -272,16 +277,11 @@ export default {
             }
             }
             return kv;
             return kv;
           })
           })
-        if(this.tableList.length !== 0){
-          this.$emit(
-            "updateData",
-            this.tableList[0],
-            this.index,
-          );
+
+          console.log(this.tableList);
         }
         }
-      }
-      this.total = tableLists.total;
-      this.loading = false; 
+        this.total = tableLists.total;
+        this.loading = false; 
     },
     },
     // 处理列表信息
     // 处理列表信息
     columnsHandler(columns) {
     columnsHandler(columns) {
@@ -298,6 +298,7 @@ export default {
     },
     },
     // 调用父组件方法更新表格数据
     // 调用父组件方法更新表格数据
     handleCurrentChange(row,event,column,val) {
     handleCurrentChange(row,event,column,val) {
+      // console.log(row);
       this.$emit(
       this.$emit(
         "updateData",
         "updateData",
         row,
         row,

+ 0 - 1685
ruoyi-ui/src/views/relateTable/index copy.vue

@@ -1,1685 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="68px"
-    >
-      <el-form-item label="表格组名" prop="dtName">
-        <el-input
-          v-model="queryParams.dtName"
-          placeholder="请输入表格组名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button
-          type="primary"
-          icon="el-icon-search"
-          size="mini"
-          @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
-        >
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          >新增</el-button
-        >
-      </el-col>
-
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="DeleteTableGroup"
-          >删除</el-button
-        >
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button type="danger" plain size="mini" @click="handlePreview"
-          >动态页面</el-button
-        >
-      </el-col> -->
-    </el-row>
-
-    <el-table
-      v-loading="loading"
-      :data="tableGroupList"
-      ref="tableRef"
-      @selection-change="handleSelectionChange"
-    >
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="表格主键" align="center" prop="id" />
-      <el-table-column label="表格组名" align="center" prop="groupName" />
-      <el-table-column label="描述" align="center" prop="groupDescription" />
-      <el-table-column label="表格数" align="center" prop="groupCount" />
-
-      <el-table-column
-        label="成员表格"
-        width="180"
-        >
-        <template slot-scope="scope">
-          <el-popover trigger="hover" placement="top">
-            <p v-for="(item,index) in scope.row.groupTableInfo"> {{ index == 0 ? '' :item.tablename }}</p>
-            
-            <div slot="reference" class="name-wrapper">
-            <el-tag size="medium">{{ scope.row.groupTableInfo[0].tablename }}</el-tag>
-            </div>
-          </el-popover>
-        </template>
-      </el-table-column>
-
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
-        <template slot-scope="scope">
-          <el-dropdown>
-            <el-button type="warning" plain size="small">
-              处理<i class="el-icon-arrow-down el-icon--right"></i>
-            </el-button>
-            <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item>
-                <el-button
-                  size="mini"
-                  type="text"
-                  icon="el-icon-edit"
-                  @click="UpdateTableGroup(scope.row)"
-                  >修改
-                </el-button>
-              </el-dropdown-item>
-              <el-dropdown-item>
-                <el-button
-                  size="mini"
-                  type="text"
-                  icon="el-icon-delete"
-                  @click="DeleteTableGroup(scope.row)"
-                  >删除
-                </el-button>
-              </el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getTableList"
-    />
-
-    <!-- 新增联动表格组弹窗 -->
-    <el-dialog :title="groupTitle ? '新增动态表格组' : '修改动态表格组'" :visible.sync="isShowTable">
-      <div class="dialog_wrap">
-        <el-button
-          type="primary"
-          size="small"
-          icon="el-icon-plus"
-          @click="addOneTable"
-          class="mb10"
-          >新增</el-button
-        >
-        <el-form :model="groupForm" :rules="grouprules" ref="groupForm" label-width="100px" class="demo-ruleForm">
-          <el-form-item label="表格组名" prop="groupName">
-            <el-input v-model="groupForm.groupName" placeholder="请输入表格组名"></el-input>
-          </el-form-item>
-          <el-form-item label="表格描述" prop="groupDescription">
-            <el-input v-model="groupForm.groupDescription" placeholder="请输入表格描述"></el-input>
-          </el-form-item>
-          <el-form-item label="菜单路由" prop="routePath">
-          <div class="treeselect">
-            <treeselect
-              :append-to-body="true"
-              v-model="groupForm.routePath"
-              :options="menus"
-              :normalizer="normalizer"
-              :show-count="true"
-              placeholder="请选择父级路由"
-            />
-          </div>
-           
-          </el-form-item>
-        <el-form-item>
-          <el-table
-          :data="tableDataList"
-          border
-          stripe
-          @selection-change="handleSelectionChange"
-        >
-          <el-table-column label="序号" type="index" />
-          <el-table-column label="表格标题" prop="dtName" />
-          <el-table-column
-            label="表格名称"
-            prop="dtTableName"
-          ></el-table-column>
-          <el-table-column label="表格主键" prop="primaryKey">
-            <!-- <template slot-scope="scope" v-for="item in conditionDefaultValueMap ">
-              {{ item }}
-            </template> -->
-          </el-table-column>
-
-          <el-table-column
-            label="操作"
-            align="center"
-            class-name="small-padding fixed-width"
-          >
-            <template slot-scope="scope">
-              <el-dropdown>
-                <el-button type="warning" plain size="small">
-                  处理<i class="el-icon-arrow-down el-icon--right"></i>
-                </el-button>
-                <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item>
-                    <el-button
-                      size="mini"
-                      type="text"
-                      icon="el-icon-edit"
-                      @click="relateOne(scope.row)"
-                      >修改
-                    </el-button>
-                  </el-dropdown-item>
-                  <el-dropdown-item>
-                    <el-button
-                      size="mini"
-                      type="text"
-                      icon="el-icon-delete"
-                      @click="handleDelete(scope.row)"
-                      >删除
-                    </el-button>
-                  </el-dropdown-item>
-                </el-dropdown-menu>
-              </el-dropdown>
-            </template>
-          </el-table-column>
-          </el-table>
-        </el-form-item>
-        
-        <el-form-item class="btn">
-          <el-button @click="cancelGroup">取消</el-button>
-          <el-button type="primary" @click="addTableGroup('groupForm')">确认</el-button>
-        </el-form-item>
-        </el-form>
-      </div>
-    </el-dialog>
-
-    <!-- 编辑某一条表格数据弹窗 -->
-    <el-dialog :title="relateTitle ? '添加关联表格' :'修改关联表格' " :visible.sync="isShowForm" >
-      <div class="formWrap">
-        <el-form
-          :rules="tableItemRules"
-          ref="tableItemForm"
-          style="max-width: 750px; width: 1000px"
-          :model="tableItemForm"
-          label-width="100px"
-        >
-          <el-form-item label="表格标题:" prop="title">
-            <el-input
-              v-model="tableItemForm.title"
-              style="max-width: 221px"
-              @change="iptChange()"
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="表格名称:" prop="tableName">
-            <el-select
-              v-model="tableItemForm.tableName"
-              @change="getList()"
-              placeholder="请选择表格名称"
-            >
-              <el-option
-              v-for="item in tableList"
-              :key="item.tableName"
-              :label="item.tableComment"
-              :value="item.tableName"
-              >
-              <span style="float: left">{{ item.tableComment }}</span>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{
-                item.tableName
-              }}</span>
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="表格主键:" prop="selectFields">
-            <el-select
-              v-model="tableItemForm.selectFields"
-              placeholder="请选择表格主键"
-            >
-            <el-option
-              v-for="item in tableFieldList"
-              :key="item.fieldName"
-              :label="item.fieldDescription"
-              :value="item.fieldName"
-            >
-              <span style="float: left">{{ item.fieldDescription }}</span>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{
-                item.fieldName
-              }}</span>
-            </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="时间格式" prop="timeFormate">
-            <el-select
-              v-model="tableItemForm.timeFormate"
-              placeholder="请选择时间格式"
-            >
-              <el-option
-                v-for="val in dict.type.sys_time_format"
-                :key="val.value"
-                :label="val.label"
-                :value="val.value"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="排序依赖字段">
-            <el-select
-              v-model="tableItemForm.orderByColumn"
-              placeholder="请选择排序依赖"
-            >
-              <el-option
-                v-for="val in orderByFieldList"
-                :key="val.fieldName"
-                :label="val.fieldDescription"
-                :value="val.tableName + '.' + val.fieldName"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="排序方式" v-show="tableItemForm.orderByColumn">
-            <el-radio v-model="tableItemForm.isAsc" :label="false"
-              >升序</el-radio
-            >
-            <el-radio v-model="tableItemForm.isAsc" :label="true"
-              >降序</el-radio
-            >
-          </el-form-item>
-          <el-form-item label="展示字段:" prop="FieldList">
-            <el-table
-            :data="tableFieldList"
-            border
-            ref="dragTable"
-            row-key="id"
-            max-height="500px"
-            class="tablefiled"
-            >
-            <el-table-column
-              type="index"
-              label="序号"
-              width="50"
-              class-name="allowDrag"
-            >
-            </el-table-column>
-            <el-table-column prop="fieldName" label="数据字段"></el-table-column>
-            <el-table-column prop="fieldDescription" label="字段描述">
-              <template slot-scope="scope">
-                <input
-                  :class="{
-                    isNullDesc:
-                      scope.row.fieldDescription == '' &&
-                      scope.row.isShow &&
-                      isInputInvalid
-                        ? true
-                        : false,
-                    ipt: true,
-                  }"
-                  v-model="scope.row.fieldDescription"
-                />
-              </template>
-            </el-table-column>
-            <el-table-column width="95px" prop="relationTable" label="关联表">
-              <template slot-scope="scope">
-                <el-select
-                  v-model="scope.row.relationTable"
-                  :disabled="
-                    !scope.row.relationTableList ||
-                    !scope.row.relationTableList.length
-                  "
-                  placeholder="请选择关联的表"
-                  clearable
-                  filterable
-                  @change="ralationTableChange(scope.row)"
-                >
-                  <el-option
-                    v-for="(item, index) in scope.row.relationTableList"
-                    :key="index"
-                    :label="item.tableComment"
-                    :value="item.tableName"
-                  >
-                    <span style="float: left">{{ item.tableComment }}</span>
-                    <span
-                      style="float: right; color: #8492a6; font-size: 13px"
-                      >{{ item.tableName }}</span
-                    >
-                  </el-option>
-                </el-select>
-              </template>
-            </el-table-column>
-            <el-table-column width="95px" prop="relationFieldName" label="关联条件字段">
-              <template slot-scope="scope">
-                <el-select
-                  v-model="scope.row.relationFieldName"
-                  @change="relationFieldChange(scope.row)"
-                  :disabled="!scope.row.disableRelaFieldName"
-                  placeholder="关联字段"
-                  filterable
-                >
-                  <el-option
-                    v-for="(item, index) in scope.row.relaFieldNameList"
-                    :key="index"
-                    :label="item.fieldDescription"
-                    :value="item.fieldName"
-                  >
-                  </el-option>
-                </el-select>
-              </template>
-            </el-table-column>
-            <el-table-column width="95px" prop="relationType" label="关联方式">
-              <template slot-scope="scope">
-                <el-select
-                  v-model="scope.row.relationType"
-                  placeholder="请选择关联方式"
-                  :disabled="!scope.row.disableRelaType"
-                  @change="relationTypeChangeHandler(scope.row)"
-                  filterable
-                >
-                  <el-option
-                    v-for="(item, index) in relaTypeList"
-                    :key="index"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-              </template>
-            </el-table-column>
-            <el-table-column prop="isShow" label="是否显示">
-              <template slot-scope="scope">
-                <el-switch v-model="scope.row.isShow"> </el-switch>
-              </template>
-            </el-table-column>
-            <el-table-column prop="isSearch" label="是否包含查询">
-              <template slot-scope="scope">
-                <el-switch v-model="scope.row.isSearch" @change="isSearchChange($event, scope.row,  scope.$index)"> </el-switch>
-              </template>
-            </el-table-column>
-          </el-table>
-          </el-form-item>
-          <el-form-item class="btn">
-            <el-button @click="cancelAddHandler">取消</el-button>
-            <el-button type="primary" @click="confirmAddHandler('tableItemForm')">确认</el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-    </el-dialog>
-
-    <!-- 是否包含查询字段依赖值对话框 -->
-    <div class="isSearch">
-      <el-dialog
-      title="包含查询依赖值"
-      :visible.sync="isSearchDialog">
-      <el-select v-model="relyOption" placeholder="请选择依赖方式">
-        <el-option
-          v-for="item in relyOptions"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value">
-        </el-option>
-      </el-select>
-      <el-input v-show="relyOption === '0'" v-model="conditionDefaultValueMap" placeholder="请输入依赖内容"></el-input>
-
-      <el-select v-show="relyOption === '1'" v-model="conditionDefaultValueMap" placeholder="请选择依赖字段">
-        <el-option
-          v-for="item in relyFileds.tableFieldList"
-          :key="item.fieldName"
-          :label="item.fieldDescription"
-          :value="item.fieldName">
-        </el-option>
-      </el-select>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isSearchCancel">取 消</el-button>
-        <el-button type="primary" @click="isSearchBtn">确 定</el-button>
-      </span>
-      </el-dialog>
-    </div>
-    
-  </div>
-</template>
-<script>
-import { listTable, removeTableList } from "@/api/dragform/tableList";
-import { getFormName, getListName, dragTablePreview, } from "@/api/dragform/form.js";
-import { delMenu } from "@/api/system/menu";
-import { getMenuList, addMenu} from "@/api/menu.js";
-import { getParticMenu, updateMenu } from "@/api/system/menu.js";
-import { addGroup, listGroup, getTable, delGroup, updataGroup } from '@/api/relateTable/index.js'
-import { addDragTable } from "@/api/tablelist/commonTable.js";
-import { mapGetters, mapState } from "vuex";
-import DictData from "@/components/DictData";
-import { FastBackwardFill, async } from "@/components/updateModule/k-form-design/lib/k-form-design.common";
-import { v4 as uuidv4 } from "uuid";
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import json from "highlight.js/lib/languages/json";
-import { getTableInfo, editTable } from "@/api/system/table.js";
-
-export default {
-  name: "relateTable",
-  components: { Treeselect },
-  dicts: ["sys_time_format", "table_statistic_type"],
-  data() {
-    return {
-      isInputInvalid: false,
-
-      // 包含查询依赖字段dialog
-      isSearchDialog: false,
-      isSearchIndex: null,
-      // 依赖方式
-      relyOption: null,
-      relyOptions:[
-        {
-         value: '0',
-         label: '自定义依赖值'
-        },
-        {
-          value: '1',
-          label: '依赖其他字段'
-        }
-      ],
-      // 依赖值
-      conditionDefaultValueMap: '',
-      // 上个表格名称及字段
-      relyFileds: {},
-      formdata:{
-        conditionDefaultValueMap: {}
-      },
-      conditionDefault:[],
-      addDragData:[],
-      groupList:[],
-      menus: [], //路由列表数据
-      // 添加关联表格校验规则
-      tableItemRules:{
-        title:[{ required: true, message: '请输入表格标题', trigger: 'blur' }],
-        // tableName:[{ required: true, message: '请选择表格名称', trigger: 'change' }],
-        // selectFields: [{ required: true, message: '请选择关联字段', trigger: 'change' }],
-      },
-      groupForm: {
-        groupName: '',
-        groupDescription:'',
-        routePath: undefined,
-      },
-      grouprules:{
-        groupName:[{ required: true, message: '请输入表格组名', trigger: 'blur' }],
-        groupDescription:[{ required: true, message: '请输入表格描述', trigger: 'blur' }],
-        routePath: [
-          { required: true, message: "请选择路由", trigger: "change" },
-        ],
-      },
-      menuOrderNum: 0,
-      // 关联方式
-      relaTypeList: [
-        {
-          label: "等值连接",
-          value: "INNER JOIN",
-        },
-        {
-          label: "左连接",
-          value: "LEFT JOIN",
-        },
-        {
-          label: "右连接",
-          value: "RIGHT JOIN",
-        },
-      ],
-      searchFieldList: [],
-      // 依赖字段
-      relyFiledsList: [],
-      // 修改row
-      updataGroupRow:{},
-      // 遮罩层
-      loading: false,
-      // 选中数组
-      ids: [],
-      menuIds: [],
-      // 选中数组(包含所有数据)
-      selection: [],
-      Keys: [],
-      menuIds: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      tableList: [], //所有表格列表
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        dtName: null,
-        dtNickname: null,
-        tableKey: null,
-        sqlKey: null,
-        dtTableName: null,
-        dtNotes: null,
-        dtColumnName: null,
-        timeFormat: null,
-        spare: null,
-        spare1: null,
-        isSelection: null,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {},
-
-      // dialog弹窗数据
-      isShowTable: false,
-      isShowForm: false,
-      // 新增关联表数据
-      tableDataList: [],
-
-      tableFieldList: [], // 当前表格字段数据
-      tableName: "", // 当前表名称
-      selectFields: '', //关联字段
-      relateTitle: true,
-      relateTableName: "", //关联表名称
-      relateFields: "", //子集关联字段
-      relateFieldList: [], //子集关联字段数据
-      groupTitle: true,
-      tableItemForm: {
-        tId: "",
-        rowId: "",
-        title: "",
-        tableName: "",
-        selectFields: "",
-        isAsc: false,
-        timeFormate: "",
-        orderByColumn: "",
-      },
-      tableGroupList: [],
-      // 成员表格提示
-      tableKeyContent: '',
-      groupsMenuId: "",
-      // 修改表格时的menuId
-      menuId: "",
-      // 修改是表格的id
-      groupId:''
-    };
-  },
-  async created() {
-    this.getTableList()
-  },
-  async mounted() {
-    await this.getMenuList();
-  },
-  computed: {
-    selectRelate(){
-      if(this.tableItemForm.tableName =='') return
-      return this.tableList.filter(item => item.tableName !== this.tableItemForm.tableName)
-    },
-    dataArr() {
-      return this.tableFieldList.filter((item) => item.isShow);
-    },
-    ...mapGetters(["addRoutes"]),
-    ...mapState({
-      databaseName: (state) => state.user.dataSource.databaseName,
-      databaseType: (state) => state.user.dataSource.databaseType,
-      username: (state) => state.user.dataSource.username,
-      tenantId: (state) => state.user.tenant.tenantId,
-    }),
-    orderByFieldList() {
-      return this.tableFieldList;
-    },
-  },
-  watch: {
-    'tableItemForm.tableName': function (val) {
-      if (val) {
-        this.relationTableList = this.tableList
-          .filter((item) => item.tableName != val)
-          .map((item) => {
-            return {
-              tableName: item.tableName,
-              tableComment: item.tableComment,
-            };
-          });
-      } else {
-        this.relationTableList = [];
-      }
-    },
-    'groupForm.routePath'(nval, oval) {
-      let targetMenu = this.getTargetMenu(this.menus);
-      this.menuOrderNum = targetMenu.children ? targetMenu.children.length : 0;
-    },
-  },
-  methods: {
-    iptChange(){
-	    this.$forceUpdate();  //强制刷新
-    },
-    async getTableList(){
-      let res = await listGroup(this.queryParams);
-      this.total = res.total;
-      let info = []
-      res.rows.forEach(item => {
-        item.groupCount = JSON.parse(item.groupTableInfo).length
-
-        info = JSON.parse(item.groupTableInfo)
-        this.groupsMenuId = info[0].menuId
-        item.menuId = info[0].menuId
-        item.groupTableInfo = info
-      })
-      console.log(info);
-      this.tableGroupList = res.rows
-      console.log(this.tableGroupList)
-    },
-    // 是否包含查询switch
-    isSearchChange(status, row,index){
-      this.isSearchDialog = status
-      if(this.isSearchDialog == true){
-        this.conditionDefaultValueMap = ''
-      }
-      this.isSearchIndex = index
-    },
-    // 添加依赖字段取消
-    isSearchCancel(){
-      this.relyOption = null
-      this.conditionDefaultValueMap = ''
-      this.isSearchDialog = false
-      this.tableFieldList[this.isSearchIndex].isSearch = false
-    },
-    isSearchBtn(){
-      if(this.relyFileds.tableName !== undefined){
-        console.log(this.relyFileds.tableName);
-        this.conditionDefault.push('#{'+this.relyFileds.tableName+'.'+this.conditionDefaultValueMap)
-      }else{
-        this.conditionDefault.push(this.conditionDefaultValueMap)
-      }
-      console.log(this.conditionDefault)
-      this.isSearchDialog = false
-      this.conditionDefaultValueMap = ''
-      this.relyFileds.tableName = ''
-    },
-    // 获取路由表单数据
-    async getMenuList() {
-    let res = await listGroup();
-    console.log('res',  res);
-    this.menus = this.handleTree(res.data, "menuId");
-    },
-    // 递归拼接查询语句
-    getSQLString(tableFieldList, fieldArr, tableArr, sqlType = "mysql") {
-      let prefix = "{DBNAME}.";
-      let asOrSpace = sqlType == "oracle" ? " " : " AS ";
-      for (let i = 0; i < tableFieldList.length; i++) {
-        let temp = tableFieldList[i];
-        if (temp.isShow) {
-          let tempArr = prefix + temp.tableName + "." + temp.fieldName;
-          if (temp.isChildren) {
-            tempArr += asOrSpace + temp.tableName + "_" + temp.fieldName;
-          }
-          fieldArr.push(tempArr);
-        }
-        if (temp.relationTable && temp.relationFieldName && temp.relationType) {
-          let isNeedUsername = sqlType == "oracle" ? this.username + "." : "";
-          tableArr.push(
-            temp.relationType +
-              " " +
-              isNeedUsername +
-              prefix +
-              temp.relationTable +
-              asOrSpace +
-              temp.relationTable +
-              " ON " +
-              prefix +
-              temp.relationTable +
-              "." +
-              temp.relationFieldName +
-              " = " +
-              prefix +
-              temp.tableName +
-              "." +
-              temp.fieldName
-          );
-        }
-      }
-      // 如果主键不包含显示,则添加至sql语句中
-      let isNotInclude = this.tableFieldList.find(
-        (val) => !val.isShow && val.fieldName == this.tableItemForm.selectFields
-      );
-      if (isNotInclude) {
-        fieldArr.push(
-          prefix + isNotInclude.tableName + "." + isNotInclude.fieldName
-        );
-      }
-    },
-    // 拼接查询sql语句
-    getSQLStr() {
-      let prefix = "{DBNAME}.";
-      let sqlType = this.databaseType; //数据库类型
-      // let sqlType = "oracle";
-      let sql = "";
-      // mysql
-      sql += "SELECT ";
-      let fieldNameArr = [],
-        relaTypeArr = [];
-      this.getSQLString(
-        this.tableFieldList,
-        fieldNameArr,
-        relaTypeArr,
-        sqlType
-      );
-      let isNeedUsername = sqlType == "oracle" ? this.username + "." : "";
-      let asOrSpace = sqlType == "oracle" ? " " : " AS ";
-      sql +=
-        fieldNameArr.join(",") +
-        " FROM " +
-        isNeedUsername +
-        prefix +
-        this.tableItemForm.tableName +
-        asOrSpace +
-        this.tableItemForm.tableName;
-      if (relaTypeArr.length) {
-        sql += " " + relaTypeArr.join(" ");
-      }
-      return sql;
-    },
-    /** 查询列表 */
-    getList(queryParams) {
-      if (!this.tableItemForm.tableName) return;
-      let data = {
-        databaseName: this.databaseName,
-        databaseType: this.databaseType,
-        tableName: this.tableItemForm.tableName,
-      };
-      
-      // 获取当前表单结构信息
-      getListName(data).then((res) => {
-        this.tableFieldList = res.map((item, index) => {
-          return {
-            id: this.tableItemForm.tableName + "_" + item.fieldName,
-            fieldName: item.fieldName,
-            fieldDescription: item.fieldDescription,
-            relationTable: "",
-            relationFieldName: "",
-            relaFieldNameList: [],
-            disableRelaFieldName: false,
-            relationType: "",
-            relationShowField: [],
-            relationShowFiledList: [],
-            disableRelaType: false,
-            isShow: true,
-            isSearch: false,
-            isExport: true,
-            relationTableList: this.relationTableList,
-            tableName: this.tableItemForm.tableName,
-            relationFieldList: [],
-          };
-        });
-      });
-
-    },
-    // 关联表变化回调
-    async ralationTableChange(row) {
-      this.tableFieldList = this.tableFieldList.filter((item) => {
-        return !row.relationFieldList.some((val) => {
-          return val.id == item.id;
-        });
-      });
-      row.relationFieldName = "";
-      row.relationType = "";
-      row.disableRelaFieldName = false;
-      row.disableRelaType = false;
-      row.relationFieldList = [];
-      if (!row.relationTable) {
-        return;
-      }
-      // 获取关联表的字段
-      let data = {
-        databaseName: this.databaseName,
-        databaseType: this.databaseType,
-        tableName: row.relationTable,
-      };
-      let res = await getListName(data);
-      // 关联字段下拉列表数据
-      row.relaFieldNameList = res.map((item) => {
-        return {
-          fieldName: item.fieldName,
-          fieldDescription: item.fieldDescription,
-        };
-      });
-      let relationTableList = row.relationTableList.filter(
-        (item) => row.relationTable != item.tableName
-      );
-      row.relationFieldList = row.relaFieldNameList.map((item, index) => {
-        return {
-          id: row.relationTable + "_" + item.fieldName,
-          fieldName: item.fieldName,
-          fieldDescription: item.fieldDescription,
-          relationTable: "",
-          relationFieldName: "",
-          relaFieldNameList: [],
-          disableRelaFieldName: false,
-          relationType: "",
-          relationShowField: [],
-          relationShowFiledList: [],
-          disableRelaType: false,
-          isShow: true,
-          isSearch: false,
-          isExport: true,
-          relationTableList,
-          tableName: row.relationTable,
-          relationFieldList: [],
-          isChildren: true,
-        };
-      });
-      row.disableRelaFieldName = true;
-    },
-    // 关联类型变化回调
-    relationTypeChangeHandler(row) {
-      let tempRelationFieldList = row.relationFieldList.filter((item) => {
-        return !this.tableFieldList.find((val) => val.id === item.id);
-      });
-      this.tableFieldList = [...this.tableFieldList, ...tempRelationFieldList];
-    },
-    // 关联字段回调
-    relationFieldChange(row) {
-      if (!row.relationFieldName) {
-        row.relationType = "";
-        row.disableRelaType = false;
-        row.relaFieldNameList = [];
-        return;
-      }
-      row.disableRelaType = true;
-    },
-    // 递归获取列表信息
-    getCol(
-      tableFieldList,
-      columns,
-      searchFieldList = [],
-      tableExportField = {}
-    ) {
-      if (!tableFieldList.length) return;
-      for (let i = 0; i < tableFieldList.length; i++) {
-        let temp = tableFieldList[i];
-        let tempFieldName = "",
-          exportFieldName = "";
-        if (temp.isChildren) {
-          tempFieldName = temp.tableName + "_" + temp.fieldName;
-          exportFieldName = temp.tableName + "@" + temp.fieldName;
-        } else {
-          tempFieldName = temp.fieldName;
-          exportFieldName = temp.fieldName;
-        }
-        if (temp.isShow) {
-          let tempObj = {};
-          tempObj[tempFieldName] = temp.fieldDescription;
-          columns.push(tempObj);
-        }
-        if (temp.isSearch) {
-          searchFieldList.push(temp.tableName + "." + temp.fieldName);
-        }
-
-        if (temp.isExport) {
-          tableExportField[exportFieldName] = temp.fieldDescription;
-        }
-      }
-    },
-     // 获取所有表格
-    async getAllTable() {
-      let data = {
-        databaseName: this.databaseName,
-        databaseType: this.databaseType,
-      };
-      let res = await getFormName(data);
-
-      const baseTable = await this.getDicts("base_table");
-
-      this.tableList = res.data.filter((item) => {
-        return !baseTable.data.some(
-          (value) =>
-            value.dictValue.toLowerCase() == item.tableName.toLowerCase()
-        );
-      });
-    },
-    // 确认添加一个表格
-    confirmAddHandler(formName) {
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          let columns = [],
-            searchFieldList = []
-            this.getCol(
-              this.tableFieldList,
-              columns,
-              searchFieldList,
-            );
-          // 判断是否有包含查询字段
-          if (!searchFieldList.length) {
-          this.$message.warning("请至少选择一个包含查询字段");
-          return false;
-          }
-          let echoData = {
-            tableName: this.tableItemForm.tableName,
-            tableFieldData: this.tableFieldList,
-            formData: this.groupForm,
-          }
-          // 判断修改还是新增
-          if(this.relateTitle){ 
-            console.log('新增');
-            let tableKey = uuidv4();
-            let sqlKey = uuidv4();
-            searchFieldList.forEach((item, index) => {
-              this.formdata.conditionDefaultValueMap[item] = this.conditionDefault[index]
-            })
-            this.relyFileds.tableFieldList = this.tableFieldList
-            this.relyFileds.tableName = this.tableItemForm.tableName
-            this.tableItemForm.rowId = Date.now();
-
-            this.tableDataList.push({
-              dtName: this.tableItemForm.title,
-              dtTableName: this.tableItemForm.tableName,
-              rowId: this.tableItemForm.rowId,
-              selectFields: this.tableItemForm.selectFields,
-              orderByColumn: this.tableItemForm.orderByColumn,
-              timeFormate: this.tableItemForm.timeFormate,
-
-              rowId: this.tableItemForm.rowId,
-              tId: this.tId,
-              tableKey: tableKey,
-              sortOrder: this.tableItemForm.isAsc,
-              sqlKey: sqlKey,
-              dtColumnName: columns, 
-              timeFormat: 'yyyy-MM-dd',
-              searchFieldList: searchFieldList, 
-              conditionDefaultValueMap: this.formdata.conditionDefaultValueMap,
-              tableSql: this.getSQLStr(), 
-              tableExportField: '',
-              echoData: JSON.stringify(echoData),
-            });
-
-            // 选择依赖字段
-            this.groupList.push({tableFieldList: this.tableFieldList, tableItemForm: this.tableItemForm, conditionDefaultValueMap: this.conditionDefaultValueMap})
-
-            if(this.groupTitle){
-              this.addDragData.push({
-              rowId: this.tableItemForm.rowId,
-              tId: this.tId,
-              dtName: this.tableItemForm.title,
-              tableKey: tableKey,
-              dtTableName: this.tableItemForm.tableName,
-              primaryKey: this.tableItemForm.selectFields,
-              orderByColumn: this.tableItemForm.orderByColumn,
-              sortOrder: this.tableItemForm.isAsc,
-              sqlKey: sqlKey,
-              dtColumnName: columns, 
-              timeFormat: 'yyyy-MM-dd',
-              searchFieldList: searchFieldList, 
-              conditionDefaultValueMap: this.formdata.conditionDefaultValueMap,
-              tableSql: this.getSQLStr(), 
-              tableExportField: '',
-              echoData: JSON.stringify(echoData),
-              })
-            }
-            
-          } else {
-            console.log(456);
-            let tableKey = uuidv4();
-            let sqlKey = uuidv4();
-
-              this.relyFileds.tableFieldList = this.tableFieldList
-
-              this.relyFileds.tableName = this.tableItemForm.tableName
-
-
-              console.log(this.conditionDefault);
-              searchFieldList.forEach((item, index) => {
-                // if(this.conditionDefault.length > 1){
-                  this.formdata.conditionDefaultValueMap[item] = this.conditionDefault[index]
-                // }else{
-                //   this.formdata.conditionDefaultValueMap = this.conditionDefault
-                // }
-              })
-
-             console.log(this.tableItemForm);
-              this.tableDataList.forEach((item, index) => {
-                if(item.tId == this.tableItemForm.tId) {
-                  this.tableDataList[index] = {
-                    tId: this.tableItemForm.tId,
-                    dtName: this.tableItemForm.title,
-                    tableKey: tableKey,
-                    dtTableName: this.tableItemForm.tableName,
-                    primaryKey: this.tableItemForm.selectFields,
-                    orderByColumn: this.tableItemForm.orderByColumn,
-                    sortOrder: this.tableItemForm.isAsc,
-                    sqlKey: sqlKey,
-                    dtColumnName: columns, 
-                    timeFormat: 'yyyy-MM-dd',
-                    searchFieldList: searchFieldList, 
-                    conditionDefaultValueMap: this.formdata?.conditionDefaultValueMap,
-                    tableSql: this.getSQLStr(), 
-                    tableExportField: '',
-                    echoData: JSON.stringify(echoData),
-                  }
-                }
-              })
-
-              console.log('11',this.tableDataList);
-              this.$set(this.tableDataList)
-              console.log('11',this.addDragData);
-          }
-          this.isShowForm = false
-          this.tableItemForm = {}
-          this.tableFieldList = []
-          this.relyFiledsList = []
-          this.conditionDefault = []
-          this.conditionDefaultValueMap= ''
-          this.formdata.conditionDefaultValueMap = {}
-        } else {
-          this.$message.error("请完善表单信息");
-          return false;
-        }
-      });
-    },
-    // 修改一个表格数据
-    relateOne(row){
-      console.log(row);
-      if(row.tableKey){
-        this.menuId = row.menuId
-        
-        
-        for (const key in row.conditionDefaultValueMap) {  
-          // this.conditionDefaultValueMap = row.conditionDefaultValueMap[key]
-          console.log(key);
-        this.conditionDefaultValueMap = row.conditionDefaultValueMap[key]
-        
-        this.conditionDefault.push(row.conditionDefaultValueMap[key])
-      }
-        console.log(this.conditionDefaultValueMap);
-        // this.initTableData(row.tId);
-        let echoData = JSON.parse(row.echoData)
-
-        this.tableDataList.forEach((item, index) => {
-          if(item.tableKey == row.tableKey){
-            if(index == 0){
-
-              this.relyFileds.tableFieldList = ''
-            }else{
-
-              let beforeEcho = JSON.parse(this.tableDataList[index-1].echoData)
-              
-              this.relyFileds.tableFieldList = beforeEcho.tableFieldData
-
-            }
-          }
-        } )
-        this.tableFieldList = echoData.tableFieldData;
-        // this.tableItemForm = row
-        this.tableItemForm.tId = row.tId
-        this.tableItemForm.rowId = row.tableKey,
-        this.tableItemForm.isAsc = false,
-        this.tableItemForm.orderByColumn = "",
-        this.tableItemForm.title = row.dtName
-        this.tableItemForm.tableName = row.dtTableName
-        this.tableItemForm.selectFields = row.primaryKey
-        this.tableItemForm.timeFormate = row.timeFormat
-
-      }else{
-        this.tableItemForm.rowId = row.rowId,
-        this.tableItemForm.title = row.dtName
-        this.tableItemForm.selectFields = row.selectFields
-        this.tableItemForm.tableName = row.dtTableName
-        this.tableItemForm.orderByColumn = row.orderByColumn
-        this.tableItemForm.timeFormate = row.timeFormat
-      
-        this.getList()
-        this.groupList.forEach(item => {
-          if(item.tableItemForm.rowId == row.rowId){
-            item.tableFieldList = this.tableFieldList
-          }
-        })
-      }
-
-      this.getAllTable()
-      // console.log('修改', this.groupList);
-      // 展示字段的回显
-      this.relateTitle = false
-      this.isShowForm = true;
-    },
-    // 删除表格组
-    DeleteTableGroup(row){
-      const fIds = row.id || this.ids;
-      const menus = row.menuId || this.menuIds
-      this.$modal
-        .confirm('是否确认删除动态单编号为"' + fIds + '"的数据项?删除后表格中所有的数据都将删除!')
-        .then(function () {
-          return delGroup(fIds);
-        })
-        .then(async () => {
-          let res = await delMenu(menus);
-
-          this.getTableList();
-          this.reloadRouter();
-          this.$modal.msgSuccess("删除成功");
-
-        })
-        .catch(() => {});
-    },
-    // 取消新增
-    cancelAddHandler(){
-      this.isShowForm = false;
-      this.tableItemForm = {}
-      this.tableFieldList = []
-    },
-    // 关联类型变化回调
-    relationTypeChangeHandler(row) {
-      let tempRelationFieldList = row.relationFieldList.filter((item) => {
-        return !this.tableFieldList.find((val) => val.id === item.id);
-      });
-      this.tableFieldList = [...this.tableFieldList, ...tempRelationFieldList];
-    },
-    // 更新路由
-    reloadRouter() {
-      this.$store.dispatch("GenerateRoutes").then((accessRoutes) => {
-        this.$router.addRoutes(accessRoutes); // 动态添加可访问路由表
-      });
-    },
-    // 获取目标menu
-    getTargetMenu(menus) {
-      for (let i = 0; i < menus.length; i++) {
-        if (menus[i].menuId == this.groupForm.routePath) {
-          return menus[i];
-        } else if (menus.children?.length) {
-          return this.getTargetMenu(menus.children);
-        }
-      }
-      return false;
-    },
-    // 获取父级menuId
-    getParentMenuId(menuId, menus) {
-      let res;
-      for (let i = 0; i < menus.length; i++) {
-        let item = menus[i];
-        if (item.menuId == menuId) {
-          res = item.parentId;
-          break;
-        } else if (item.children?.length) {
-          if (
-            this.getParentMenuId(
-              menuId,
-              JSON.parse(JSON.stringify(item.children))
-            )
-          ) {
-            res = this.getParentMenuId(
-              menuId,
-              JSON.parse(JSON.stringify(item.children))
-            );
-          }
-        }
-      }
-      return res;
-    },
-    // 修改表格回显数据
-    async initTableData(tId) {
-      let res = await getTableInfo(tId);
-      console.log('回显数据', res);
-      if (res.code == 200) {
-        if (!this.formData.routePath) {
-          this.$message.warning("该表格菜单路由已经删除,请重新配置");
-        }
-        // this.formData.routePath
-        this.editData = res.data;
-        let val = await getParticMenu(res.data.tableKey);
-        if (val.code == 200) {
-          this.menuId = val.data.menuId;
-        }
-      } else {
-        this.$message.error("数据回显失败");
-      }
-    },
-    // 新增动态表格组
-    addTableGroup(formName){
-      this.$refs[formName].validate(async (valid) => {
-          if (valid) { 
-            // console.log('groupList', this.groupList);
-            if(this.addDragData.length < 2) return this.$message.error("请包含多个表格");
-            if(this.groupTitle){
-              let groupKeyObj = {
-              groupKey: uuidv4(),
-              };
-              let payLoad = {
-                component: "relateTable/relateTableEdit",
-                icon: "",
-                isCache: "0",
-                isFrame: "1",
-                menuName: this.groupForm.groupName,
-                menuType: "C",
-                orderNum: this.menuOrderNum,
-                parentId: this.groupForm.routePath,
-                path: groupKeyObj.groupKey,
-                query: JSON.stringify(groupKeyObj),
-                status: "0",
-                visible: "0",
-                tenantId: this.tenantId,
-              };
-              let result;
-              result = await addMenu(payLoad);
-
-              if(result.code == 200){
-                this.reloadRouter();
-                let data = {
-                  groupKey: groupKeyObj.groupKey,
-                  groupName: '',
-                  groupDescription: '',
-                  groupTableInfo: [],
-                  dragTables:[]
-                }
-                this.addDragData.forEach((item, index) => {
-                item.menuId = result.data;
-                // item.sqlKey = tableKeyObj.tableKey
-                let echo = JSON.parse(item.echoData)
-                echo.formData = this.groupForm
-                item.echoData = JSON.stringify(echo)
-                data.groupTableInfo.push({
-                  tableKey: item.tableKey,
-                  sort: index,
-                  tablename: item.dtTableName,
-                  menuId: result.data
-                  })
-                })
-                data.groupName = this.groupForm.groupName
-                data.groupDescription = this.groupForm.groupDescription
-                data.groupTableInfo = JSON.stringify(data.groupTableInfo)
-                data.dragTables = this.addDragData
-
-                // 添加表格组
-                let res = await addGroup(data)
-
-                if(res.code == 200){
-                  this.$message.success("创建成功");
-
-                  this.isShowTable = false
-                  this.groupForm = {}
-                } else {
-                  this.$message.success("创建失败");
-                  }
-                }
-            }else{
-            
-              let groupKeyObj = {
-                groupKey: uuidv4(),
-              };
-              let data = {
-                groupKey: groupKeyObj.groupKey,
-                groupName: '',
-                groupDescription: '',
-                groupTableInfo: [],
-                dragTables:[],
-                id: this.groupId
-              }
-              this.addDragData.forEach((item, index) => {
-                // item.sqlKey = tableKeyObj.tableKey
-                let echo = JSON.parse(item.echoData)
-                echo.formData = this.groupForm
-                item.echoData = JSON.stringify(echo)
-                data.groupTableInfo.push({
-                  tableKey: item.tableKey,
-                  sort: index,
-                  tablename: item.dtTableName,
-                  })
-              })
-                data.groupName = this.groupForm.groupName
-                data.groupDescription = this.groupForm.groupDescription
-                data.groupTableInfo = JSON.stringify(data.groupTableInfo)
-                data.dragTables = this.addDragData
-              let res = await updataGroup(data)
-              console.log(res)
-
-              if(res.code == 200){
-                let payLoad = {
-                  menuId: this.menuId,
-                  menuName: this.groupForm.groupName,
-                  parentId: this.groupForm.routePath,
-                  component: "tablelist/commonTable/listInfo",
-                  icon: "",
-                  isCache: "0",
-                  isFrame: "1",
-                  menuType: "C",
-                  orderNum: this.menuOrderNum,
-                  status: "0",
-                  visible: "0",
-                  tenantId: this.tenantId,
-              };
-                console.log(payLoad);
-                let result = await updateMenu(payLoad);
-                console.log('确认修改', result);
-              }          
-            }
-
-            this.isShowTable = false
-            this.addDragData = []
-            this.groupForm = []
-            this.tableDataList = []
-            this.getTableList()
-          } else {
-            this.$message.error("请完善表单信息");
-            return false;
-          }
-      });
-    },
-    /** 新增按钮操作 */
-    async handleAdd() {
-      // dialog弹窗
-      this.isShowTable = true
-
-      // dialog标题
-      this.groupTitle = true
-
-      // 新增关联表格
-      this.isShowForm = true
-      this.relateTitle = true
-      this.tableItemForm = {}
-      this.groupForm = {}
-      this.tableDataList = []
-      this.tableFieldList = []
-      this.relyOption = ''
-      this.conditionDefaultValueMap = ''
-    },
-    // 取消
-    cancelGroup(){
-      this.groupTitle = true
-      this.isShowTable = false
-    },
-    // 获取路由表单数据
-    async getMenuList() {
-      let res = await getMenuList();
-      this.menus = this.handleTree(res.data, "menuId");
-    },
-    /** 转换菜单数据结构 */
-    normalizer(node) {
-      if (node.children && !node.children.length) {
-        delete node.children;
-      }
-      return {
-        id: node.menuId,
-        label: node.menuName,
-        children: node.children,
-      };
-    },
-    // 修改动态表格组回显
-    UpdateTableGroup(row){
-      console.log(row);
-      // let id = JSON.parse(row.id)
-      getTable({ id: row.id }).then(res => {
-        this.groupId = res.data.id
-        // 关联表格
-        this.groupTableInfo = JSON.parse(res.data.groupTableInfo)
-        this.menuId = res.data.dragTables[0].menuId
-
-        this.groupForm = res.data
-        this.addDragData = res.data.dragTables
-        // 菜单路由回显
-        this.tableDataList = this.groupForm.dragTables
-        this.groupForm.routePath = this.getParentMenuId(
-          res.data.dragTables[0].menuId,
-          this.menus,
-          {}
-        )
-
-        if (!this.groupForm.routePath) {
-          this.$message.warning("该表格菜单路由已经删除,请重新配置");
-        }
-      })
-
-      this.groupTitle = false
-      this.isShowTable = true 
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        tId: null,
-        dtName: null,
-        dtNickname: null,
-        tableKey: null,
-        sqlKey: null,
-        dtTableName: null,
-        dtNotes: null,
-        dtColumnName: null,
-        timeFormat: null,
-        spare: null,
-        spare1: null,
-        delFlag: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
-        isSelection: null,
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.getTableList();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.id);
-      this.Keys = selection.map((item) => item.sqlKey);
-      this.menuIds = selection.map((item) => item.menuId);
-      this.selection = selection;
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
-    },
-    
-    /** 修改按钮操作 */
-    async handleUpdate(row) {
-      // 兼容勾选单个的修改
-      let tId = row?.tId || this.ids[0];
-      // this.$router.push({
-      //   path: "/system/fromModel/index/tableMange",
-      //   query: {
-      //     tId: tId,
-      //   },
-      // });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          if (this.form.tId != null) {
-            updateTable(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addTable(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      console.log(row);
-      this.tableDataList.forEach((item, index) => {
-        if(row.tableKey == item.tableKey) {
-          this.tableDataList.splice(index, 1);
-        }
-      })
-      console.log(this.tableDataList)
-    },
-    // 更新路由
-    reloadRouter() {
-      this.$store.dispatch("GenerateRoutes").then((accessRoutes) => {
-        this.$router.addRoutes(accessRoutes); // 动态添加可访问路由表
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download(
-        process.env.VUE_APP_BASE_API3 + "system/table/export",
-        {
-          ...this.queryParams,
-        },
-        `table_${new Date().getTime()}.xlsx`
-      );
-    },
-    // 新增一个联动表格
-    addOneTable() {
-      this.relateTitle = true
-      if(this.relateTitle){
-        this.tableItemForm = {}
-        this.tableFieldList = []
-      }
-      if(!this.groupTitle){
-        // console.log('修改新增');
-        console.log(this.tableDataList[this.tableDataList.length-1].dtTableName)
-       
-        this.relyFileds.tableName = this.tableDataList[this.tableDataList.length-1].dtTableName
-        let echoData = JSON.parse(this.tableDataList[this.tableDataList.length-1].echoData)
-
-        this.relyFileds.tableFieldList = echoData.tableFieldData
-      }
-      this.getAllTable()
-      // 注意校验最后一条数据是否合法
-      this.isShowForm = true;
-    },
-
-    // 重置表单
-    // tableItemFormReset() {
-    //   Object.assign(this.tableItemForm, {
-    //     title: "",
-    //     tableId: "",
-    //     tableName: "",
-    //     showFields: [],
-    //     theRelateField: "",
-    //     executeOptions: [],
-    //   });
-    // },
-    // handlePreview() {
-    //   this.$router.push({
-    //     path: "/system/fromModel/index/relateTableEdit",
-    //   });
-    // },
-  },
-};
-</script>
-<style scoped lang="scss">
-::v-deep .el-dialog:not(.is-fullscreen){
-  width: 900px !important;
-}
-.isSearch {
-  ::v-deep .el-dialog:not(.is-fullscreen){
-  width: 320px !important;
-  }
-  ::v-deep .el-input--medium .el-input__inner{
-    margin-bottom: 10px !important;
-  }
-}
-.tablefiled{
-  ::v-deep .el-input--medium .el-input__inner{
-    width: 70px !important;
-  }
-}
-::v-deep .el-input--medium .el-input__inner{
-  width: 230px !important;
-}
-::v-deep .btn{
-  text-align: right !important;
-}
-.ipt {
-  height: 36px;
-  line-height: 36px;
-  font-size: 14px;
-  width: 100%;
-  outline: none;
-  text-align: center;
-  background-color: #fff;
-  border: 1px solid #dcdfe6;
-  color: #606266;
-  display: inline-block;
-  border-radius: 4px;
-}
-.isNullDesc {
-  border-color: #ff4949 !important;
-}
-
-.ipt:focus {
-  border-color: #1890ff;
-}
-::v-deep .vue-treeselect--has-value .vue-treeselect__input {
-  vertical-align: middle !important;
-}
-.formWrap {
-  display: flex;
-  justify-content: center;
-}
-
-::v-deep .el-table{
-  margin-top: 10px;
-}
-.nameipt{
-  display: inline;
-  margin-left: 10px;
-  ::v-deep .el-input--medium .el-input__inner{
-  width: 30%;
-  }
-  ::v-deep .el-input--medium{
-  display: inline;
-  }
-}
-.desc{
-  margin-left: 10px;
-}
-::v-deep .vue-treeselect--has-value .vue-treeselect__input {
-  vertical-align: middle !important;
-
-}
-.treeselect{
-   .vue-treeselect{
-    width: 230px !important;
-  }
-}
-</style>
-
-<style lang="scss">
- 
-.vue-treeselect{
-  z-index: 9999 !important;
-}
-</style>

+ 68 - 49
ruoyi-ui/src/views/relateTable/index.vue

@@ -10,7 +10,6 @@
     >
     >
       <el-form-item label="表格组名" prop="dtName">
       <el-form-item label="表格组名" prop="dtName">
         <el-input
         <el-input
-          @input="change1($evevt)"
           v-model="queryParams.dtName"
           v-model="queryParams.dtName"
           placeholder="请输入表格组名"
           placeholder="请输入表格组名"
           clearable
           clearable
@@ -145,11 +144,11 @@
         <el-form :model="groupForm" :rules="grouprules" ref="groupForm" label-width="100px" class="demo-ruleForm">
         <el-form :model="groupForm" :rules="grouprules" ref="groupForm" label-width="100px" class="demo-ruleForm">
           <el-form-item label="表格组名" prop="groupName">
           <el-form-item label="表格组名" prop="groupName">
             <el-input v-model="groupForm.groupName" placeholder="请输入表格组名"
             <el-input v-model="groupForm.groupName" placeholder="请输入表格组名"
-            @input="change1($evevt)"></el-input>
+            ></el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item label="表格描述" prop="groupDescription">
           <el-form-item label="表格描述" prop="groupDescription">
             <el-input v-model="groupForm.groupDescription" placeholder="请输入表格描述"
             <el-input v-model="groupForm.groupDescription" placeholder="请输入表格描述"
-            @input="change1($evevt)"></el-input>
+            ></el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item label="菜单路由" prop="routePath">
           <el-form-item label="菜单路由" prop="routePath">
           <div class="treeselect">
           <div class="treeselect">
@@ -238,10 +237,10 @@
         >
         >
           <el-form-item label="表格标题:" prop="title">
           <el-form-item label="表格标题:" prop="title">
             <el-input
             <el-input
-            @input="change1($evevt)"
               v-model="tableItemForm.title"
               v-model="tableItemForm.title"
               style="max-width: 221px"
               style="max-width: 221px"
               @change="iptChange()"
               @change="iptChange()"
+              @input="iptChange()"
             ></el-input>
             ></el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item label="表格名称:" prop="tableName">
           <el-form-item label="表格名称:" prop="tableName">
@@ -249,6 +248,7 @@
               v-model="tableItemForm.tableName"
               v-model="tableItemForm.tableName"
               @change="getList()"
               @change="getList()"
               placeholder="请选择表格名称"
               placeholder="请选择表格名称"
+              @input="iptChange()"
             >
             >
               <el-option
               <el-option
               v-for="item in tableList"
               v-for="item in tableList"
@@ -267,6 +267,7 @@
             <el-select
             <el-select
               v-model="tableItemForm.selectFields"
               v-model="tableItemForm.selectFields"
               placeholder="请选择表格主键"
               placeholder="请选择表格主键"
+              @input="iptChange()"
             >
             >
             <el-option
             <el-option
               v-for="item in tableFieldList"
               v-for="item in tableFieldList"
@@ -285,6 +286,7 @@
             <el-select
             <el-select
               v-model="tableItemForm.timeFormate"
               v-model="tableItemForm.timeFormate"
               placeholder="请选择时间格式"
               placeholder="请选择时间格式"
+              @input="iptChange()"
             >
             >
               <el-option
               <el-option
                 v-for="val in dict.type.sys_time_format"
                 v-for="val in dict.type.sys_time_format"
@@ -298,6 +300,7 @@
             <el-select
             <el-select
               v-model="tableItemForm.orderByColumn"
               v-model="tableItemForm.orderByColumn"
               placeholder="请选择排序依赖"
               placeholder="请选择排序依赖"
+              @input="iptChange()"
             >
             >
               <el-option
               <el-option
                 v-for="val in orderByFieldList"
                 v-for="val in orderByFieldList"
@@ -515,11 +518,11 @@ export default {
       groupList:[],
       groupList:[],
       menus: [], //路由列表数据
       menus: [], //路由列表数据
       // 添加关联表格校验规则
       // 添加关联表格校验规则
-      // tableItemRules:{
-      //   title:[{ required: true, message: '请输入表格标题', trigger: 'blur' }],
-      //   tableName:[{ required: true, message: '请选择表格名称', trigger: 'change' }],
-      //   selectFields: [{ required: true, message: '请选择关联字段', trigger: 'change' }],
-      // },
+      tableItemRules:{
+        // title:[{ required: true, message: '请输入表格标题', trigger: 'blur' }],
+        // tableName:[{ required: true, message: '请选择表格名称', trigger: 'change' }],
+        // selectFields: [{ required: true, message: '请选择关联字段', trigger: 'change' }],
+      },
       groupForm: {
       groupForm: {
         groupName: '',
         groupName: '',
         groupDescription:'',
         groupDescription:'',
@@ -577,6 +580,7 @@ export default {
       open: false,
       open: false,
       // 查询参数
       // 查询参数
       queryParams: {
       queryParams: {
+        groupType: 0,
         pageNum: 1,
         pageNum: 1,
         pageSize: 10,
         pageSize: 10,
         dtName: null,
         dtName: null,
@@ -627,7 +631,10 @@ export default {
       // 修改表格时的menuId
       // 修改表格时的menuId
       menuId: "",
       menuId: "",
       // 修改是表格的id
       // 修改是表格的id
-      groupId:''
+      groupId:'',
+      serachIndex: '',
+      //修改数据回显
+      echogroup:{},
     };
     };
   },
   },
   async created() {
   async created() {
@@ -667,7 +674,7 @@ export default {
             };
             };
           });
           });
       } else {
       } else {
-        this.relationTableList = [];
+        this.relaiptChangetableItemRulestionTableList = [];
       }
       }
     },
     },
     'groupForm.routePath'(nval, oval) {
     'groupForm.routePath'(nval, oval) {
@@ -697,6 +704,7 @@ export default {
     },
     },
     // 是否包含查询switch
     // 是否包含查询switch
     isSearchChange(status, row,index){
     isSearchChange(status, row,index){
+      this.serachIndex = index
       this.isSearchIndex = row.tableName + '.' + row.fieldName
       this.isSearchIndex = row.tableName + '.' + row.fieldName
       if(!status){
       if(!status){
         delete this.conditionDefault[this.isSearchIndex]
         delete this.conditionDefault[this.isSearchIndex]
@@ -709,7 +717,7 @@ export default {
       this.relyOption = null
       this.relyOption = null
       this.conditionDefaultValueMap = ''
       this.conditionDefaultValueMap = ''
       this.isSearchDialog = false
       this.isSearchDialog = false
-      this.tableFieldList[this.isSearchIndex].isSearch = false
+      this.tableFieldList[this.serachIndex].isSearch = false
     },
     },
     isSearchBtn(){
     isSearchBtn(){
       if(this.relyOption == 0){
       if(this.relyOption == 0){
@@ -981,13 +989,13 @@ export default {
           this.$message.warning("请至少选择一个包含查询字段");
           this.$message.warning("请至少选择一个包含查询字段");
           return false;
           return false;
           }
           }
-          let echoData = {
-            tableName: this.tableItemForm.tableName,
-            tableFieldData: this.tableFieldList,
-          }
+          let echoData = {}
           // 判断修改还是新增
           // 判断修改还是新增
           if(this.relateTitle){ 
           if(this.relateTitle){ 
-  
+            echoData = {
+            tableName: this.tableItemForm.tableName,
+            tableFieldData: this.tableFieldList,
+           }
             let tableKey = uuidv4();
             let tableKey = uuidv4();
             let sqlKey = uuidv4();
             let sqlKey = uuidv4();
 
 
@@ -1003,7 +1011,7 @@ export default {
               selectFields: this.tableItemForm.selectFields,
               selectFields: this.tableItemForm.selectFields,
               orderByColumn: this.tableItemForm.orderByColumn,
               orderByColumn: this.tableItemForm.orderByColumn,
               timeFormate: this.tableItemForm.timeFormate,
               timeFormate: this.tableItemForm.timeFormate,
-
+              primaryKey: this.tableItemForm.selectFields,
               rowId: this.tableItemForm.rowId,
               rowId: this.tableItemForm.rowId,
               tId: this.tId,
               tId: this.tId,
               tableKey: tableKey,
               tableKey: tableKey,
@@ -1043,29 +1051,27 @@ export default {
             }
             }
             
             
           } else {
           } else {
-            let tableKey = uuidv4();
-            let sqlKey = uuidv4();
-            console.log(this.conditionDefault);
-
-            console.log(searchFieldList);
+            echoData = {
+              tableName: this.tableItemForm.tableName,
+              tableFieldData: this.tableFieldList,
+            }
+            // console.log('123456', echoData);
             this.tableDataList.forEach((item, index) => {
             this.tableDataList.forEach((item, index) => {
               if(item.tId == this.tableItemForm.tId){
               if(item.tId == this.tableItemForm.tId){
-                // 判断依赖字段是否为一个
                 item.conditionDefaultValueMap = this.conditionDefault
                 item.conditionDefaultValueMap = this.conditionDefault
-               
                 item.echoData = JSON.stringify(echoData),
                 item.echoData = JSON.stringify(echoData),
                 item.sortOrder = this.tableItemForm.isAsc
                 item.sortOrder = this.tableItemForm.isAsc
                 item.orderByColumn = this.tableItemForm.orderByColumn
                 item.orderByColumn = this.tableItemForm.orderByColumn
                 item.primaryKey = this.tableItemForm.selectFields
                 item.primaryKey = this.tableItemForm.selectFields
                 item.dtTableName = this.tableItemForm.tableName
                 item.dtTableName = this.tableItemForm.tableName
                 item.dtName = this.tableItemForm.title
                 item.dtName = this.tableItemForm.title
-                item.dtColumnName = columns
+                item.dtColumnName = JSON.stringify(columns)
                 item.searchFieldList = searchFieldList 
                 item.searchFieldList = searchFieldList 
               }
               }
             })
             })
           }
           }
-          console.log(this.tableDataList)
           this.isShowForm = false
           this.isShowForm = false
+          echoData = {}
           this.tableItemForm = {}
           this.tableItemForm = {}
           this.tableFieldList = []
           this.tableFieldList = []
           this.relyFiledsList = []
           this.relyFiledsList = []
@@ -1080,7 +1086,6 @@ export default {
     },
     },
     // 修改一个表格数据
     // 修改一个表格数据
     relateOne(row){
     relateOne(row){
-      console.log(row);
       if(row.tableKey){
       if(row.tableKey){
         this.menuId = row.menuId
         this.menuId = row.menuId
         this.conditionDefault = row.conditionDefaultValueMap
         this.conditionDefault = row.conditionDefaultValueMap
@@ -1102,7 +1107,7 @@ export default {
         this.tableItemForm.tId = row.tId
         this.tableItemForm.tId = row.tId
         this.tableItemForm.rowId = row.tableKey,
         this.tableItemForm.rowId = row.tableKey,
         this.tableItemForm.isAsc = false,
         this.tableItemForm.isAsc = false,
-        this.tableItemForm.orderByColumn = "",
+        this.tableItemForm.orderByColumn = row.orderByColumn,
         this.tableItemForm.title = row.dtName
         this.tableItemForm.title = row.dtName
         this.tableItemForm.tableName = row.dtTableName
         this.tableItemForm.tableName = row.dtTableName
         this.tableItemForm.selectFields = row.primaryKey
         this.tableItemForm.selectFields = row.primaryKey
@@ -1272,7 +1277,7 @@ export default {
                 // item.sqlKey = tableKeyObj.tableKey
                 // item.sqlKey = tableKeyObj.tableKey
                 let echo = JSON.parse(item.echoData)
                 let echo = JSON.parse(item.echoData)
                 echo.formData = this.groupForm
                 echo.formData = this.groupForm
-                item.echoData = JSON.stringify(echo)
+                // item.echoData = JSON.stringify(echo)
                 data.groupTableInfo.push({
                 data.groupTableInfo.push({
                   tableKey: item.tableKey,
                   tableKey: item.tableKey,
                   sort: index,
                   sort: index,
@@ -1287,7 +1292,7 @@ export default {
 
 
                 // 添加表格组
                 // 添加表格组
                 let res = await addGroup(data)
                 let res = await addGroup(data)
-
+                console.log(res);
                 if(res.code == 200){
                 if(res.code == 200){
                   this.$message.success("创建成功");
                   this.$message.success("创建成功");
 
 
@@ -1295,15 +1300,13 @@ export default {
                   this.groupForm = {}
                   this.groupForm = {}
                 } else {
                 } else {
                   this.$message.success("创建失败");
                   this.$message.success("创建失败");
-                  }
+                  this.isShowTable = false
+                  this.groupForm = {}
                 }
                 }
+              }
             }else{
             }else{
-            
-              let groupKeyObj = {
-                groupKey: uuidv4(),
-              };
               let data = {
               let data = {
-                groupKey: groupKeyObj.groupKey,
+                groupKey: this.echogroup.groupKey,
                 groupName: '',
                 groupName: '',
                 groupDescription: '',
                 groupDescription: '',
                 groupTableInfo: [],
                 groupTableInfo: [],
@@ -1313,13 +1316,14 @@ export default {
               this.addDragData.forEach((item, index) => {
               this.addDragData.forEach((item, index) => {
                 // item.sqlKey = tableKeyObj.tableKey
                 // item.sqlKey = tableKeyObj.tableKey
                 let echo = JSON.parse(item.echoData)
                 let echo = JSON.parse(item.echoData)
-                echo.formData = this.groupForm
+                // echo.formData = this.groupForm
+                // console.log(echo);
                 item.echoData = JSON.stringify(echo)
                 item.echoData = JSON.stringify(echo)
                 data.groupTableInfo.push({
                 data.groupTableInfo.push({
                   tableKey: item.tableKey,
                   tableKey: item.tableKey,
                   sort: index,
                   sort: index,
                   tablename: item.dtTableName,
                   tablename: item.dtTableName,
-                  })
+                })
               })
               })
                 data.groupName = this.groupForm.groupName
                 data.groupName = this.groupForm.groupName
                 data.groupDescription = this.groupForm.groupDescription
                 data.groupDescription = this.groupForm.groupDescription
@@ -1327,14 +1331,13 @@ export default {
                 data.dragTables = this.addDragData
                 data.dragTables = this.addDragData
                 console.log(data);
                 console.log(data);
               let res = await updataGroup(data)
               let res = await updataGroup(data)
-              console.log(res)
 
 
               if(res.code == 200){
               if(res.code == 200){
                 let payLoad = {
                 let payLoad = {
                   menuId: this.menuId,
                   menuId: this.menuId,
                   menuName: this.groupForm.groupName,
                   menuName: this.groupForm.groupName,
                   parentId: this.groupForm.routePath,
                   parentId: this.groupForm.routePath,
-                  component: "tablelist/commonTable/listInfo",
+                  component: "relateTable/relateTableEdit",
                   icon: "",
                   icon: "",
                   isCache: "0",
                   isCache: "0",
                   isFrame: "1",
                   isFrame: "1",
@@ -1344,17 +1347,28 @@ export default {
                   visible: "0",
                   visible: "0",
                   tenantId: this.tenantId,
                   tenantId: this.tenantId,
               };
               };
-                console.log(payLoad);
                 let result = await updateMenu(payLoad);
                 let result = await updateMenu(payLoad);
-                console.log('确认修改', result);
-              }          
+
+                if(result.code == 200){
+                  this.$message.success("修改成功");
+
+                  this.isShowTable = false
+                  this.groupForm = {}
+                } else {
+                  this.$message.success("修改失败");
+                  this.isShowTable = false
+                  this.groupForm = {}
+                }
+
+              } 
             }
             }
             this.isShowTable = false
             this.isShowTable = false
             this.addDragData = []
             this.addDragData = []
-            this.groupForm = []
+            this.groupForm = {}
             this.tableDataList = []
             this.tableDataList = []
             this.reloadRouter();
             this.reloadRouter();
             this.getTableList()
             this.getTableList()
+
           } else {
           } else {
             this.$message.error("请完善表单信息");
             this.$message.error("请完善表单信息");
             return false;
             return false;
@@ -1395,17 +1409,22 @@ export default {
       };
       };
     },
     },
     // 修改动态表格组回显
     // 修改动态表格组回显
-    UpdateTableGroup(row){
-      getRouters().then(res => {})
-      console.log(row);
+    async UpdateTableGroup(row){
+      await this.getMenuList();
       // let id = JSON.parse(row.id)
       // let id = JSON.parse(row.id)
       getTable({ id: row.id }).then(res => {
       getTable({ id: row.id }).then(res => {
+        this.echogroup = res.data
         this.groupId = res.data.id
         this.groupId = res.data.id
         // 关联表格
         // 关联表格
         this.groupTableInfo = JSON.parse(res.data.groupTableInfo)
         this.groupTableInfo = JSON.parse(res.data.groupTableInfo)
         this.menuId = res.data.dragTables[0].menuId
         this.menuId = res.data.dragTables[0].menuId
-
+        
         this.groupForm = res.data
         this.groupForm = res.data
+        res.data.dragTables.forEach(item => {
+          if(item.orderByColumn.includes('.')){
+            item.orderByColumn = item.orderByColumn.split('.')[1]
+          }
+        })
         this.addDragData = res.data.dragTables
         this.addDragData = res.data.dragTables
         // 菜单路由回显
         // 菜单路由回显
         this.tableDataList = this.groupForm.dragTables
         this.tableDataList = this.groupForm.dragTables

+ 3 - 3
ruoyi-ui/src/views/relateTable/relateTableEdit.vue

@@ -160,17 +160,17 @@ export default {
       this.tableLists = JSON.parse(res.msg)
       this.tableLists = JSON.parse(res.msg)
     },
     },
     updateDataList(row,index) {
     updateDataList(row,index) {
-      // console.log(row, index);
       // let tableKey = this.tableLists[index+1].tableKey
       // let tableKey = this.tableLists[index+1].tableKey
       let beforeChild = this.$refs['childComponent'+index][0]
       let beforeChild = this.$refs['childComponent'+index][0]
       index++
       index++
+      console.log(beforeChild);
       const chlid = this.$refs['childComponent'+index][0]
       const chlid = this.$refs['childComponent'+index][0]
       // console.log(chlid);
       // console.log(chlid);
       if(!chlid) return
       if(!chlid) return
-      let contion = beforeChild.condition
+      // let contion = beforeChild.condition
       // let tableList = beforeChild.tableList[0]
       // let tableList = beforeChild.tableList[0]
       // console.log(contion,tableList);
       // console.log(contion,tableList);
-      chlid.getDataHandler(contion,row)
+      chlid.getDataHandler(beforeChild.contion,row)
     },
     },
   },
   },
 };
 };

+ 4 - 0
ruoyi-ui/src/views/tablelist/commonTable/BtnMenu.vue

@@ -68,6 +68,10 @@ export default {
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+.myDiv {
+  padding: 5px;
+  box-sizing: border-box;
+}
 .pre-icon {
 .pre-icon {
   margin-right: 5px;
   margin-right: 5px;
 }
 }

+ 331 - 62
ruoyi-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -208,7 +208,7 @@
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column
       <el-table-column
-        v-show="isShowExcuteCol"
+        v-if="isShowExcuteCol"
         label="操作"
         label="操作"
         align="center"
         align="center"
         class-name="small-padding fixed-width"
         class-name="small-padding fixed-width"
@@ -255,6 +255,27 @@
         <el-button @click="cancel">取 消</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
+
+    <!-- 绑定按钮dialog -->
+    <el-dialog
+      title="提示"
+      :visible.sync="btnDialogVisible"
+      :before-close="handleClose">
+      <DialogTemplate 
+       ref="dialogRef"
+        :groupKey="groupKey"
+        :rowobj="rowobj" 
+        :subCount="subCount"
+        :tableCount="tableCount"
+        :subTableName="subTableName"
+        @addList="addListHandler"
+        >
+      </DialogTemplate>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="btnDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="btnComfirm">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
@@ -264,6 +285,7 @@ import {
   listTable,
   listTable,
   unionListTableData,
   unionListTableData,
   getInfoBySqlKey,
   getInfoBySqlKey,
+  btnCommonApi,
   addTableData,
   addTableData,
   batchEdit,
   batchEdit,
   getStatisticList,
   getStatisticList,
@@ -271,15 +293,21 @@ import {
 import { listData } from "@/api/system/tenant/data";
 import { listData } from "@/api/system/tenant/data";
 import { getToken } from "@/utils/auth";
 import { getToken } from "@/utils/auth";
 import Queryfrom from "@/views/tablelist/commonTable/queryfrom.vue";
 import Queryfrom from "@/views/tablelist/commonTable/queryfrom.vue";
-import { camelCase } from "@/utils";
+import { camelCase, toUnderline } from "@/utils";
 import { inputDisableComplete } from "@/utils/other";
 import { inputDisableComplete } from "@/utils/other";
 import Menu from "./BtnMenu.vue";
 import Menu from "./BtnMenu.vue";
+import { checkRole } from "@/utils/permission";
+import DialogTemplate from "@/views/dialogTemplate/components/index.vue";
 
 
 export default {
 export default {
   name: "listInfo",
   name: "listInfo",
-  components: { Queryfrom, Menu },
+  components: { Queryfrom, Menu, DialogTemplate },
   data() {
   data() {
     return {
     return {
+      // 绑定按钮dialog
+      btnDialogVisible: false,
+      // 绑定修改dialog
+      groupKey: '',
       // 遮罩层
       // 遮罩层
       loading: true,
       loading: true,
       // 选中数组
       // 选中数组
@@ -366,6 +394,18 @@ export default {
       excuteBtnArr: [],
       excuteBtnArr: [],
       // 下拉框动态数据
       // 下拉框动态数据
       dynamicData: {},
       dynamicData: {},
+      // 当前点击按钮的数据
+      currentBtnData: {},
+      // 修改选中行
+      rowobj:{},
+      // 该行的统计信息
+      subCount:[],
+      tableCount:[],
+      // 弹窗新增数据
+      addLists:[],
+      subTableName: '',
+      // 当前点击行的数据
+      currentRow: {},
     };
     };
   },
   },
 
 
@@ -376,13 +416,14 @@ export default {
   watch: {
   watch: {
     tableList: {
     tableList: {
       handler(val) {
       handler(val) {
-        console.log(JSON.parse(JSON.stringify(val)), "tableListChange");
+        // console.log(JSON.parse(JSON.stringify(val)), "tableListChange");
       },
       },
       deep: true,
       deep: true,
     },
     },
   },
   },
   computed: {
   computed: {
     isShowExcuteCol() {
     isShowExcuteCol() {
+      // console.log(!this.excuteBtnArr?.every((arr) => arr.children.length == 0));
       // return true;
       // return true;
       return !this.excuteBtnArr?.every((arr) => arr.children.length == 0);
       return !this.excuteBtnArr?.every((arr) => arr.children.length == 0);
     },
     },
@@ -455,12 +496,12 @@ export default {
           getStatisticList({
           getStatisticList({
             queryMap: {
             queryMap: {
               tableKey: this.templateInfo.template.tableKey,
               tableKey: this.templateInfo.template.tableKey,
-              queryCriteriaValue: this.queryParams.queryMap.queryCriteriaValue
+              queryCriteriaValue: this.queryParams.queryMap.queryCriteriaValue,
             },
             },
-          }).then(res => {
+          }).then((res) => {
             // console.log('getStatisticList', res);
             // console.log('getStatisticList', res);
-            this.statisticList = res.data
-          })
+            this.statisticList = res.data;
+          });
         });
         });
     },
     },
     isUpperCase(char) {
     isUpperCase(char) {
@@ -596,33 +637,154 @@ export default {
       }
       }
       return strs[0];
       return strs[0];
     },
     },
-
+    // 绑定dialog对话框关闭
+    handleClose(){
+      this.btnDialogVisible = false
+    },
+    getLastUppercaseWord(text) {
+      const pattern = /\b[A-Z][a-z]*\b/g;
+      const matches = [...text.matchAll(pattern)];
+      if (matches.length > 0) {
+        const lastMatch = matches[matches.length - 1][0];
+        return lastMatch;
+      } else {
+        return null;
+      }
+    },
     /** 修改按钮操作 */
     /** 修改按钮操作 */
-    handleUpdate(row) {
-      console.log(row);
-      getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
-        if (!data || !data.dfVueTemplate) {
+    async handleUpdate(row, btnData) {
+      // console.log(this.currentBtnData);
+      
+      let nameTable = this.templateInfo.template.dtTableName
+      // console.log(nameTable);
+      // console.log('row', row);
+      this.rowobj = {}
+      let obj = {}
+      for(let key in row) {
+
+        let modifiedTable = key.replace(/[A-Z]/g, (match) => `_${match}`).toLowerCase(); 
+
+        this.rowobj[modifiedTable] = row[key];
+
+        let str = modifiedTable.substring(nameTable.length+1)
+        obj[str] = row[key];
+      }
+      // console.log("row", row);
+
+      // 新的修改请求
+      try {
+        let payLoad = {
+          basicMap: {
+            btnType: 8,
+            btnKey: this.currentBtnData.btnKey,
+            visible: "false",
+            sqlKey: this.templateInfo.template.sqlKey,
+            tableName: this.tableName,
+          },
+          conditionMap: {},
+        };
+        let primary = camelCase(
+          this.tableName + "_" + this.templateInfo.template?.primaryKey
+        );
+        payLoad.conditionMap[this.templateInfo.template?.primaryKey] =
+          row[primary];
+        let res = await btnCommonApi(payLoad);
+        this.subTableName = res.data.result.dragTables[1].dtTableName
+        // 判断是否绑定dialog弹窗
+        if (this.currentBtnData.btnTableFormGroupKey == '') {
           this.$message.error("当前表格未绑定表单!");
           this.$message.error("当前表格未绑定表单!");
           return;
           return;
+
+          res.data.template.dfFormSql &&
+          (this.dynamicData = JSON.parse(res.data.template.dfFormSql));
+           this.addRealFieldName(res.data.result.resultMap);
+          let resultMap = res.data.result.resultMap;
+
+          Object.assign(this.defaultValue, resultMap);
+          this.jsonData = JSON.parse(res.data.template.dfVueTemplate);
+          this.open = true;
+          this.title = "修改信息";
+          this.form.password = this.initPassword;
+          this.$nextTick(() => {
+            this.$refs.addFromRef.setData(res.data.result.resultMap);
+          });
+        }else{
+          this.btnDialogVisible = true
+          this.groupKey = this.currentBtnData.btnTableFormGroupKey
+          this.$nextTick(()=>{
+            let refChild = this.$refs.dialogRef
+
+            // console.log(this.$refs.dialogRef);
+            refChild.getLists(this.groupKey)
+          })
+
+          let tablesubKey = res.data.result.dragTables[1].tableKey
+     
+          // 查询统计信息
+          getStatisticList({
+            queryMap: {
+              tableKey: tablesubKey,
+            },
+          }).then((res) => {
+            // console.log('统计', res);
+            this.subCount = res.data
+          });
+
+          let prmKey = this.templateInfo.template.primaryKey
+          let pkey = prmKey.replace(/_([a-z])/g, (match, p1) => p1.toUpperCase());
+
+          let data = {
+            queryMap:{
+              tableKey:res.data.result.dragTables[2].tableKey,
+            }
+          }
+
+          let key = '#{' + this.templateInfo.template.dtTableName + '.' + this.templateInfo.template.primaryKey
+
+          data.queryMap[key] = "'" + obj[this.templateInfo.template.primaryKey] + "'";
+
+          getStatisticList(data).then((res) => {
+            // console.log('统计', res);
+            this.tableCount = res.data
+          });
         }
         }
-        // let fieldList = Object.keys(row);
+       
+        // let fieldList = Object.keys(resultMap);
         // let tableName = this.longestCommonSubstring(fieldList);
         // let tableName = this.longestCommonSubstring(fieldList);
         // fieldList.forEach((field) => {
         // fieldList.forEach((field) => {
         //   let realField = field.replace(tableName, "");
         //   let realField = field.replace(tableName, "");
         //   realField = realField[0].toLocaleLowerCase() + realField.substring(1);
         //   realField = realField[0].toLocaleLowerCase() + realField.substring(1);
-        //   row[realField] = row[field];
+        //   resultMap[realField] = resultMap[field];
         // });
         // });
-        this.addRealFieldName(row);
-        Object.assign(this.defaultValue, row);
-        this.jsonData = JSON.parse(data.dfVueTemplate);
-        this.open = true;
-        this.title = "修改信息";
-        this.form.password = this.initPassword;
-        this.$nextTick(() => {
-          this.$refs.addFromRef.setData(row);
-        });
-      });
+   
+      } catch (error) {
+        this.$message.error("网络异常,请稍后再试");
+        console.log(error);
+      }
       return;
       return;
+      // getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
+      //   if (!data || !data.dfVueTemplate) {
+      //     this.$message.error("当前表格未绑定表单!");
+      //     return;
+      //   }
+      //   // let fieldList = Object.keys(row);
+      //   // let tableName = this.longestCommonSubstring(fieldList);
+      //   // fieldList.forEach((field) => {
+      //   //   let realField = field.replace(tableName, "");
+      //   //   realField = realField[0].toLocaleLowerCase() + realField.substring(1);
+      //   //   row[realField] = row[field];
+      //   // });
+      //   this.addRealFieldName(row);
+      //   Object.assign(this.defaultValue, row);
+      //   this.jsonData = JSON.parse(data.dfVueTemplate);
+      //   this.open = true;
+      //   this.title = "修改信息";
+      //   this.form.password = this.initPassword;
+      //   this.$nextTick(() => {
+      //     this.$refs.addFromRef.setData(row);
+      //   });
+      // });
+      // return;
       this.reset();
       this.reset();
       const userId = row.userId || this.ids;
       const userId = row.userId || this.ids;
       getUser(userId).then((response) => {
       getUser(userId).then((response) => {
@@ -671,7 +833,7 @@ export default {
      *
      *
      * 删除提示信息语句(标识)
      * 删除提示信息语句(标识)
      * */
      * */
-    handleDelete(row) {
+    handleDelete(row, btnData) {
       let delIds = this.ids;
       let delIds = this.ids;
       let primary = camelCase(this.templateInfo.template?.primaryKey);
       let primary = camelCase(this.templateInfo.template?.primaryKey);
       this.addRealFieldName(row);
       this.addRealFieldName(row);
@@ -681,17 +843,31 @@ export default {
       }
       }
       let data = {
       let data = {
         basicMap: {
         basicMap: {
+          btnType: 9,
+          btnKey: btnData.btnKey,
           tableName: this.tableName,
           tableName: this.tableName,
         },
         },
         conditionMap: {
         conditionMap: {
           // id: delIds,
           // id: delIds,
         },
         },
+        btnParametersMap: {},
       };
       };
+      if (this.currentBtnData.btnParams) {
+        let btnParams = JSON.parse(this.currentBtnData.btnParams);
+        btnParams.forEach((item) => {
+          data.btnParametersMap[
+            this.formatField(item.fieldName, camelCase(this.tableName))
+          ] = item.fieldValue
+            ? item.fieldValue
+            : this.currentRow[item.fieldName];
+        });
+      }
       data.conditionMap[this.templateInfo.template?.primaryKey] = delIds;
       data.conditionMap[this.templateInfo.template?.primaryKey] = delIds;
       this.$modal
       this.$modal
         .confirm('是否确认删除"' + delIds + '"的数据项?')
         .confirm('是否确认删除"' + delIds + '"的数据项?')
         .then(function () {
         .then(function () {
-          return delTableData(data);
+          // return delTableData(data);
+          return btnCommonApi(data);
         })
         })
         .then(() => {
         .then(() => {
           // 调用子组件查询方法 目的是携带上子组件中的查询参数
           // 调用子组件查询方法 目的是携带上子组件中的查询参数
@@ -772,6 +948,34 @@ export default {
     submitFileForm() {
     submitFileForm() {
       this.$refs.upload.submit();
       this.$refs.upload.submit();
     },
     },
+    // 弹窗新增的数
+    addListHandler(val){
+      this.addLists.push(...val)
+      // console.log(this.addLists);
+    },
+    // 绑定弹窗Dialog确定按钮
+    btnComfirm(){
+      // let data = {
+      //   addListMap:[],
+      //   basicMap:{
+      //     btnType: 10,
+      //     tableName: this.subTableName,
+      //     visible: true,
+      //   },
+      //   commMap: {},
+      //   conditionMap: {},
+      // }
+      // // data.addListMap =
+      // btnCommonApi(data).then(res => {
+      //   console.log('弹窗确定', res);
+      // })
+    },
+    // 去掉表名 开头字母小写
+    formatField(field = "", tableName) {
+      // console.log(field, tableName);
+      let temp = field.replace(tableName, "");
+      return toUnderline(temp[0].toLowerCase() + temp.slice(1));
+    },
     //提交编辑结果按钮回调
     //提交编辑结果按钮回调
     editConfirmHandler() {
     editConfirmHandler() {
       this.$refs.addFromRef
       this.$refs.addFromRef
@@ -780,48 +984,92 @@ export default {
           let data = {
           let data = {
             basicMap: {
             basicMap: {
               tableName: this.tableName,
               tableName: this.tableName,
+              // btnKey: btnData.btnKey,
+              btnKey: this.currentBtnData.btnKey,
             },
             },
             addListMap: [values],
             addListMap: [values],
+            conditionMap: {},
+            commMap: {},
+            btnParametersMap: {},
           };
           };
+          if (this.currentBtnData.btnParams) {
+            let btnParams = JSON.parse(this.currentBtnData.btnParams);
+            btnParams.forEach((item) => {
+              data.btnParametersMap[
+                this.formatField(item.fieldName, camelCase(this.tableName))
+              ] = item.fieldValue
+                ? item.fieldValue
+                : this.currentRow[item.fieldName];
+            });
+          }
           if (Object.keys(this.defaultValue).length) {
           if (Object.keys(this.defaultValue).length) {
-            let updateData = {
-              // 基本参数
-              basicMap: {
-                // 表名
-                tableName: this.tableName,
-              },
-              conditionMap: {},
-              commMap: {},
-            };
-
+            //修改
             // 后台接收需要是表中字段真实的名称,无所谓驼峰。
             // 后台接收需要是表中字段真实的名称,无所谓驼峰。
-            updateData.conditionMap[this.templateInfo.template?.primaryKey] =
+            data.conditionMap[this.templateInfo.template?.primaryKey] =
               this.defaultValue[
               this.defaultValue[
                 camelCase(this.templateInfo.template?.primaryKey)
                 camelCase(this.templateInfo.template?.primaryKey)
               ];
               ];
             Object.keys(values).map((k) => {
             Object.keys(values).map((k) => {
-              updateData.commMap[k] = values[k];
+              data.commMap[k] = values[k];
             });
             });
-            let res = await batchEdit(updateData);
-            if (res.code == 200) {
-              this.$modal.msgSuccess("修改成功");
-            } else {
-              this.$modal.msgError("修改失败");
-            }
-            this.getList();
+            data.basicMap.btnType = 8;
+            data.basicMap.visible = true;
           } else {
           } else {
-            let res = await addTableData(data);
+            data.basicMap.btnType = 10;
+            data.basicMap.visible = true;
+          }
+          try {
+            let res = await btnCommonApi(data);
             if (res.code == 200) {
             if (res.code == 200) {
-              this.$modal.msgSuccess("添加成功");
+              this.$message.success("操作成功");
             } else {
             } else {
-              this.$modal.msgError("添加失败");
+              this.$message.error("网络异常,请稍后再试");
             }
             }
-            this.getList();
+          } catch (error) {
+            console.log(error);
+            this.$message.error("网络异常,请稍后再试");
           }
           }
+          // if (Object.keys(this.defaultValue).length) {
+          //   let updateData = {
+          //     // 基本参数
+          //     basicMap: {
+          //       // 表名
+          //       tableName: this.tableName,
+          //     },
+          //     conditionMap: {},
+          //     commMap: {},
+          //   };
+
+          //   // 后台接收需要是表中字段真实的名称,无所谓驼峰。
+          //   updateData.conditionMap[this.templateInfo.template?.primaryKey] =
+          //     this.defaultValue[
+          //       camelCase(this.templateInfo.template?.primaryKey)
+          //     ];
+          //   Object.keys(values).map((k) => {
+          //     updateData.commMap[k] = values[k];
+          //   });
+          //   let res = await batchEdit(updateData);
+          //   if (res.code == 200) {
+          //     this.$modal.msgSuccess("修改成功");
+          //   } else {
+          //     this.$modal.msgError("修改失败");
+          //   }
+          //   this.getList();
+          // } else {
+          //   let res = await addTableData(data);
+          //   if (res.code == 200) {
+          //     this.$modal.msgSuccess("添加成功");
+          //   } else {
+          //     this.$modal.msgError("添加失败");
+          //   }
+          //   this.getList();
+          // }
+          this.getList();
           this.defaultValue = {};
           this.defaultValue = {};
           this.open = false;
           this.open = false;
         })
         })
         .catch((res) => {
         .catch((res) => {
+          console.log(res);
           this.$modal.msgError("表单校验失败,请规范填写数据");
           this.$modal.msgError("表单校验失败,请规范填写数据");
         });
         });
     },
     },
@@ -883,7 +1131,7 @@ export default {
       );
       );
       if (!fieldConditionList.length) return tableList;
       if (!fieldConditionList.length) return tableList;
       let res = await this.setDictStyleData();
       let res = await this.setDictStyleData();
-      console.log(res);
+      // console.log(res);
       this.dictStyleObj = res;
       this.dictStyleObj = res;
       // console.log(JSON.parse(JSON.stringify(this.dictStyleObj)));
       // console.log(JSON.parse(JSON.stringify(this.dictStyleObj)));
       tableList.forEach((row) => {
       tableList.forEach((row) => {
@@ -952,33 +1200,50 @@ export default {
     },
     },
 
 
     // 内链页面跳转
     // 内链页面跳转
-    routerHandler(link, type) {
-      console.log(link);
+    routerHandler(btnData, type) {
+      let { url, commonFieldData } = JSON.parse(btnData.btnParams);
+      let tempArr = [];
+      if (commonFieldData) {
+        let queryArr = JSON.parse(commonFieldData);
+
+        tempArr = queryArr.map((item) => {
+          let key = this.formatField(item.fieldName, camelCase(this.tableName));
+          let value = item.fieldValue
+            ? item.fieldValue
+            : this.currentRow[item.fieldName];
+          return key + "=" + value;
+        });
+      }
+      if (tempArr.length) {
+        url += "?" + tempArr.join("&");
+      }
+      // let link = btnData.btnParams;
       if (type == "3") {
       if (type == "3") {
-        this.$router.push(link);
+        this.$router.push(url);
       } else {
       } else {
-        window.open("http://" + link, "_blank");
+        window.open("http://" + url, "_blank");
       }
       }
     },
     },
 
 
     // 操作列回调
     // 操作列回调
     excuteHandler(btnData, row) {
     excuteHandler(btnData, row) {
-      console.log(btnData, row);
       let { btnType, btnParams } = btnData;
       let { btnType, btnParams } = btnData;
+      this.currentBtnData = btnData;
+      this.currentRow = JSON.parse(JSON.stringify(row));
       switch (
       switch (
         btnType //3:内链  6:目录  7:外链  8:修改  9:删除
         btnType //3:内链  6:目录  7:外链  8:修改  9:删除
       ) {
       ) {
         case "3":
         case "3":
-          this.routerHandler(btnParams, btnType);
+          this.routerHandler(btnData, btnType);
           break;
           break;
         case "7":
         case "7":
-          this.routerHandler(btnParams, btnType);
+          this.routerHandler(btnData, btnType);
           break;
           break;
         case "8":
         case "8":
-          this.handleUpdate(row);
+          this.handleUpdate(row, btnData);
           break;
           break;
         case "9":
         case "9":
-          this.handleDelete(row);
+          this.handleDelete(row, btnData);
           break;
           break;
         default:
         default:
           break;
           break;
@@ -987,10 +1252,14 @@ export default {
 
 
     // k-form-build表单变化回调
     // k-form-build表单变化回调
     formChangeHandler(value, label) {
     formChangeHandler(value, label) {
-      console.log(value, label);
+      // console.log(value, label);
     },
     },
   },
   },
 };
 };
 </script>
 </script>
 
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+  ::v-deep .el-dialog:not(.is-fullscreen){
+    min-width: 610px !important;
+  }
+</style>

+ 27 - 9
ruoyi-ui/src/views/tablelist/components/cardCountPanel.vue

@@ -14,15 +14,20 @@
           :content="item.statisticTitle ? item.statisticTitle : item.statisticDescription"
           :content="item.statisticTitle ? item.statisticTitle : item.statisticDescription"
           placement="top-start"
           placement="top-start"
         >
         >
-          <div class="title">{{ item.statisticTitle ? item.statisticTitle : item.statisticDescription }}</div>
+          <div class="title">
+            <span class="left">{{ item.statisticTitle ? item.statisticTitle : item.statisticDescription }}</span>
+            <span class="right">{{ item.result }}</span>
+          </div>
         </el-tooltip>
         </el-tooltip>
 
 
-        <div class="type">
-          <div class="count">{{ item.result }}</div>
-        </div>
+        <!-- <div class="type">
+          <div class="count"></div>
+        </div> -->
       </el-card>
       </el-card>
     </div>
     </div>
   </div>
   </div>
+
+  
 </template>
 </template>
 
 
 <script>
 <script>
@@ -50,24 +55,37 @@ export default {
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .cardBox {
 .cardBox {
-  display: flex;
+  /* display: flex;
   align-content: space-between;
   align-content: space-between;
   flex-wrap: wrap;
   flex-wrap: wrap;
-  align-content: flex-start;
+  align-content: flex-start; */
+  display: flex;
 }
 }
 .card {
 .card {
-  /* width:15%; */
-  flex-basis: 15%;
+  width:100%;
+  /* flex-basis: 15%; */
   margin-bottom: 10px;
   margin-bottom: 10px;
   margin-right: 15px;
   margin-right: 15px;
-  min-width: 130px;
+  /* min-width: 130px; */
   .title {
   .title {
     /* width:20%; */
     /* width:20%; */
+    /* display: flex; */
+    /* align-content: space-between; */
     font-size: 18px;
     font-size: 18px;
     margin-bottom: 5px;
     margin-bottom: 5px;
     white-space: nowrap;
     white-space: nowrap;
     overflow: hidden;
     overflow: hidden;
     text-overflow: ellipsis;
     text-overflow: ellipsis;
+
+    .left{
+      float: left;
+    }
+
+    .right{
+      float: right;
+      font-size: 20px;
+      font-family: fantasy;
+    }
   }
   }
   .description {
   .description {
     width: 70%;
     width: 70%;