Przeglądaj źródła

拷机计划页面初步布局

zyz 3 lat temu
rodzic
commit
50f89e8777

+ 76 - 33
package-lock.json

@@ -9,6 +9,7 @@
       "version": "0.0.0",
       "dependencies": {
         "@vitejs/plugin-vue": "^2.3.1",
+        "array-to-tree": "^3.3.2",
         "axios": "^0.21.1",
         "element-plus": "^1.0.2-beta.52",
         "vite": "2.6.13",
@@ -402,7 +403,7 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz",
       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -439,6 +440,18 @@
         "sprintf-js": "~1.0.2"
       }
     },
+    "node_modules/array-to-tree": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/array-to-tree/-/array-to-tree-3.3.2.tgz",
+      "integrity": "sha512-EmWeZgl7Kkb9eeaBi9GZq4X4wyxpW2UC8YsmSShx1cX19n7H1R59CszyC5+nERYgpCQi9EBSDgCZ9fWUyXCHyQ==",
+      "dependencies": {
+        "lodash.keyby": "^4.6.0",
+        "nested-property": "^0.0.7"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/arrify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz",
@@ -537,7 +550,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8"
       }
@@ -562,7 +575,7 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "fill-range": "^7.0.1"
       },
@@ -645,7 +658,7 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -1274,7 +1287,7 @@
       "version": "7.0.1",
       "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "to-regex-range": "^5.0.1"
       },
@@ -1454,7 +1467,7 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -1661,7 +1674,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz",
       "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
-      "dev": true
+      "devOptional": true
     },
     "node_modules/imurmurhash": {
       "version": "0.1.4",
@@ -1725,7 +1738,7 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "binary-extensions": "^2.0.0"
       },
@@ -1754,7 +1767,7 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -1772,7 +1785,7 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -1790,7 +1803,7 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=0.12.0"
       }
@@ -1965,6 +1978,11 @@
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
+    "node_modules/lodash.keyby": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/lodash.keyby/-/lodash.keyby-4.6.0.tgz",
+      "integrity": "sha512-PRe4Cn20oJM2Sn6ljcZMeKgyhTHpzvzFmdsp9rK+6K0eJs6Tws0MqgGFpfX/o2HjcoQcBny1Eik9W7BnVTzjIQ=="
+    },
     "node_modules/lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -2251,6 +2269,11 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
+    "node_modules/nested-property": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/nested-property/-/nested-property-0.0.7.tgz",
+      "integrity": "sha512-XamePAu09Y95kcimkF+CXDf69Iov+qaM+GyXCw5Ysoa8Q5r7RgehRn99bkxyYHpXs3ZcZdm7QyjRV52nYpNw5Q=="
+    },
     "node_modules/node-gyp": {
       "version": "8.4.1",
       "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-8.4.1.tgz",
@@ -2386,7 +2409,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -2551,7 +2574,7 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8.6"
       }
@@ -2789,7 +2812,7 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "picomatch": "^2.2.1"
       },
@@ -2929,7 +2952,7 @@
       "version": "1.52.0",
       "resolved": "https://registry.npmmirror.com/sass/-/sass-1.52.0.tgz",
       "integrity": "sha512-6EnTglag2oVD8sNJCxUi2Jd3ICH9tJ5Mqudt/gIZNBR2uKJUBZuTpW9O1t04SkDLP7VFa76FCWTV2rwchqM8Kw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "chokidar": ">=3.0.0 <4.0.0",
         "immutable": "^4.0.0",
@@ -3322,7 +3345,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "is-number": "^7.0.0"
       },
@@ -3926,7 +3949,8 @@
     "@vitejs/plugin-vue": {
       "version": "2.3.3",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
-      "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw=="
+      "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+      "requires": {}
     },
     "@vue/compiler-core": {
       "version": "3.2.34",
@@ -4099,7 +4123,7 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz",
       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -4130,6 +4154,15 @@
         "sprintf-js": "~1.0.2"
       }
     },
+    "array-to-tree": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/array-to-tree/-/array-to-tree-3.3.2.tgz",
+      "integrity": "sha512-EmWeZgl7Kkb9eeaBi9GZq4X4wyxpW2UC8YsmSShx1cX19n7H1R59CszyC5+nERYgpCQi9EBSDgCZ9fWUyXCHyQ==",
+      "requires": {
+        "lodash.keyby": "^4.6.0",
+        "nested-property": "^0.0.7"
+      }
+    },
     "arrify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz",
@@ -4213,7 +4246,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true
+      "devOptional": true
     },
     "bluebird": {
       "version": "3.7.2",
@@ -4235,7 +4268,7 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "fill-range": "^7.0.1"
       }
@@ -4303,7 +4336,7 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -4747,7 +4780,7 @@
       "version": "7.0.1",
       "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "to-regex-range": "^5.0.1"
       }
@@ -4881,7 +4914,7 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "is-glob": "^4.0.1"
       }
@@ -5046,7 +5079,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz",
       "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
-      "dev": true
+      "devOptional": true
     },
     "imurmurhash": {
       "version": "0.1.4",
@@ -5104,7 +5137,7 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "binary-extensions": "^2.0.0"
       }
@@ -5127,7 +5160,7 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true
+      "devOptional": true
     },
     "is-fullwidth-code-point": {
       "version": "3.0.0",
@@ -5139,7 +5172,7 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "is-extglob": "^2.1.1"
       }
@@ -5154,7 +5187,7 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
+      "devOptional": true
     },
     "is-plain-obj": {
       "version": "1.1.0",
@@ -5302,6 +5335,11 @@
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
+    "lodash.keyby": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/lodash.keyby/-/lodash.keyby-4.6.0.tgz",
+      "integrity": "sha512-PRe4Cn20oJM2Sn6ljcZMeKgyhTHpzvzFmdsp9rK+6K0eJs6Tws0MqgGFpfX/o2HjcoQcBny1Eik9W7BnVTzjIQ=="
+    },
     "lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -5523,6 +5561,11 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
+    "nested-property": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/nested-property/-/nested-property-0.0.7.tgz",
+      "integrity": "sha512-XamePAu09Y95kcimkF+CXDf69Iov+qaM+GyXCw5Ysoa8Q5r7RgehRn99bkxyYHpXs3ZcZdm7QyjRV52nYpNw5Q=="
+    },
     "node-gyp": {
       "version": "8.4.1",
       "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-8.4.1.tgz",
@@ -5629,7 +5672,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
+      "devOptional": true
     },
     "normalize-wheel": {
       "version": "1.0.1",
@@ -5758,7 +5801,7 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true
+      "devOptional": true
     },
     "postcss": {
       "version": "8.4.14",
@@ -5949,7 +5992,7 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "picomatch": "^2.2.1"
       }
@@ -6058,7 +6101,7 @@
       "version": "1.52.0",
       "resolved": "https://registry.npmmirror.com/sass/-/sass-1.52.0.tgz",
       "integrity": "sha512-6EnTglag2oVD8sNJCxUi2Jd3ICH9tJ5Mqudt/gIZNBR2uKJUBZuTpW9O1t04SkDLP7VFa76FCWTV2rwchqM8Kw==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "chokidar": ">=3.0.0 <4.0.0",
         "immutable": "^4.0.0",
@@ -6358,7 +6401,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "is-number": "^7.0.0"
       }

+ 51 - 0
src/api/qualitymanagement/tcheck/index.ts

@@ -0,0 +1,51 @@
+import { TCheckModel,TCheckQueryParam } from '@/types'
+import request from '@/until/request'
+
+/**
+ * 获取拷机业务列表
+ * @param data TCheckQueryParam
+ */
+const QueryTCheckList = (data: TCheckQueryParam) =>
+    request({
+        url: '/TCheckAction/list/' + data.pageNum + '/' + data.pageSize,
+        method: 'get'
+    })
+
+/**
+* 新增拷机业务
+* @param data TCheckModel
+*/
+const AddTCheck = (data: TCheckModel) =>
+    request({
+        url: '/TCheckAction/saveTCheck',
+        method: 'post',
+        data: data
+    })
+
+/**
+* 编辑拷机业务
+* @param data TCheckModel
+*/
+const EditTCheck = (data: TCheckModel) =>
+    request({
+        url: '/TCheckAction/updateTCheck',
+        method: 'post',
+        data: data
+    })
+
+/**
+* 删除拷机业务
+* @param  id number
+*/
+const DeleteTCheck = (id: number) =>
+    request({
+        url: '/TCheckAction/deleteTCheck/' + id,
+        method: 'get',
+    })
+
+export default {
+    QueryTCheckList,
+    AddTCheck,
+    EditTCheck,
+    DeleteTCheck
+}

+ 51 - 0
src/api/qualitymanagement/tcheckdetail/index.ts

@@ -0,0 +1,51 @@
+import { TCheckDetailModel,TCheckDetailQueryParam } from '@/types'
+import request from '@/until/request'
+
+/**
+ * 获取拷机业务明细列表
+ * @param data TCheckQueryParam
+ */
+const QueryTCheckDetailList = (data: TCheckDetailQueryParam) =>
+    request({
+        url: '/TCheckDetailAction/list/' + data.pageNum + '/' + data.pageSize,
+        method: 'get'
+    })
+
+/**
+* 新增拷机业务明细
+* @param data TCheckDetailModel
+*/
+const AddTCheckDetail = (data: TCheckDetailModel) =>
+    request({
+        url: '/TCheckDetailAction/saveTCheckDetail',
+        method: 'post',
+        data: data
+    })
+
+/**
+* 编辑拷机业务明细
+* @param data TCheckDetailModel
+*/
+const EditTCheckDetail = (data: TCheckDetailModel) =>
+    request({
+        url: '/TCheckDetailAction/updateTCheckDetail',
+        method: 'post',
+        data: data
+    })
+
+/**
+* 删除拷机业务明细
+* @param  id number
+*/
+const DeleteTCheckDetail = (id: number) =>
+    request({
+        url: '/TCheckDetailAction/deleteTCheckDetail/' + id,
+        method: 'get',
+    })
+
+export default {
+    QueryTCheckDetailList,
+    AddTCheckDetail,
+    EditTCheckDetail,
+    DeleteTCheckDetail
+}

+ 2 - 0
src/types/api/qualitymanagement/index.ts

@@ -0,0 +1,2 @@
+export * from './tcheck';
+export * from './tcheckdetail';

+ 30 - 0
src/types/api/qualitymanagement/tcheck/index.ts

@@ -0,0 +1,30 @@
+import { PageQueryParam } from '@/types/api/base';
+
+/**
+ * 考级业务查询查询声明
+ */
+export interface TCheckQueryParam extends PageQueryParam {
+    id?: string;
+    checkName?: string;
+}
+
+/**
+* 拷机业务声明
+*/
+export interface TCheckModel {
+    id: number,
+    checkId: string,
+    checkName: string,
+    startTime: string,
+    endTime: string,
+    cehckDays: number,
+    checkIntverl: number,
+    checkDeviceNum: number,
+    createMan: string,
+    createTime: string,
+    chkrptId: string,
+    earlyFlag: string,
+    earlyMan: string,
+    earlyTime: string,
+    earlyBecause: string,
+}

+ 35 - 0
src/types/api/qualitymanagement/tcheckdetail/index.ts

@@ -0,0 +1,35 @@
+import { PageQueryParam } from '@/types/api/base';
+
+/**
+ * 考级业务查询查询声明
+ */
+ export interface TCheckDetailQueryParam extends PageQueryParam{
+    id?: string;
+}
+
+/**
+* 拷机业务声明
+*/
+export interface TCheckDetailModel {
+    id : number, 
+    detailId : string, 
+    checkId : string, 
+    deviceSn : string, 
+    startTime : string, 
+    endTime : string, 
+    cehckDays : number, 
+    checkIntverl : number, 
+    chkpaltId : number, 
+    cellId : number, 
+    cellStaticFlag : string, 
+    stdValue : number, 
+    stationCode : string, 
+    revAllNum : number, 
+    mustRevNum : number, 
+    realRevNum : number, 
+    nextRevTime : string, 
+    earlyFlag : string, 
+    earlyMan : string, 
+    earlyTime : string, 
+    earlyBecause : string, 
+}

+ 1 - 0
src/types/index.ts

@@ -2,5 +2,6 @@ export * from './api/deviceacc';
 export * from './api/usermanagement';
 export * from './api/systemdictionary';
 export * from './api/station'
+export * from './api/qualitymanagement'
 export * from './api/base';
 export * from './common';

+ 166 - 208
src/views/qualitymanagement/tcheck/index.vue

@@ -1,207 +1,149 @@
 <template>
   <div class="title">
+    <el-row>
+      <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+        <el-form-item label="拷机计划">
+          <el-input v-model="queryParams.checkName" placeholder="拷机计划名称" width="120px" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" class="button" :disabled="state.search_disabled" @click="queryList">
+            查询计划
+          </el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" class="button" @click="handleAdd">新增计划</el-button>
+        </el-form-item>
+      </el-form>
+    </el-row>
     <el-row :gutter="20">
-      <!-- 分组 -->
-      <el-col :span="6" :xs="24">
-        <el-card class="box-card">
-          <template #header>
-            <svg-icon color="#333" icon-class="education" />
-            <el-row :gutter="20">
-              <el-col :span="8" align="center" style="text-align: center;">
-                <span>拷机计划</span>
-              </el-col>
-              <el-col :span="1" :offset="13">
-                <span>⋮⋮</span>
-              </el-col>
-            </el-row>
-
-          </template>
-          <ul v-infinite-scroll="load" class="infinite-list" style="overflow: auto">
-            <el-space wrap fill="true">
-              <el-card v-for="i in count" :key="i" shadow="hover" style="width: auto;margin-right: 15px;">
-                <el-row :gutter="20">
-                  <el-col :span="8" align="center" style="text-align: center;">
-                    <span>拷机计划</span>
-                  </el-col>
-                  <el-col :span="1" :offset="13">
-                    <span>⋮⋮</span>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8" align="center" style="text-align: center;">
-                    <span>详情1</span>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8" align="center" style="text-align: center;">
-                    <span>详情1</span>
-                  </el-col>
-                </el-row>
-              </el-card>
-            </el-space>
-          </ul>
-        </el-card>
+      <el-col :span="12">
+        <el-table v-loading="loading" :data="state.tableData" border stripe style="width: 100%" :height="tableHeight"
+          highlight-current-row @current-change="handleCurrentRowChange"
+          :header-cell-style="{ background: '#606266', color: '#FFFFFF' }">
+          <el-table-column fixed type="index" width="50" align="center" />
+          <el-table-column fixed prop="checkName" label="计划名称" header-align="center" width="120" />
+          <el-table-column label="计划时间" header-align="center" width="100" />
+          <el-table-column label="计划参数" header-align="center" min-width="100" />
+          <el-table-column prop="createMan" label="创建人" header-align="center" width="140" />
+          <el-table-column label="状态" header-align="center" width="90" />
+
+          <el-table-column fixed="right" label="" align="left" width="150">
+            <template #default="scope">
+              <el-button type="text">合格证</el-button>
+              <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+              <el-button type="text" @click="submitDeleteForm(scope.row)">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-config-provider :locale="locale">
+          <el-pagination v-model:currentPage="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
+            :page-sizes="[10, 15, 20, 25, 100]" :small="state.small" :disabled="state.disabled"
+            :background="state.background" layout="total, sizes, prev, pager, next, jumper" :total="state.total"
+            style="text-align: center; margin-top: 10px; height: 30px" @size-change="handleSizeChange"
+            @current-change="handleCurrentChange" />
+        </el-config-provider>
       </el-col>
-      <!-- 拷机设备 -->
-      <el-col :span="18" :xs="24">
-        <el-card class="box-card">
-          <template #header>
-            <svg-icon color="#333" icon-class="education" />
-            拷机设备信息
-          </template>
+      <el-col :span="12">
+        <el-row>
+          <el-table v-loading="loading" :data="state.tableData" border stripe style="width: 100%;" :height="300"
+            highlight-current-row @current-change="handleCurrentRowChange"
+            :header-cell-style="{ background: '#606266', color: '#FFFFFF' }">
+            <el-table-column fixed type="index" width="50" align="center" />
+            <el-table-column fixed prop="deviceSn" label="设备SN" header-align="center" width="120" />
+            <el-table-column label="工装" header-align="center" width="100" />
+            <el-table-column label="工位" header-align="center" min-width="100" />
+            <el-table-column prop="createMan" label="读数" header-align="center" width="140" />
+            <el-table-column label="状态" header-align="center" width="90" />
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-table v-loading="loading" :data="state.tableData" border stripe style="width: 100%" highlight-current-row
+            @current-change="handleCurrentRowChange" :header-cell-style="{ background: '#606266', color: '#FFFFFF' }">
+            <el-table-column fixed type="index" width="50" align="center" />
+            <el-table-column fixed prop="deviceSn" label="设备SN" header-align="center" width="120" />
+            <el-table-column label="最新读书" header-align="center" width="100" />
+            <el-table-column label="最新" header-align="center" min-width="100" />
+            <el-table-column prop="createMan" label="创建人" header-align="center" width="140" />
+            <el-table-column label="状态" header-align="center" width="90" />
+          </el-table>
 
           <el-config-provider :locale="locale">
             <el-pagination v-model:currentPage="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
               :page-sizes="[10, 15, 20, 25, 100]" :small="state.small" :disabled="state.disabled"
               :background="state.background" layout="total, sizes, prev, pager, next, jumper" :total="state.total"
-              style="text-align: center; margin-top: 20px;height: 30px;" @size-change="handleSizeChange"
+              style="text-align: center; margin-top: 10px; height: 30px" @size-change="handleSizeChange"
               @current-change="handleCurrentChange" />
           </el-config-provider>
-        </el-card>
+        </el-row>
       </el-col>
     </el-row>
-
-    <el-form ref="queryFormRef" :model="queryParams" :inline="true">
-      <el-form-item label="计划名称">
-        <el-input v-model="queryParams.userName" placeholder="计划名称" width="120px" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" class="button" @click="queryList">查询计划</el-button>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" class="button" @click="handleAdd">新增计划</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-table v-loading="loading" :data="state.tableData" border stripe style="width: 100%" :height="tableHeight"
-      highlight-current-row @current-change="handleCurrentRowChange"
-      :header-cell-style="{ background: '#606266', color: '#FFFFFF' }">
-      <el-table-column fixed type="index" width="50" align="center" />
-      <el-table-column fixed prop="userName" label="计划名称" header-align="center" width="120" />
-      <el-table-column prop="loginId" label="开始时间" header-align="center" width="120" />
-      <el-table-column prop="loginPwd" label="结束时间" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="拷机天数" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="数据间隔时间" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="拷机数量" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="创建人" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="创建时间" header-align="center" width="120" />
-      <el-table-column prop="roleName" label="计划状态" header-align="center" width="120" />
-      <el-table-column fit prop="roleName" label="备注" header-align="center" min-width="120" />
-      <el-table-column fixed="right" label="" align="left" width="150">
-        <template #default="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
-          <el-button type="text" @click="submitDeleteForm(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <el-config-provider :locale="locale">
-      <el-pagination v-model:currentPage="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
-        :page-sizes="[10, 15, 20, 25, 100]" :small="state.small" :disabled="state.disabled"
-        :background="state.background" layout="total, sizes, prev, pager, next, jumper" :total="state.total"
-        style="text-align: center;margin-top: 10px;" @size-change="handleSizeChange"
-        @current-change="handleCurrentChange" />
-    </el-config-provider>
-
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="450px" draggable center>
-      <el-form ref="dataFormRef" :model="formData" label-width="100px">
-        <el-form-item label="用户名称:">
-          <el-input v-model="formData.userName" placeholder="用户名称" width="120px" />
-        </el-form-item>
-        <el-form-item label="登录ID:">
-          <el-input v-model="formData.loginId" placeholder="登录ID" width="120px" />
-        </el-form-item>
-        <el-form-item label="登录密码:">
-          <el-input v-model="formData.loginPwd" placeholder="登录密码" width="120px" />
-        </el-form-item>
-        <el-form-item label="所属角色:">
-          <el-select v-model="formData.roleId" class="filter-item" placeholder="所属角色" width="150px">
-            <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="管理员:">
-          <el-switch v-model="formData.adminFlag" inline-prompt="true" active-value="1" inactive-value="0" />
-        </el-form-item>
-        <el-form-item label="在用状态:">
-          <el-switch v-model="formData.useFlag" inline-prompt="true" active-value="1" inactive-value="0" />
-        </el-form-item>
-        <el-form-item label="备注:">
-          <el-input v-model="formData.userMemo" type="textarea" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="cancel()">取消</el-button>
-          <el-button type="primary" @click="submitForm">确定</el-button>
-        </span>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script lang="ts" setup>
 import { reactive, toRefs, toRef, ref, onMounted } from "vue";
-import { ElForm, ElMessage, ElMessageBox } from 'element-plus';
-import FacUserAction from "@/api/usermanagement/facuser";
-import FacUserRoleAction from "@/api/usermanagement/facuserrole";
-import { FacUserQueryParam, FacUser, FacUserRole, Dialog, PageResult } from '@/types';
+import { ElForm, ElMessage, ElMessageBox } from "element-plus";
+import TCheckAction from "@/api/qualitymanagement/tcheck";
 
-import zhCn from 'element-plus/lib/locale/lang/zh-cn';
+import {
+  TCheckQueryParam,
+  TCheckModel,
+  FacUserRole,
+  Dialog,
+  PageResult
+} from "@/types";
 
+import zhCn from "element-plus/lib/locale/lang/zh-cn";
 
-const count = ref(0)
+const count = ref(0);
 const load = () => {
-  count.value += 2
-}
+  count.value += 2;
+};
 
-let locale = ref(zhCn)
+let locale = ref(zhCn);
 
 const queryFormRef = ref(ElForm); // 属性名必须和元素的ref属性值一致
 const dataFormRef = ref(ElForm); // 属性名必须和元素的ref属性值一致
 
 const RoleStateMap = {
-  0: '停用',
-  1: '使用中',
+  0: "停用",
+  1: "使用中",
 };
 
-const loading = ref(false)
+const loading = ref(false);
 
 const state = reactive({
+  search_disabled: false,
   currentType: 0,
-  queryParams: { pageNum: 1, pageSize: 10 } as FacUserQueryParam,
+  queryParams: { pageNum: 1, pageSize: 10 } as TCheckQueryParam,
   total: 0,
   small: false,
   background: false,
   disabled: false,
   dialog: {} as Dialog,
-  formData: {} as FacUser,
+  formData: {} as TCheckModel,
   RoleStateMap,
-  tableData: [] as FacUser[],
-  roleData: [] as FacUserRole[]
+  tableData: [] as TCheckModel[],
+  roleData: [] as FacUserRole[],
 });
 
-const {
-  queryParams,
-  dialog,
-  formData,
-  tableData,
-  roleData
-} = toRefs(state);
+const { queryParams, dialog, formData, tableData, roleData } = toRefs(state);
 
-const tableHeight = ref(document.documentElement.clientHeight - 250);
-const currentRow = ref()
+const tableHeight = ref(document.documentElement.clientHeight - 275);
+const currentRow = ref();
 
-const handleCurrentRowChange = (val: FacUser | undefined) => {
-  currentRow.value = val
-}
+const handleCurrentRowChange = (val: TCheckModel | undefined) => {
+  currentRow.value = val;
+};
 
 async function handleAdd() {
   await queryRoleList();
   state.currentType = 0;
-  state.formData = {} as FacUser;
+  state.formData = {} as TCheckModel;
   state.dialog = {
-    title: '新增用户',
-    visible: true
+    title: "新增用户",
+    visible: true,
   };
 }
 
@@ -210,8 +152,8 @@ async function handleEdit(row: any) {
   state.currentType = 1;
   state.formData = row;
   state.dialog = {
-    title: '编辑用户',
-    visible: true
+    title: "编辑用户",
+    visible: true,
   };
 }
 
@@ -227,35 +169,36 @@ const handleCurrentChange = (val: number) => {
 
 const queryList = () => {
   loading.value = true;
-  FacUserAction.QueryUserList(queryParams.value.pageNum, queryParams.value.pageSize).then(result => {
-    if (result.status === 200) {
-      const { res, flag, errot } = result.data;
-      if (flag != undefined && flag == 1) {
-        const pageData = res as PageResult<FacUser[]>;
-        state.tableData = pageData.list;
-        state.total = pageData.total;
+  TCheckAction.QueryTCheckList(state.queryParams)
+    .then((result) => {
+      if (result.status === 200) {
+        const { res, flag, errot } = result.data;
+        if (flag != undefined && flag == 1) {
+          const pageData = res as PageResult<TCheckModel[]>;
+          state.tableData = pageData.list;
+          state.total = pageData.total;
+        } else {
+        }
       }
-      else { }
-    }
-  }).catch(error => {
-    //请求失败时的操作     
-    console.log(error);
-  })
+    })
+    .catch((error) => {
+      //请求失败时的操作
+      console.log(error);
+    });
   loading.value = false;
 };
 
 const submitForm = () => {
   if (state.currentType == 0) {
     state.formData.createMan = "admin";
-    FacUserAction.AddFacUser(state.formData).then(result => {
-      ElMessage.success('新增成功');
+    FacUserAction.AddFacUser(state.formData).then((result) => {
+      ElMessage.success("新增成功");
       cancel();
       queryList();
     });
-  }
-  else {
-    FacUserAction.EditFacUser(state.formData).then(result => {
-      ElMessage.success('编辑成功');
+  } else {
+    FacUserAction.EditFacUser(state.formData).then((result) => {
+      ElMessage.success("编辑成功");
       cancel();
       queryList();
     });
@@ -263,58 +206,56 @@ const submitForm = () => {
 };
 
 const submitDeleteForm = (row: any) => {
-  ElMessageBox.confirm(
-    ' 是否删除用户[' + row.userName + ']? ',
-    '提示',
-    {
-      cancelButtonText: '取消',
-      confirmButtonText: '确认',
-      type: 'warning',
-      center: true,
-    }
-  )
+  ElMessageBox.confirm(" 是否删除用户[" + row.userName + "]? ", "提示", {
+    cancelButtonText: "取消",
+    confirmButtonText: "确认",
+    type: "warning",
+    center: true,
+  })
     .then(() => {
-      FacUserAction.DeleteFacUser(row.id).then(result => {
-        ElMessage.success('删除成功');
+      FacUserAction.DeleteFacUser(row.id).then((result) => {
+        ElMessage.success("删除成功");
         queryList();
       });
     })
     .catch(() => {
       ElMessage({
-        type: 'info',
-        message: '取消删除成功!',
-      })
-    })
+        type: "info",
+        message: "取消删除成功!",
+      });
+    });
 };
 
 const cancel = () => {
   dataFormRef.value.resetFields();
   state.formData = {} as FacUser;
   state.dialog.visible = false;
-}
+};
 
 const queryRoleList = () => {
-  FacUserRoleAction.QueryRoleList().then(result => {
-    if (result.status === 200) {
-      const { res, flag, errot } = result.data;
-      if (flag != undefined && flag == 1) {
-        state.roleData = res as FacUserRole[];
+  FacUserRoleAction.QueryRoleList()
+    .then((result) => {
+      if (result.status === 200) {
+        const { res, flag, errot } = result.data;
+        if (flag != undefined && flag == 1) {
+          state.roleData = res as FacUserRole[];
+        } else {
+        }
       }
-      else { }
-    }
-  }).catch(error => {
-    //请求失败时的操作     
-    console.log(error);
-  })
+    })
+    .catch((error) => {
+      //请求失败时的操作
+      console.log(error);
+    });
 };
 
 onMounted(() => {
   window.onresize = function () {
-    tableHeight.value = document.documentElement.clientHeight - 250
-  }
+    tableHeight.value = document.documentElement.clientHeight - 275;
+  };
 
   queryList();
-})
+});
 </script>
 
 <style lang="scss" scoped>
@@ -346,4 +287,21 @@ onMounted(() => {
 .infinite-list .infinite-list-item+.list-item {
   margin-top: 10px;
 }
+
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.grid-content {
+  border-radius: 4px;
+  min-height: 36px;
+}
 </style>