Эх сурвалжийг харах

修复广告渠道新增bug,新增应用管理上传APP包自动生成下载二维码

wangzhiqiang 4 сар өмнө
parent
commit
16e67522db

+ 1 - 0
.env.development

@@ -2,6 +2,7 @@ ENV = 'development'
 
 # 线上测试
 # VITE_BASE_URL = 'http://advise.ytmdm.com/yt-gateway'
+# VITE_BASE_URL = 'https://test.book.ytpm.net/yt-gateway'
 VITE_BASE_URL = 'http://119.45.71.139:25001'
 
 # 本地 

+ 2 - 2
.env.production

@@ -1,4 +1,4 @@
 ENV = 'production'
 
-# VITE_BASE_URL = 'http://advise.ytmdm.com/yt-gateway'
-VITE_BASE_URL = 'http://119.45.71.139:25001'
+VITE_BASE_URL = 'http://119.45.71.139:25001'
+# VITE_BASE_URL = 'https://test.book.ytpm.net/yt-gateway'

+ 1 - 0
.env.staging

@@ -1,4 +1,5 @@
 ENV = 'staging'
 
 # VITE_BASE_URL = 'http://advise.ytmdm.com/yt-gateway'
+# VITE_BASE_URL = 'https://test.book.ytpm.net/yt-gateway'
 VITE_BASE_URL = 'http://119.45.71.139:25001'

+ 221 - 7
package-lock.json

@@ -16,6 +16,7 @@
         "mockjs": "^1.1.0",
         "normalize.css": "^8.0.1",
         "nprogress": "^0.2.0",
+        "qrcode": "^1.5.4",
         "vue": "^3.2.31",
         "vue-router": "4",
         "vuex": "^4.0.2"
@@ -794,7 +795,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -803,7 +803,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
       "dependencies": {
         "color-convert": "^2.0.1"
       },
@@ -960,6 +959,14 @@
         "node": ">=6"
       }
     },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
@@ -1021,11 +1028,20 @@
         "node": ">= 6"
       }
     },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
     "node_modules/color-convert": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -1036,8 +1052,7 @@
     "node_modules/color-name": {
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
     "node_modules/commander": {
       "version": "14.0.0",
@@ -1147,6 +1162,14 @@
         }
       }
     },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
@@ -1162,6 +1185,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
     "node_modules/doctrine": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
@@ -1366,6 +1394,11 @@
         "@emmetio/css-abbreviation": "^2.1.8"
       }
     },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
     "node_modules/encodeurl": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -2142,6 +2175,14 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
     "node_modules/get-intrinsic": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@@ -2454,6 +2495,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/is-glob": {
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
@@ -2844,6 +2893,14 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/parent-module": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
@@ -2869,7 +2926,6 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -2921,6 +2977,14 @@
         "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
     "node_modules/postcss": {
       "version": "8.5.3",
       "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",
@@ -3099,6 +3163,22 @@
         "node": ">=6"
       }
     },
+    "node_modules/qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -3131,6 +3211,19 @@
         "node": ">=8.10.0"
       }
     },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
     "node_modules/resolve": {
       "version": "1.22.10",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz",
@@ -3253,6 +3346,11 @@
         "node": ">=10"
       }
     },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -3298,11 +3396,23 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -3926,6 +4036,11 @@
         "node": ">= 8"
       }
     },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
     "node_modules/with": {
       "version": "7.0.2",
       "resolved": "https://registry.npmmirror.com/with/-/with-7.0.2.tgz",
@@ -3950,12 +4065,111 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "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==",
       "dev": true
     },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs/node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/yargs/node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/yocto-queue": {
       "version": "0.1.0",
       "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",

+ 1 - 0
package.json

@@ -17,6 +17,7 @@
     "mockjs": "^1.1.0",
     "normalize.css": "^8.0.1",
     "nprogress": "^0.2.0",
+    "qrcode": "^1.5.4",
     "vue": "^3.2.31",
     "vue-router": "4",
     "vuex": "^4.0.2"

+ 1 - 1
src/layout/Header/index.vue

@@ -31,7 +31,7 @@
           </span>
           <template #dropdown>
             <el-dropdown-menu>
-              <el-dropdown-item @click="showPasswordLayer">修改密码</el-dropdown-item>
+              <!-- <el-dropdown-item @click="showPasswordLayer">修改密码</el-dropdown-item> -->
               <el-dropdown-item @click="loginOut">退出登录</el-dropdown-item>
             </el-dropdown-menu>
           </template>

+ 1 - 1
src/router/modules/dashboard.js

@@ -5,7 +5,7 @@ const route = [
     path: '/',
     component: Layout,
     redirect: '/dashboard',
-    meta: { title: 'dashboard', icon: 'iconfont icon-home' },
+    meta: { title: '首页', icon: 'iconfont icon-home' },
     children: [
       {
         path: 'dashboard',

+ 1 - 1
src/router/permission/backConfig.js

@@ -10,7 +10,7 @@ const formworkErection = {
   appAdmin: createNameComponent(() => import('@/views/main/formworkErection/appAdmin.vue')),
   placementAdmin: createNameComponent(() => import('@/views/main/formworkErection/placementAdmin.vue')),
   channelAdmin: createNameComponent(() => import('@/views/main/formworkErection/channelAdmin.vue')),
-  // adSourceAdmin: createNameComponent(() => import('@/views/main/formworkErection/adSourceAdmin.vue')),
+  adSourceAdmin: createNameComponent(() => import('@/views/main/formworkErection/adSourceAdmin.vue')),
 }
 
 const userModule = {

+ 7 - 1
src/views/main/formworkErection/appAdmin.vue

@@ -87,7 +87,7 @@
       <el-radio-group style="width: 100%;" v-model="selectedChannelId" @change="handleRadioChange">
         <Table style="width: 100%;" @getTableData="getChanelData" v-model:page="channelPage" ref="channelTable"
           :data="channelData">
-          <el-table-column width="50">
+          <el-table-column width="60">
             <template #default="{ row }">
               <el-radio :label="row.channelId">&nbsp;</el-radio>
             </template>
@@ -284,6 +284,7 @@
 </template>
 <script setup>
 import { onBeforeMount, ref, reactive } from "vue";
+import QRCode from 'qrcode' //生成二维码
 import { ElMessage } from "element-plus";
 import { useGetDictList } from "@/hooks/useGetDictList.js";
 import {
@@ -535,6 +536,7 @@ const edit = (row) => {
 const channelAppId = ref('')
 const openChannelLayer = async (row) => {
   if (row) {
+    selectedChannelId.value = null
     channelAppId.value = row.appId
     let res =await relativeChannelList({appId: row.appId,page:channelPage.pageNum,limit:channelPage.limit})
     channelData.value = res.data;
@@ -679,6 +681,10 @@ const customUpload = async (param) => {
     formEdit.value.apkUrl = res.data.url
     console.log(res, res.data.url)
     ElMessage.success('上传成功')
+    // 生成二维码
+    QRCode.toDataURL(res.data.url).then(res => {
+      formEdit.value.qrCode = res
+    })
   } catch (err) {
     ElMessage.error('APP上传失败')
     console.error(err)

+ 50 - 77
src/views/main/formworkErection/channelAdmin.vue

@@ -31,9 +31,6 @@
               <el-button class="button-item" type="primary" style="margin-bottom: 5px;" @click="edit(scope.row)">
                 编辑
               </el-button>
-              <el-button class="button-item" type="success" style="margin-bottom: 5px;" @click="lookDetails(scope.row)">
-                查看详情
-              </el-button>
               <el-popconfirm placement="left" title="确认删除该数据?" @confirm="removeItem(scope.row)">
                 <template #reference>
                   <el-button class="button-item" style="margin-bottom: 5px;" type="danger">删除</el-button>
@@ -50,8 +47,8 @@
       <el-form :model="formEdit" :rules="rules" ref="ruleForm" label-width="120px" style="margin-right:30px;">
         <el-row :gutter="5">
           <el-col :span="10">
-            <el-form-item label="登陆类型"  prop="loginType">
-              <el-select v-model="formEdit.loginType" :disabled="layer.enabled">
+            <el-form-item label="登陆类型" required  prop="loginType">
+              <el-select v-model="formEdit.loginType">
                 <el-option :value="1" label="账号密码"/>
                 <el-option :value="2" label="微信"/>
               </el-select>
@@ -59,8 +56,8 @@
           </el-col>
           <el-col :span="2"></el-col>
           <el-col :span="10">
-            <el-form-item label="广告平台类型"  prop="adPlatformType">
-              <el-select v-model="formEdit.adPlatformType" :disabled="layer.enabled">
+            <el-form-item label="广告平台类型" required prop="adPlatformType">
+              <el-select v-model="formEdit.adPlatformType">
                 <el-option :value="15" label="穿山甲"/>
                 <el-option :value="8" label="腾讯广告"/>
                 <el-option :value="22" label="百度联盟"/>
@@ -74,21 +71,21 @@
         <el-row :gutter="5">
           <el-col :span="10">
             <el-form-item label="渠道账号:" required prop="channelAccount">
-              <el-input v-model="formEdit.channelAccount" :disabled="layer.enabled" placeholder="请输入" clearable />
+              <el-input v-model="formEdit.channelAccount" placeholder="请输入" clearable />
             </el-form-item>
           </el-col>
           <el-col :span="2"></el-col>
           <el-col :span="10">
             <el-form-item label="渠道密码:" required prop="channelPwd">
-              <el-input v-model="formEdit.channelPwd"  :disabled="layer.enabled" placeholder="请输入" clearable />
+              <el-input v-model="formEdit.channelPwd" placeholder="请输入" clearable />
             </el-form-item>
           </el-col>
         </el-row>
 
         <el-row :gutter="5">
           <el-col :span="10">
-            <el-form-item label="渠道状态:"  prop="channelStatus">
-              <el-select v-model="formEdit.channelStatus" :disabled="layer.enabled">
+            <el-form-item label="渠道状态:" required prop="channelStatus">
+              <el-select v-model="formEdit.channelStatus">
                 <el-option :value="1" label="正常"/>
                 <el-option :value="2" label="锁定"/>
               </el-select>
@@ -96,37 +93,26 @@
           </el-col>
           <el-col :span="2"></el-col>
           <el-col :span="10">
-            <el-form-item label="请求密钥:" prop="apiKey">
-              <el-input v-model="formEdit.apiKey"  :disabled="layer.enabled" placeholder="请输入" clearable />
+            <el-form-item label="请求密钥:" required prop="apiKey">
+              <el-input v-model="formEdit.apiKey" placeholder="请输入" clearable />
             </el-form-item>
           </el-col>
         </el-row>
 
         <el-row :gutter="5">
           <el-col :span="10">
-            <el-form-item label="请求密令:"  prop="apiSecret">
-              <el-input v-model="formEdit.apiSecret" :disabled="layer.enabled" placeholder="请输入" clearable />
+            <el-form-item label="请求密令:" required prop="apiSecret">
+              <el-input v-model="formEdit.apiSecret" placeholder="请输入" clearable />
             </el-form-item>
           </el-col>
           <el-col :span="2"></el-col>
           <el-col :span="10">
-            <el-form-item label="备注:"  prop="remark">
-              <el-input v-model="formEdit.remark"  :disabled="layer.enabled" placeholder="请输入" clearable />
+            <el-form-item label="备注:" required prop="remark">
+              <el-input v-model="formEdit.remark" placeholder="请输入" clearable />
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button @click="layer.show = false">取消</el-button>
-          <el-button v-if="!layer.enabled" type="primary" @click="submit(ruleForm)">
-            确定
-          </el-button>
-          <el-button v-else type="primary" @click="edit(formEdit)">
-            切换到编辑
-          </el-button>
-        </div>
-      </template>
     </Layer>
   </div>
 </template>
@@ -283,7 +269,6 @@
     title: "新增广告渠道",
     showButton: true,
     width: '50vw',
-    enabled: false, //查看详情时关闭其他
     edit: false,
   });
 
@@ -299,48 +284,25 @@
     apiSecret:undefined,
     remark:undefined
   })
-  const reset=(()=>{
-    formEdit.value = ref({
+  const reset = () => {
+    formEdit.value = {
       channelId: '',
       channelName: '',
       loginType: undefined,
-      adPlatformType:undefined,
-      channelAccount:undefined,
-      channelPwd:undefined,
-      channelStatus:undefined,
-      apiKey:undefined,
-      apiSecret:undefined,
-      remark:undefined
-    })
-  })
-
-  const options = [
-    {
-      value: 'Option1',
-      label: 'Option1',
-    },
-    {
-      value: 'Option2',
-      label: 'Option2',
-    },
-    {
-      value: 'Option3',
-      label: 'Option3',
-    },
-    {
-      value: 'Option4',
-      label: 'Option4',
-    },
-    {
-      value: 'Option5',
-      label: 'Option5',
-    },
-  ]
+      adPlatformType: undefined,
+      channelAccount: undefined,
+      channelPwd: undefined,
+      channelStatus: undefined,
+      apiKey: undefined,
+      apiSecret: undefined,
+      remark: undefined
+    }
+  }
 
   const edit = (row) => {
     ruleForm.value?.resetFields()
     if (row) {
-      formEdit.value = row
+      formEdit.value = { ...row }
       layer.value.edit = true;
       layer.value.title = '编辑广告渠道'
     } else {
@@ -348,13 +310,35 @@
       layer.value.title = '新增广告渠道'
     }
     layer.value.show = true
-    layer.value.enabled = false
-
   }
 
   const ruleForm = ref(null);
 
   const rules = reactive({
+    loginType: [
+      { required: true, message: "请选择登陆类型", trigger: "change" },
+    ],
+    adPlatformType: [
+      { required: true, message: "请选择广告平台类型", trigger: "change" },
+    ],
+    channelAccount: [
+      { required: true, message: "请输入渠道账号", trigger: "blur" },
+    ],
+    channelPwd: [
+      { required: true, message: "请输入渠道密码", trigger: "blur" },
+    ],
+    channelStatus: [
+      { required: true, message: "请选择渠道状态", trigger: "change" },
+    ],
+    apiKey: [
+      { required: true, message: "请输入请求密钥", trigger: "blur" },
+    ],
+    apiSecret: [
+      { required: true, message: "请输入请求密令", trigger: "blur" },
+    ],
+    remark: [
+      { required: true, message: "请输入备注", trigger: "blur" },
+    ],
   });
 
   const submit = async (formEl) => {
@@ -387,17 +371,6 @@
     });
   };
 
-  const lookDetails = (row) => {
-    formEdit.value = row
-    layer.value.show = true
-    layer.value.enabled = true
-    layer.value.title = '查看渠道详情'
-  }
-
-  const close = () => {
-    layer.value.show = false
-  }
-
   // 删除
   const removeItem = async (row) => {
     console.log('删除', row)