zhangqi 1 سال پیش
والد
کامیت
567cd33a42
35فایلهای تغییر یافته به همراه2075 افزوده شده و 395 حذف شده
  1. 5 0
      .idea/.gitignore
  2. 12 0
      .idea/cucuAgentYos.iml
  3. 8 0
      .idea/modules.xml
  4. 6 0
      .idea/vcs.xml
  5. 142 0
      node_modules/.package-lock.json
  6. 1 1
      node_modules/.vite/deps/@ant-design_icons-vue.js
  7. 58 52
      node_modules/.vite/deps/_metadata.json
  8. 13 13
      node_modules/.vite/deps/ant-design-vue.js
  9. 0 161
      node_modules/.vite/deps/chunk-5OBJFL24.js
  10. 0 3
      node_modules/.vite/deps/chunk-5OBJFL24.js.map
  11. 0 48
      node_modules/.vite/deps/chunk-BCNMYODF.js
  12. 0 7
      node_modules/.vite/deps/chunk-BCNMYODF.js.map
  13. 0 20
      node_modules/.vite/deps/chunk-KBUAZBQ3.js
  14. 0 7
      node_modules/.vite/deps/chunk-KBUAZBQ3.js.map
  15. 0 52
      node_modules/.vite/deps/chunk-WNF2IDJY.js
  16. 0 7
      node_modules/.vite/deps/chunk-WNF2IDJY.js.map
  17. 272 0
      package-lock.json
  18. 2 0
      package.json
  19. 133 0
      src/DRP/SDrpManagement/payOrders/detail/index.vue
  20. 74 0
      src/DRP/SDrpManagement/payOrders/index.vue
  21. 408 0
      src/DRP/SDrpManagement/payOrders/modules/add.vue
  22. 210 0
      src/DRP/SDrpManagement/payOrders/modules/payment.vue
  23. 56 13
      src/components/layout/header.vue
  24. 281 0
      src/components/layout/headerCopy.vue
  25. 4 3
      src/components/listTemplate/index.vue
  26. 20 5
      src/components/webSocket/index.vue
  27. 4 0
      src/main.js
  28. 28 0
      src/router/SDrpManagement.js
  29. 1 1
      src/router/index.js
  30. 106 0
      src/template/payOrderTable/index.vue
  31. 67 0
      src/template/payOrderTable/indexCopy.vue
  32. 33 0
      src/template/payOrderTable/noAccess.vue
  33. 103 0
      src/template/payOrderTable/tableTemp.vue
  34. 25 0
      src/utils/utils.js
  35. 3 2
      vite.config.js

+ 5 - 0
.idea/.gitignore

@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 12 - 0
.idea/cucuAgentYos.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/cucuAgentYos.iml" filepath="$PROJECT_DIR$/.idea/cucuAgentYos.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 142 - 0
node_modules/.package-lock.json

@@ -595,6 +595,19 @@
         "proxy-from-env": "^1.1.0"
       }
     },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/browserslist": {
       "version": "4.21.5",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
@@ -742,6 +755,17 @@
       "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
     },
+    "node_modules/decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "dependencies": {
+        "mimic-response": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -972,6 +996,11 @@
         "url": "https://www.patreon.com/infusion"
       }
     },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+    },
     "node_modules/fsevents": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -992,6 +1021,21 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
     },
+    "node_modules/glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
@@ -1051,6 +1095,20 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
     "node_modules/is-core-module": {
       "version": "2.11.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@@ -1096,6 +1154,11 @@
         "node": ">= 10.13.0"
       }
     },
+    "node_modules/js-binary-schema-parser": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
+      "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg=="
+    },
     "node_modules/js-md5": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
@@ -1286,6 +1349,25 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/mimic-response": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/ms": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -1339,6 +1421,19 @@
       "dev": true,
       "peer": true
     },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/parenthesis": {
+      "version": "3.1.8",
+      "resolved": "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz",
+      "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw=="
+    },
     "node_modules/parse-node-version": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -1504,6 +1599,14 @@
         "node": ">=6"
       }
     },
+    "node_modules/qrcode.vue": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.4.1.tgz",
+      "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==",
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -1646,6 +1749,21 @@
       "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
       "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
     },
+    "node_modules/simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+    },
+    "node_modules/simple-get": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
+      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+      "dependencies": {
+        "decompress-response": "^6.0.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
     "node_modules/source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -1679,6 +1797,14 @@
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
       "deprecated": "Please use @jridgewell/sourcemap-codec instead"
     },
+    "node_modules/string-split-by": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
+      "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
+      "dependencies": {
+        "parenthesis": "^3.1.5"
+      }
+    },
     "node_modules/supports-color": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -1891,6 +2017,17 @@
         "@vue/shared": "3.2.47"
       }
     },
+    "node_modules/vue-qr": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",
+      "integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==",
+      "dependencies": {
+        "glob": "^8.0.1",
+        "js-binary-schema-parser": "^2.0.2",
+        "simple-get": "^4.0.1",
+        "string-split-by": "^1.0.0"
+      }
+    },
     "node_modules/vue-router": {
       "version": "4.1.6",
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
@@ -1998,6 +2135,11 @@
       "engines": {
         "node": ">=10.13.0"
       }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     }
   }
 }

+ 1 - 1
node_modules/.vite/deps/@ant-design_icons-vue.js

@@ -57,7 +57,7 @@ import {
   svgBaseProps,
   useInsertStyles,
   warning
-} from "./chunk-BOZTDRRV.js";
+} from "./chunk-HUU76VBX.js";
 import {
   createVNode
 } from "./chunk-3NMN3MUW.js";

+ 58 - 52
node_modules/.vite/deps/_metadata.json

@@ -1,98 +1,98 @@
 {
-  "hash": "411cf59d",
-  "browserHash": "ffb10d64",
+  "hash": "301720d8",
+  "browserHash": "3abbfc45",
   "optimized": {
-    "@ant-design/icons-vue": {
-      "src": "../../@ant-design/icons-vue/es/index.js",
-      "file": "@ant-design_icons-vue.js",
-      "fileHash": "4c094c7c",
+    "vue": {
+      "src": "../../vue/dist/vue.runtime.esm-bundler.js",
+      "file": "vue.js",
+      "fileHash": "18c17cbb",
       "needsInterop": false
     },
     "ant-design-vue": {
       "src": "../../ant-design-vue/es/index.js",
       "file": "ant-design-vue.js",
-      "fileHash": "35876484",
-      "needsInterop": false
-    },
-    "ant-design-vue/es/locale/zh_CN": {
-      "src": "../../ant-design-vue/es/locale/zh_CN.js",
-      "file": "ant-design-vue_es_locale_zh_CN.js",
-      "fileHash": "9987b6b9",
+      "fileHash": "929c27b4",
       "needsInterop": false
     },
     "axios": {
       "src": "../../axios/index.js",
       "file": "axios.js",
-      "fileHash": "d89e1b78",
+      "fileHash": "dd624abc",
+      "needsInterop": false
+    },
+    "vue-router": {
+      "src": "../../vue-router/dist/vue-router.mjs",
+      "file": "vue-router.js",
+      "fileHash": "d781e352",
+      "needsInterop": false
+    },
+    "ant-design-vue/es/locale/zh_CN": {
+      "src": "../../ant-design-vue/es/locale/zh_CN.js",
+      "file": "ant-design-vue_es_locale_zh_CN.js",
+      "fileHash": "fac8aed7",
       "needsInterop": false
     },
     "dayjs": {
       "src": "../../dayjs/dayjs.min.js",
       "file": "dayjs.js",
-      "fileHash": "dd25039b",
+      "fileHash": "ff2d339c",
       "needsInterop": true
     },
     "dayjs/locale/zh-cn": {
       "src": "../../dayjs/locale/zh-cn.js",
       "file": "dayjs_locale_zh-cn.js",
-      "fileHash": "08c116f0",
-      "needsInterop": true
-    },
-    "js-md5": {
-      "src": "../../js-md5/src/md5.js",
-      "file": "js-md5.js",
-      "fileHash": "f363b0ad",
-      "needsInterop": true
-    },
-    "less": {
-      "src": "../../less/dist/less.js",
-      "file": "less.js",
-      "fileHash": "3504b69d",
+      "fileHash": "c806ad5f",
       "needsInterop": true
     },
-    "mathjs": {
-      "src": "../../mathjs/lib/esm/index.js",
-      "file": "mathjs.js",
-      "fileHash": "0dab879b",
-      "needsInterop": false
-    },
     "pinia": {
       "src": "../../pinia/dist/pinia.mjs",
       "file": "pinia.js",
-      "fileHash": "7d32f630",
+      "fileHash": "899103b1",
       "needsInterop": false
     },
     "pinia-plugin-persist": {
       "src": "../../pinia-plugin-persist/dist/pinia-persist.es.js",
       "file": "pinia-plugin-persist.js",
-      "fileHash": "b29178cd",
+      "fileHash": "e1042de9",
       "needsInterop": false
     },
-    "vue": {
-      "src": "../../vue/dist/vue.runtime.esm-bundler.js",
-      "file": "vue.js",
-      "fileHash": "beff9a9d",
+    "mathjs": {
+      "src": "../../mathjs/lib/esm/index.js",
+      "file": "mathjs.js",
+      "fileHash": "e6af1a23",
       "needsInterop": false
     },
-    "vue-router": {
-      "src": "../../vue-router/dist/vue-router.mjs",
-      "file": "vue-router.js",
-      "fileHash": "df4dbfba",
+    "js-md5": {
+      "src": "../../js-md5/src/md5.js",
+      "file": "js-md5.js",
+      "fileHash": "158203fc",
+      "needsInterop": true
+    },
+    "less": {
+      "src": "../../less/dist/less.js",
+      "file": "less.js",
+      "fileHash": "65e2ff47",
+      "needsInterop": true
+    },
+    "@ant-design/icons-vue": {
+      "src": "../../@ant-design/icons-vue/es/index.js",
+      "file": "@ant-design_icons-vue.js",
+      "fileHash": "fe1ed01c",
+      "needsInterop": false
+    },
+    "qrcode.vue": {
+      "src": "../../qrcode.vue/dist/qrcode.vue.esm.js",
+      "file": "qrcode__vue.js",
+      "fileHash": "db37d4e7",
       "needsInterop": false
     }
   },
   "chunks": {
-    "chunk-5OBJFL24": {
-      "file": "chunk-5OBJFL24.js"
-    },
     "chunk-KBUAZBQ3": {
       "file": "chunk-KBUAZBQ3.js"
     },
-    "chunk-BOZTDRRV": {
-      "file": "chunk-BOZTDRRV.js"
-    },
-    "chunk-3NMN3MUW": {
-      "file": "chunk-3NMN3MUW.js"
+    "chunk-HUU76VBX": {
+      "file": "chunk-HUU76VBX.js"
     },
     "chunk-BCNMYODF": {
       "file": "chunk-BCNMYODF.js"
@@ -103,6 +103,12 @@
     "chunk-XMOLR7NX": {
       "file": "chunk-XMOLR7NX.js"
     },
+    "chunk-5OBJFL24": {
+      "file": "chunk-5OBJFL24.js"
+    },
+    "chunk-3NMN3MUW": {
+      "file": "chunk-3NMN3MUW.js"
+    },
     "chunk-4EOJPDL2": {
       "file": "chunk-4EOJPDL2.js"
     }

+ 13 - 13
node_modules/.vite/deps/ant-design-vue.js

@@ -57,7 +57,19 @@ import {
   ZoomOutOutlined_default,
   generate,
   presetPrimaryColors
-} from "./chunk-BOZTDRRV.js";
+} from "./chunk-HUU76VBX.js";
+import {
+  _objectSpread2,
+  zh_CN_default
+} from "./chunk-BCNMYODF.js";
+import {
+  _defineProperty,
+  _toPropertyKey,
+  _typeof
+} from "./chunk-WNF2IDJY.js";
+import {
+  require_dayjs_min
+} from "./chunk-XMOLR7NX.js";
 import {
   Comment,
   Fragment,
@@ -105,18 +117,6 @@ import {
   withDirectives,
   withModifiers
 } from "./chunk-3NMN3MUW.js";
-import {
-  _objectSpread2,
-  zh_CN_default
-} from "./chunk-BCNMYODF.js";
-import {
-  _defineProperty,
-  _toPropertyKey,
-  _typeof
-} from "./chunk-WNF2IDJY.js";
-import {
-  require_dayjs_min
-} from "./chunk-XMOLR7NX.js";
 import {
   __commonJS,
   __export,

+ 0 - 161
node_modules/.vite/deps/chunk-5OBJFL24.js

@@ -1,161 +0,0 @@
-// node_modules/@vue/devtools-api/lib/esm/env.js
-function getDevtoolsGlobalHook() {
-  return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
-}
-function getTarget() {
-  return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
-}
-var isProxyAvailable = typeof Proxy === "function";
-
-// node_modules/@vue/devtools-api/lib/esm/const.js
-var HOOK_SETUP = "devtools-plugin:setup";
-var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
-
-// node_modules/@vue/devtools-api/lib/esm/time.js
-var supported;
-var perf;
-function isPerformanceSupported() {
-  var _a;
-  if (supported !== void 0) {
-    return supported;
-  }
-  if (typeof window !== "undefined" && window.performance) {
-    supported = true;
-    perf = window.performance;
-  } else if (typeof global !== "undefined" && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
-    supported = true;
-    perf = global.perf_hooks.performance;
-  } else {
-    supported = false;
-  }
-  return supported;
-}
-function now() {
-  return isPerformanceSupported() ? perf.now() : Date.now();
-}
-
-// node_modules/@vue/devtools-api/lib/esm/proxy.js
-var ApiProxy = class {
-  constructor(plugin, hook) {
-    this.target = null;
-    this.targetQueue = [];
-    this.onQueue = [];
-    this.plugin = plugin;
-    this.hook = hook;
-    const defaultSettings = {};
-    if (plugin.settings) {
-      for (const id in plugin.settings) {
-        const item = plugin.settings[id];
-        defaultSettings[id] = item.defaultValue;
-      }
-    }
-    const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
-    let currentSettings = Object.assign({}, defaultSettings);
-    try {
-      const raw = localStorage.getItem(localSettingsSaveId);
-      const data = JSON.parse(raw);
-      Object.assign(currentSettings, data);
-    } catch (e) {
-    }
-    this.fallbacks = {
-      getSettings() {
-        return currentSettings;
-      },
-      setSettings(value) {
-        try {
-          localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
-        } catch (e) {
-        }
-        currentSettings = value;
-      },
-      now() {
-        return now();
-      }
-    };
-    if (hook) {
-      hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
-        if (pluginId === this.plugin.id) {
-          this.fallbacks.setSettings(value);
-        }
-      });
-    }
-    this.proxiedOn = new Proxy({}, {
-      get: (_target, prop) => {
-        if (this.target) {
-          return this.target.on[prop];
-        } else {
-          return (...args) => {
-            this.onQueue.push({
-              method: prop,
-              args
-            });
-          };
-        }
-      }
-    });
-    this.proxiedTarget = new Proxy({}, {
-      get: (_target, prop) => {
-        if (this.target) {
-          return this.target[prop];
-        } else if (prop === "on") {
-          return this.proxiedOn;
-        } else if (Object.keys(this.fallbacks).includes(prop)) {
-          return (...args) => {
-            this.targetQueue.push({
-              method: prop,
-              args,
-              resolve: () => {
-              }
-            });
-            return this.fallbacks[prop](...args);
-          };
-        } else {
-          return (...args) => {
-            return new Promise((resolve) => {
-              this.targetQueue.push({
-                method: prop,
-                args,
-                resolve
-              });
-            });
-          };
-        }
-      }
-    });
-  }
-  async setRealTarget(target) {
-    this.target = target;
-    for (const item of this.onQueue) {
-      this.target.on[item.method](...item.args);
-    }
-    for (const item of this.targetQueue) {
-      item.resolve(await this.target[item.method](...item.args));
-    }
-  }
-};
-
-// node_modules/@vue/devtools-api/lib/esm/index.js
-function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
-  const descriptor = pluginDescriptor;
-  const target = getTarget();
-  const hook = getDevtoolsGlobalHook();
-  const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
-  if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
-    hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
-  } else {
-    const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
-    const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
-    list.push({
-      pluginDescriptor: descriptor,
-      setupFn,
-      proxy
-    });
-    if (proxy)
-      setupFn(proxy.proxiedTarget);
-  }
-}
-
-export {
-  setupDevtoolsPlugin
-};
-//# sourceMappingURL=chunk-5OBJFL24.js.map

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 3
node_modules/.vite/deps/chunk-5OBJFL24.js.map


+ 0 - 48
node_modules/.vite/deps/chunk-BCNMYODF.js

@@ -1,48 +0,0 @@
-import {
-  _defineProperty
-} from "./chunk-WNF2IDJY.js";
-
-// node_modules/ant-design-vue/es/vc-pagination/locale/zh_CN.js
-var zh_CN_default = {
-  // Options.jsx
-  items_per_page: "条/页",
-  jump_to: "跳至",
-  jump_to_confirm: "确定",
-  page: "页",
-  // Pagination.jsx
-  prev_page: "上一页",
-  next_page: "下一页",
-  prev_5: "向前 5 页",
-  next_5: "向后 5 页",
-  prev_3: "向前 3 页",
-  next_3: "向后 3 页"
-};
-
-// node_modules/@babel/runtime/helpers/esm/objectSpread2.js
-function ownKeys(object, enumerableOnly) {
-  var keys = Object.keys(object);
-  if (Object.getOwnPropertySymbols) {
-    var symbols = Object.getOwnPropertySymbols(object);
-    enumerableOnly && (symbols = symbols.filter(function(sym) {
-      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
-    })), keys.push.apply(keys, symbols);
-  }
-  return keys;
-}
-function _objectSpread2(target) {
-  for (var i = 1; i < arguments.length; i++) {
-    var source = null != arguments[i] ? arguments[i] : {};
-    i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
-      _defineProperty(target, key, source[key]);
-    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
-      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
-    });
-  }
-  return target;
-}
-
-export {
-  _objectSpread2,
-  zh_CN_default
-};
-//# sourceMappingURL=chunk-BCNMYODF.js.map

+ 0 - 7
node_modules/.vite/deps/chunk-BCNMYODF.js.map

@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../../ant-design-vue/es/vc-pagination/locale/zh_CN.js", "../../@babel/runtime/helpers/esm/objectSpread2.js"],
-  "sourcesContent": ["export default {\n  // Options.jsx\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n  // Pagination.jsx\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页'\n};", "import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}"],
-  "mappings": ";;;;;AAAA,IAAO,gBAAQ;AAAA;AAAA,EAEb,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,MAAM;AAAA;AAAA,EAEN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACV;;;ACZA,SAAS,QAAQ,QAAQ,gBAAgB;AACvC,MAAI,OAAO,OAAO,KAAK,MAAM;AAC7B,MAAI,OAAO,uBAAuB;AAChC,QAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,uBAAmB,UAAU,QAAQ,OAAO,SAAU,KAAK;AACzD,aAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,IACtD,CAAC,IAAI,KAAK,KAAK,MAAM,MAAM,OAAO;AAAA,EACpC;AACA,SAAO;AACT;AACe,SAAR,eAAgC,QAAQ;AAC7C,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,QAAI,SAAS,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AACpD,QAAI,IAAI,QAAQ,OAAO,MAAM,GAAG,IAAE,EAAE,QAAQ,SAAU,KAAK;AACzD,sBAAe,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,IACzC,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC,IAAI,QAAQ,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,KAAK;AACjK,aAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,QAAQ,GAAG,CAAC;AAAA,IACjF,CAAC;AAAA,EACH;AACA,SAAO;AACT;",
-  "names": []
-}

+ 0 - 20
node_modules/.vite/deps/chunk-KBUAZBQ3.js

@@ -1,20 +0,0 @@
-// node_modules/@babel/runtime/helpers/esm/extends.js
-function _extends() {
-  _extends = Object.assign ? Object.assign.bind() : function(target) {
-    for (var i = 1; i < arguments.length; i++) {
-      var source = arguments[i];
-      for (var key in source) {
-        if (Object.prototype.hasOwnProperty.call(source, key)) {
-          target[key] = source[key];
-        }
-      }
-    }
-    return target;
-  };
-  return _extends.apply(this, arguments);
-}
-
-export {
-  _extends
-};
-//# sourceMappingURL=chunk-KBUAZBQ3.js.map

+ 0 - 7
node_modules/.vite/deps/chunk-KBUAZBQ3.js.map

@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../../@babel/runtime/helpers/esm/extends.js"],
-  "sourcesContent": ["export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}"],
-  "mappings": ";AAAe,SAAR,WAA4B;AACjC,aAAW,OAAO,SAAS,OAAO,OAAO,KAAK,IAAI,SAAU,QAAQ;AAClE,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAI,SAAS,UAAU,CAAC;AACxB,eAAS,OAAO,QAAQ;AACtB,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,iBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO,SAAS,MAAM,MAAM,SAAS;AACvC;",
-  "names": []
-}

+ 0 - 52
node_modules/.vite/deps/chunk-WNF2IDJY.js

@@ -1,52 +0,0 @@
-// node_modules/@babel/runtime/helpers/esm/typeof.js
-function _typeof(obj) {
-  "@babel/helpers - typeof";
-  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
-    return typeof obj2;
-  } : function(obj2) {
-    return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
-  }, _typeof(obj);
-}
-
-// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
-function _toPrimitive(input, hint) {
-  if (_typeof(input) !== "object" || input === null)
-    return input;
-  var prim = input[Symbol.toPrimitive];
-  if (prim !== void 0) {
-    var res = prim.call(input, hint || "default");
-    if (_typeof(res) !== "object")
-      return res;
-    throw new TypeError("@@toPrimitive must return a primitive value.");
-  }
-  return (hint === "string" ? String : Number)(input);
-}
-
-// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
-function _toPropertyKey(arg) {
-  var key = _toPrimitive(arg, "string");
-  return _typeof(key) === "symbol" ? key : String(key);
-}
-
-// node_modules/@babel/runtime/helpers/esm/defineProperty.js
-function _defineProperty(obj, key, value) {
-  key = _toPropertyKey(key);
-  if (key in obj) {
-    Object.defineProperty(obj, key, {
-      value,
-      enumerable: true,
-      configurable: true,
-      writable: true
-    });
-  } else {
-    obj[key] = value;
-  }
-  return obj;
-}
-
-export {
-  _typeof,
-  _toPropertyKey,
-  _defineProperty
-};
-//# sourceMappingURL=chunk-WNF2IDJY.js.map

+ 0 - 7
node_modules/.vite/deps/chunk-WNF2IDJY.js.map

@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../../@babel/runtime/helpers/esm/typeof.js", "../../@babel/runtime/helpers/esm/toPrimitive.js", "../../@babel/runtime/helpers/esm/toPropertyKey.js", "../../@babel/runtime/helpers/esm/defineProperty.js"],
-  "sourcesContent": ["export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}"],
-  "mappings": ";AAAe,SAAR,QAAyB,KAAK;AACnC;AAEA,SAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,MAAK;AAClG,WAAO,OAAOA;AAAA,EAChB,IAAI,SAAUA,MAAK;AACjB,WAAOA,QAAO,cAAc,OAAO,UAAUA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,EAC1H,GAAG,QAAQ,GAAG;AAChB;;;ACPe,SAAR,aAA8B,OAAO,MAAM;AAChD,MAAI,QAAQ,KAAK,MAAM,YAAY,UAAU;AAAM,WAAO;AAC1D,MAAI,OAAO,MAAM,OAAO,WAAW;AACnC,MAAI,SAAS,QAAW;AACtB,QAAI,MAAM,KAAK,KAAK,OAAO,QAAQ,SAAS;AAC5C,QAAI,QAAQ,GAAG,MAAM;AAAU,aAAO;AACtC,UAAM,IAAI,UAAU,8CAA8C;AAAA,EACpE;AACA,UAAQ,SAAS,WAAW,SAAS,QAAQ,KAAK;AACpD;;;ACRe,SAAR,eAAgC,KAAK;AAC1C,MAAI,MAAM,aAAY,KAAK,QAAQ;AACnC,SAAO,QAAQ,GAAG,MAAM,WAAW,MAAM,OAAO,GAAG;AACrD;;;ACJe,SAAR,gBAAiC,KAAK,KAAK,OAAO;AACvD,QAAM,eAAc,GAAG;AACvB,MAAI,OAAO,KAAK;AACd,WAAO,eAAe,KAAK,KAAK;AAAA,MAC9B;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,OAAO;AACL,QAAI,GAAG,IAAI;AAAA,EACb;AACA,SAAO;AACT;",
-  "names": ["obj"]
-}

+ 272 - 0
package-lock.json

@@ -15,7 +15,9 @@
         "mathjs": "^11.8.0",
         "pinia": "^2.0.33",
         "pinia-plugin-persist": "^1.0.0",
+        "qrcode.vue": "^3.4.1",
         "vue": "^3.2.45",
+        "vue-qr": "^4.0.9",
         "vue-router": "^4.1.6"
       },
       "devDependencies": {
@@ -951,6 +953,19 @@
         "proxy-from-env": "^1.1.0"
       }
     },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/browserslist": {
       "version": "4.21.5",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
@@ -1098,6 +1113,17 @@
       "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
     },
+    "node_modules/decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "dependencies": {
+        "mimic-response": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1328,6 +1354,11 @@
         "url": "https://www.patreon.com/infusion"
       }
     },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+    },
     "node_modules/fsevents": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -1348,6 +1379,21 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
     },
+    "node_modules/glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
@@ -1407,6 +1453,20 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
     "node_modules/is-core-module": {
       "version": "2.11.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@@ -1452,6 +1512,11 @@
         "node": ">= 10.13.0"
       }
     },
+    "node_modules/js-binary-schema-parser": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
+      "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg=="
+    },
     "node_modules/js-md5": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
@@ -1642,6 +1707,25 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/mimic-response": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/ms": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -1695,6 +1779,19 @@
       "dev": true,
       "peer": true
     },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/parenthesis": {
+      "version": "3.1.8",
+      "resolved": "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz",
+      "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw=="
+    },
     "node_modules/parse-node-version": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -1860,6 +1957,14 @@
         "node": ">=6"
       }
     },
+    "node_modules/qrcode.vue": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.4.1.tgz",
+      "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==",
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -2002,6 +2107,21 @@
       "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
       "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
     },
+    "node_modules/simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+    },
+    "node_modules/simple-get": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
+      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+      "dependencies": {
+        "decompress-response": "^6.0.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
     "node_modules/source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -2035,6 +2155,14 @@
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
       "deprecated": "Please use @jridgewell/sourcemap-codec instead"
     },
+    "node_modules/string-split-by": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
+      "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
+      "dependencies": {
+        "parenthesis": "^3.1.5"
+      }
+    },
     "node_modules/supports-color": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -2247,6 +2375,17 @@
         "@vue/shared": "3.2.47"
       }
     },
+    "node_modules/vue-qr": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",
+      "integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==",
+      "dependencies": {
+        "glob": "^8.0.1",
+        "js-binary-schema-parser": "^2.0.2",
+        "simple-get": "^4.0.1",
+        "string-split-by": "^1.0.0"
+      }
+    },
     "node_modules/vue-router": {
       "version": "4.1.6",
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
@@ -2354,6 +2493,11 @@
       "engines": {
         "node": ">=10.13.0"
       }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     }
   },
   "dependencies": {
@@ -3029,6 +3173,19 @@
         "proxy-from-env": "^1.1.0"
       }
     },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "requires": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "browserslist": {
       "version": "4.21.5",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
@@ -3125,6 +3282,14 @@
       "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
     },
+    "decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "requires": {
+        "mimic-response": "^3.1.0"
+      }
+    },
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -3299,6 +3464,11 @@
       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
       "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
     },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+    },
     "fsevents": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -3312,6 +3482,18 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
     },
+    "glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      }
+    },
     "glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
@@ -3356,6 +3538,20 @@
       "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
       "optional": true
     },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
     "is-core-module": {
       "version": "2.11.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@@ -3392,6 +3588,11 @@
         "supports-color": "^8.0.0"
       }
     },
+    "js-binary-schema-parser": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
+      "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg=="
+    },
     "js-md5": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
@@ -3533,6 +3734,19 @@
         "mime-db": "1.52.0"
       }
     },
+    "mimic-response": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
+    },
+    "minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "requires": {
+        "brace-expansion": "^2.0.1"
+      }
+    },
     "ms": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -3574,6 +3788,19 @@
       "dev": true,
       "peer": true
     },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "parenthesis": {
+      "version": "3.1.8",
+      "resolved": "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz",
+      "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw=="
+    },
     "parse-node-version": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -3657,6 +3884,12 @@
       "dev": true,
       "peer": true
     },
+    "qrcode.vue": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.4.1.tgz",
+      "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==",
+      "requires": {}
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -3762,6 +3995,21 @@
       "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
       "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
     },
+    "simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+    },
+    "simple-get": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
+      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+      "requires": {
+        "decompress-response": "^6.0.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
     "source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -3788,6 +4036,14 @@
       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
     },
+    "string-split-by": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
+      "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
+      "requires": {
+        "parenthesis": "^3.1.5"
+      }
+    },
     "supports-color": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -3899,6 +4155,17 @@
         "@vue/shared": "3.2.47"
       }
     },
+    "vue-qr": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",
+      "integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==",
+      "requires": {
+        "glob": "^8.0.1",
+        "js-binary-schema-parser": "^2.0.2",
+        "simple-get": "^4.0.1",
+        "string-split-by": "^1.0.0"
+      }
+    },
     "vue-router": {
       "version": "4.1.6",
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
@@ -3973,6 +4240,11 @@
       "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
       "dev": true,
       "peer": true
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     }
   }
 }

+ 2 - 0
package.json

@@ -16,7 +16,9 @@
     "mathjs": "^11.8.0",
     "pinia": "^2.0.33",
     "pinia-plugin-persist": "^1.0.0",
+    "qrcode.vue": "^3.4.1",
     "vue": "^3.2.45",
+    "vue-qr": "^4.0.9",
     "vue-router": "^4.1.6"
   },
   "devDependencies": {

+ 133 - 0
src/DRP/SDrpManagement/payOrders/detail/index.vue

@@ -0,0 +1,133 @@
+<template>
+  <div>
+    <detail-template :headData="mainAreaData" :title="orderData.orderno" :tabs="['付费订单明细']">
+      <template #operation>
+        <a-space>
+          <payment :ispaid="orderData.ispaid"></payment>
+        </a-space>
+      </template>
+      <template #tab0>
+        <tableTemp ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'orderDetail'"
+                   @onList="listData">
+
+        </tableTemp>
+      </template>
+    </detail-template>
+  </div>
+</template>
+
+<script setup>
+  import detailTemplate from '@/components/detailTemplate/index.vue'
+  import payment from '../modules/payment.vue'
+  import tableTemp from '@/template/payOrderTable/tableTemp.vue'
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import { useRouter } from "vue-router"
+  import {onMounted, ref} from "vue";
+  const router = useRouter()
+  const mainAreaData = ref([])
+  const orderData = ref({})
+  let columns = ref([])
+  let dataSource = ref([])
+  const list = ref()
+  let param = ref ({
+    "classname": "system.payorder.payorder",
+    "method": "detail_userlist",
+    "content": {
+      "sys_payorderid":'',
+      "pageNumber": 1,
+      "pageSize": 20,
+      "where": {
+        "nocache":true,
+        "condition": ""
+      }
+    }
+  })
+  /*表格数据*/
+  const listData = (row)=>{
+    console.log(row)
+    dataSource.value = row
+    console.log(dataSource.value)
+  }
+  const mainData = async ()=>{
+    const res = await Api.requested({
+      "classname": "system.payorder.payorder",
+      "method": "detail",
+      "content": {
+        "nocache":true,
+        "sys_payorderid": router.currentRoute.value.query.id
+      },
+    })
+    orderData.value = res.data
+    changeDataStructure(res.data)
+    param.value.content.sys_payorderid = router.currentRoute.value.query.id
+    list.value.tableData()
+  }
+  const changeDataStructure = (data)=>{
+    mainAreaData.value = [
+      {
+        label:'付费订单号',
+        value:data.orderno,
+      },
+      {
+        label:'付费状态',
+        value:data.ispaid === 0?'未付费':data.ispaid === 1?'已付费':data.ispaid === 3?'已取消':data.ispaid === 4?'已退款':'新建',
+        style:function() {
+          let style = {}
+          switch (data.ispaid) {
+            case 0:
+              style = {color:"#d90a0a"}
+              break;
+            case 1:
+              style = {color:"#52C41A"}
+              break;
+            case 3:
+              style = {color:"#afb0be"}
+              break;
+            case 4:
+              style = {color:"#afb0be"}
+              break;
+            default:
+              break;
+          }
+          return style
+        },
+      },
+      {
+        label:'付费金额(元)',
+        value:utils.formatAmount(data.amount,2),
+        style:function () {
+          let style = {color:"#d90a0a"}
+          return style
+        }
+      },
+      {
+        label:'付费类型',
+        value:data.sys_payincidence == '1'?'按账号付费':'按主体付费',
+      },
+      {
+        label:'付费时间',
+        value:data.paytime,
+      },
+      {
+        label:'付费人',
+        value:data.createby,
+      },
+      {
+        label:'付费渠道',
+        value:data.paymode,
+      },
+      {
+        label:'备注',
+        value:data.remarks,
+      }
+    ]
+  }
+  onMounted(()=>{
+    mainData()
+  })
+</script>
+
+<style scoped>
+
+</style>

+ 74 - 0
src/DRP/SDrpManagement/payOrders/index.vue

@@ -0,0 +1,74 @@
+<template>
+  <div>
+    <listTemp ref="list" :columns="columns" :param="param" :tableName="'payOrdersTable'" keyRouteName="orderno" :searchType="searchType" :detailPage="{name:'payOrdersDetail',idname:'sys_payorderid'}">
+      <template #operation>
+        <addTemp @payClose="onSuccess"></addTemp>
+      </template>
+      <template #tb_cell="{data}">
+        <template v-if="data.column.dataIndex === 'ispaid'">
+          <span v-if="data.record.ispaid == '0'" style="color: #4f7bfd">未付费</span>
+          <span v-else-if="data.record.ispaid == '3'" style="color: #afb0be">已取消</span>
+          <span v-else-if="data.record.ispaid == '4'" style="color: #afb0be">已退款</span>
+          <span v-else-if="data.record.ispaid == '1'"  style="color: green">已付费</span>
+        </template>
+        <template v-else-if="data.column.dataIndex === 'amount'">
+          <span style="color: red">{{utils.formatAmount(data.record.amount,2)}}</span>
+        </template>
+        <template v-if="data.column.dataIndex === 'operation'">
+          <a-space>
+<!--            <editTemp :data="data.record"></editTemp>
+            <a-button type="link" @click="onDelete(data.record)">删 除</a-button>-->
+          </a-space>
+        </template>
+      </template>
+    </listTemp>
+  </div>
+</template>
+
+<script setup>
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import listTemp from '@/components/listTemplate/index.vue'
+  import addTemp from './modules/add.vue'
+  import {ref, createVNode, defineEmits} from 'vue'
+  import { useRouter } from "vue-router";
+  import { onMounted } from "vue";
+  const emit = defineEmits(['onSuccess'])
+  const router = useRouter()
+  const list = ref()
+  let columns = ref([])
+  let dataSource = ref([])
+  let searchType = ref([
+    {label:'搜索',key:'condition',type:'input'},
+  ])
+  let param = ref({
+    "content": {
+      "nocache":true,
+      "pageNumber": 1,
+      "pageSize": 20,
+      "where": {
+        "condition": ""
+      }
+    },
+    "id":20230904132202
+  })
+  const onSuccess = async()=>{
+    list.value.tableData()
+    const res = await Api.requested({
+      "classname": "sysmanage.develop.userauthforweb.userauth",
+      "method": "query_userauth",
+      "content": {
+        "nocache":true,
+        "place": 1
+      },
+      "systemappid": ""
+    })
+    console.log(res.data)
+    // sessionStorage.setItem('app',JSON.stringify(res.data[1].modules[1].apps))
+  }
+
+</script>
+
+<style scoped>
+
+</style>

+ 408 - 0
src/DRP/SDrpManagement/payOrders/modules/add.vue

@@ -0,0 +1,408 @@
+<template>
+  <div>
+    <a-button type="primary" @click="showDrawer">新建付费订单</a-button>
+    <a-drawer
+        v-model:visible="visible"
+        class="custom-class"
+        title="新建付费订单"
+        placement="right"
+        width="900"
+        :closable="false"
+        @close="onClose"
+    >
+      <a-form :model="form" ref="formRef"  size="small" layout="vertical">
+        <a-row :gutter="20">
+          <a-col :span="24" v-if="payInstructions">
+            <a-form-item label="付费说明:" name="name" >
+              <span class="pay_font">{{payInstructions}}</span>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24" >
+            <a-form-item label="选择版本:" name="sys_site_systempartitionid" :rules="[{ required: true, message: '选择版本', trigger: 'change' }]">
+              <a-select v-model:value="form.sys_site_systempartitionid" placeholder="请选择"  @select="checkVersion" >
+                <a-select-option
+                    v-for="item in versionList"
+                    :key="item.rowindex"
+                    :value="item.sys_site_systempartitionid">
+                  {{item.partitionname}}
+                </a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="选择付费账号:"  >
+              <tableTemp ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'accountTable'" :noAutoQuery="true"
+                         @onList="listData" @onSelect="onSelect">
+                <template #tb_cell="{data}">
+                  <template v-if="data.column.dataIndex === 'enddate'">
+                     <span v-for="(item,index) in data.record.enddate" :key="index">
+                        <span v-if="form.sys_site_systempartitionid == index" >{{item}}</span>
+                     </span>
+                  </template>
+                  <template v-if="data.column.dataIndex === 'operation'">
+                    <a-space>
+                      <a-checkbox :checked="data.record.checkRow" @change="checkSelect(data.record)" :disabled="userLeader === data.record.userid"></a-checkbox>
+                    </a-space>
+                  </template>
+                </template>
+              </tableTemp>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="备注:" name="remarks" >
+              <a-input v-model:value="form.remarks" placeholder="请输入备注内容" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="使用抵扣券:" name="remarks" v-if="couponList.length > 0">
+              <a-row>
+                <a-col :span="7" v-for="item in couponList" style="margin-right: 30px" >
+                  <div class="card" :style="{background: useColor}" v-if="item.rowindex <= usAccountNum">
+                    <div class="card-left">抵扣一年</div>
+                    <div class="card-right">
+                      <p class="card-info">账号优惠券</p>
+                      <strong class="card-time">有效期至{{item.enddate}}</strong>
+                    </div>
+                  </div>
+                  <div class="card" :style="{background: bgColor}" v-else>
+                    <div class="card-left">抵扣一年</div>
+                    <div class="card-right">
+                      <p class="card-info">账号优惠券</p>
+                      <strong class="card-time">有效期至{{item.enddate}}</strong>
+                    </div>
+                  </div>
+                </a-col>
+              </a-row>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row>
+          <a-col :span="24">
+            <div style="float: right">
+              <a-col :sapn="24">
+                <div style="margin-top: 10px">
+                  账号数:<span style="color: red">{{accountNum}}</span>
+                </div>
+              </a-col>
+              <a-col :sapn="24">
+                <div style="margin-top: 10px">
+                  原价:<span style="color: red">¥{{orig_amount}}</span>
+                </div>
+              </a-col>
+              <a-col :sapn="24" v-if="couponList.length > 0">
+                <div style="margin-top: 10px" v-if="coupon_amount === 0" >
+                  优惠券抵扣:<span style="color: red">¥{{coupon_amount}}</span>
+                </div>
+                <div style="margin-top: 10px" v-else>
+                  优惠券抵扣:<span style="color: red">-¥{{utils.formatAmount(coupon_amount,2)}}</span>
+                </div>
+              </a-col>
+              <a-col :sapn="24">
+                <div style="margin-top: 10px">
+                  应付总额:<span style="color: red;font-size: 18px">¥{{totalAmount}}</span>
+                </div>
+              </a-col>
+            </div>
+
+          </a-col>
+        </a-row>
+      </a-form>
+      <template #extra>
+        <a-space>
+          <a-button @click="onClose">关闭</a-button>
+          <a-button type="primary" @click="onSubmit" :disabled="userids.length === 0">保存</a-button>
+        </a-space>
+      </template>
+    </a-drawer>
+    <payment ref="payRef" :hide="hide" @onClose="payClose"></payment>
+  </div>
+</template>
+
+<script setup>
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import tableTemp from '@/template/payOrderTable/index.vue'
+  import payment from './payment.vue'
+  import {ref, onMounted, defineEmits, defineExpose} from 'vue'
+  const emit = defineEmits(['onSuccess','payClose'])
+  const visible = ref(false)
+  const hide = ref(false)
+  const list = ref()
+  const userLeader = ref()
+  let columns = ref([])
+  let dataSource = ref([])
+  const payRef = ref()
+  let param = ref({
+    "classname": "system.payorder.payorder",
+    "method": "chooseUsers",
+    "content": {
+      "pageNumber": 1,
+      "pageSize": 999,
+      "where": {
+        "condition": ""
+      }
+    },
+  })
+  const payInstructions = ref()
+  const versionList = ref()
+  const couponList = ref([])
+  const formRef = ref()
+  const bgColor = ref('linear-gradient(45deg, grey, grey)')
+  const useColor = ref('linear-gradient(45deg, orange, red)')
+  const accountNum = ref(0)
+  const orig_amount = ref(0)
+  const coupon_amount = ref(0)
+  const totalAmount = ref(0)
+  const usAccountNum = ref(0)
+  const orderno = ref()
+  const userids = ref([])
+  let dataNow = ref()
+  const message = ref()
+  const form = ref({
+    "sys_site_systempartitionid":"",
+    "sys_payorderid":'',
+    "remarks":""
+  })
+  /*表格数据*/
+  const listData = (row)=>{
+    const selectRow = ref()
+    dataSource.value = row.map(item=>{
+      if (item.isleader === 1 && !item.enddate[form.value.sys_site_systempartitionid]){
+        selectRow.value = item
+        userLeader.value = item.userid
+        return {
+          accountno:item.accountno,
+          name:item.name,
+          agentname:item.agentname,
+          enddate:item.enddate,
+          isleader:item.isleader,
+          phonenumber:item.phonenumber,
+          rowindex:item.rowindex,
+          sa_agentsid:item.sa_agentsid,
+          userid:item.userid,
+          checkRow:true
+        }
+      }else {
+        return {
+          accountno:item.accountno,
+          name:item.name,
+          agentname:item.agentname,
+          enddate:item.enddate,
+          isleader:item.isleader,
+          phonenumber:item.phonenumber,
+          rowindex:item.rowindex,
+          sa_agentsid:item.sa_agentsid,
+          userid:item.userid,
+          checkRow:false
+        }
+      }
+
+    })
+
+    let date = ref(new Date())
+    dataNow.value = ref(date.value.getFullYear() + '-' + (date.value.getMonth() + 1) + '-' + date.value.getDate())
+    checkSelect(selectRow)
+  }
+  const showDrawer = ()=>{
+    visible.value = true
+    creatOrder()
+    queryInstructions()
+    queryCoupon()
+
+  }
+  const onSubmit = ()=> {
+    /*queryCode()*/
+    visible.value = false
+    userLeader.value = ''
+    userids.value = []
+    payRef.value.visibleShow(form.value.sys_payorderid)
+  }
+  const onClose = ()=>{
+    visible.value = false
+    userLeader.value = ''
+    userids.value = []
+  }
+  /*创建订单*/
+  const creatOrder = async ()=>{
+    const res = await Api.requested({
+      "classname": "system.payorder.payorder",
+      "method": "createOrder",
+      "content": {},
+    })
+    form.value.sys_payorderid = res.data.sys_payorderid
+    orderno.value = res.data.orderno
+    queryVersion()
+  }
+  /*付费信息*/
+  const queryInstructions = async ()=>{
+    const res = await Api.requested({
+      "classname": "webmanage.site.site",
+      "method": "querySite_Parameter",
+      "content": {
+        "nocache":true,
+      },
+    })
+    payInstructions.value = res.data.sys_payinstructions
+  }
+  /*版本信息*/
+  const queryVersion = async ()=>{
+    const res = await Api.requested({
+      "classname": "system.payorder.payorder",
+      "method": "chooseSystemPartition",
+      "content": {
+        "pageNumber": 1,
+        "pageSize": 999,
+        "where": {
+          "condition": ""
+        }
+      },
+    })
+    versionList.value = res.data
+    form.value.sys_site_systempartitionid = res.data[0].sys_site_systempartitionid
+
+    list.value.tableData()
+  }
+  /*优惠券信息*/
+  const queryCoupon = async ()=>{
+    const res = await Api.requested({
+      "id": 20230801162402,
+      "content": {},
+    })
+    couponList.value = res.data
+  }
+  /*获取订单价格*/
+  const queryPrice = async ()=>{
+    const res = await Api.requested({
+      "classname": "system.payorder.payorder",
+      "method": "insertUsers",
+      "content": {
+        "sys_site_systempartitionid": form.value.sys_site_systempartitionid,
+        "sys_payorderid": form.value.sys_payorderid,
+        "remarks": form.value.remarks,
+        "users": userids.value
+      },
+    })
+    orig_amount.value = res.data.orig_amount
+    totalAmount.value = res.data.amount
+    if (couponList.value.length > 0){
+      coupon_amount.value = res.data.orig_amount - res.data.amount
+    }else {
+      coupon_amount.value = 0
+    }
+  }
+  const checkSelect = (row)=>{
+    userids.value = []
+    if (row){
+      row.checkRow = row.checkRow === true ? row.checkRow = false : row.checkRow = true
+    }
+
+    const newAccount = ref([])
+    dataSource.value.forEach(item=>{
+      if (item.checkRow){
+        userids.value.push({
+          "isleader": item.isleader,
+          "userid": item.userid,
+          "sa_agentsid": item.sa_agentsid,
+          "enddate": item.enddate[form.value.sys_site_systempartitionid]
+        })
+        if (item.isleader !== 1){
+          newAccount.value.push({
+            "isleader": item.isleader,
+            "userid": item.userid,
+            "sa_agentsid": item.sa_agentsid,
+            "enddate": item.enddate[form.value.sys_site_systempartitionid]
+          })
+        }
+      }
+
+    })
+    console.log(userids.value,'已选择的用户')
+    accountNum.value = userids.value.length
+    usAccountNum.value = newAccount.value.length
+    message.value = ''
+    userids.value.forEach((item,index)=>{
+      if (item.enddate !== '' && item.enddate !== undefined){
+        if (index === 0){
+          message.value =  item.name
+        }else {
+          message.value = message.value +  ',' + item.name
+        }
+
+      }
+    })
+    queryPrice()
+  }
+ const payClose = ()=>{
+    emit('payClose')
+ }
+  const checkVersion = ()=>{
+    list.value.tableData()
+  }
+  onMounted(()=>{
+    if (JSON.parse(sessionStorage.getItem('isPay')) === 1){
+      console.log('执行')
+      showDrawer()
+      sessionStorage.setItem('isPay',2)
+
+    }
+  })
+
+</script>
+<style>
+  .card{
+    display: flex;
+    align-items: center;
+    margin: 15px 0 10px 0;
+    width: 100%;
+    height: 50px;
+    padding: 10px 0;
+    background: #fff;
+    border-radius: 8px;
+    -webkit-mask-image: radial-gradient(circle at 88px 4px, transparent 4px, red 4.5px),radial-gradient(closest-side circle at 50%, red 99%, transparent 100%);
+    -webkit-mask-size: 100%, 2px 4px;
+    -webkit-mask-repeat: repeat, repeat-y;
+    -webkit-mask-position: 0 -4px, 87px;
+    -webkit-mask-composite: source-out;
+    mask-composite: subtract;
+    background: linear-gradient(45deg, orange, red);
+  }
+  .card-left{
+    width: 88px;
+    text-align: center;
+    font-size: 18px;
+    color: #fff;
+  }
+  .card-right{
+    padding: 16px 12px;
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+  }
+  .card-info{
+    margin: 0 0 10px 0;
+    font-size: 14px;
+    line-height: 20px;
+    color:#fff;
+  }
+  .card-time{
+    font-size: 12px;
+    line-height: 16px;
+    font-weight: normal;
+    color: #fff;
+    margin-top: 0px;
+  }
+</style>
+<style scoped>
+  .pay_border{
+    background: #FFF9F2;
+    height: 30px;
+    vertical-align: center;
+    line-height: 30px
+  }
+  .pay_font{
+    color: #FA8C16;
+    margin-left: 10px;
+    font-size: 17px;
+    font-weight: bold;
+  }
+</style>

+ 210 - 0
src/DRP/SDrpManagement/payOrders/modules/payment.vue

@@ -0,0 +1,210 @@
+<template>
+  <div>
+    <a-button type="primary" @click="visibleShow(router.currentRoute.value.query.id)" v-if="hide || ispaid === 0 ">继续付费</a-button>
+    <a-drawer
+        v-model:visible="visible"
+        class="custom-class"
+        title="待付费订单"
+        placement="right"
+        width="900"
+        :closable="false"
+        @close="onClose"
+    >
+      <a-form :model="form" ref="formRef"  size="small" layout="vertical">
+        <a-row :gutter="20">
+          <a-col :span="24">
+            <p class="info" style="font-weight: bold">订单信息</p>
+          </a-col>
+          <a-col :sapn="24">
+            <div class="div_border">
+              <a-row :gutter="20" style="margin: 10px">
+                <a-col :span="8" >
+                  <a-form-item label="付费订单号:" name="orderno" >
+                    <span class="pay_font">{{form.orderno}}</span>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8" >
+                  <a-form-item label="付费状态:" name="ispaid" >
+                    <span v-if="form.ispaid == '0' || form.ispaid == '2'" style="color: red">未付费</span>
+                    <span v-else-if="form.ispaid == '4'" style="color: #afb0be">已退款</span>
+                    <span v-else-if="form.ispaid == '3'" style="color: #afb0be">已取消</span>
+                    <span v-else>已付费</span>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8" >
+                  <a-form-item label="付费金额:" name="amount" >
+                    <span class="pay_font" style="color: red"> {{utils.formatAmount(form.amount,2)}}</span>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8" >
+                  <a-form-item label="付费版本:" name="partitionname" >
+                    <span class="pay_font">{{form.partitionname}}</span>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8" >
+                  <a-form-item label="付费类型:" name="sys_payincidence" >
+                    <span class="pay_font">{{form.sys_payincidence == '1'?'按账号付费':'按主体付费'}}</span>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8" >
+                  <a-form-item label="备注:" name="remarks" >
+                    <span class="pay_font">{{form.remarks}}</span>
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </div>
+          </a-col>
+          <a-col :span="24">
+            <p class="info" style="font-weight: bold;margin-top: 20px">付费账号</p>
+          </a-col>
+          <a-col :span="24">
+            <tableTemp ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'payAccountTable'"
+                       @onList="listData">
+
+            </tableTemp>
+          </a-col>
+          <a-col :span="24">
+            <p class="info" style="font-weight: bold;margin-top: 20px">付费二维码</p>
+          </a-col>
+          <a-col :span="24">
+            <div style="text-align: center;width:850px;">
+              <qrcode-vue  :value="code_url" :size="320"></qrcode-vue>
+            </div>
+
+          </a-col>
+          <el-col :span="24">
+            <span style="color: #FA8C16;display:block;width:850px;text-align: center;font-size: 16px;margin-top: 20px">温馨提示:请使用微信扫码支付</span>
+          </el-col>
+        </a-row>
+      </a-form>
+      <template #extra>
+        <a-space>
+          <a-button @click="onClose">取消</a-button>
+        </a-space>
+      </template>
+    </a-drawer>
+  </div>
+</template>
+
+<script setup>
+import {defineEmits, defineExpose, defineProps, onMounted, ref} from "vue";
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import tableTemp from '@/template/payOrderTable/tableTemp.vue'
+  import QrcodeVue from 'qrcode.vue'
+  import {useRouter} from "vue-router";
+  import {notification} from "ant-design-vue";
+  const router = useRouter()
+  const props = defineProps({
+    hide:Boolean,
+    ispaid:String
+  })
+  const visible = ref(false)
+  const emit = defineEmits(['onClose'])
+  const list = ref()
+  let columns = ref([])
+  let dataSource = ref([])
+  const code_url = ref()
+  let param = ref({
+    "classname": "system.payorder.payorder",
+    "method": "detail_userlist",
+    "content": {
+      "sys_payorderid": '',
+      "pageNumber": 1,
+      "pageSize": 99,
+      "where": {
+        "nocache":true,
+        "condition": ""
+      }
+    }
+  })
+  const form = ref({
+    orderno:'',
+    ispaid:'',
+    amount:'',
+    partitionname:'',
+    sys_payincidence:'',
+    remarks:''
+  })
+  const formRef = ref()
+  const visibleShow = (id)=>{
+    visible.value = true
+
+    detailData(id)
+    param.value.content.sys_payorderid = id
+    list.value.tableData()
+
+  }
+  /*表格数据*/
+  const listData = (row)=>{
+    dataSource.value = row
+  }
+  /*获取订单详情*/
+  const detailData = async (id)=>{
+    const res = await Api.requested({
+      "classname": "system.payorder.payorder",
+      "method": "detail",
+      "content": {
+        "sys_payorderid": id
+      },
+    })
+    form.value = {
+      orderno:res.data.orderno,
+      ispaid:res.data.ispaid,
+      amount:res.data.amount,
+      partitionname:res.data.partitionname,
+      sys_payincidence:res.data.sys_payincidence,
+      remarks:res.data.remarks
+    }
+    queryCode(form.value.orderno)
+  }
+  /*获取付费二维码*/
+  const queryCode = async (orderno)=>{
+    const res = await Api.requested({
+      "classname": "system.payment.wechatpay",
+      "method": "createNativeWechatOrder",
+      "content": {
+        "orderno": orderno
+      },
+    })
+    console.log(res,'二维码地址')
+    if (res.code === 1){
+      code_url.value = res.data.code_url
+    }else {
+      visible.value = false
+      notification.info({
+        message: '订单创建失败',
+        description: res.msg,
+        onClick: () => {
+        },
+      });
+    }
+
+  }
+  const onClose = ()=>{
+    visible.value = false
+    emit('onClose')
+  }
+  const getSocketData = (res)=>{
+    console.log(res,'res')
+    if (res.detail.data.message.type == 'pay'){
+      visible.value = false
+      emit('onClose')
+    }
+  }
+  defineExpose({
+      visibleShow,
+  })
+  onMounted(()=>{
+    window.addEventListener('onmessageWS', getSocketData)
+  })
+</script>
+
+<style scoped>
+  .div_border{
+    border: 2px dashed #c9c3c3;
+    width: 850px;
+    height: 160px;
+    border-radius: 5px;
+  }
+</style>

+ 56 - 13
src/components/layout/header.vue

@@ -38,7 +38,7 @@
         <ShoppingCartOutlined/>
       </template>
     </a-button>
-    
+
     <a-dropdown class="dropdown-link">
       <a class="ant-dropdown-link" @click.prevent>
         {{act_name}}
@@ -58,13 +58,17 @@
       </template>
     </a-dropdown>
   </a-space>
+
 </div>
 </template>
 
 <script setup>
 import Api  from '@/api/api'
+import utils  from '@/utils/utils'
 import less from 'less'
 
+
+
 import { defineComponent,ref, reactive,onMounted,createVNode ,watch} from 'vue';
 
 import { useAuthStore } from '../../stores/modules/auth'
@@ -83,6 +87,9 @@ let a_list = ref([]);
 const at_account = ref({})
 const store = useAuthStore()
 
+const noAccessRef = ref()
+
+
 let { system,mods,act_mods } = storeToRefs(store)
 
 const act_name = ref('')
@@ -92,15 +99,17 @@ const auth = async (data) => {
 
   let app = sessionStorage.getItem('app')
 
-  if (app) 
+  if (app)
     return false
-  if (mods.value) 
+  if (mods.value)
     return sessionStorage.setItem('app',JSON.stringify(mods.value[0].apps[0]))
   router.push({path:mods.value[0].apps[0].path})
 };
 
 const getAccountList = ()=>{
-  
+
+  sessionStorage.setItem('isAuthCheck','0')
+
   a_list.value = JSON.parse(sessionStorage.getItem('a_list'))
 
   let hasActAccount = sessionStorage.getItem('active_account') ? true:false
@@ -108,7 +117,7 @@ const getAccountList = ()=>{
   let act_account = JSON.parse(sessionStorage.getItem('active_account'))
 
   accountItemClick(hasActAccount ? act_account : a_list.value[0],true)
-  
+
 };
 
 const accountItemClick = (account,bool)=>{
@@ -137,7 +146,35 @@ const setSessionStorage = (account)=>{
 const routeChange = (app)=>{
   actApp.value = app
   sessionStorage.setItem('app',JSON.stringify(app))
-  router.push({path:app.path,meta:{APP:app}})
+
+  if (app.isneedpay){
+    if (sessionStorage.getItem('isAuthCheck') === '0'){
+      sessionStorage.setItem('isAuthCheck','1')
+      authCheck(app)
+    }else {
+      sessionStorage.setItem('isAuthCheck','0')
+      router.push({path:'/noAccess',meta:{APP:app}})
+    }
+  }else {
+    sessionStorage.setItem('isAuthCheck','0')
+    router.push({path:app.path,meta:{APP:app}})
+  }
+}
+/*二次校验权限*/
+const authCheck = async (app)=>{
+  let data = {
+    "classname": "sysmanage.develop.userauthforweb.userauth",
+    "method": "query_userauth",
+    "content": {
+      "place": 1,
+      "nocache":true
+    },
+    "systemappid": ""
+  }
+  const res = await Api.requested(data)
+  console.log(utils.getAppData(app.name,res.data))
+  let ap = utils.getAppData(app.name,res.data)
+  routeChange(ap)
 }
 
 const itemClick = (item, key, keyPath)=>{
@@ -165,11 +202,11 @@ const setTheme = (themeName)=> {
       successColor: '#4aa0d5',
       infoColor: '#d8e9f0',
     }
-   
+
     ConfigProvider.config({
       theme: colorState.value
     });
-    
+
   } else if (themeName === 'normal') {
     colorState.value = {
       primaryColor: '#0077ff',
@@ -193,7 +230,7 @@ const setTheme = (themeName)=> {
       theme: colorState.value
     });
   }
-  
+
 }
 const shoppingCartCount = async ()=>{
   const res = await Api.optionstype('shoppingcartcount')
@@ -209,8 +246,15 @@ const checkHasApp = (to)=>{
     arr = arr.concat(...e.apps)
   })
   let hasApp = arr.some(e=>e.name == to.meta.name)
-  if (!hasApp) 
-    return router.replace({name:'404'})
+
+  if (!hasApp){
+    if (JSON.parse(sessionStorage.getItem('app')).isneedpay){
+      return router.replace({name:'noAccess'})
+    }else {
+      return router.replace({name:'404'})
+    }
+  }
+
 }
 const getAppData = ()=> {
   let app = mods.value.map(e=>e.apps)
@@ -228,7 +272,6 @@ onMounted(()=>{
   shoppingCartCount()
 })
 watch(() => router.currentRoute.value,(to, from) => {
-  // console.log(to)
   getAppData()
   checkHasApp(to)
 })
@@ -260,4 +303,4 @@ watch(() => router.currentRoute.value,(to, from) => {
   align-items: center;
   justify-content: space-around;
 }
-</style>
+</style>

+ 281 - 0
src/components/layout/headerCopy.vue

@@ -0,0 +1,281 @@
+
+<template>
+<div class="header">
+  <a-menu style="flex:1" v-model:selectedKeys="current" mode="horizontal" @click="itemClick">
+    <a-sub-menu v-for="item in mods" :key="item.systemmoduleid">
+      <template #title>
+        <div>
+          <span class="menu-icon">{{item.systemmodulename.substr(0, 1)}}</span>
+          {{item.systemmodulename}}
+      </div>
+      </template>
+      <a-menu-item v-for="app in item.apps" :key="app.systemappid" @click="routeChange(app)">{{app.meta.title}}</a-menu-item>
+    </a-sub-menu>
+  </a-menu>
+  <a-space>
+    <a-dropdown>
+      <a class="ant-dropdown-link" @click.prevent>
+        切换主题
+        <DownOutlined />
+      </a>
+      <template #overlay>
+        <a-menu>
+          <a-menu-item>
+            <a @click="setTheme('normal')">默认主题</a>
+          </a-menu-item>
+          <a-menu-item>
+            <a @click="setTheme('light')">明亮主题</a>
+          </a-menu-item>
+          <a-menu-item>
+            <a @click="setTheme('caffairs')">商务主题</a>
+          </a-menu-item>
+        </a-menu>
+      </template>
+    </a-dropdown>
+    <a-button type="text" @click="router.push('/shopCart')">
+      购物车
+      <template #icon>
+        <ShoppingCartOutlined/>
+      </template>
+    </a-button>
+
+    <a-dropdown class="dropdown-link">
+      <a class="ant-dropdown-link" @click.prevent>
+        {{act_name}}
+        <DownOutlined />
+      </a>
+      <template #overlay>
+        <a-menu>
+          <a-menu-item v-for="item in a_list" :key="item.index">
+            <a @click="accountItemClick(item,false)">{{item.sitename + '-' + item.name}}</a>
+          </a-menu-item>
+          <a-menu-divider />
+          <a-menu-item>
+            <logout-outlined />
+            <a class="color-red" @click="loginOut">&nbsp;退出登录</a>
+          </a-menu-item>
+        </a-menu>
+      </template>
+    </a-dropdown>
+  </a-space>
+
+</div>
+</template>
+
+<script setup>
+import Api  from '@/api/api'
+import less from 'less'
+
+
+
+import { defineComponent,ref, reactive,onMounted,createVNode ,watch} from 'vue';
+
+import { useAuthStore } from '../../stores/modules/auth'
+import { storeToRefs } from 'pinia'
+
+import { DownOutlined,LogoutOutlined ,SettingOutlined,ExclamationCircleOutlined,ShoppingCartOutlined} from '@ant-design/icons-vue';
+import {ConfigProvider, Modal } from 'ant-design-vue';
+import { useRouter } from "vue-router";
+const router = useRouter()
+
+const actApp = ref({})
+const colorState = ref({})
+let current = ref([]);
+
+let a_list = ref([]);
+const at_account = ref({})
+const store = useAuthStore()
+
+const noAccessRef = ref()
+
+
+let { system,mods,act_mods } = storeToRefs(store)
+
+const act_name = ref('')
+const count = ref('')
+const auth = async (data) => {
+  store.systemAuthData(data)
+
+  let app = sessionStorage.getItem('app')
+
+  if (app)
+    return false
+  if (mods.value)
+    return sessionStorage.setItem('app',JSON.stringify(mods.value[0].apps[0]))
+  router.push({path:mods.value[0].apps[0].path})
+};
+
+const getAccountList = ()=>{
+
+
+  a_list.value = JSON.parse(sessionStorage.getItem('a_list'))
+
+  let hasActAccount = sessionStorage.getItem('active_account') ? true:false
+
+  let act_account = JSON.parse(sessionStorage.getItem('active_account'))
+
+  accountItemClick(hasActAccount ? act_account : a_list.value[0],true)
+
+};
+
+const accountItemClick = (account,bool)=>{
+
+  setSessionStorage(account)
+
+  at_account.value = account
+
+  let data = {
+    "classname": "sysmanage.develop.userauthforweb.userauth",
+    "method": "query_userauth",
+    "content": {
+      "place": 1
+    },
+    "systemappid": ""
+  }
+  auth(data)
+  if (!bool)
+   return router.go(0)
+}
+const setSessionStorage = (account)=>{
+  sessionStorage.setItem('active_account',JSON.stringify(account))
+  sessionStorage.setItem('token',account.token)
+  act_name.value = `${account.name}-${account.sitename}`
+}
+const routeChange = (app)=>{
+  actApp.value = app
+  sessionStorage.setItem('app',JSON.stringify(app))
+
+
+  router.push({path:app.path,meta:{APP:app}})
+
+
+}
+
+const itemClick = (item, key, keyPath)=>{
+  current.value = item.keyPath
+}
+const loginOut = ()=>{
+  Modal.confirm({
+    title: '注意',
+    icon: createVNode(ExclamationCircleOutlined),
+    content: '确定登出当前账号吗?',
+    okText: '确认',
+    cancelText: '取消',
+    onOk () {
+      Api.loginout({})
+      router.push({path:'/'})
+    }
+  });
+}
+const setTheme = (themeName)=> {
+  if (themeName === 'light') {
+    colorState.value = {
+      primaryColor: '#f23557',
+      errorColor: '#eb586f',
+      warningColor: '#ffde7d',
+      successColor: '#4aa0d5',
+      infoColor: '#d8e9f0',
+    }
+
+    ConfigProvider.config({
+      theme: colorState.value
+    });
+
+  } else if (themeName === 'normal') {
+    colorState.value = {
+      primaryColor: '#0077ff',
+      errorColor: '#ff4d4f',
+      warningColor: '#faad14',
+      successColor: '#52c41a',
+      infoColor: '#1890ff',
+    }
+    ConfigProvider.config({
+      theme: colorState.value
+    });
+  } else if (themeName === 'caffairs') {
+    colorState.value = {
+      primaryColor: '#404b69',
+      errorColor: '#ff5f5f',
+      warningColor: '#ffc93c',
+      successColor: '#1fab89',
+      infoColor: '#dbedf3',
+    }
+    ConfigProvider.config({
+      theme: colorState.value
+    });
+  }
+
+}
+const shoppingCartCount = async ()=>{
+  const res = await Api.optionstype('shoppingcartcount')
+  count.value = res.data
+}
+const checkHasApp = (to)=>{
+  let [arr, mode, app] = [[], [], []];
+  system.value.forEach(e=>{
+    mode = mode.concat(...e.modules)
+  })
+
+  mode.forEach(e=>{
+    arr = arr.concat(...e.apps)
+  })
+  let hasApp = arr.some(e=>e.name == to.meta.name)
+
+  if (!hasApp){
+    if (JSON.parse(sessionStorage.getItem('app')).isneedpay){
+      return router.replace({name:'noAccess'})
+    }else {
+      return router.replace({name:'404'})
+    }
+  }
+
+}
+const getAppData = ()=> {
+  let app = mods.value.map(e=>e.apps)
+  app.forEach(e=>{
+    e.forEach(a=>{
+      if (router.currentRoute.value.meta.name == a.name) {
+        sessionStorage.setItem('app',JSON.stringify(a))
+      }
+    })
+  })
+}
+onMounted(()=>{
+  getAccountList()
+  store.hideKeyWords(at_account.value)
+  shoppingCartCount()
+})
+watch(() => router.currentRoute.value,(to, from) => {
+  // console.log(to)
+  getAppData()
+  checkHasApp(to)
+})
+</script>
+<style>
+.header .ant-menu-horizontal {
+  border-bottom: none;
+}
+</style>
+<style scoped>
+.header{
+  display: flex;
+  align-items: center;
+  position: sticky;
+  top:0px;
+  padding-right: 60px;
+  border-bottom: 1px solid #f0f0f0;
+  background: #fff;
+  z-index: 999;
+}
+.dropdown-link{
+  margin-top: -1px;
+}
+.color-red{
+  color:red
+}
+.flex{
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+}
+</style>

+ 4 - 3
src/components/listTemplate/index.vue

@@ -62,6 +62,7 @@
   const getTableLayout = ()=>{
     let _app = {}
     _app = JSON.parse(sessionStorage.getItem('app'))
+    console.log(_app,props.tableName)
     columns.value = _app.meta.tables[props.tableName].tablecols.map(e=>{
       return {
         title:e.title,
@@ -75,7 +76,7 @@
   const tableData = async ()=>{
     loading.value = true
     const res = await Api.requested(props.param)
-    
+
     dataSource.value = res.data
     total.value = res.total
     loading.value = false
@@ -114,6 +115,6 @@
 }
 .ant-table-striped :deep(.table-striped) td {
   background-color: #fafafa;
-  
+
 }
-</style>
+</style>

+ 20 - 5
src/components/webSocket/index.vue

@@ -4,7 +4,7 @@
 </template>
 
 <script setup>
-  import {ref,onMounted,onUnmounted} from 'vue'
+import {ref, onMounted, onUnmounted, defineExpose} from 'vue'
   import { notification } from 'ant-design-vue';
   import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
   import { createVNode, defineComponent,h } from 'vue';
@@ -14,7 +14,8 @@
   const router = useRouter()
   const websock = ref(null)
   const initWebSocket = ()=>{ //初始化weosocket
-    const wsuri = 'wss://cucu.cnyunl.com:8079/yos/webSocket/' + sessionStorage.getItem('token')
+    /*const wsuri = 'wss://cucu.cnyunl.com:8079/yos/webSocket/' + sessionStorage.getItem('token')*/
+    const wsuri = 'ws://61.164.207.46:8200/yos/webSocket/' + sessionStorage.getItem('token')
     websock.value = new WebSocket(wsuri);
     websock.value.onmessage = websocketonmessage;
     websock.value.onopen = websocketonopen;
@@ -45,7 +46,20 @@
         },
         class: 'test',
       });
-    } else {
+    }else if(redata.message.type == 'pay'){
+      notification.info({
+        message: redata.message.type,
+        description: redata.message.title,
+        onClick: () => {
+        },
+      });
+      window.dispatchEvent(new CustomEvent('onmessageWS', {
+        detail: {
+          data: redata
+        }
+      }))
+    }
+    else {
       notification.info({
         message: redata.message.type,
         description: redata.message.text,
@@ -53,7 +67,7 @@
         },
       });
     }
-    
+
   }
   const websocketsend= (data)=>{//数据发送
     websock.value.send(data)
@@ -62,6 +76,7 @@
     console.log('断开连接',e)
     // initWebSocket()
   }
+
   onMounted(()=>{
     setTimeout(()=>{
       initWebSocket()
@@ -72,4 +87,4 @@
   })
 </script>
 <style>
-</style>
+</style>

+ 4 - 0
src/main.js

@@ -9,8 +9,12 @@ import axios from 'axios';
 import pinia  from './stores'
 import { ConfigProvider } from 'ant-design-vue';
 
+
 const app = createApp(App)
 
+
+
+
 app.use(pinia)
 app.use(router)
 app.use(Antd)

+ 28 - 0
src/router/SDrpManagement.js

@@ -188,5 +188,33 @@ const SDrpManagement = [
     },
     component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/team/index.vue')
   },
+  {
+    path: '/pay_orders',
+    name: 'payOrders',
+    meta: {
+      title: '付费订单',
+      name: 'payOrders',
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/payOrders/index.vue')
+  },
+  {
+    path: '/payOrdersDetail',
+    name: 'payOrdersDetail',
+    meta: {
+      title: '付费订单',
+      name: 'payOrders',
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/payOrders/detail/index.vue')
+  },
+  {
+    path: '/noAccess',
+    name: 'noAccess',
+    meta: {
+      title: '无权限访问',
+      name: 'noAccess',
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/template/payOrderTable/noAccess.vue')
+  },
+
 ];
 export default SDrpManagement;

+ 1 - 1
src/router/index.js

@@ -51,4 +51,4 @@ const router = createRouter({
   routes
 })
 
-export default router
+export default router

+ 106 - 0
src/template/payOrderTable/index.vue

@@ -0,0 +1,106 @@
+<template>
+  <div>
+    <a-table class="ant-table-striped" :loading="loading" size="small" :dataSource="props.dataSource" :columns="columns"
+             :pagination="{showSizeChanger:true,defaultPageSize:20,total:total}" :scroll="{x:'max-content'}"
+             :rowKey="'userid'"
+             @change="onChange"
+             :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)"  bordered>
+      <template #bodyCell="{ column, record }">
+        <template v-if="column.dataIndex === 'status'">
+          <a-tag :color="utils.statusAndColor(record.status)">{{record.status}}</a-tag>
+        </template>
+        <slot v-else name="tb_cell" :data="{column, record}"></slot>
+      </template>
+    </a-table>
+  </div>
+</template>
+
+<script setup>
+  import Api  from '@/api/api'
+  import utils from '@/utils/utils'
+  import { useAuthStore } from '@/stores/modules/auth'
+  import { useBaseStore } from '@/stores/modules/base'
+  import {defineEmits, defineExpose, onMounted, ref} from "vue";
+  import {useRouter} from "vue-router";
+  import {storeToRefs} from "pinia";
+  import {re} from "mathjs";
+  const emit = defineEmits(['list','onSelect'])
+  const store = useAuthStore()
+  const base = useBaseStore()
+  let { tableRecord,fullscreen} = storeToRefs(base)
+  const router = useRouter()
+  const loading = ref(false)
+  const columns = ref([])
+  const total = ref(0)
+  const selectedRowKeys = ref([])
+  const props = defineProps({
+    param: Object,
+    tableName:String,
+    dataSource:Array,
+    keyRouteName:String,
+    searchType:Array,
+    detailPage:Object,
+    noAutoQuery:Boolean
+  })
+
+  const onChange = (pagination, filters, sorter, { currentDataSource })=>{
+    selectedRowKeys.value = tableRecord.value.map(e=>e.itemid)
+    props.param.content.pageNumber = pagination.current
+    props.param.content.pageSize = pagination.pageSize
+    tableData()
+  }
+  const getTableLayout = ()=>{
+    let _app = {}
+    _app = JSON.parse(sessionStorage.getItem('app'))
+    columns.value = _app.meta.tables[props.tableName].tablecols.map(e=>{
+      return {
+        title:e.title,
+        dataIndex:e.columnname,
+        width:e.width == 0?'150':e.width,
+        ellipsis:true,
+        fixed:e.columnname == 'operation'?'right':''
+      }
+    })
+  }
+  const onSelectChange =(changableRowKeys, selectedRows)=>{
+    selectedRowKeys.value = changableRowKeys;
+    emit('onSelect',selectedRows)
+  }
+
+  const tableData = async()=>{
+    loading.value = true
+    const res = await Api.requested(props.param)
+    let  selects = ref([])
+    res.data.forEach(item=>{
+      if (item.isleader === 1){
+        console.log(item,'11111')
+        console.log(item.enddate,'结束日期')
+
+        if (item.enddate === '{}'){
+          selectedRowKeys.value = [item.userid]
+          selects.value[0] = item
+          console.log(selects.value,2222)
+          return
+        }
+      }
+    })
+    emit('onList',res.data)
+    emit('onSelect',selects.value)
+    total.value = res.total
+    loading.value = false
+  }
+
+
+
+  defineExpose({
+    tableData,
+  })
+  onMounted (()=>{
+    getTableLayout()
+    props.noAutoQuery ? '' : tableData()
+  })
+</script>
+
+<style scoped>
+
+</style>

+ 67 - 0
src/template/payOrderTable/indexCopy.vue

@@ -0,0 +1,67 @@
+<template>
+  <div>
+    <a-table class="ant-table-striped" :loading="loading" size="small" :dataSource="dataSource" :columns="columns" :pagination="{showSizeChanger:true,defaultPageSize:20,total:total}" :scroll="{x:'max-content'}" :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)" @change="onChange" bordered>
+      <template #bodyCell="{ column, record }">
+        <template v-if="column.dataIndex === 'status'">
+          <a-tag :color="utils.statusAndColor(record.status)">{{record.status}}</a-tag>
+        </template>
+        <slot v-else name="tb_cell" :data="{column, record}"></slot>
+      </template>
+    </a-table>
+  </div>
+</template>
+
+<script setup>
+  import Api  from '@/api/api'
+  import utils from '@/utils/utils'
+  import {defineExpose, onMounted, ref} from "vue";
+  import {useRouter} from "vue-router";
+  const router = useRouter()
+  const loading = ref(false)
+  const columns = ref([])
+  const dataSource = ref([])
+  const total = ref(0)
+  const props = defineProps({
+    param: Object,
+    tableName:String,
+    keyRouteName:String,
+    searchType:Array,
+    detailPage:Object,
+    noAutoQuery:Boolean
+  })
+
+  const onChange = ()=>{
+
+  }
+  const getTableLayout = ()=>{
+    let _app = {}
+    _app = JSON.parse(sessionStorage.getItem('app'))
+    columns.value = _app.meta.tables[props.tableName].tablecols.map(e=>{
+      return {
+        title:e.title,
+        dataIndex:e.columnname,
+        width:e.width == 0?'150':e.width,
+        ellipsis:true,
+        fixed:e.columnname == 'operation'?'right':''
+      }
+    })
+  }
+  const tableData = async()=>{
+    loading.value = true
+    const res = await Api.requested(props.param)
+    dataSource.value = res.data
+    total.value = res.total
+    loading.value = false
+  }
+  defineExpose({
+    tableData
+  })
+  onMounted (()=>{
+    getTableLayout()
+    props.noAutoQuery ? '' : tableData()
+  })
+</script>
+
+<style scoped>
+
+</style>

+ 33 - 0
src/template/payOrderTable/noAccess.vue

@@ -0,0 +1,33 @@
+<template>
+  <div>
+    <a-modal v-model:visible="visible" title="付费提醒" :okText="'付费'" @ok="handleOk" :centered="true" :closable="false">
+      <p>当前模块未付费,请前往付费使用</p>
+    </a-modal>
+  </div>
+</template>
+
+<script setup>
+import {defineExpose, onMounted, ref} from "vue";
+import { useRouter } from "vue-router";
+const router = useRouter()
+
+  const visible = ref(true)
+  const handleOk = ()=>{
+    sessionStorage.setItem('isPay',1)
+    router.push({name:'payOrders'})
+  }
+
+  const visibleShow = ()=>{
+    visible.value = true
+  }
+  defineExpose({
+    visibleShow,
+  })
+  onMounted(()=>{
+    visibleShow()
+  })
+</script>
+
+<style scoped>
+
+</style>

+ 103 - 0
src/template/payOrderTable/tableTemp.vue

@@ -0,0 +1,103 @@
+<template>
+  <div>
+    <a-table class="ant-table-striped" :loading="loading" size="small" :dataSource="props.dataSource" :columns="columns"
+             :pagination="{showSizeChanger:true,defaultPageSize:20,total:total}" :scroll="{x:'max-content'}"
+
+             :rowKey="'userid'"
+             @change="onChange"
+             :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)"  bordered>
+      <template #bodyCell="{ column, record }">
+        <template v-if="column.dataIndex === 'status'">
+          <a-tag :color="utils.statusAndColor(record.status)">{{record.status}}</a-tag>
+        </template>
+        <slot v-else name="tb_cell" :data="{column, record}"></slot>
+      </template>
+    </a-table>
+  </div>
+</template>
+
+<script setup>
+  import Api  from '@/api/api'
+  import utils from '@/utils/utils'
+  import { useAuthStore } from '@/stores/modules/auth'
+  import { useBaseStore } from '@/stores/modules/base'
+  import {defineEmits, defineExpose, onMounted, ref} from "vue";
+  import {useRouter} from "vue-router";
+  import {storeToRefs} from "pinia";
+  import {re} from "mathjs";
+  const emit = defineEmits(['list','onSelect'])
+  const store = useAuthStore()
+  const base = useBaseStore()
+  let { tableRecord,fullscreen} = storeToRefs(base)
+  const router = useRouter()
+  const loading = ref(false)
+  const columns = ref([])
+  const total = ref(0)
+  const selectedRowKeys = ref([])
+  const props = defineProps({
+    param: Object,
+    tableName:String,
+    dataSource:Array,
+    keyRouteName:String,
+    searchType:Array,
+    detailPage:Object,
+    noAutoQuery:Boolean
+  })
+
+  const onChange = (pagination, filters, sorter, { currentDataSource })=>{
+    selectedRowKeys.value = tableRecord.value.map(e=>e.itemid)
+    props.param.content.pageNumber = pagination.current
+    props.param.content.pageSize = pagination.pageSize
+    tableData()
+  }
+  const getTableLayout = ()=>{
+    let _app = {}
+    _app = JSON.parse(sessionStorage.getItem('app'))
+    columns.value = _app.meta.tables[props.tableName].tablecols.map(e=>{
+      return {
+        title:e.title,
+        dataIndex:e.columnname,
+        width:e.width == 0?'150':e.width,
+        ellipsis:true,
+        fixed:e.columnname == 'operation'?'right':''
+      }
+    })
+  }
+  const onSelectChange =(changableRowKeys, selectedRows)=>{
+    selectedRowKeys.value = changableRowKeys;
+    emit('onSelect',selectedRows)
+  }
+
+  const tableData = async()=>{
+    loading.value = true
+    const res = await Api.requested(props.param)
+    let  selects = ref([])
+    res.data.forEach(item=>{
+      if (item.isleader === 1){
+        console.log(item)
+        if (item.enddate !== {}){
+          selectedRowKeys.value = [item.userid]
+          selects.value[0] = item
+          console.log(selects.value,2222)
+
+          return
+        }
+      }
+    })
+    emit('onList',res.data)
+    emit('onSelect',selects.value)
+    total.value = res.total
+    loading.value = false
+  }
+  defineExpose({
+    tableData,
+  })
+  onMounted (()=>{
+    getTableLayout()
+    props.noAutoQuery ? '' : tableData()
+  })
+</script>
+
+<style scoped>
+
+</style>

+ 25 - 0
src/utils/utils.js

@@ -96,4 +96,29 @@ export default {
     }
     
   },
+
+  // 获取app信息
+  getAppData (appName,allsystem) {
+    function findAppByName(systems, targetName) {
+      let foundApp = null;
+      function search(systems) {
+        for (let i = 0; i < systems.length; i++) {
+          const system = systems[i];
+          if (system.modules && system.modules.length > 0) {
+            search(system.modules); // 递归调用搜索函数
+          }
+          if (system.apps) {
+            const app = system.apps.find((app) => app.name === targetName);
+            if (app) {
+              foundApp = app;
+              break; // 找到目标 app 后停止搜索
+            }
+          }
+        }
+      }
+      search(systems);
+      return foundApp;
+    }
+    return findAppByName(allsystem,appName)
+  }
 }

+ 3 - 2
vite.config.js

@@ -39,8 +39,9 @@ export default defineConfig({
         rewrite: (path) => path.replace(/^\/api/, ""),
       },
     },
+    host:'0.0.0.0'
   },
-  
+
   build: {
     rollupOptions: {
       output: {
@@ -51,7 +52,7 @@ export default defineConfig({
       }
     }
   },
-  
+
   css:{
     preprocessorOptions:{
       less:{

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است