Compare commits
102 Commits
master
...
developmen
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c4cb7dd62b | ||
![]() |
e5f3ac724d | ||
![]() |
9f2089e1dc | ||
![]() |
0f1ad9c84e | ||
![]() |
fe8411b05f | ||
![]() |
8b74e4c9bb | ||
![]() |
ca77e741f1 | ||
![]() |
9b11c0c6eb | ||
![]() |
433d1225be | ||
![]() |
7414342f20 | ||
![]() |
21b1a437c2 | ||
![]() |
a36b5bbc43 | ||
![]() |
4283b13efe | ||
![]() |
a72d6b9b01 | ||
![]() |
a08c4d2895 | ||
![]() |
19b9e9cd27 | ||
![]() |
42a824223c | ||
![]() |
ed5b545d2c | ||
![]() |
8a3affa968 | ||
![]() |
2c472f77f2 | ||
![]() |
1b9d4cfb76 | ||
![]() |
4bb6afe216 | ||
![]() |
aa7c1087d1 | ||
![]() |
14c766b2fa | ||
![]() |
b81825a9e5 | ||
![]() |
67e33faec8 | ||
![]() |
19c5cb358f | ||
![]() |
4da40c0c66 | ||
![]() |
e7e5008ab4 | ||
![]() |
c22c6db179 | ||
![]() |
4959c64acd | ||
![]() |
2f2ea30261 | ||
![]() |
441e20cc06 | ||
![]() |
e9da04f80c | ||
![]() |
8552084a52 | ||
![]() |
dbbf865214 | ||
![]() |
132ea64c6c | ||
![]() |
44e72bfd71 | ||
![]() |
988a7bd035 | ||
![]() |
9b3a550e5a | ||
![]() |
f43d0b4fd5 | ||
![]() |
21890ad8ce | ||
![]() |
5d151d0634 | ||
![]() |
1c427ce590 | ||
![]() |
48ae9c4c75 | ||
![]() |
e687b20e67 | ||
![]() |
4652ceea4b | ||
![]() |
aac384eb09 | ||
![]() |
dee0300f20 | ||
![]() |
33f85b5785 | ||
![]() |
95654d0170 | ||
![]() |
0dda01cd9e | ||
![]() |
a0b5d91b52 | ||
![]() |
10db47931c | ||
![]() |
fd80e00fec | ||
![]() |
2786838883 | ||
![]() |
da590ef6c0 | ||
![]() |
e71ec786d4 | ||
![]() |
0d84d17309 | ||
![]() |
00457d24ba | ||
![]() |
7159238b5e | ||
![]() |
25f8ecfd93 | ||
![]() |
e10991bf58 | ||
![]() |
1c5915a650 | ||
![]() |
e3b86f1ce5 | ||
![]() |
5cb40b8a1b | ||
![]() |
c9b87cc6f7 | ||
![]() |
ee6deec375 | ||
![]() |
43837aad92 | ||
![]() |
0b443f8247 | ||
![]() |
6cda7484b8 | ||
![]() |
88085f6447 | ||
![]() |
051f3c454d | ||
![]() |
25fc4f6db8 | ||
![]() |
28ba214cb7 | ||
![]() |
b564059d15 | ||
![]() |
abd469d850 | ||
![]() |
dfe921ac18 | ||
![]() |
bc10184afd | ||
![]() |
130a125129 | ||
![]() |
5ae46ffd7e | ||
![]() |
f829763fd6 | ||
![]() |
a75aa695e8 | ||
![]() |
60681db9ab | ||
![]() |
b0fe242470 | ||
![]() |
54acd89809 | ||
![]() |
1b6de06b0d | ||
![]() |
fb464c0152 | ||
![]() |
af69bcd0b6 | ||
![]() |
36fe547db3 | ||
![]() |
5d6d5cb871 | ||
![]() |
ab84e73c72 | ||
![]() |
d32b8c2be8 | ||
![]() |
2429015101 | ||
![]() |
9649ae2fcc | ||
![]() |
10165cff13 | ||
![]() |
9598310a1d | ||
![]() |
00185eefdc | ||
![]() |
f9a28ae4c1 | ||
![]() |
c9cbbff573 | ||
![]() |
74c58404e7 | ||
![]() |
435968d2bd |
603
package-lock.json
generated
603
package-lock.json
generated
@@ -8,10 +8,12 @@
|
||||
"name": "yinmeng-admin-web",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.1.0",
|
||||
"admin-lte": "^2.3.2",
|
||||
"axios": "^1.5.1",
|
||||
"bootstrap": "^3.3.5",
|
||||
"core-js": "^3.8.3",
|
||||
"element-plus": "^2.6.2",
|
||||
"font-awesome": "^4.6.3",
|
||||
"ionicons": "^2.0.1",
|
||||
"jquery": "^2.2.0",
|
||||
@@ -22,7 +24,8 @@
|
||||
"popper.js": "^1.16.1",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.0.3",
|
||||
"vuex": "^4.0.0"
|
||||
"vuex": "^4.0.0",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
@@ -36,7 +39,8 @@
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"sass": "^1.32.7",
|
||||
"sass-loader": "^12.0.0",
|
||||
"webpack-bundle-analyzer": "^4.9.1"
|
||||
"unplugin-auto-import": "^0.16.1",
|
||||
"unplugin-vue-components": "^0.25.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aashutoshrathi/word-wrap": {
|
||||
@@ -75,6 +79,12 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@antfu/utils": {
|
||||
"version": "0.7.7",
|
||||
"resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.7.tgz",
|
||||
"integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.22.13",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||
@@ -1812,6 +1822,14 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ctrl/tinycolor": {
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
|
||||
"integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@discoveryjs/json-ext": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
|
||||
@@ -1821,6 +1839,14 @@
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@element-plus/icons-vue": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
|
||||
"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
|
||||
@@ -1871,6 +1897,28 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.0.tgz",
|
||||
"integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
|
||||
"dependencies": {
|
||||
"@floating-ui/utils": "^0.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/dom": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.3.tgz",
|
||||
"integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==",
|
||||
"dependencies": {
|
||||
"@floating-ui/core": "^1.0.0",
|
||||
"@floating-ui/utils": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/utils": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.1.tgz",
|
||||
"integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
|
||||
},
|
||||
"node_modules/@hapi/hoek": {
|
||||
"version": "9.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz",
|
||||
@@ -2026,6 +2074,34 @@
|
||||
"integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
|
||||
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
|
||||
},
|
||||
"node_modules/@rollup/pluginutils": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
|
||||
"integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/estree": "^1.0.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"rollup": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@sideway/address": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz",
|
||||
@@ -2255,6 +2331,19 @@
|
||||
"resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.13.tgz",
|
||||
"integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ=="
|
||||
},
|
||||
"node_modules/@types/lodash": {
|
||||
"version": "4.17.0",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.0.tgz",
|
||||
"integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA=="
|
||||
},
|
||||
"node_modules/@types/lodash-es": {
|
||||
"version": "4.17.12",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
|
||||
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
|
||||
"dependencies": {
|
||||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/mime": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.3.tgz",
|
||||
@@ -2341,6 +2430,11 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/web-bluetooth": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
|
||||
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
|
||||
},
|
||||
"node_modules/@types/ws": {
|
||||
"version": "8.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.6.tgz",
|
||||
@@ -3094,6 +3188,74 @@
|
||||
"integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vueuse/core": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz",
|
||||
"integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
|
||||
"dependencies": {
|
||||
"@types/web-bluetooth": "^0.0.16",
|
||||
"@vueuse/metadata": "9.13.0",
|
||||
"@vueuse/shared": "9.13.0",
|
||||
"vue-demi": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/core/node_modules/vue-demi": {
|
||||
"version": "0.14.7",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz",
|
||||
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.0.0-rc.1",
|
||||
"vue": "^3.0.0-0 || ^2.6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/metadata": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz",
|
||||
"integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
|
||||
},
|
||||
"node_modules/@vueuse/shared": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz",
|
||||
"integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
|
||||
"dependencies": {
|
||||
"vue-demi": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/shared/node_modules/vue-demi": {
|
||||
"version": "0.14.7",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz",
|
||||
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.0.0-rc.1",
|
||||
"vue": "^3.0.0-0 || ^2.6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
|
||||
@@ -3249,9 +3411,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.10.0",
|
||||
"resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz",
|
||||
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
|
||||
"version": "8.11.3",
|
||||
"resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
|
||||
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
@@ -3294,6 +3456,14 @@
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/adler-32": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
|
||||
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/admin-lte": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/admin-lte/-/admin-lte-2.3.2.tgz",
|
||||
@@ -3471,6 +3641,11 @@
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
},
|
||||
"node_modules/async-validator": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
|
||||
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
|
||||
},
|
||||
"node_modules/asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
@@ -3853,6 +4028,18 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/cfb": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
|
||||
"integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
|
||||
"dependencies": {
|
||||
"adler-32": "~1.3.0",
|
||||
"crc-32": "~1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
||||
@@ -3868,9 +4055,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
|
||||
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"anymatch": "~3.1.2",
|
||||
@@ -4092,6 +4279,14 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/codepage": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
|
||||
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
|
||||
@@ -4348,6 +4543,17 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/crc-32": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
|
||||
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
|
||||
"bin": {
|
||||
"crc32": "bin/crc32.njs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||
@@ -4655,6 +4861,11 @@
|
||||
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
|
||||
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
|
||||
},
|
||||
"node_modules/dayjs": {
|
||||
"version": "1.11.10",
|
||||
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz",
|
||||
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
@@ -5029,6 +5240,31 @@
|
||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz",
|
||||
"integrity": "sha512-piIR0QFdIGKmOJTSNg5AwxZRNWQSXlRYycqDB9Srstx4lip8KpcmRxVP6zuFWExWziHYZpJ0acX7TxqX95KBpg=="
|
||||
},
|
||||
"node_modules/element-plus": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.6.2.tgz",
|
||||
"integrity": "sha512-WFMv1v83l437Xu+GeeM+ytxd9VUQpR4418BowvTVIPYItsoj6yK0ITIuSv19iCesF405FbAOaCIHXhJch0ilFA==",
|
||||
"dependencies": {
|
||||
"@ctrl/tinycolor": "^3.4.1",
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@floating-ui/dom": "^1.0.1",
|
||||
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
|
||||
"@types/lodash": "^4.14.182",
|
||||
"@types/lodash-es": "^4.17.6",
|
||||
"@vueuse/core": "^9.1.0",
|
||||
"async-validator": "^4.2.5",
|
||||
"dayjs": "^1.11.3",
|
||||
"escape-html": "^1.0.3",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lodash-unified": "^1.0.2",
|
||||
"memoize-one": "^6.0.0",
|
||||
"normalize-wheel-es": "^1.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
@@ -5139,8 +5375,7 @@
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
||||
"dev": true
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"node_modules/escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
@@ -5860,9 +6095,9 @@
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz",
|
||||
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
|
||||
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
@@ -6078,6 +6313,14 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/frac": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
|
||||
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/fraction.js": {
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.6.tgz",
|
||||
@@ -6977,6 +7220,12 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonc-parser": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
|
||||
"integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
@@ -7165,6 +7414,19 @@
|
||||
"json5": "lib/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/local-pkg": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
|
||||
"integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"mlly": "^1.4.2",
|
||||
"pkg-types": "^1.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
|
||||
@@ -7180,8 +7442,22 @@
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash-es": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
|
||||
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
|
||||
},
|
||||
"node_modules/lodash-unified": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
|
||||
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
|
||||
"peerDependencies": {
|
||||
"@types/lodash-es": "*",
|
||||
"lodash": "*",
|
||||
"lodash-es": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash.debounce": {
|
||||
"version": "4.0.8",
|
||||
@@ -7473,9 +7749,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.3",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
|
||||
"integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
|
||||
"version": "0.30.8",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
|
||||
"integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
},
|
||||
@@ -7522,6 +7798,11 @@
|
||||
"node": ">= 4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/memoize-one": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
|
||||
},
|
||||
"node_modules/merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
@@ -7727,6 +8008,18 @@
|
||||
"mkdirp": "bin/cmd.js"
|
||||
}
|
||||
},
|
||||
"node_modules/mlly": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.6.1.tgz",
|
||||
"integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.11.3",
|
||||
"pathe": "^1.1.2",
|
||||
"pkg-types": "^1.0.3",
|
||||
"ufo": "^1.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/module-alias": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz",
|
||||
@@ -7939,6 +8232,11 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
|
||||
},
|
||||
"node_modules/npm-run-path": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
||||
@@ -8359,6 +8657,12 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pathe": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
|
||||
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
@@ -8394,6 +8698,17 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-types": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz",
|
||||
"integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"jsonc-parser": "^3.2.0",
|
||||
"mlly": "^1.2.0",
|
||||
"pathe": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/popper.js": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
|
||||
@@ -9502,6 +9817,12 @@
|
||||
"node": ">= 8.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/scule": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
|
||||
"integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/select-hose": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
|
||||
@@ -9908,6 +10229,17 @@
|
||||
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/ssf": {
|
||||
"version": "0.11.2",
|
||||
"resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
|
||||
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
|
||||
"dependencies": {
|
||||
"frac": "~1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/ssri": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
|
||||
@@ -10013,6 +10345,15 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-literal": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-1.3.0.tgz",
|
||||
"integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/stylehacks": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz",
|
||||
@@ -10356,6 +10697,12 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/ufo": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz",
|
||||
"integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/unicode-canonical-property-names-ecmascript": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
|
||||
@@ -10396,6 +10743,45 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/unimport": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.7.1.tgz",
|
||||
"integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@rollup/pluginutils": "^5.1.0",
|
||||
"acorn": "^8.11.2",
|
||||
"escape-string-regexp": "^5.0.0",
|
||||
"estree-walker": "^3.0.3",
|
||||
"fast-glob": "^3.3.2",
|
||||
"local-pkg": "^0.5.0",
|
||||
"magic-string": "^0.30.5",
|
||||
"mlly": "^1.4.2",
|
||||
"pathe": "^1.1.1",
|
||||
"pkg-types": "^1.0.3",
|
||||
"scule": "^1.1.1",
|
||||
"strip-literal": "^1.3.0",
|
||||
"unplugin": "^1.5.1"
|
||||
}
|
||||
},
|
||||
"node_modules/unimport/node_modules/escape-string-regexp": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
|
||||
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/unimport/node_modules/estree-walker": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
|
||||
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/estree": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
|
||||
@@ -10414,6 +10800,151 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.10.0.tgz",
|
||||
"integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.11.3",
|
||||
"chokidar": "^3.6.0",
|
||||
"webpack-sources": "^3.2.3",
|
||||
"webpack-virtual-modules": "^0.6.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-auto-import": {
|
||||
"version": "0.16.1",
|
||||
"resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.16.1.tgz",
|
||||
"integrity": "sha512-H3Ky56cGEEHTssxUIFuGXTowGVlT/Bp3MBx1yyCzUHzAtdrO+2r9zpid32f2AkTpQxo2lch6yaTK61Im+rEyPQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@antfu/utils": "^0.7.2",
|
||||
"@rollup/pluginutils": "^5.0.2",
|
||||
"local-pkg": "^0.4.3",
|
||||
"magic-string": "^0.30.0",
|
||||
"minimatch": "^9.0.1",
|
||||
"unimport": "^3.0.7",
|
||||
"unplugin": "^1.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nuxt/kit": "^3.2.2",
|
||||
"@vueuse/core": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@nuxt/kit": {
|
||||
"optional": true
|
||||
},
|
||||
"@vueuse/core": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-auto-import/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==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-auto-import/node_modules/local-pkg": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
|
||||
"integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-auto-import/node_modules/minimatch": {
|
||||
"version": "9.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz",
|
||||
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-vue-components": {
|
||||
"version": "0.25.0",
|
||||
"resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.25.0.tgz",
|
||||
"integrity": "sha512-HxrQ4GMSS1RwVww2av3a42cABo/v5AmTRN9iARv6e/xwkrfTyHhLh84kFwXxKkXK61vxDHxaryn694mQmkiVBg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@antfu/utils": "^0.7.3",
|
||||
"@rollup/pluginutils": "^5.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"debug": "^4.3.4",
|
||||
"fast-glob": "^3.2.12",
|
||||
"local-pkg": "^0.4.3",
|
||||
"magic-string": "^0.30.0",
|
||||
"minimatch": "^9.0.1",
|
||||
"resolve": "^1.22.2",
|
||||
"unplugin": "^1.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/parser": "^7.15.8",
|
||||
"@nuxt/kit": "^3.2.2",
|
||||
"vue": "2 || 3"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@babel/parser": {
|
||||
"optional": true
|
||||
},
|
||||
"@nuxt/kit": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-vue-components/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==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-vue-components/node_modules/local-pkg": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
|
||||
"integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin-vue-components/node_modules/minimatch": {
|
||||
"version": "9.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz",
|
||||
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/unplugin/node_modules/webpack-virtual-modules": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
|
||||
"integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
||||
@@ -11161,6 +11692,22 @@
|
||||
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/wmf": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
|
||||
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/word": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
|
||||
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||
@@ -11232,6 +11779,26 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/xlsx": {
|
||||
"version": "0.18.5",
|
||||
"resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
|
||||
"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
|
||||
"dependencies": {
|
||||
"adler-32": "~1.3.0",
|
||||
"cfb": "~1.2.1",
|
||||
"codepage": "~1.15.0",
|
||||
"crc-32": "~1.2.1",
|
||||
"ssf": "~0.11.2",
|
||||
"wmf": "~1.0.1",
|
||||
"word": "~0.3.0"
|
||||
},
|
||||
"bin": {
|
||||
"xlsx": "bin/xlsx.njs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/y18n": {
|
||||
"version": "5.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
|
||||
|
@@ -8,10 +8,12 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.1.0",
|
||||
"admin-lte": "^2.3.2",
|
||||
"axios": "^1.5.1",
|
||||
"bootstrap": "^3.3.5",
|
||||
"core-js": "^3.8.3",
|
||||
"element-plus": "^2.6.2",
|
||||
"font-awesome": "^4.6.3",
|
||||
"ionicons": "^2.0.1",
|
||||
"jquery": "^2.2.0",
|
||||
@@ -22,7 +24,8 @@
|
||||
"popper.js": "^1.16.1",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.0.3",
|
||||
"vuex": "^4.0.0"
|
||||
"vuex": "^4.0.0",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
@@ -36,6 +39,7 @@
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"sass": "^1.32.7",
|
||||
"sass-loader": "^12.0.0",
|
||||
"webpack-bundle-analyzer": "^4.9.1"
|
||||
"unplugin-auto-import": "^0.16.1",
|
||||
"unplugin-vue-components": "^0.25.0"
|
||||
}
|
||||
}
|
||||
|
23
src/api/common/upload.js
Normal file
23
src/api/common/upload.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import '@/utils/ajaxfileupload';
|
||||
|
||||
export const uploadFile = id => {
|
||||
return new Promise((resolve, reject) => {
|
||||
$.ajaxFileUpload({
|
||||
fileElementId: id,
|
||||
url: '/admin/upload/img',
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
secureuri: false,
|
||||
async: true,
|
||||
submitType: 'ajax',
|
||||
success: function (res) {
|
||||
resolve(res);
|
||||
},
|
||||
error: function (res, status, e) {
|
||||
console.error(res);
|
||||
console.error(status);
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
12
src/api/flowteam/invitationCodeRecord.js
Normal file
12
src/api/flowteam/invitationCodeRecord.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import request from '@/utils/request';
|
||||
import qs from 'qs';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 表单
|
||||
export const pageRefillUserInviteCode = query => {
|
||||
return request({
|
||||
url: '/admin/flowTeam/pageRefillUserInviteCode',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
8
src/api/game/gamePartner.js
Normal file
8
src/api/game/gamePartner.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
export const getGamePartnerList = () => {
|
||||
return request({
|
||||
url: '/admin/gamePartner/info/listAll',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
8
src/api/gift/giftLevel.js
Normal file
8
src/api/gift/giftLevel.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
export const getGiftLevelList = () => {
|
||||
return request({
|
||||
url: '/admin/gift/level/list',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
27
src/api/gift/giftUnlock.js
Normal file
27
src/api/gift/giftUnlock.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
export const getGiftUnlockList = () => {
|
||||
return request({
|
||||
url: '/admin/giftUnlock/list',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
export const getLockGiftList = (giftId) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: "/admin/giftUnlock/lockGift?giftId=" + giftId,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (res) {
|
||||
resolve(res);
|
||||
},
|
||||
error: function (res, status, e) {
|
||||
console.error(res);
|
||||
console.error(status);
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
35
src/api/home/homeGameTab.js
Normal file
35
src/api/home/homeGameTab.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
export const getHomeGameTabPage = query => {
|
||||
return request({
|
||||
url: '/admin/home/game/tab/page',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
export const saveHomeGameTab = data => {
|
||||
return request({
|
||||
url: '/admin/home/game/tab/save',
|
||||
headers:{"Content-Type": 'application/x-www-form-urlencoded'},
|
||||
method: 'post',
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export const updateHomeGameTab = data => {
|
||||
return request({
|
||||
url: '/admin/home/game/tab/save',
|
||||
headers:{"Content-Type": 'application/x-www-form-urlencoded'},
|
||||
method: 'post',
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export const delHomeGameTab = query => {
|
||||
return request({
|
||||
url: '/admin/home/game/tab/del',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
@@ -16,17 +16,15 @@ export default {
|
||||
},
|
||||
// 设置默认值
|
||||
setDef: function (idstr, defval) {
|
||||
if (defval) {
|
||||
for (let i = 0, len = $(idstr + ' option').length; i < len; i++) {
|
||||
let $option = $(idstr + ' option:eq(' + i + ')');
|
||||
if ($option.val() == defval) {
|
||||
$option.prop('selected', true);
|
||||
} else {
|
||||
$option.prop('selected', false);
|
||||
}
|
||||
for (let i = 0, len = $(idstr + ' option').length; i < len; i++) {
|
||||
let $option = $(idstr + ' option:eq(' + i + ')');
|
||||
if ($option && $option.val() == defval) {
|
||||
$option.prop('selected', true);
|
||||
} else {
|
||||
$option.prop('selected', false);
|
||||
}
|
||||
$(idstr).btComboBox('parse');
|
||||
}
|
||||
$(idstr).btComboBox('parse');
|
||||
},
|
||||
// 构建下拉组合框
|
||||
build: function (val, idstr, defval) {
|
||||
|
@@ -2203,8 +2203,10 @@
|
||||
fixedScroll = data.fixedScroll;
|
||||
data = data[this.options.dataField];
|
||||
} else if (!$.isArray(data)) { // support fixedScroll
|
||||
fixedScroll = data.fixedScroll;
|
||||
data = data.data;
|
||||
if (data) {
|
||||
fixedScroll = data.fixedScroll;
|
||||
data = data.data;
|
||||
}
|
||||
}
|
||||
|
||||
this.initData(data);
|
||||
@@ -2528,13 +2530,25 @@
|
||||
};
|
||||
|
||||
BootstrapTable.prototype.destroy = function () {
|
||||
let bootstrapTable = $('div .bootstrap-table');
|
||||
if (bootstrapTable) {
|
||||
let $this = this;
|
||||
let tables = bootstrapTable.filter(i => {
|
||||
let $container = $(bootstrapTable[i]);
|
||||
return ($container && $container.html().indexOf('"' +$this.$el[0].id + '"') != -1);
|
||||
});
|
||||
if (tables.length > 1) {
|
||||
this.$container = $(tables[0]);
|
||||
this.options.toolbar = $('div.fixed-table-toolbar > div.bars.pull-left').html();
|
||||
}
|
||||
}
|
||||
this.$el.insertBefore(this.$container);
|
||||
$(this.options.toolbar).insertBefore(this.$el);
|
||||
this.$container.next().remove();
|
||||
this.$container.remove();
|
||||
this.$el.html(this.$el_.html())
|
||||
.css('margin-top', '0')
|
||||
.attr('class', this.$el_.attr('class') || ''); // reset the class
|
||||
$(this.options.toolbar).insertBefore(this.$el);
|
||||
this.$container.next().remove();
|
||||
this.$container.remove();
|
||||
this.$el.html(this.$el_.html())
|
||||
.css('margin-top', '0')
|
||||
.attr('class', this.$el_.attr('class') || ''); // reset the class
|
||||
};
|
||||
|
||||
BootstrapTable.prototype.showLoading = function () {
|
||||
@@ -2776,12 +2790,17 @@
|
||||
data = $this.data('bootstrap.table'),
|
||||
options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),
|
||||
typeof option === 'object' && option);
|
||||
|
||||
|
||||
if (typeof option === 'string') {
|
||||
if ($.inArray(option, allowedMethods) < 0) {
|
||||
throw new Error("Unknown method: " + option);
|
||||
}
|
||||
|
||||
if (!data && option === 'destroy') {
|
||||
new BootstrapTable(this, options).destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
@@ -130,17 +130,12 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
getMenu() {
|
||||
let parentMenus = getStore({ name: 'parent_menus' });
|
||||
let childMenus = getStore({ name: 'child_menus' });
|
||||
if (parentMenus && childMenus && parentMenus.length > 0 && childMenus.length > 0) {
|
||||
this.parentMenus = parentMenus;
|
||||
this.childMenus = childMenus;
|
||||
} else {
|
||||
store.dispatch('getMenu').then(res => {
|
||||
this.parentMenus = res.parents;
|
||||
this.childMenus = res.childs;
|
||||
});
|
||||
}
|
||||
this.parentMenus = getStore({ name: 'parent_menus' });
|
||||
this.childMenus = getStore({ name: 'child_menus' });
|
||||
store.dispatch('getMenu').then(res => {
|
||||
this.parentMenus = res.parents;
|
||||
this.childMenus = res.childs;
|
||||
});
|
||||
},
|
||||
getChilds(parentId) {
|
||||
return this.childMenus.filter(v => v.parentid == parentId);
|
||||
@@ -170,9 +165,7 @@ export default {
|
||||
parentIds.push(v.id);
|
||||
});
|
||||
}
|
||||
console.log(parentIds);
|
||||
this.parentMenus = store.getters.parentMenus.filter(v1 => parentIds.filter(v2 => v1.id == v2).length > 0);
|
||||
this.childMenus = store.getters.childMenus.filter(v1 => parentIds.filter(v2 => v1.parentid == v2).length > 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
70
src/css/public.css
Normal file
70
src/css/public.css
Normal file
@@ -0,0 +1,70 @@
|
||||
/* 主要的按钮样式处理 */
|
||||
/*鼠标点击后移开,恢复本身样式*/
|
||||
.primary,
|
||||
.primary:focus:not(.primary:hover) {
|
||||
color: white;
|
||||
background: #409eff;
|
||||
}
|
||||
|
||||
/*鼠标悬浮,没有按下;鼠标按下后抬起,没有移开*/
|
||||
/* 更改背景和字體顏色 */
|
||||
.primary:focus,
|
||||
.primary:hover {
|
||||
color: white;
|
||||
background: #409eff;
|
||||
}
|
||||
|
||||
/*鼠标按下,没有抬起*/
|
||||
/* 更改邊框顏色 */
|
||||
.primary:active {
|
||||
color: white;
|
||||
background: #337ecc;
|
||||
}
|
||||
|
||||
|
||||
/*鼠标点击后移开,恢复本身样式*/
|
||||
.danger,
|
||||
.danger:focus:not(.danger:hover) {
|
||||
color: white;
|
||||
background: #f56c6c;
|
||||
}
|
||||
|
||||
/* 危险的按钮样式 */
|
||||
/*鼠标悬浮,没有按下;鼠标按下后抬起,没有移开*/
|
||||
/* 更改背景和字體顏色 */
|
||||
.danger:focus,
|
||||
.danger:hover {
|
||||
color: white;
|
||||
background: #f56c6c;
|
||||
}
|
||||
|
||||
/*鼠标按下,没有抬起*/
|
||||
/* 更改邊框顏色 */
|
||||
.danger:active {
|
||||
color: white;
|
||||
background: #c45656;
|
||||
}
|
||||
|
||||
|
||||
/*鼠标点击后移开,恢复本身样式*/
|
||||
.success,
|
||||
.success:focus:not(.success:hover) {
|
||||
color: white;
|
||||
background: #67c23a;
|
||||
}
|
||||
|
||||
/* 危险的按钮样式 */
|
||||
/*鼠标悬浮,没有按下;鼠标按下后抬起,没有移开*/
|
||||
/* 更改背景和字體顏色 */
|
||||
.success:focus,
|
||||
.success:hover {
|
||||
color: white;
|
||||
background: #b3e19d;
|
||||
}
|
||||
|
||||
/*鼠标按下,没有抬起*/
|
||||
/* 更改邊框顏色 */
|
||||
.danger:active {
|
||||
color: white;
|
||||
background: #529b2e;
|
||||
}
|
@@ -49,4 +49,8 @@ import '@/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js'
|
||||
|
||||
import components from '@/utils/components.js'
|
||||
|
||||
createApp(App).use(store).use(router).use(components).mount('#app')
|
||||
import '@/css/public.css'
|
||||
|
||||
const app = createApp(App)
|
||||
app.config.warnHandler = () => null;
|
||||
app.use(store).use(router).use(components).mount('#app')
|
||||
|
@@ -4,7 +4,6 @@ jQuery.extend({
|
||||
if (s.error) {
|
||||
s.error.call(s.context || s, xhr, status, e);
|
||||
}
|
||||
|
||||
// Fire the global callback
|
||||
if (s.global) {
|
||||
(s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);
|
||||
@@ -13,17 +12,14 @@ jQuery.extend({
|
||||
createUploadIframe: function (id, uri) {
|
||||
//create frame
|
||||
var frameId = 'jUploadFrame' + id;
|
||||
|
||||
if (window.ActiveXObject) {
|
||||
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
|
||||
if (typeof uri == 'boolean') {
|
||||
io.src = 'javascript:false';
|
||||
}
|
||||
else if (typeof uri == 'string') {
|
||||
} else if (typeof uri == 'string') {
|
||||
io.src = uri;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
io = document.createElement('iframe');
|
||||
io.id = frameId;
|
||||
io.name = frameId;
|
||||
@@ -31,18 +27,21 @@ jQuery.extend({
|
||||
io.style.position = 'absolute';
|
||||
io.style.top = '-1000px';
|
||||
io.style.left = '-1000px';
|
||||
|
||||
document.body.appendChild(io);
|
||||
|
||||
return io
|
||||
return io;
|
||||
},
|
||||
createUploadForm: function (id, fileElementId) {
|
||||
//create form
|
||||
var formId = 'jUploadForm' + id;
|
||||
var fileId = 'jUploadFile' + id;
|
||||
var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
|
||||
var form = $('#' + formId);
|
||||
if (form && form.length > 0) {
|
||||
form.remove();
|
||||
}
|
||||
form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
|
||||
var oldElement = $('#' + fileElementId);
|
||||
var newElement = $(oldElement).clone();
|
||||
var newElement = $(oldElement).clone(true).val("");
|
||||
//须要复制元素的全部事件处理。
|
||||
$(oldElement).attr('id', fileId);
|
||||
$(oldElement).before(newElement);
|
||||
$(oldElement).appendTo(form);
|
||||
@@ -53,7 +52,6 @@ jQuery.extend({
|
||||
$(form).appendTo('body');
|
||||
return form;
|
||||
},
|
||||
|
||||
ajaxFileUpload: function (s) {
|
||||
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
|
||||
s = jQuery.extend({}, jQuery.ajaxSettings, s);
|
||||
@@ -68,7 +66,7 @@ jQuery.extend({
|
||||
}
|
||||
var requestDone = false;
|
||||
// Create the request object
|
||||
var xml = {}
|
||||
var xml = {};
|
||||
if (s.global)
|
||||
jQuery.event.trigger("ajaxSend", [xml, s]);
|
||||
// Wait for a response to come back
|
||||
@@ -98,7 +96,6 @@ jQuery.extend({
|
||||
// If a local callback was specified, fire it and pass it the data
|
||||
if (s.success)
|
||||
s.success(data, status);
|
||||
|
||||
// Fire the global callback
|
||||
if (s.global)
|
||||
jQuery.event.trigger("ajaxSuccess", [xml, s]);
|
||||
@@ -112,30 +109,22 @@ jQuery.extend({
|
||||
// The request was completed
|
||||
if (s.global)
|
||||
jQuery.event.trigger("ajaxComplete", [xml, s]);
|
||||
|
||||
// Handle the global AJAX counter
|
||||
if (s.global && ! --jQuery.active)
|
||||
jQuery.event.trigger("ajaxStop");
|
||||
|
||||
// Process result
|
||||
if (s.complete)
|
||||
s.complete(xml, status);
|
||||
|
||||
jQuery(io).unbind()
|
||||
|
||||
jQuery(io).unbind();
|
||||
setTimeout(function () {
|
||||
try {
|
||||
$(io).remove();
|
||||
$(form).remove();
|
||||
|
||||
} catch (e) {
|
||||
jQuery.handleError(s, xml, null, e);
|
||||
}
|
||||
|
||||
}, 100)
|
||||
|
||||
xml = null
|
||||
|
||||
}, 100);
|
||||
xml = null;
|
||||
}
|
||||
}
|
||||
// Timeout checker
|
||||
@@ -153,12 +142,23 @@ jQuery.extend({
|
||||
$(form).attr('target', frameId);
|
||||
if (form.encoding) {
|
||||
form.encoding = 'multipart/form-data';
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
form.enctype = 'multipart/form-data';
|
||||
}
|
||||
$(form).submit();
|
||||
|
||||
let submitType = s.submitType;
|
||||
let $form = $(form);
|
||||
if (!submitType || submitType == 'form') {
|
||||
$form.submit();
|
||||
} else if (submitType == 'ajax') {
|
||||
$form.ajaxSubmit({
|
||||
success: function (data, status) {
|
||||
s.success(data, status);
|
||||
},
|
||||
error: function (err) {
|
||||
jQuery.handleError(s, xml, null, err);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
jQuery.handleError(s, xml, null, e);
|
||||
}
|
||||
@@ -169,9 +169,7 @@ jQuery.extend({
|
||||
document.getElementById(frameId).addEventListener('load', uploadCallback, false);
|
||||
}
|
||||
return { abort: function () { } };
|
||||
|
||||
},
|
||||
|
||||
uploadHttpData: function (r, type) {
|
||||
var data = !type;
|
||||
data = type == "xml" || data ? r.responseXML : r.responseText;
|
||||
|
9
src/utils/bootstrap-table-helper.js
vendored
9
src/utils/bootstrap-table-helper.js
vendored
@@ -39,4 +39,13 @@ export default {
|
||||
doRefreshAndToPage1: function (idstr) {
|
||||
$(idstr).bootstrapTable('selectPage', 1);
|
||||
},
|
||||
getData: function(id) {
|
||||
return $(id).bootstrapTable('getData');
|
||||
},
|
||||
destroy: function(id) {
|
||||
$(id).bootstrapTable('destroy');
|
||||
},
|
||||
load: function(id, data) {
|
||||
$(id).bootstrapTable('load', data);
|
||||
}
|
||||
}
|
@@ -47,3 +47,13 @@ export function dateFormat(date) {
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串格式:'YYYY-MM-DD HH:mm:ss
|
||||
*/
|
||||
export function getDate(dateStr) {
|
||||
var ps = dateStr.split(" ");
|
||||
var pd = ps[0].split("-");
|
||||
var pt = ps.length > 1 ? ps[1].split(":") : [0, 0, 0];
|
||||
return new Date(pd[0], pd[1] - 1, pd[2], pt[0], pt[1], pt[2]);
|
||||
}
|
26
src/utils/excelUtils.js
Normal file
26
src/utils/excelUtils.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import * as XLSX from 'xlsx';
|
||||
const exportToExcel = (row, fileName, list, sheetNames) => {//调用方式 exportToExcel(接口返回的表格列表, "文件名", 定义的表头和字段[{ piko号: "erbanNo" }{ piko号: "erbanNo" }],, ["Sheet1"]);
|
||||
var data = [];
|
||||
var headerTitle = [];
|
||||
row.forEach((res, i) => {
|
||||
var arr = [];
|
||||
for (let index = 0; index < list.length; index++) {
|
||||
for (let key in list[index]) {
|
||||
headerTitle[index] = key;
|
||||
arr[index] = res[list[index][key]];
|
||||
}
|
||||
}
|
||||
data[i] = arr;
|
||||
});
|
||||
let smallArr = Array.from(data);
|
||||
let bigArr = [];
|
||||
smallArr = smallArr.map((item) => {
|
||||
bigArr.push(Object.values(item));
|
||||
});
|
||||
const ws = XLSX.utils.aoa_to_sheet([...[headerTitle], ...bigArr]); // tableName为表头,tableData为数据
|
||||
const wb = XLSX.utils.book_new();
|
||||
// 将工作表放入工作簿中
|
||||
XLSX.utils.book_append_sheet(wb, ws, sheetNames);
|
||||
XLSX.writeFile(wb, fileName + ".xlsx");
|
||||
}
|
||||
export default exportToExcel
|
@@ -56,4 +56,16 @@ export function param(json) {
|
||||
return encodeURIComponent(key) + '=' +
|
||||
encodeURIComponent(json[key])
|
||||
})).join('&')
|
||||
}
|
||||
|
||||
export function buildSelectOption(id, defVal, array) {
|
||||
let $select = $(id);
|
||||
for(let i in array) {
|
||||
let obj = array[i];
|
||||
let selected = false;
|
||||
if (obj.value == defVal) {
|
||||
selected = true;
|
||||
}
|
||||
$select.append('<option value="' + obj.value + '"' + (selected ? 'selected' : '') + '>' + obj.text + '</option>');
|
||||
}
|
||||
}
|
18
src/utils/mixin.js
Normal file
18
src/utils/mixin.js
Normal file
@@ -0,0 +1,18 @@
|
||||
export default {
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
const images = document.getElementsByTagName('img');
|
||||
for (let i = 0; i < images.length; i++) {
|
||||
images[i].addEventListener('error', this.handleImageError);
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleImageError(event) {
|
||||
let src = event.target.src;
|
||||
if (!src) {
|
||||
event.target.src = require('@/assets/images/default.png');
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
@@ -3,6 +3,7 @@ import store from "@/store";
|
||||
import global from "@/constants/global";
|
||||
|
||||
const service = axios.create();
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
service.interceptors.request.use(config => {
|
||||
return config;
|
||||
|
@@ -200,12 +200,16 @@ export default {
|
||||
},
|
||||
{
|
||||
field: 'giftIdList', title: '礼物清单', align: 'center', valign: 'middle', formatter: function (val, row, index) {
|
||||
var giftArr = JSON.parse(val);
|
||||
var str = '';
|
||||
for (var i = 0; i < giftArr.length; i++) {
|
||||
str += giftObj[giftArr[i]] + ',';
|
||||
if (val && val.startsWith('[') && val.endsWith(']')) {
|
||||
var giftArr = JSON.parse(val);
|
||||
var str = '';
|
||||
for (var i = 0; i < giftArr.length; i++) {
|
||||
str += giftObj[giftArr[i]] + ',';
|
||||
}
|
||||
return str.substr(0, str.length - 2);
|
||||
} else {
|
||||
return val;
|
||||
}
|
||||
return str.substr(0, str.length - 2);
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -400,11 +404,24 @@ export default {
|
||||
}
|
||||
});
|
||||
$('#table').on('click', '.opt-edit', function () {
|
||||
$('#editGiftId').val('');
|
||||
$('#editCharmAwardId').val('');
|
||||
$('#editLevelAwardId').val('');
|
||||
var id = $(this).data('id');
|
||||
var data = $('#table').bootstrapTable('getRowByUniqueId', id);
|
||||
var giftArr = JSON.parse(data.giftIdList);
|
||||
var charmAward = JSON.parse(data.charmAward);
|
||||
var levelAward = JSON.parse(data.levelAward);
|
||||
let giftArr = data.giftIdList;
|
||||
if (giftArr && giftArr.startsWith('[') && giftArr.endsWith(']')) {
|
||||
giftArr = JSON.parse(data.giftIdList);
|
||||
}
|
||||
let charmAward = data.charmAward;
|
||||
if (charmAward && charmAward.startsWith('[') && charmAward.endsWith(']')) {
|
||||
charmAward = JSON.parse(data.charmAward);
|
||||
}
|
||||
|
||||
let levelAward = data.levelAward;
|
||||
if (levelAward && levelAward.startsWith('[') && levelAward.endsWith(']')) {
|
||||
levelAward = JSON.parse(data.levelAward);
|
||||
}
|
||||
console.log(data);
|
||||
$('#editId').val(data.id);
|
||||
$('#editGiftId').multiselect('select', giftArr);
|
||||
|
@@ -105,9 +105,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 头饰 -->
|
||||
<!-- 铭牌 -->
|
||||
<div class="form-group nameplateChoose awardList">
|
||||
<label for="nameplateChoose" class="col-sm-3 control-label">选择头饰:</label>
|
||||
<label for="nameplateChoose" class="col-sm-3 control-label">选择铭牌:</label>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<select name="nameplateChoose" id="nameplateChoose" class="combobox">
|
||||
@@ -165,6 +165,7 @@ export default {
|
||||
methods: {
|
||||
initData() {
|
||||
$(function () {
|
||||
combineDataFromBack();
|
||||
var $form = $('#activityAwardForm');
|
||||
var $awardList = $('.awardList');
|
||||
$('#table').bootstrapTable('destroy');
|
||||
@@ -282,7 +283,6 @@ export default {
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
combineDataFromBack();
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
@@ -497,7 +497,7 @@ export default {
|
||||
}
|
||||
$('#carChoose').combobox();
|
||||
})
|
||||
$.get('/admin/nameplate//total/list', {}, function (res) {
|
||||
$.get('/admin/nameplate/total/list', {}, function (res) {
|
||||
if (res.code == 200) {
|
||||
for (var i = 0; i < res.data.length; i++) {
|
||||
// car.push(res.data[i]);
|
||||
|
@@ -280,15 +280,15 @@ export default {
|
||||
}
|
||||
$.ajaxFileUpload({
|
||||
fileElementId: 'picUrlSelectedFile', //需要上传的文件域的ID,即<input type="file">的ID。
|
||||
url: '/admin/qiniu/upload', //后台方法的路径
|
||||
url: '/admin/upload/img', //后台方法的路径
|
||||
type: 'post', //当要提交自定义参数时,这个参数要设置成post
|
||||
dataType: 'json', //服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
|
||||
secureuri: false, //是否启用安全提交,默认为false。
|
||||
async: true, //是否是异步
|
||||
success: function (json) { //提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
|
||||
if (json.flag) {
|
||||
$('#picUrlSelectedUrl').val(json.url);
|
||||
$('#picUrlSelectedImgUrl').attr("src", json.url);
|
||||
if (json.path) {
|
||||
$('#picUrlSelectedUrl').val(json.path);
|
||||
$('#picUrlSelectedImgUrl').attr("src", json.path);
|
||||
$("#tipMsg").text("上传成功");
|
||||
$("#tipModal").modal('show');
|
||||
} else {
|
||||
|
548
src/views/batch/FlowDataBatchSearchView.vue
Normal file
548
src/views/batch/FlowDataBatchSearchView.vue
Normal file
@@ -0,0 +1,548 @@
|
||||
<template>
|
||||
<section class="content">
|
||||
<div class="box box-primary">
|
||||
<div class="box-body">
|
||||
<!-- Content Header (Page header) -->
|
||||
<section class="content-header">
|
||||
<div id="itemTitle"></div>
|
||||
</section>
|
||||
<!-- .content -->
|
||||
<section>
|
||||
<div id="table"></div>
|
||||
<div id="toolbar">
|
||||
<div class="col-sm-12">
|
||||
<label for="erBanNoStr" class="col-sm-3 control-label">归因房间号:</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" name="erBanNoStr" id="erBanNoStr">
|
||||
</div>
|
||||
<label for="batchId" class="col-sm-3 control-label">场次名称:</label>
|
||||
<div class="col-sm-3">
|
||||
<select name="batchId" id="batchId" data-btn-class="btn-warning" class="form-control">
|
||||
<option value="0" selected="selected">全部</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<button id="btnAdd" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-plus-sign"></i>新建
|
||||
</button>
|
||||
<button id="btnSearch" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-search"></i>查询
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content" style="width: 190%; left: 50%; transform: translateX(-50%);">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||
aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="modalLabel">新建搜索归因场次</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal">
|
||||
<input type="hidden" name="id" id="id" />
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-3 control-label">场次名称:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="amount" class="col-sm-3 control-label">预算:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="amount">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="searchKey" class="col-sm-3 control-label">归因房间号:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="searchKey">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="startTime" class="col-sm-3 control-label">开始时间:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="startTime">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="endTime" class="col-sm-3 control-label">结束时间:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="endTime">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="person" class="col-sm-3 control-label">负责人:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="person">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
<button type="button" class="btn btn-primary" id="save">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="growModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content" style="width: 190%; left: 50%; transform: translateX(-50%);">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||
aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="growModalLabel"></h4>
|
||||
<span id="batchInfo"></span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" id="searchForm" action="/admin/flowDataBatchSearch/growExport"
|
||||
method="get" target="_blank">
|
||||
<input type="hidden" id="growBatchId" name="batchId" />
|
||||
<div id="growTable"></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
<button type="button" class="btn btn-primary" id="btnExport">导出</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="tipModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">提示信息</h4>
|
||||
</div>
|
||||
<div class="modal-body" id="tipMsg"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { getDate } from '@/utils/date';
|
||||
|
||||
export default {
|
||||
name: "FlowDataBatchSearchView",
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
this.initData();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
$(function () {
|
||||
getBatch();
|
||||
var picker1 = $("#startTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
autoclose: true,
|
||||
});
|
||||
|
||||
var picker2 = $("#endTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
autoclose: true
|
||||
});
|
||||
|
||||
picker1.on('changeDate', function () {
|
||||
var date = $('#startTime').datetimepicker('getDate');
|
||||
picker2.datetimepicker('setStartDate', date);
|
||||
});
|
||||
|
||||
picker2.on('changeDate', function () {
|
||||
var date = $('#endTime').datetimepicker('getDate');
|
||||
picker1.datetimepicker('setEndDate', date);
|
||||
});
|
||||
$('#table').bootstrapTable('destroy');
|
||||
$('#table').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'id', title: '场次ID', align: 'center', width: '5%' },
|
||||
{ field: 'person', title: '负责人', align: 'center', width: '5%' },
|
||||
{ field: 'amount', title: '预算(元)', align: 'center', width: '5%' },
|
||||
{ field: 'name', title: '场次名称', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '活动时间',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.startTime) {
|
||||
value += row.startTime + '<br/>';
|
||||
}
|
||||
value += '-<br/>';
|
||||
if (row.endTime) {
|
||||
value += row.endTime;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{ field: 'searchKey', title: '归因房间号', align: 'center', width: '5%' },
|
||||
{ field: 'roomName', title: '归因房间名称', align: 'center', width: '5%' },
|
||||
{ field: 'timeUv', title: '期间新增UV', align: 'center', width: '5%' },
|
||||
{ field: 'costAmount', title: '新增成本', align: 'center', width: '5%' },
|
||||
{ field: 'ascribeTimeUv', title: '归因新增UV', align: 'center', width: '5%' },
|
||||
{ field: 'inRoomUv', title: '归因后进入归因房间UV', align: 'center', width: '5%' },
|
||||
{ field: 'ascribeCostAmount', title: '归因新增成本', align: 'center', width: '5%' },
|
||||
{ field: 'chatNum', title: '活动内私聊用户数', align: 'center', width: '5%' },
|
||||
{ field: 'chatCostAmount', title: '私聊用户成本', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'handle',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
valign: 'middle',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
value += '<button class="btn btn-sm btn-default opt-grow" data-index="' + index + '">查看付费成长</button>' + '<button class="btn btn-sm btn-default opt-export" data-index="' + index + '">导出用户明细</button><br/>';
|
||||
value += '<button class="btn btn-sm btn-default opt-edit" data-index="' + index + '">编辑</button>' + '<button class="btn btn-sm btn-default opt-del" data-index="' + index + '">删除</button>';
|
||||
return value;
|
||||
}
|
||||
}
|
||||
],
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: false,
|
||||
pageSize: 10,
|
||||
pagination: true,
|
||||
pageList: [10, 20, 50, 100],
|
||||
search: false,
|
||||
sidePagination: "server", //表示服务端请求
|
||||
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
||||
//设置为limit可以获取limit, offset, search, sort, order
|
||||
queryParamsType: "undefined",
|
||||
queryParams: function queryParams(params) { //设置查询参数
|
||||
var param = {
|
||||
page: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
searchKey: $('#erBanNoStr').val(),
|
||||
batchId: $('#batchId').val()
|
||||
};
|
||||
return param;
|
||||
},
|
||||
toolbar: '#toolbar',
|
||||
url: '/admin/flowDataBatchSearch/page',
|
||||
onLoadSuccess: function () { //加载成功时执行
|
||||
console.log("load success");
|
||||
},
|
||||
onLoadError: function () { //加载失败时执行
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
|
||||
// 查询刷新
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
|
||||
//编辑
|
||||
$('#table').on('click', '.opt-edit', function () {
|
||||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||||
var id = currentData.id;
|
||||
var name = currentData.name;
|
||||
var amount = currentData.amount;
|
||||
var searchKey = currentData.searchKey;
|
||||
var startTime = currentData.startTime;
|
||||
var endTime = currentData.endTime;
|
||||
var person = currentData.person;
|
||||
$('#id').val(id);
|
||||
$('#name').val(name);
|
||||
$('#amount').val(amount);
|
||||
$('#searchKey').val(searchKey);
|
||||
$('#startTime').val(startTime);
|
||||
$('#endTime').val(endTime);
|
||||
$('#person').val(person);
|
||||
$("#editModal").modal('show');
|
||||
});
|
||||
|
||||
//导出用户明细
|
||||
$('#table').on('click', '.opt-export', function () {
|
||||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||||
const id = currentData.id;
|
||||
window.location.href = '/admin/flowDataBatchSearch/detailExport?batchId=' + id;
|
||||
});
|
||||
|
||||
//导出付费成长
|
||||
$("#btnExport").on('click', function () {
|
||||
$("#searchForm").submit();
|
||||
$("#growModal").modal('hide');
|
||||
});
|
||||
|
||||
//查看付费成长
|
||||
$('#table').on('click', '.opt-grow', function () {
|
||||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||||
const id = currentData.id;
|
||||
const name = currentData.name;
|
||||
const startTime = currentData.startTime;
|
||||
const endTime = currentData.endTime;
|
||||
const roomName = currentData.roomName;
|
||||
$('#growBatchId').val(id);
|
||||
$('#growModalLabel').html('【' + name + '】的付费成长数据');
|
||||
$('#batchInfo').html('场次名称:' + name + ' 房间:' + roomName + ' 时间:' + startTime + '-' + endTime);
|
||||
$('#growTable').bootstrapTable('destroy');
|
||||
$('#growTable').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'countItem', title: '统计项', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'currCondition',
|
||||
title: '当日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'nextCondition',
|
||||
title: '次日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'threeCondition',
|
||||
title: '3日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'sevenCondition',
|
||||
title: '7日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'fifteenCondition',
|
||||
title: '15日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'thirtyCondition',
|
||||
title: '30日情况',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'totalCondition',
|
||||
title: '累计到目前',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (row.isPercentage) {
|
||||
value = (val * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
value = val.toFixed(2);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
],
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: false,
|
||||
pageSize: 50,
|
||||
pagination: true,
|
||||
pageList: [20, 50, 100],
|
||||
search: false,
|
||||
sidePagination: "server", //表示服务端请求
|
||||
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
||||
//设置为limit可以获取limit, offset, search, sort, order
|
||||
queryParamsType: "undefined",
|
||||
queryParams: function queryParams(params) { //设置查询参数
|
||||
var param = {
|
||||
batchId: id,
|
||||
};
|
||||
return param;
|
||||
},
|
||||
url: '/admin/flowDataBatchSearch/growList',
|
||||
onLoadSuccess: function () { //加载成功时执行
|
||||
console.log("load success");
|
||||
},
|
||||
onLoadError: function () { //加载失败时执行
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
$("#growModal").modal('show');
|
||||
});
|
||||
|
||||
$("#save").click(function () {
|
||||
const msg = '确定要保存吗?';
|
||||
if (confirm(msg)) {
|
||||
let id = $('#id').val();
|
||||
let startTime = $('#startTime').val();
|
||||
let endTime = $('#endTime').val();
|
||||
if (getDate(endTime).getMonth() != getDate(startTime).getMonth()) {
|
||||
$("#tipMsg").text("归因场次不允许跨月.");
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
if ((getDate(endTime).getTime() - getDate(startTime).getTime()) > (36 * 60 * 60 * 1000)) {
|
||||
$("#tipMsg").text("时间间隔不能超过36h.");
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
const data = {
|
||||
name: $('#name').val(),
|
||||
amount: $('#amount').val(),
|
||||
searchKey: $('#searchKey').val(),
|
||||
startTime: startTime,
|
||||
endTime: endTime,
|
||||
person: $('#person').val(),
|
||||
}
|
||||
if (id) {
|
||||
data.id = id;
|
||||
}
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "/admin/flowDataBatchSearch/save",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function (json) {
|
||||
if (json.success == 'true' || json.code == 200) {
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#editModal").modal('hide');
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
$("#editModal").modal('hide');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//删除
|
||||
$('#table').on('click', '.opt-del', function () {
|
||||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||||
var id = currentData.id;
|
||||
const msg = '确定要删除吗?';
|
||||
if (confirm(msg)) {
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/admin/flowDataBatchSearch/del?batchId=" + id,
|
||||
dataType: "json",
|
||||
success: function (json) {
|
||||
if (json.success == 'true' || json.code == 200) {
|
||||
$("#tipMsg").text("删除成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#editModal").modal('hide');
|
||||
} else {
|
||||
$("#tipMsg").text("删除失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
$("#editModal").modal('hide');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//新增
|
||||
$('#btnAdd').on('click', function () {
|
||||
$("#id").val('');
|
||||
$("#name").val('');
|
||||
$("#amount").val('');
|
||||
$("#searchKey").val('');
|
||||
$("#startTime").val('');
|
||||
$("#endTime").val('');
|
||||
$("#person").val('');
|
||||
$("#editModal").modal('show');
|
||||
});
|
||||
|
||||
function getBatch() {
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/admin/flowDataBatchSearch/list",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (json) {
|
||||
if (json.success == 'true' || json.code == 200) {
|
||||
var array = json.data;
|
||||
var $select = $('#batchId');
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
var $option = $('<option value="' + array[i].id + '" />');
|
||||
$option.html(array[i].name);
|
||||
$select.append($option);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
@@ -280,7 +280,7 @@ export default {
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#updateItemModal").modal('hide');
|
||||
$("#updateCapModal").modal('hide');
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
@@ -323,6 +323,7 @@ export default {
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#addCapModal").modal('hide');
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
|
@@ -331,7 +331,7 @@ export default {
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#updateItemModal").modal('hide');
|
||||
$("#updateJoinHandModal").modal('show');
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
@@ -374,6 +374,7 @@ export default {
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
TableHelper.doRefresh("#table");
|
||||
$("#addJoinHandModal").modal('hide');
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败." + json.message);
|
||||
$("#tipModal").modal('show');
|
||||
|
@@ -587,6 +587,12 @@ export default {
|
||||
$("#nobleId").btComboBox('disable');
|
||||
ComboboxHelper.setDef("#nobleId", '0');
|
||||
ComboboxHelper.setDef("#enable", '2');
|
||||
$("input:radio[name='enable']")[0].checked = true;
|
||||
$("input:radio[name='isSale']")[0].checked = true;
|
||||
$("input:radio[name='isNobleLimit']")[0].checked = true;
|
||||
$("input:radio[name='isMonsterLimit']")[0].checked = true;
|
||||
$("input:radio[name='isWeekStarLimit']")[0].checked = true;
|
||||
$("input:radio[name='isActivityLimit']")[0].checked = true;
|
||||
});
|
||||
$("#nobleId").on('change', function () {
|
||||
if (ComboboxHelper.getSelected("#nobleId") != 0) {
|
||||
@@ -882,11 +888,6 @@ export default {
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
if (!effect) {
|
||||
$("#tipMsg").text("请上传动画图片");
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
if (!days || days <= 0) {
|
||||
$("#tipMsg").text("请输入合理的购买天数");
|
||||
$("#tipModal").modal('show');
|
||||
|
@@ -42,7 +42,7 @@
|
||||
<div class="form-group">
|
||||
<label for="resourceA" class="col-sm-3 control-label">A策略<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="status" id="resourceA" class="form-control validate[required]">
|
||||
<select name="status" id="resourceA" class="form-control validate[required]" oninput="changeContent('A')">
|
||||
<option value=""></option>
|
||||
<option value="1">牌照房</option>
|
||||
<option value="2">相亲房</option>
|
||||
@@ -67,7 +67,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="boxA">
|
||||
<label for="contentA" class="col-sm-3 control-label" id="contentLabA"></label>
|
||||
<label for="contentA" class="col-sm-3 control-label" id="contentLabA">房主音萌号<font color="red">*
|
||||
</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control validate[required]" name="name" id="contentA">
|
||||
</div>
|
||||
@@ -77,7 +78,7 @@
|
||||
<div class="form-group">
|
||||
<label for="resourceB" class="col-sm-3 control-label">B策略<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="status" id="resourceB" class="form-control validate[required]">
|
||||
<select name="status" id="resourceB" class="form-control validate[required]" oninput="changeContent('B')">
|
||||
<option value=""></option>
|
||||
<option value="1">牌照房</option>
|
||||
<option value="2">相亲房</option>
|
||||
@@ -108,11 +109,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--B策略-->
|
||||
<!--C策略-->
|
||||
<div class="form-group">
|
||||
<label for="resourceC" class="col-sm-3 control-label">C策略<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="status" id="resourceC" class="form-control validate[required]">
|
||||
<select name="status" id="resourceC" class="form-control validate[required]" oninput="changeContent('C')">
|
||||
<option value=""></option>
|
||||
<option value="1">牌照房</option>
|
||||
<option value="2">相亲房</option>
|
||||
@@ -146,9 +147,9 @@
|
||||
|
||||
<!--D策略-->
|
||||
<div class="form-group">
|
||||
<label for="resourceD" class="col-sm-3 control-label">C策略<font color="red">*</font>:</label>
|
||||
<label for="resourceD" class="col-sm-3 control-label">D策略<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="status" id="resourceD" class="form-control validate[required]">
|
||||
<select name="status" id="resourceD" class="form-control validate[required]" oninput="changeContent('D')">
|
||||
<option value=""></option>
|
||||
<option value="1">牌照房</option>
|
||||
<option value="2">相亲房</option>
|
||||
@@ -172,6 +173,47 @@
|
||||
class="form-control validate[required]">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="boxD">
|
||||
<label for="contentD" class="col-sm-3 control-label" id="contentLabD">房主音萌号<font color="red">*
|
||||
</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control validate[required]" name="name" id="contentD">
|
||||
</div>
|
||||
</div>
|
||||
<!--E策略-->
|
||||
<div class="form-group">
|
||||
<label for="resourceE" class="col-sm-3 control-label">E策略<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="status" id="resourceE" class="form-control validate[required]" oninput="changeContent('E')">
|
||||
<option value=""></option>
|
||||
<option value="1">牌照房</option>
|
||||
<option value="2">相亲房</option>
|
||||
<option value="3">PK房</option>
|
||||
<option value="4">游戏房</option>
|
||||
<option value="5">H5</option>
|
||||
<option value="6">自定义房间</option>
|
||||
<option value="7">个播房</option>
|
||||
<option value="8">聊天</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">E图标<font color="red">*</font>:</label>
|
||||
<div class="col-sm-8">
|
||||
<img src="" id="iconImgUrlE" style='width:108px;height:45px;' alt="">
|
||||
<input type="file" id="iconFileE" name='uploadFile'
|
||||
accept='image/gif,image/jpeg,image/jpg,image/png,image/svg'>
|
||||
<button class="btn btn-success" type='button' id="iconBtnE">上传</button>
|
||||
<input type="hidden" id="iconUrlE" name='alertWinPic'
|
||||
class="form-control validate[required]">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="boxE">
|
||||
<label for="contentE" class="col-sm-3 control-label" id="contentLabE"></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control validate[required]" name="name" id="contentE">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">生效时段<font color="red">*</font>:</label>
|
||||
@@ -214,7 +256,74 @@ import { formatTime, serverError } from '@/utils/maintainer';
|
||||
|
||||
export default {
|
||||
name: "RecommendResourceAdminView",
|
||||
setup() { },
|
||||
setup() {
|
||||
function changeContent(tag) {
|
||||
let resourceType = $('#resource' + tag).val();
|
||||
let $box = $('#box' + tag);
|
||||
$box.children().remove();
|
||||
//游戏房
|
||||
if (resourceType == 4) {
|
||||
let $label = $('<label/>');
|
||||
$label.attr('for', 'content' + tag);
|
||||
$label.attr('class', 'col-sm-3 control-label');
|
||||
$label.attr('id', 'contentLab' + tag);
|
||||
$label.html('游戏类型:');
|
||||
$box.append($label);
|
||||
$.ajax({
|
||||
url: '/admin/miniGame/statis/mgList',
|
||||
type: 'GET',
|
||||
async: false,
|
||||
datatype: 'json',
|
||||
success: function (res) {
|
||||
console.log(res);
|
||||
if (res) {
|
||||
let data = res.data;
|
||||
let $div = $('<div/>');
|
||||
$div.attr('class', 'col-sm-9');
|
||||
var $select = $('<select/>');
|
||||
$select.attr('class', 'form-control validate[required]');
|
||||
$select.attr('id', 'content' + tag);
|
||||
let $allOption = $('<option/>');
|
||||
$allOption.html('全部');
|
||||
$select.append($allOption);
|
||||
for (let i = 0, len = data.length; i < len; i++) {
|
||||
let item = data[i];
|
||||
let $option = $('<option/>');
|
||||
$option.attr('value', item.mgIdStr);
|
||||
$option.html(item.name);
|
||||
$select.append($option);
|
||||
}
|
||||
$div.append($select);
|
||||
$box.append($div);
|
||||
}
|
||||
},
|
||||
});
|
||||
$box.show();
|
||||
//H5或自定义房间
|
||||
} else if (resourceType == 5 || resourceType == 6) {
|
||||
let $label = $('<label/>');
|
||||
$label.attr('for', 'content' + tag);
|
||||
$label.attr('class', 'col-sm-3 control-label');
|
||||
$label.attr('id', 'contentLab' + tag);
|
||||
$label.html('房主音萌号<font color="red">*</font>:');
|
||||
$box.append($label);
|
||||
let $div = $('<div/>');
|
||||
$div.attr('class', 'col-sm-9');
|
||||
let $input = $('<input/>');
|
||||
$input.attr('type', 'text');
|
||||
$input.attr('class', 'form-control validate[required]');
|
||||
$input.attr('name', 'name');
|
||||
$input.attr('id', 'content' + tag);
|
||||
$div.append($input);
|
||||
$box.append($div);
|
||||
$box.show();
|
||||
}
|
||||
}
|
||||
window.changeContent = changeContent;
|
||||
return {
|
||||
changeContent,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
this.initData();
|
||||
@@ -286,6 +395,15 @@ export default {
|
||||
return pardeResourceType(val);
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'resourceE',
|
||||
title: 'E',
|
||||
align: 'center',
|
||||
width: '15%',
|
||||
formatter: function (val) {
|
||||
return pardeResourceType(val);
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'beginTime', title: '开始时间', align: 'center', valign: 'middle', width: '10%',
|
||||
formatter: function (val, row, index) {
|
||||
@@ -326,7 +444,6 @@ export default {
|
||||
align: 'center',
|
||||
width: '10%',
|
||||
formatter: function (val, row, index) {
|
||||
if (row.isDefault) return '';
|
||||
return '<button id="btnEdit" name="btnEdit" class="btn btn-sm btn-success opt-edit" data-id=' + val + '>' +
|
||||
'<i class="glyphicon glyphicon-edit"></i> 编辑</button>' +
|
||||
' <button class="btn btn-sm btn-danger opt-remove" data-id=' + val +
|
||||
@@ -385,10 +502,16 @@ export default {
|
||||
//新建标签
|
||||
$("#btnAdd").click(function () {
|
||||
clearModal();
|
||||
window.changeContent('A');
|
||||
window.changeContent('B');
|
||||
window.changeContent('C');
|
||||
window.changeContent('D');
|
||||
window.changeContent('E');
|
||||
$("#boxA").hide();
|
||||
$("#boxB").hide();
|
||||
$("#boxC").hide();
|
||||
$("#boxD").hide();
|
||||
$("#boxE").hide();
|
||||
$("#roomTagModal").modal('show');
|
||||
});
|
||||
$("#add").click(function () {
|
||||
@@ -397,14 +520,17 @@ export default {
|
||||
var resourceB = $("#resourceB").val();
|
||||
var resourceC = $("#resourceC").val();
|
||||
var resourceD = $("#resourceD").val();
|
||||
var resourceE = $("#resourceE").val();
|
||||
var iconA = $("#iconUrlA").val();
|
||||
var iconB = $("#iconUrlB").val();
|
||||
var iconC = $("#iconUrlC").val();
|
||||
var iconD = $("#iconUrlD").val();
|
||||
var iconE = $("#iconUrlE").val();
|
||||
var contentA = $("#contentA").val();
|
||||
var contentB = $("#contentB").val();
|
||||
var contentC = $("#contentC").val();
|
||||
var contentD = $("#contentD").val();
|
||||
var contentE = $("#contentE").val();
|
||||
var beginTime = $("#beginTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
var userSource = $("#userSource").val();
|
||||
@@ -429,6 +555,11 @@ export default {
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
if (iconE == null || iconE == '') {
|
||||
$("#tipMsg").text("保存失败,请先上传图片!");
|
||||
$("#tipModal").modal('show');
|
||||
return;
|
||||
}
|
||||
if ($("#addForm").validationEngine('validate')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
@@ -439,14 +570,17 @@ export default {
|
||||
resourceB: resourceB,
|
||||
resourceC: resourceC,
|
||||
resourceD: resourceD,
|
||||
resourceE: resourceE,
|
||||
iconA: iconA,
|
||||
iconB: iconB,
|
||||
iconC: iconC,
|
||||
iconD: iconD,
|
||||
iconE: iconE,
|
||||
contentA: contentA,
|
||||
contentB: contentB,
|
||||
contentC: contentC,
|
||||
contentD: contentD,
|
||||
contentE: contentE,
|
||||
beginTime: beginTime,
|
||||
endTime: endTime,
|
||||
userSource: userSource,
|
||||
@@ -485,34 +619,47 @@ export default {
|
||||
$("#resourceB").val(json.resourceB);
|
||||
$("#resourceC").val(json.resourceC);
|
||||
$("#resourceD").val(json.resourceD);
|
||||
if (json.resourceA == 5 || json.resourceA == 6) {
|
||||
$("#resourceE").val(json.resourceE);
|
||||
window.changeContent('A');
|
||||
window.changeContent('B');
|
||||
window.changeContent('C');
|
||||
window.changeContent('D');
|
||||
window.changeContent('E');
|
||||
if (json.resourceA == 4 || json.resourceA == 5 || json.resourceA == 6) {
|
||||
$("#contentA").val(json.contentA);
|
||||
$("#boxA").show();
|
||||
} else {
|
||||
$("#contentA").val('');
|
||||
$("#boxA").hide();
|
||||
}
|
||||
if (json.resourceB == 5 || json.resourceB == 6) {
|
||||
if (json.resourceB == 4 || json.resourceB == 5 || json.resourceB == 6) {
|
||||
$("#contentB").val(json.contentB);
|
||||
$("#boxB").show();
|
||||
} else {
|
||||
$("#contentB").val('');
|
||||
$("#boxB").hide();
|
||||
}
|
||||
if (json.resourceC == 5 || json.resourceC == 6) {
|
||||
if (json.resourceC == 4 || json.resourceC == 5 || json.resourceC == 6) {
|
||||
$("#contentC").val(json.contentC);
|
||||
$("#boxC").show();
|
||||
} else {
|
||||
$("#contentC").val('');
|
||||
$("#boxC").hide();
|
||||
}
|
||||
if (json.resourceD == 5 || json.resourceD == 6) {
|
||||
$("#contentD").val(json.contentC);
|
||||
if (json.resourceD == 4 || json.resourceD == 5 || json.resourceD == 6) {
|
||||
$("#contentD").val(json.contentD);
|
||||
$("#boxD").show();
|
||||
} else {
|
||||
$("#contentD").val('');
|
||||
$("#boxD").hide();
|
||||
}
|
||||
if (json.resourceE == 4 || json.resourceE == 5 || json.resourceE == 6) {
|
||||
$("#contentE").val(json.contentE);
|
||||
$("#boxE").show();
|
||||
} else {
|
||||
$("#contentE").val('');
|
||||
$("#boxE").hide();
|
||||
}
|
||||
$("#beginTime").val(formatTime(json.beginTime));
|
||||
$("#endTime").val(formatTime(json.endTime));
|
||||
$("#userSource").val(json.userSource);
|
||||
@@ -525,6 +672,8 @@ export default {
|
||||
$('#iconImgUrlC').attr('src', json.iconC);
|
||||
$('#iconUrlD').val(json.iconD);
|
||||
$('#iconImgUrlD').attr('src', json.iconD);
|
||||
$('#iconUrlE').val(json.iconE);
|
||||
$('#iconImgUrlE').attr('src', json.iconE);
|
||||
// 打开编辑弹窗
|
||||
$("#roomTagModal").modal('show');
|
||||
$("#modalLabel").text("编辑房间标签");
|
||||
@@ -681,9 +830,41 @@ export default {
|
||||
}
|
||||
});
|
||||
})
|
||||
$('#iconBtnE').on('click', function () {
|
||||
if ($('#iconFileE').val() == '') {
|
||||
$('#tipMsg').text('上传图片为空');
|
||||
$('#tipModal').modal('show');
|
||||
return;
|
||||
}
|
||||
$.ajaxFileUpload({
|
||||
fileElementId: 'iconFileE', //需要上传的文件域的ID,即<input type="file">的ID。
|
||||
url: '/admin/upload/img', //后台方法的路径
|
||||
type: 'post', //当要提交自定义参数时,这个参数要设置成post
|
||||
dataType: 'json', //服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
|
||||
secureuri: false, //是否启用安全提交,默认为false。
|
||||
async: true, //是否是异步
|
||||
success: function (json) { //提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
|
||||
if (json.path) {
|
||||
$('#iconUrlE').val(json.path);
|
||||
$('#iconImgUrlE').attr("src", json.path);
|
||||
console.log(json.path);
|
||||
} else {
|
||||
$("#tipMsg").text(json.msg);
|
||||
$("#tipModal").modal('show');
|
||||
}
|
||||
},
|
||||
error: function (data, status, e) { //提交失败自动执行的处理函数。
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
})
|
||||
$("#resourceA").change(function () {
|
||||
var optVal = $(this).val();
|
||||
if (optVal != undefined && optVal == 5) {
|
||||
window.changeContent('A');
|
||||
if (optVal != undefined && optVal == 4) {
|
||||
$('#contentA').val('');
|
||||
$("#boxA").show();
|
||||
} else if (optVal != undefined && optVal == 5) {
|
||||
$('#contentA').val('');
|
||||
$('#contentLabA').html('网址链接<font color="red">*</font>:');
|
||||
$("#boxA").show();
|
||||
@@ -698,7 +879,11 @@ export default {
|
||||
});
|
||||
$("#resourceB").change(function () {
|
||||
var optVal = $(this).val();
|
||||
if (optVal != undefined && optVal == 5) {
|
||||
window.changeContent('B');
|
||||
if (optVal != undefined && optVal == 4) {
|
||||
$('#contentB').val('');
|
||||
$("#boxB").show();
|
||||
} else if (optVal != undefined && optVal == 5) {
|
||||
$('#contentB').val('');
|
||||
$('#contentLabB').html('网址链接<font color="red">*</font>:');
|
||||
$("#boxB").show();
|
||||
@@ -713,7 +898,11 @@ export default {
|
||||
});
|
||||
$("#resourceC").change(function () {
|
||||
var optVal = $(this).val();
|
||||
if (optVal != undefined && optVal == 5) {
|
||||
window.changeContent('C');
|
||||
if (optVal != undefined && optVal == 4) {
|
||||
$('#contentC').val('');
|
||||
$("#boxC").show();
|
||||
} else if (optVal != undefined && optVal == 5) {
|
||||
$('#contentC').val('');
|
||||
$('#contentLabC').html('网址链接<font color="red">*</font>:');
|
||||
$("#boxC").show();
|
||||
@@ -728,7 +917,11 @@ export default {
|
||||
});
|
||||
$("#resourceD").change(function () {
|
||||
var optVal = $(this).val();
|
||||
if (optVal != undefined && optVal == 5) {
|
||||
window.changeContent('D');
|
||||
if (optVal != undefined && optVal == 4) {
|
||||
$('#contentD').val('');
|
||||
$("#boxD").show();
|
||||
} else if (optVal != undefined && optVal == 5) {
|
||||
$('#contentD').val('');
|
||||
$('#contentLabD').html('网址链接<font color="red">*</font>:');
|
||||
$("#boxD").show();
|
||||
@@ -741,6 +934,25 @@ export default {
|
||||
$("#boxD").hide();
|
||||
}
|
||||
});
|
||||
$("#resourceE").change(function () {
|
||||
var optVal = $(this).val();
|
||||
window.changeContent('E');
|
||||
if (optVal != undefined && optVal == 4) {
|
||||
$('#contentE').val('');
|
||||
$("#boxE").show();
|
||||
} else if (optVal != undefined && optVal == 5) {
|
||||
$('#contentE').val('');
|
||||
$('#contentLabE').html('网址链接<font color="red">*</font>:');
|
||||
$("#boxE").show();
|
||||
} else if (optVal != undefined && optVal == 6) {
|
||||
$('#contentE').val('');
|
||||
$('#contentLabE').html('房主音萌开黑号<font color="red">*</font>:');
|
||||
$("#boxE").show();
|
||||
} else {
|
||||
$('#contentE').val('');
|
||||
$("#boxE").hide();
|
||||
}
|
||||
});
|
||||
function pardeResourceType(val) {
|
||||
if (val == 1) {
|
||||
return '牌照房';
|
||||
@@ -776,14 +988,19 @@ export default {
|
||||
$('#iconUrlD').val('');
|
||||
$('#iconImgUrlD').attr('src', '');
|
||||
$('#iconFileD').val('');
|
||||
$('#iconUrlE').val('');
|
||||
$('#iconImgUrlE').attr('src', '');
|
||||
$('#iconFileE').val('');
|
||||
$('#contentA').val('');
|
||||
$('#contentB').val('');
|
||||
$('#contentC').val('');
|
||||
$('#contentD').val('');
|
||||
$('#contentE').val('');
|
||||
$('#resourceA').val('');
|
||||
$('#resourceB').val('');
|
||||
$('#resourceC').val('');
|
||||
$('#resourceD').val('');
|
||||
$('#resourceE').val('');
|
||||
$('#beginTime').val('');
|
||||
$('#endTime').val('');
|
||||
}
|
||||
|
@@ -255,6 +255,21 @@ export default {
|
||||
{ field: 'teamName', title: '所属小组', align: 'center', width: '5%', },
|
||||
{ field: 'memberName', title: '所属成员', align: 'center', width: '5%' },
|
||||
{ field: 'inviteCode', title: '所属邀请码', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'source',
|
||||
title: '邀请码填写类型',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val) {
|
||||
let value = '';
|
||||
if (val == 0) {
|
||||
value = '自填';
|
||||
} else if (val == 1) {
|
||||
value = '补填';
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'inviteTime', title: '邀请时间', align: 'center', width: '5%',
|
||||
formatter: function (val) {
|
||||
|
213
src/views/flowteam/invitationCodeRecord.vue
Normal file
213
src/views/flowteam/invitationCodeRecord.vue
Normal file
@@ -0,0 +1,213 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- 搜索 -->
|
||||
<div class="userId">
|
||||
<span>邀请码 </span>
|
||||
<el-input
|
||||
v-model="invitationCode"
|
||||
style="width: 60%"
|
||||
placeholder=""
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
<div class="userId">
|
||||
<span>被邀请者id </span>
|
||||
<el-input
|
||||
v-model="beInviterId"
|
||||
style="width: 60%"
|
||||
placeholder=""
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
<div class="userId">
|
||||
<span>邀请者id </span>
|
||||
<el-input
|
||||
v-model="inviterId"
|
||||
style="width: 60%"
|
||||
placeholder=""
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
<!-- 查询 -->
|
||||
<el-button
|
||||
style="margin-right: 20px"
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="getDatas()"
|
||||
>查询</el-button
|
||||
>
|
||||
<el-button class="primary" type="primary" @click="derive()">导出</el-button>
|
||||
<!-- 外层表格 -->
|
||||
<el-table :data="tableData" border style="margin-top: 25px; width: 100%">
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviteeErbanNo"
|
||||
align="center"
|
||||
label="被邀请人id"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviteeNick"
|
||||
align="center"
|
||||
label="被邀请人昵称"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviteeCreateTime"
|
||||
align="center"
|
||||
label="注册时间"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="refillTime"
|
||||
align="center"
|
||||
label="补填邀请码时间"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="source"
|
||||
align="center"
|
||||
label="补填方式"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviteCode"
|
||||
align="center"
|
||||
label="补填邀请码"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviterErbanNo"
|
||||
align="center"
|
||||
label="邀请码拥有者id"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="inviteeNick"
|
||||
align="center"
|
||||
label="被邀请码拥有者昵称"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="teamName"
|
||||
align="center"
|
||||
label="所属团队"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="groupName"
|
||||
align="center"
|
||||
label="所属小组"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { pageRefillUserInviteCode } from "@/api/flowteam/invitationCodeRecord";
|
||||
import exportToExcel from "@/utils/excelUtils";
|
||||
import { dateFormat } from "@/utils/date";
|
||||
export default {
|
||||
name: "invitationCodeRecord",
|
||||
data() {
|
||||
return {
|
||||
invitationCode: "",
|
||||
beInviterId: "",
|
||||
inviterId: "",
|
||||
total: 0,
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
tableData: [], //外层表格数据存放
|
||||
};
|
||||
},
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
created() {
|
||||
this.getDatas();
|
||||
},
|
||||
methods: {
|
||||
// 查询按钮
|
||||
getDatas() {
|
||||
pageRefillUserInviteCode({
|
||||
inviteCode: this.invitationCode,
|
||||
inviteeErbanNo: this.beInviterId,
|
||||
inviterErbanNo: this.inviterId,
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
console.log(res.data.total)
|
||||
this.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
});
|
||||
},
|
||||
// 导出
|
||||
derive() {
|
||||
pageRefillUserInviteCode({
|
||||
inviteCode: this.invitationCode,
|
||||
inviteeErbanNo: this.beInviterId,
|
||||
inviterErbanNo: this.inviterId,
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
var list = [
|
||||
{ 被邀请人id: "inviteeUid" },
|
||||
{ 被邀请人昵称: "inviteeNick" },
|
||||
{ 注册时间: "inviteeCreateTime" },
|
||||
{ 补填邀请码时间: "refillTime" },
|
||||
{ 补填方式: "source" },
|
||||
{ 补填邀请码: "inviteCode" },
|
||||
{ 邀请码拥有者id: "inviterErbanNo" },
|
||||
{ 被邀请码拥有者昵称: "inviteeNick" },
|
||||
{ 所属团队: "teamName" },
|
||||
{ 所属小组: "groupName" },
|
||||
];
|
||||
exportToExcel(res.data.rows, "补填邀请码记录", list, ["Sheet1"]);
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange(val) {
|
||||
this.getDatas();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.getDatas();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.userId {
|
||||
float: left;
|
||||
width: 300px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.el-button + .el-button {
|
||||
margin-left: 0;
|
||||
}
|
||||
</style>
|
@@ -21,6 +21,11 @@
|
||||
<select id="queryClanLevel" name="queryClanLevel" class="input-sm">
|
||||
</select>
|
||||
</div>
|
||||
<label for="clanName" class="col-sm-2 control-label">家族名称:</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control" name="clanName" id="clanName"
|
||||
placeholder="请输入家族名称,填多个用,隔开">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<button id="btnSearch" class="btn btn-default">
|
||||
@@ -300,6 +305,8 @@ export default {
|
||||
{ field: 'clanId', title: '家族id', align: 'center', width: '5%' },
|
||||
{ field: 'clanElderUid', title: '族长uid', align: 'center', width: '5%' },
|
||||
{ field: 'clanElderErbanNo', title: '族长音萌号', align: 'center', width: '5%' },
|
||||
{ field: 'clanElderNick', title: '族长昵称', align: 'center', width: '5%' },
|
||||
{ field: 'clanName', title: '家族名称', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'avatar', title: '家族封面', align: 'center', valign: 'middle', width: '10%',
|
||||
formatter: function (val, row, index) {
|
||||
@@ -348,7 +355,8 @@ export default {
|
||||
pageSize: params.pageSize,
|
||||
erbanNo: $('#erbanNo').val(),
|
||||
clanId: $('#clanId').val(),
|
||||
level: $("#queryClanLevel").val()
|
||||
level: $("#queryClanLevel").val(),
|
||||
clanName: $('#clanName').val(),
|
||||
};
|
||||
currParams = param;
|
||||
return param;
|
||||
|
@@ -202,6 +202,7 @@ export default {
|
||||
columns: [
|
||||
{ field: 'clanName', title: '家族名称', align: 'center', width: '5%' },
|
||||
{ field: 'clanErbanNo', title: '族长音萌号', align: 'center', width: '5%' },
|
||||
{ field: 'clanElderNick', title: '族长昵称', align: 'center', width: '5%' },
|
||||
{ field: 'clanId', title: '家族id', align: 'center', width: '10%' },
|
||||
{ field: 'roomIncome', title: '房间总流水', align: 'center', width: '10%' },
|
||||
{ field: 'bagIncome', title: '背包礼物总流水', align: 'center', width: '10%' },
|
||||
|
@@ -26,8 +26,10 @@
|
||||
<button id="btnSearch" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-search"></i>查询
|
||||
</button>
|
||||
<button id="btnExport" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-export"></i>导出
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -39,6 +41,8 @@
|
||||
</template>
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { cleanArray } from '@/utils/maintainer';
|
||||
|
||||
export default {
|
||||
name: "HallAdminView",
|
||||
setup() { },
|
||||
@@ -85,6 +89,9 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'clanElderNick', title: '家族昵称', align: 'center', width: '5%' },
|
||||
{ field: 'clanName', title: '家族名称', align: 'center', width: '5%' },
|
||||
{ field: 'hallNick', title: '会长昵称', align: 'center', width: '5%' },
|
||||
{ field: 'hallId', title: '公会id', align: 'center', width: '5%' },
|
||||
{ field: 'ownerUid', title: '会长uid', align: 'center', width: '5%' },
|
||||
{ field: 'ownerErbanNo', title: '会长音萌号', align: 'center', width: '5%' },
|
||||
@@ -126,6 +133,27 @@ export default {
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
// 导出
|
||||
$('#btnExport').on('click', function () {
|
||||
console.log("导出")
|
||||
window.location.href = `/admin/hall/exportHallMemberStatistic?${param(getQueryParams())}`
|
||||
})
|
||||
function param(json) {
|
||||
if (!json) return ''
|
||||
return cleanArray(Object.keys(json).map(key => {
|
||||
if (json[key] === undefined) return ''
|
||||
return encodeURIComponent(key) + '=' +
|
||||
encodeURIComponent(json[key])
|
||||
})).join('&')
|
||||
}
|
||||
function getQueryParams() {
|
||||
var param = {
|
||||
ownerErbanNo: $('#ownerErbanNo').val(),
|
||||
hallIdStr: $('#hallIdStr').val(),
|
||||
clanElderErbanNoStr: $('#clanElderErbanNoStr').val(),
|
||||
};
|
||||
return param;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@@ -143,6 +143,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'clanElderNick', title: '族长昵称', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'hallId', title: '公会id', align: 'center', width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
|
@@ -290,7 +290,6 @@
|
||||
</template>
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import ComboboxHelper from '@/assets/plugins/bootstrap-combobox/js/bootstrap-combobox-helper';
|
||||
|
||||
export default {
|
||||
name: "HeadwearAdminView",
|
||||
@@ -703,7 +702,6 @@ export default {
|
||||
$("#radishPrice").val(json.radishPrice);
|
||||
$("#radishRenewPrice").val(json.radishRenewPrice);
|
||||
$("#radishOriginalPrice").val(json.radishOriginalPrice);
|
||||
ComboboxHelper.setDef("#enable", json.enable);
|
||||
if (json.goldSale == true) {
|
||||
$("input:radio[name='goldSale']")[1].checked = true;
|
||||
} else {
|
||||
|
@@ -58,7 +58,7 @@
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
export default {
|
||||
name: "ChatpickAdminView",
|
||||
name: "ChatPickAdminView",
|
||||
setup() { },
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
|
304
src/views/home/HomeGameTabAdminView.vue
Normal file
304
src/views/home/HomeGameTabAdminView.vue
Normal file
@@ -0,0 +1,304 @@
|
||||
<template>
|
||||
<section class="content">
|
||||
<div class="box box-danger">
|
||||
<div class="box-body">
|
||||
<!-- Content Header (Page header) -->
|
||||
<section class="content-header">
|
||||
<h1 id="itemTitle"></h1>
|
||||
</section>
|
||||
<!-- .content -->
|
||||
<section class="content">
|
||||
<div id="table"></div>
|
||||
<div id="toolbar">
|
||||
<button id="addBtn" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-plus"></i>添加
|
||||
</button>
|
||||
</div>
|
||||
</section><!-- .content -->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="modalLabel">添加分类</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal">
|
||||
<input type="hidden" name="id" v-model="homeGameTab.id" />
|
||||
<div class="form-group">
|
||||
<label for="seqNo" class="col-sm-3 control-label">排序<font color="red">*</font>:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control validate[required]" name="seqNo" id="seqNo"
|
||||
v-model="homeGameTab.seqNo" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="tabName" class="col-sm-3 control-label">名称<font color="red">*</font>:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control validate[required]" name="tabName" id="tabName"
|
||||
v-model="homeGameTab.tabName" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="gameId" class="col-sm-3 control-label">游戏类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="gameId" class="form-control" id="gameId" v-model="homeGameTab.gameId">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="erbanNoStr" class="col-sm-3 control-label">用户列表:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control validate[required]" name="erbanNoStr" id="erbanNoStr" placeholder="多个用,隔开"
|
||||
v-model="homeGameTab.erbanNoStr" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">选中状态图</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="hidden" class="form-control" name="onClick" v-model="homeGameTab.onClick" />
|
||||
<img :src="homeGameTab.onClick" style="width:120px;"/>
|
||||
<input type="file" class="form-control" id="onClickFile" name="uploadFile">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-8">
|
||||
<button class="btn btn-success col-sm-4" type="button" id="onClickUploadBtn">上传</button>
|
||||
<span class="btn col-sm-4" id="onClickUploadInfo" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">未选中状态图</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="hidden" class="form-control" name="onUnclick" v-model="homeGameTab.onUnclick" />
|
||||
<img :src="homeGameTab.onUnclick" style="width:120px;"/>
|
||||
<input type="file" class="form-control" id="onUnclickFile" name="uploadFile">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-8">
|
||||
<button class="btn btn-success col-sm-4" type="button" id="onUnclickUploadBtn">上传</button>
|
||||
<span class="btn col-sm-4" id="onUnclickUploadInfo" style="color:red;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
<button type="button" class="btn btn-primary" id="save">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { getHomeGameTabPage, saveHomeGameTab, updateHomeGameTab, delHomeGameTab } from '@/api/home/homeGameTab';
|
||||
import { getGamePartnerList } from '@/api/game/gamePartner';
|
||||
import { uploadFile } from '@/api/common/upload';
|
||||
import { apiResult, buildSelectOption } from '@/utils/maintainer';
|
||||
|
||||
export default {
|
||||
name: 'HomeGameTabAdminView',
|
||||
data() {
|
||||
return {
|
||||
columns: [
|
||||
{ field: 'seqNo', title: '排序', align: 'center', width: '5%' },
|
||||
{ field: 'tabName', title: '游戏名', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'onClick',
|
||||
title: '点击状态下图片',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<img src="' + val + '" width="70" height="60"/>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'onUnclick',
|
||||
title: '未点击状态下图片',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<img src="' + val + '" width="70" height="60"/>';
|
||||
}
|
||||
},
|
||||
{ field: 'erbanNoStr', title: '配置用户列表', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'id',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: '20%',
|
||||
formatter: function (val, row, index) {
|
||||
let value = '<button class="btn btn-sm btn-success opt-edit" data-id="' + val + '" data-index="' + index + '">编辑</button>';
|
||||
value += '<button class="btn btn-sm btn-danger opt-del" data-id="' + val + '" data-index="' + index + '">删除</button>';
|
||||
return value;
|
||||
}
|
||||
}
|
||||
],
|
||||
gamePartners: [],
|
||||
homeGameTab: {
|
||||
id: 0,
|
||||
tabName: '',
|
||||
gameId: 0,
|
||||
onClick: '',
|
||||
onUnclick: '',
|
||||
erbanNoStr: '',
|
||||
seqNo: 0,
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getGame();
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
this.$nextTick(function () {
|
||||
let $this = this;
|
||||
$this.initTable();
|
||||
$('#addBtn').click(function () {
|
||||
$this.add();
|
||||
});
|
||||
$('#table').on('click', '.opt-edit', function () {
|
||||
$this.edit(this);
|
||||
});
|
||||
$('#table').on('click', '.opt-del', function () {
|
||||
$this.del(this);
|
||||
});
|
||||
$('#save').click(function () {
|
||||
$this.save();
|
||||
});
|
||||
$('#onClickUploadBtn').click(function () {
|
||||
uploadFile('onClickFile').then(res => {
|
||||
$this.homeGameTab.onClick = res.path;
|
||||
});
|
||||
});
|
||||
$('#onUnclickUploadBtn').click(function () {
|
||||
uploadFile('onUnclickFile').then(res => {
|
||||
$this.homeGameTab.onUnclick = res.path;
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
initTable() {
|
||||
let $this = this;
|
||||
$('#table').bootstrapTable('destroy');
|
||||
$('#table').bootstrapTable({
|
||||
columns: $this.columns,
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: false,
|
||||
pageSize: 10,
|
||||
pagination: true,
|
||||
pageList: [1, 10, 20, 30, 50],
|
||||
search: false,
|
||||
sidePagination: 'server',
|
||||
queryParamsType: 'undefined',
|
||||
queryParams: function queryParams(params) {
|
||||
var param = {
|
||||
pageNum: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
};
|
||||
return param;
|
||||
},
|
||||
ajax:function(request){
|
||||
getHomeGameTabPage(request.data).then(res => {
|
||||
let data = res.data;
|
||||
request.success({
|
||||
'rows': data.records,
|
||||
'total': data.total
|
||||
});
|
||||
});
|
||||
},
|
||||
toolbar: '#toolbar',
|
||||
});
|
||||
},
|
||||
add() {
|
||||
this.homeGameTab.id = null;
|
||||
this.homeGameTab.tabName = '';
|
||||
this.homeGameTab.gameId = 0;
|
||||
this.homeGameTab.onClick = '';
|
||||
this.homeGameTab.onUnclick = '';
|
||||
this.homeGameTab.erbanNoStr = '';
|
||||
this.homeGameTab.seqNo = 0;
|
||||
this.show();
|
||||
},
|
||||
edit(obj) {
|
||||
const index = $(obj).data('index');
|
||||
const record = TableHelper.getData('#table')[index];
|
||||
this.homeGameTab.id = record.id;
|
||||
this.homeGameTab.tabName = record.tabName;
|
||||
this.homeGameTab.gameId = record.gameId;
|
||||
this.homeGameTab.onClick = record.onClick;
|
||||
this.homeGameTab.onUnclick = record.onUnclick;
|
||||
this.homeGameTab.erbanNoStr = record.erbanNoStr;
|
||||
this.homeGameTab.seqNo = record.seqNo;
|
||||
this.show();
|
||||
},
|
||||
show() {
|
||||
$('#editModal').modal('show');
|
||||
},
|
||||
save() {
|
||||
let data = {
|
||||
id: this.homeGameTab.id,
|
||||
tabName: this.homeGameTab.tabName,
|
||||
gameId: new Number(this.homeGameTab.gameId),
|
||||
onClick: this.homeGameTab.onClick,
|
||||
onUnclick: this.homeGameTab.onUnclick,
|
||||
erbanNoStr: this.homeGameTab.erbanNoStr,
|
||||
seqNo: new Number(this.homeGameTab.seqNo),
|
||||
};
|
||||
if (data.id == 0) {
|
||||
data.id = null;
|
||||
}
|
||||
(data.id ? updateHomeGameTab(data) : saveHomeGameTab(data)).then(res => {
|
||||
console.log(res);
|
||||
apiResult(res);
|
||||
TableHelper.doRefresh('#table');
|
||||
$('#editModal').modal('hide');
|
||||
});
|
||||
|
||||
},
|
||||
del(obj) {
|
||||
const index = $(obj).data('index');
|
||||
const record = TableHelper.getData('#table')[index];
|
||||
const id = record.id;
|
||||
if (!confirm('是否确定要删除?')) {
|
||||
return;
|
||||
}
|
||||
delHomeGameTab(id).then(res => {
|
||||
console.log(res);
|
||||
apiResult(res);
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
},
|
||||
getGame() {
|
||||
getGamePartnerList().then(res => {
|
||||
let data = res.data;
|
||||
if (data) {
|
||||
this.gamePartners = data.map(v => {
|
||||
return {
|
||||
value: v.gameId,
|
||||
text: v.gameName
|
||||
};
|
||||
});
|
||||
}
|
||||
if (this.gamePartners.length > 0) {
|
||||
buildSelectOption('#gameId', this.gamePartners[0].value, this.gamePartners);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
359
src/views/msg/UserChatMsgRecordView.vue
Normal file
359
src/views/msg/UserChatMsgRecordView.vue
Normal file
@@ -0,0 +1,359 @@
|
||||
<template>
|
||||
<section class="content">
|
||||
<div class="box box-primary">
|
||||
<div class="box-body">
|
||||
<!-- Content Header (Page header) -->
|
||||
<section class="content-header">
|
||||
<div id="itemTitle"></div>
|
||||
</section>
|
||||
<!-- .content -->
|
||||
<section>
|
||||
<div id="table"></div>
|
||||
<div id="toolbar">
|
||||
<div class="col-sm-12">
|
||||
<label for="erBanNoStr" class="col-sm-3 control-label">用户平台ID:</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" name="erBanNoStr" id="erBanNoStr">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<label for="startTime" class="col-sm-2 control-label">发送消息时间:</label>
|
||||
<div class="col-sm-2"><input type="text" class="form-control" name="startTime" id="startTime">
|
||||
</div>
|
||||
<label for="endTime" class="col-sm-1 control-label">-</label>
|
||||
<div class="col-sm-2"><input type="text" class="form-control" name="endTime" id="endTime"></div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<button id="btnSearch" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-search"></i>查询
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="modal fade" id="detailModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content" style="width: 190%; left: 50%; transform: translateX(-50%);">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||
aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="modalLabel"></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="fromUid" id="fromUid" />
|
||||
<input type="hidden" name="toUid" id="toUid" />
|
||||
<div id="detailTable"></div>
|
||||
<div id="detailToolbar">
|
||||
<div class="col-sm-12">
|
||||
<label for="detailStartTime" class="col-sm-3 control-label">发送消息时间:</label>
|
||||
<div class="col-sm-3"><input type="text" class="form-control" name="detailStartTime"
|
||||
id="detailStartTime"></div>
|
||||
<label for="detailEndTime" class="col-sm-1 control-label">-</label>
|
||||
<div class="col-sm-3"><input type="text" class="form-control" name="detailEndTime"
|
||||
id="detailEndTime"></div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<button id="btnDetailSearch" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-search"></i>查询
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
<button type="button" class="btn btn-primary" id="btnExport">导出</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="tipModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">提示信息</h4>
|
||||
</div>
|
||||
<div class="modal-body" id="tipMsg"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { apiResult, cleanArray } from '@/utils/maintainer';
|
||||
|
||||
export default {
|
||||
name: "UserChatMsgRecordView",
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
this.initData();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
$(function () {
|
||||
$('#table').bootstrapTable('destroy');
|
||||
$('#table').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'fromErBanNo', title: '搜索ID', align: 'center', width: '5%' },
|
||||
{ field: 'fromNick', title: '搜索人昵称', align: 'center', width: '5%' },
|
||||
{ field: 'toErBanNo', title: '聊天对象ID', align: 'center', width: '5%' },
|
||||
{ field: 'toNick', title: '聊天对象昵称', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'handle',
|
||||
title: '查看详情',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
valign: 'middle',
|
||||
formatter: function (val, row, index) {
|
||||
return '<a class="detail" data-index="' + index + '">查看详情></a>';
|
||||
}
|
||||
}
|
||||
],
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: false,
|
||||
pageSize: 20,
|
||||
pagination: true,
|
||||
pageList: [20, 50, 100],
|
||||
search: false,
|
||||
sidePagination: "server", //表示服务端请求
|
||||
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
||||
//设置为limit可以获取limit, offset, search, sort, order
|
||||
queryParamsType: "undefined",
|
||||
queryParams: function queryParams(params) { //设置查询参数
|
||||
var param = {
|
||||
page: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
erBanNoStr: $('#erBanNoStr').val(),
|
||||
startTime: $('#startTime').val(),
|
||||
endTime: $('#endTime').val(),
|
||||
};
|
||||
return param;
|
||||
},
|
||||
toolbar: '#toolbar',
|
||||
url: '/admin/userChatMsgRecord/page',
|
||||
onLoadSuccess: function (json) { //加载成功时执行
|
||||
console.log("load success");
|
||||
if (json.code && json.code != 200) {
|
||||
$("#tipMsg").text(json.message);
|
||||
$("#tipModal").modal('show');
|
||||
}
|
||||
},
|
||||
onLoadError: function () { //加载失败时执行
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
|
||||
// 查询刷新
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
|
||||
var picker1 = $("#startTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
todayBtn: true,
|
||||
autoclose: true,
|
||||
});
|
||||
|
||||
var picker2 = $("#endTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
todayBtn: true,
|
||||
autoclose: true
|
||||
});
|
||||
|
||||
picker1.on('changeDate', function () {
|
||||
var date = $('#startTime').datetimepicker('getDate');
|
||||
picker2.datetimepicker('setStartDate', date);
|
||||
});
|
||||
|
||||
picker2.on('changeDate', function () {
|
||||
var date = $('#endTime').datetimepicker('getDate');
|
||||
picker1.datetimepicker('setEndDate', date);
|
||||
});
|
||||
|
||||
$('#table').on('click', '.detail', function () {
|
||||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||||
const fromErBanNo = currentData.fromErBanNo;
|
||||
const fromNick = currentData.fromNick;
|
||||
const toErBanNo = currentData.toErBanNo;
|
||||
const toNick = currentData.toNick;
|
||||
$("#detailModal").modal('show');
|
||||
var fromUid = currentData.fromUid;
|
||||
var toUid = currentData.toUid;
|
||||
$('#fromUid').val(fromUid);
|
||||
$('#toUid').val(toUid);
|
||||
$('#modalLabel').html(fromNick + '(' + fromErBanNo + ')与' + toNick + '(' + toErBanNo + ')的聊天记录 首次接触时间: 首次接触情况: 聊天条目数:0');
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/admin/userChatMsgRecord/getDetail",
|
||||
dataType: "json",
|
||||
data: {
|
||||
fromUid: fromUid,
|
||||
toUid: toUid,
|
||||
startTime: $('#startTime').val(),
|
||||
endTime: $('#endTime').val(),
|
||||
},
|
||||
success: function (json) {
|
||||
apiResult(json);
|
||||
let data = json.data;
|
||||
if (data) {
|
||||
let firstTouchTime = data.firstTouchTime;
|
||||
let isInitiative = data.isInitiative;
|
||||
let chatMsgNum = data.chatMsgNum;
|
||||
$('#modalLabel').html(fromNick + '(' + fromErBanNo + ')与' + toNick + '(' + toErBanNo + ')的聊天记录 首次接触时间:' + firstTouchTime + ' 首次接触情况:' + (isInitiative ? '被动回复' : '主动发起') + ' 聊天条目数:' + chatMsgNum);
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#detailTable').bootstrapTable('destroy');
|
||||
$('#detailTable').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'fromErBanNo', title: '发消息人ID', align: 'center', width: '5%' },
|
||||
{ field: 'fromNick', title: '发消息人昵称', align: 'center', width: '5%' },
|
||||
{ field: 'toErBanNo', title: '接收人ID', align: 'center', width: '5%' },
|
||||
{ field: 'toNick', title: '接收人昵称', align: 'center', width: '5%' },
|
||||
{ field: 'createTime', title: '发消息时间', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'content',
|
||||
title: '消息内容',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
var msgType = row.msgType;
|
||||
if (msgType == 'PICTURE') {
|
||||
value = "<img src='" + val + "' width='40' height='40'>";
|
||||
} else if (msgType == 'AUDIO') {
|
||||
value = '<audio controls="controls"><source src="' + val + '" type="audio/mpeg"></audio>';
|
||||
} else {
|
||||
value = val;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'msgStatus',
|
||||
title: '消息状态',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
var value = '';
|
||||
if (val == 0) {
|
||||
value = '<span sylte="color: red;">屏蔽</span>';
|
||||
} else if (val == 1) {
|
||||
value = '正常';
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
],
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: false,
|
||||
pageSize: 50,
|
||||
pagination: true,
|
||||
pageList: [20, 50, 100],
|
||||
search: false,
|
||||
sidePagination: "server", //表示服务端请求
|
||||
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
||||
//设置为limit可以获取limit, offset, search, sort, order
|
||||
queryParamsType: "undefined",
|
||||
queryParams: function queryParams(params) { //设置查询参数
|
||||
var param = {
|
||||
page: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
fromUid: fromUid,
|
||||
toUid: toUid,
|
||||
startTime: $('#startTime').val(),
|
||||
endTime: $('#endTime').val(),
|
||||
detailStartTime: $('#detailStartTime').val(),
|
||||
detailEndTime: $('#detailEndTime').val(),
|
||||
};
|
||||
return param;
|
||||
},
|
||||
toolbar: '#detailToolbar',
|
||||
url: '/admin/userChatMsgRecord/detailPage',
|
||||
onLoadSuccess: function (json) { //加载成功时执行
|
||||
console.log("load success");
|
||||
if (json.code && json.code != 200) {
|
||||
$("#tipMsg").text(json.message);
|
||||
$("#tipModal").modal('show');
|
||||
}
|
||||
},
|
||||
onLoadError: function () { //加载失败时执行
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
|
||||
// 查询刷新
|
||||
$('#btnDetailSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#detailTable');
|
||||
});
|
||||
|
||||
function param(json) {
|
||||
if (!json) return ''
|
||||
return cleanArray(Object.keys(json).map(key => {
|
||||
if (json[key] === undefined) return ''
|
||||
return encodeURIComponent(key) + '=' +
|
||||
encodeURIComponent(json[key])
|
||||
})).join('&')
|
||||
}
|
||||
|
||||
function getQueryParams() {
|
||||
var param = {
|
||||
fromUid: $('#fromUid').val(),
|
||||
toUid: $('#toUid').val(),
|
||||
startTime: $('#startTime').val(),
|
||||
endTime: $('#endTime').val(),
|
||||
detailStartTime: $('#detailStartTime').val(),
|
||||
detailEndTime: $('#detailEndTime').val(),
|
||||
};
|
||||
return param;
|
||||
}
|
||||
|
||||
// 导出
|
||||
$('#btnExport').on('click', function () {
|
||||
window.location.href = `/admin/userChatMsgRecord/export?${param(getQueryParams())}`;
|
||||
$("#detailModal").modal('hide');
|
||||
})
|
||||
|
||||
var detailPicker1 = $("#detailStartTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
todayBtn: true,
|
||||
autoclose: true,
|
||||
});
|
||||
|
||||
var detailPicker2 = $("#detailEndTime").datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
todayBtn: true,
|
||||
autoclose: true
|
||||
});
|
||||
|
||||
detailPicker1.on('changeDate', function () {
|
||||
var date = $('#detailStartTime').datetimepicker('getDate');
|
||||
detailPicker2.datetimepicker('setStartDate', date);
|
||||
});
|
||||
|
||||
detailPicker2.on('changeDate', function () {
|
||||
var date = $('#detailEndTime').datetimepicker('getDate');
|
||||
detailPicker1.datetimepicker('setEndDate', date);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
@@ -59,7 +59,6 @@
|
||||
data-btn-class="btn-warning">
|
||||
<option value="" selected="selected">不限</option>
|
||||
<option value="alipay_native">支付宝</option>
|
||||
<option value="dalong">大珑</option>
|
||||
<option value="sand">杉德</option>
|
||||
<option value="others">其他平台</option>
|
||||
</select>
|
||||
@@ -153,6 +152,25 @@
|
||||
<option value="2">银行卡</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<label class="col-sm-3 control-label">身份证号:</label>
|
||||
<input type="text" class="form-control" id="applyWithdrawModal-idCardNo" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">身份证照片:</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="applyWithdrawModal-idCardFront" class="col-sm-3 control-label">正面照片:</label>
|
||||
<div class="col-sm-9">
|
||||
<img src="" id="applyWithdrawModal-idCardFront" style="width:250px;height:90px;" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="applyWithdrawModal-idCardBack" class="col-sm-3 control-label">反面照片:</label>
|
||||
<div class="col-sm-9">
|
||||
<img src="" id="applyWithdrawModal-idCardBack" style="width:250px;height:90px;" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<label class="col-sm-3 control-label">提现金额:</label>
|
||||
<input type="text" class="form-control" id="applyWithdrawModal-amount"
|
||||
@@ -309,9 +327,7 @@ export default {
|
||||
{
|
||||
field: 'payChannel', title: '付款渠道', align: 'center', valign: 'middle', width: '5%',
|
||||
formatter: function (val) {
|
||||
if (val === 'dalong') {
|
||||
return '大珑';
|
||||
} else if (val === 'alipay_native') {
|
||||
if (val === 'alipay_native') {
|
||||
return '支付宝';
|
||||
} else if (val === 'sand') {
|
||||
return '杉德';
|
||||
@@ -488,6 +504,9 @@ export default {
|
||||
$('#applyWithdrawModal-realName').val(res.data.realName);
|
||||
$('#applyWithdrawModal-account').val(res.data.alipayAccount);
|
||||
$('#applyWithdrawModal-bankCard').val(res.data.bankCardNo);
|
||||
$('#applyWithdrawModal-idCardNo').val(res.data.idCardNo);
|
||||
$('#applyWithdrawModal-idCardFront').val(res.data.idCardFront);
|
||||
$('#applyWithdrawModal-idCardBack').val(res.data.idCardBack);
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
@@ -500,12 +519,15 @@ export default {
|
||||
});
|
||||
// 清空申请提现modal
|
||||
function clearModal() {
|
||||
$('#applyWithdrawModal-erbanNo').val('')
|
||||
$('#applyWithdrawModal-erbanNo').val('');
|
||||
$('#applyWithdrawModal-realName').val('先输入ID');
|
||||
$('#applyWithdrawModal-account').val('先输入ID');
|
||||
$('#applyWithdrawModal-bankCard').val('先输入ID');
|
||||
$('#applyWithdrawModal-amount').val('先获取提现信息');
|
||||
$('#applyWithdrawModal-costGold').html('先输入提现金额');
|
||||
$('#applyWithdrawModal-idCardNo').val('');
|
||||
$('#applyWithdrawModal-idCardFront').val('');
|
||||
$('#applyWithdrawModal-idCardBack').val('');
|
||||
}
|
||||
|
||||
// 申请提现
|
||||
|
@@ -220,7 +220,8 @@ export default {
|
||||
roomName: $('#roomName').val(),
|
||||
cardStatus: cardStatus,
|
||||
checkStartTime: $('#checkStartTime').val(),
|
||||
checkEndTime: $('#checkEndTime').val()
|
||||
checkEndTime: $('#checkEndTime').val(),
|
||||
userErBanNo: $('#userErBanNo').val()
|
||||
};
|
||||
return param;
|
||||
},
|
||||
|
@@ -264,7 +264,8 @@ export default {
|
||||
roomName: $('#roomName').val(),
|
||||
cardStatus: $('#cardStatus').val(),
|
||||
checkStartTime: $('#checkStartTime').val(),
|
||||
checkEndTime: $('#checkEndTime').val()
|
||||
checkEndTime: $('#checkEndTime').val(),
|
||||
userErBanNo: $('#userErBanNo').val()
|
||||
};
|
||||
return param;
|
||||
},
|
||||
|
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="col-sm-12">
|
||||
<label for="erbanNo" class="col-sm-2 control-label">房主音萌号:</label>
|
||||
<label for="erbanNo" class="col-sm-2 control-label">房主平台号:</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control" name="erbanNo" id="erbanNo" placeholder="">
|
||||
</div>
|
||||
@@ -23,6 +23,14 @@
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control" name="roomTitle" id="roomTitle" placeholder="">
|
||||
</div>
|
||||
<label for="isTop" class="col-sm-2 control-label">是否置顶:</label>
|
||||
<div class="col-sm-2">
|
||||
<select name="isTop" id="isTop" class="form-control">
|
||||
<option value="">全部</option>
|
||||
<option value="1">是</option>
|
||||
<option value="0">否</option>
|
||||
</select>
|
||||
</div>
|
||||
<button id="btnSearch" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-search"></i>查询
|
||||
</button>
|
||||
@@ -49,14 +57,7 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" id="addForm">
|
||||
<input type="hidden" name="id" id="id" />
|
||||
<div class="form-group">
|
||||
<label for="modal_iconContent" class="col-sm-3 control-label">图标内容<font color="red">*</font>
|
||||
:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" name="iconContent" id="modal_iconContent"
|
||||
placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="roomUid" id="roomUid" />
|
||||
<div class="form-group">
|
||||
<label for="modal_isTop" class="col-sm-3 control-label">是否置顶<font color="red">*</font>:</label>
|
||||
<div class="col-sm-9">
|
||||
@@ -100,13 +101,21 @@
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { formatTime } from '@/utils/maintainer';
|
||||
|
||||
// tab类型选择变化查询
|
||||
/*function selectOnTabChange(obj){
|
||||
// console.log(obj);
|
||||
TableHelper.doRefresh('#table');
|
||||
}*/
|
||||
export default {
|
||||
name: "RoomTabHomeView",
|
||||
setup() { },
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
this.initData();
|
||||
@@ -114,11 +123,6 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
// tab类型选择变化查询
|
||||
/*function selectOnTabChange(obj){
|
||||
// console.log(obj);
|
||||
TableHelper.doRefresh('#table');
|
||||
}*/
|
||||
$(function () {
|
||||
$('.datetime').datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii:00',
|
||||
@@ -126,16 +130,23 @@ export default {
|
||||
});
|
||||
// 拉取所有tab
|
||||
//getRoomTabs();
|
||||
|
||||
$('#table').bootstrapTable('destroy');
|
||||
// 清空分页组件的容器
|
||||
$('.fixed-table-pagination').empty();
|
||||
$('#table').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'erbanNo', title: '房主音萌号', align: 'center', width: '5%' },
|
||||
{ field: 'erbanNo', title: '房主平台号', align: 'center', width: '5%' },
|
||||
{ field: 'roomUid', title: '房主Uid', align: 'center', width: '5%' },
|
||||
{ field: 'roomTitle', title: '房间标题', align: 'center', width: '8%' },
|
||||
{ field: 'roomTag', title: '房间标签', align: 'center', width: '5%' },
|
||||
{ field: 'iconContent', title: '图标内容', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'iconContent',
|
||||
title: '图标内容',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return "<img src='" + val + "' width='40' height='40'>";
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'isTop', title: '是否置顶', align: 'center', valign: 'middle', width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
@@ -144,6 +155,7 @@ export default {
|
||||
} else {
|
||||
return '否';
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
{ field: 'seq', title: '置顶排序', align: 'center', width: '5%' },
|
||||
@@ -155,10 +167,10 @@ export default {
|
||||
align: 'center',
|
||||
width: '10%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<button id="btnEdit" name="btnEdit" class="btn btn-sm btn-success opt-edit" data-id=' + val + '>' +
|
||||
return '<button id="btnEdit" name="btnEdit" class="btn btn-sm btn-success opt-edit" data-id="' + val + '" data-index="' + index + '">' +
|
||||
'<i class="glyphicon glyphicon-edit"></i> 编辑</button>' +
|
||||
' <button class="btn btn-sm btn-danger opt-remove" data-id=' + val +
|
||||
'><i class="glyphicon glyphicon-remove"></i>删除</button>';
|
||||
' <button class="btn btn-sm btn-danger opt-remove" data-id="' + val +
|
||||
'" data-index="' + index + '"><i class="glyphicon glyphicon-remove"></i>删除</button>';
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -181,7 +193,8 @@ export default {
|
||||
page: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
erbanNo: $('#erbanNo').val(),
|
||||
roomTitle: $('#roomTitle').val()
|
||||
roomTitle: $('#roomTitle').val(),
|
||||
isTop: $('#isTop').val(),
|
||||
//tabId: tabId
|
||||
};
|
||||
console.log(param);
|
||||
@@ -214,24 +227,31 @@ export default {
|
||||
console.log("load fail");
|
||||
}
|
||||
});
|
||||
|
||||
// 查询刷新
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
|
||||
// 编辑或者新增
|
||||
$("#btnConfirm").click(function () {
|
||||
var id = $("#id").val();
|
||||
var roomUid = $('#roomUid').val();
|
||||
var seq = $("#modal_seq").val();
|
||||
var isTop = $("#modal_isTop").val();
|
||||
var iconContent = $("#modal_iconContent").val();
|
||||
var topStart = $("#modal_topStart").val();
|
||||
var topEnd = $("#modal_topEnd").val();
|
||||
if (!iconContent) {
|
||||
iconContent = '';
|
||||
}
|
||||
if ($("#addForm").validationEngine('validate')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "/admin/roomTabHome/save.action",
|
||||
data: {
|
||||
id: id,
|
||||
roomUid: roomUid,
|
||||
seq: seq,
|
||||
isTop: isTop,
|
||||
iconContent: iconContent,
|
||||
@@ -254,34 +274,42 @@ export default {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// 获取信息
|
||||
$("#table").on("click", '.opt-edit', function () {
|
||||
var id = $(this).attr("data-id");
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/admin/roomTabHome/get.action",
|
||||
data: { id: id },
|
||||
dataType: "json",
|
||||
success: function (ret) {
|
||||
if (ret.code == 200) {
|
||||
var json = ret.data.roomTabHome;
|
||||
$("#id").val(id);
|
||||
$("#modal_iconContent").val(json.iconContent);
|
||||
$("#modal_seq").val(json.seq);
|
||||
$("#modal_isTop").val(json.isTop ? 1 : 0);
|
||||
$("#modal_topStart").val(formatTime(json.topStart));
|
||||
$("#modal_topEnd").val(formatTime(json.topEnd));
|
||||
// 打开编辑弹窗
|
||||
$("#roomTabHomeModal").modal('show');
|
||||
$("#modalLabel").text("编辑");
|
||||
} else {
|
||||
$("#tipMsg").text("获取菜单信息出错");
|
||||
$("#tipModal").modal('show');
|
||||
const index = $(this).data('index');
|
||||
const record = TableHelper.getData('#table')[index];
|
||||
$('#roomUid').val(record.roomUid);
|
||||
if (id && id != 'null') {
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/admin/roomTabHome/get.action",
|
||||
data: { id: id },
|
||||
dataType: "json",
|
||||
success: function (ret) {
|
||||
if (ret.code == 200) {
|
||||
var json = ret.data.roomTabHome;
|
||||
$("#id").val(id);
|
||||
$("#modal_iconContent").val(json.iconContent);
|
||||
$("#modal_seq").val(json.seq);
|
||||
$("#modal_isTop").val(json.isTop ? 1 : 0);
|
||||
$("#modal_topStart").val(formatTime(json.topStart));
|
||||
$("#modal_topEnd").val(formatTime(json.topEnd));
|
||||
} else {
|
||||
$("#tipMsg").text("获取菜单信息出错");
|
||||
$("#tipModal").modal('show');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// 打开编辑弹窗
|
||||
$("#roomTabHomeModal").modal('show');
|
||||
$("#modalLabel").text("编辑");
|
||||
});
|
||||
|
||||
// 删除操作
|
||||
$("#table").on("click", '.opt-remove', function () {
|
||||
var id = $(this).attr("data-id");
|
||||
@@ -309,6 +337,7 @@ export default {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 通过接口获取所有房间tab
|
||||
function getRoomTabs() {
|
||||
$.ajax({
|
||||
@@ -334,9 +363,12 @@ export default {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
@@ -21,7 +21,8 @@
|
||||
<button id="btnSearch" class="btn btn-sm btn-primary">查询</button>
|
||||
<button id="btnExport" class="btn btn-sm btn-primary">总计导出</button>
|
||||
<button id="btnExportByDate" class="btn btn-sm btn-primary">按天导出</button>
|
||||
|
||||
<button id="btnToday" class="btn btn-sm btn-default">今日</button>
|
||||
<button id="btnWeek" class="btn btn-sm btn-default">本周</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -64,6 +65,11 @@ export default {
|
||||
{ field: 'normalGiftAmount', title: '普通礼物总额', align: 'center', width: '5%' },
|
||||
{ field: 'backpackGiftUv', title: '背包送礼UV(送礼人数)', align: 'center', width: '5%' },
|
||||
{ field: 'backpackGiftAmount', title: '背包礼物总额', align: 'center', width: '5%' },
|
||||
{ field: 'hour', title: '开厅时长(h)', align: 'center', width: '5%' },
|
||||
{ field: 'newUserInRoomNum', title: '新用户进房人数', align: 'center', width: '5%' },
|
||||
{ field: 'newUserSendGiftNum', title: '新用户送礼人数', align: 'center', width: '5%' },
|
||||
{ field: 'newUserSendGiftAmount', title: '新用户送礼总额', align: 'center', width: '5%' },
|
||||
{ field: 'newUserRetained', title: '新用户进房次留', align: 'center', width: '5%' },
|
||||
],
|
||||
undefinedText: "-",
|
||||
cache: false,
|
||||
@@ -94,7 +100,7 @@ export default {
|
||||
apiResult(res);
|
||||
request.success({
|
||||
rows: res.data,
|
||||
total: 1
|
||||
total: res.data ? res.data.length : 0,
|
||||
});
|
||||
},
|
||||
error: function (req) {
|
||||
@@ -114,6 +120,19 @@ export default {
|
||||
$('#btnSearch').on('click', function () {
|
||||
TableHelper.doRefresh('#table');
|
||||
});
|
||||
$('#btnToday').on('click', function () {
|
||||
const startTime = new Date(new Date().setHours(0, 0, 0, 0));
|
||||
const endTime = new Date(new Date().setHours(23, 59, 59, 0));
|
||||
$('#qStartDate').val(formatTime(startTime));
|
||||
$('#qEndDate').val(formatTime(endTime));
|
||||
});
|
||||
$('#btnWeek').on('click', function () {
|
||||
const today = new Date(new Date().setHours(0, 0, 0, 0));
|
||||
const startTime = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
|
||||
const endTime = new Date(new Date().setHours(23, 59, 59, 0));
|
||||
$('#qStartDate').val(formatTime(startTime));
|
||||
$('#qEndDate').val(formatTime(endTime));
|
||||
});
|
||||
});
|
||||
function formatTime(val) {
|
||||
if (val) {
|
||||
|
@@ -12,15 +12,14 @@
|
||||
<input type="hidden" name="erbanNo" id="exportErbanNo">
|
||||
</form>
|
||||
<div id="toolbar">
|
||||
|
||||
<div class="col-sm-12">
|
||||
|
||||
厅号:<input type="text" class="input-sm" name="erbanNo" id="qErbanNo">
|
||||
日期:<input type="text" class="input-sm date" name="startDate" id="qStartDate">
|
||||
- <input type="text" class="input-sm date" name="endDate" id="qEndDate">
|
||||
<button id="btnSearch" class="btn btn-sm btn-primary">查询</button>
|
||||
<button id="btnExport" class="btn btn-sm btn-primary">导出</button>
|
||||
|
||||
<button id="btnToday" class="btn btn-sm btn-default">今日</button>
|
||||
<button id="btnWeek" class="btn btn-sm btn-default">本周</button>
|
||||
</div>
|
||||
<div class="summary col-sm-12">
|
||||
<div class="col-sm-6">
|
||||
@@ -100,6 +99,7 @@ export default {
|
||||
$('.fixed-table-pagination').empty();
|
||||
$('#table').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'title', title: '房间名', align: 'center', width: '5%' },
|
||||
{ field: 'erbanNo', title: '房号', align: 'center', width: '5%' },
|
||||
{ field: 'hour', title: '总时长(h)', align: 'center', width: '5%' },
|
||||
{
|
||||
@@ -264,6 +264,19 @@ export default {
|
||||
}
|
||||
return val + '时'
|
||||
}
|
||||
$('#btnToday').on('click', function () {
|
||||
const startTime = new Date(new Date().setHours(0, 0, 0, 0));
|
||||
const endTime = new Date(new Date().setHours(23, 59, 59, 0));
|
||||
$('#qStartDate').val(formatTime(startTime));
|
||||
$('#qEndDate').val(formatTime(endTime));
|
||||
});
|
||||
$('#btnWeek').on('click', function () {
|
||||
const today = new Date(new Date().setHours(0, 0, 0, 0));
|
||||
const startTime = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
|
||||
const endTime = new Date(new Date().setHours(23, 59, 59, 0));
|
||||
$('#qStartDate').val(formatTime(startTime));
|
||||
$('#qEndDate').val(formatTime(endTime));
|
||||
});
|
||||
// 导出excel
|
||||
$('#btnExport').on('click', function () {
|
||||
var form = $("#form");
|
||||
|
@@ -17,9 +17,6 @@
|
||||
<button id="sysConf-multiDel" class="btn btn-default">
|
||||
<i class="glyphicon glyphicon-wrench"></i>批量删除
|
||||
</button>
|
||||
<!--<button id="sysConf-load" class="btn btn-default">-->
|
||||
<!--<i class="glyphicon glyphicon-wrench"></i>加载-->
|
||||
<!--</button>-->
|
||||
</div>
|
||||
</section><!-- .content -->
|
||||
</div>
|
||||
@@ -88,30 +85,72 @@
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { getSysConfList } from '@/api/system/sysconf';
|
||||
|
||||
export default {
|
||||
name: "SysconfAdminView",
|
||||
setup() { },
|
||||
setup() {
|
||||
function showText(obj) {
|
||||
let text = unescape($(obj).prop('title'));
|
||||
$("#tipMsg").text(text);
|
||||
$("#tipModal").modal('show');
|
||||
}
|
||||
window.showText = showText;
|
||||
return {
|
||||
showText
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(function () {
|
||||
this.initData();
|
||||
this.getSysConf();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getSysConf() {
|
||||
getSysConfList().then(res => {
|
||||
$('#table').bootstrapTable('load', res.rows);
|
||||
});
|
||||
},
|
||||
initData() {
|
||||
$(function () {
|
||||
$('#table').bootstrapTable('destroy');
|
||||
// 清空分页组件的容器
|
||||
$('.fixed-table-pagination').empty();
|
||||
$('#table').bootstrapTable({
|
||||
columns: [
|
||||
{ field: 'tmp', title: 'ID', align: 'center', checkbox: true },
|
||||
{ field: 'configId', title: 'id', align: 'center', width: '20%' },
|
||||
{ field: 'configName', title: '名称', align: 'center', width: '25%' },
|
||||
{ field: 'configValue', title: '值', align: 'center', width: '20%' },
|
||||
{field: 'tmp', title: 'ID', align: 'center', width: '5%', checkbox: true},
|
||||
{
|
||||
field: 'configId',
|
||||
title: 'id',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
},
|
||||
{
|
||||
field: 'configName',
|
||||
title: '名称',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<div style="text-align: center; width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="' + escape(val) + '" onclick="showText(this);">' + val + '</div>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'configValue',
|
||||
title: '值',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<div style="text-align: center; width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="' + escape(val) + '" onclick="showText(this);">' + val + '</div>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'configStatus', title: '状态', align: 'center', width: '5%', formatter: function (val, row, index) {
|
||||
field: 'configStatus',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
if (val == 1) {
|
||||
return '有效';
|
||||
}
|
||||
@@ -120,9 +159,21 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'nameSpace', title: '命名空间', align: 'center', width: '5%' },
|
||||
{
|
||||
field: 'nameSpace',
|
||||
title: '命名空间',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<div style="text-align: center; width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="' + escape(val) + '" onclick="showText(this);">' + val + '</div>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'configId', title: '操作', align: 'center', width: '25%', formatter: function (val, row, index) {
|
||||
field: 'configId',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: '5%',
|
||||
formatter: function (val, row, index) {
|
||||
return '<button class="btn btn-sm btn-success opt-edit" data-id=' + val + '>' +
|
||||
'<i class="glyphicon glyphicon-edit"></i>编辑</button>' +
|
||||
' <button class="btn btn-sm btn-danger opt-remove" data-id=' + val +
|
||||
@@ -133,31 +184,15 @@ export default {
|
||||
cache: false,
|
||||
striped: true,
|
||||
showRefresh: true,
|
||||
pagination: false,
|
||||
search: false,
|
||||
sidePagination: "server", //表示服务端请求
|
||||
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
||||
//设置为limit可以获取limit, offset, search, sort, order
|
||||
queryParamsType: "undefined",
|
||||
queryParams: function queryParams(params) { //设置查询参数
|
||||
var param = {
|
||||
pageNumber: params.pageNumber,
|
||||
pageSize: params.pageSize,
|
||||
searchText: params.searchText
|
||||
};
|
||||
return param;
|
||||
},
|
||||
toolbar: '#toolbar',
|
||||
url: '/admin/sysConf/getList.action',
|
||||
onLoadSuccess: function () { //加载成功时执行
|
||||
console.log("load success");
|
||||
$("#table").addClass("table_line");
|
||||
$("td,th").addClass("td_center");
|
||||
},
|
||||
onLoadError: function () { //加载失败时执行
|
||||
console.log("load fail");
|
||||
}
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
pagination: true,
|
||||
pageList: [10, 25, 50, 100],
|
||||
search: true,
|
||||
sidePagination: "client",
|
||||
toolbar: '#toolbar'
|
||||
});
|
||||
|
||||
$("#table").on("click", '.opt-remove', function () {
|
||||
var id = $(this).attr("data-id");
|
||||
if (id == 'undefined') {
|
||||
@@ -176,6 +211,9 @@ export default {
|
||||
if (json.success == 'true') {
|
||||
$("#tipMsg").text("删除成功");
|
||||
$("#tipModal").modal('show');
|
||||
getSysConfList().then(res => {
|
||||
$('#table').bootstrapTable('load', res.rows);
|
||||
});
|
||||
TableHelper.doRefresh("#table");
|
||||
} else {
|
||||
$("#tipMsg").text("删除失败");
|
||||
@@ -185,6 +223,7 @@ export default {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$("#sysConf-add").click(function () {
|
||||
// 打开编辑弹窗
|
||||
$("#sysConfModal").modal('show');
|
||||
@@ -192,6 +231,7 @@ export default {
|
||||
$("#configId").val('');
|
||||
$("#configId").attr('readonly', false);
|
||||
});
|
||||
|
||||
$("#sysConf-multiDel").click(function () {
|
||||
var rows = $("#table").bootstrapTable("getSelections");
|
||||
if (rows.length == 0) {
|
||||
@@ -215,6 +255,9 @@ export default {
|
||||
if (json.success == 'true') {
|
||||
$("#tipMsg").text("删除成功");
|
||||
$("#tipModal").modal('show');
|
||||
getSysConfList().then(res => {
|
||||
$('#table').bootstrapTable('load', res.rows);
|
||||
});
|
||||
TableHelper.doRefresh("#table");
|
||||
} else {
|
||||
$("#tipMsg").text("删除失败");
|
||||
@@ -224,9 +267,11 @@ export default {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$("#cancel").click(function () {
|
||||
TableHelper.unCheckAll("#table");
|
||||
});
|
||||
|
||||
$("#table").on("click", '.opt-edit', function () {
|
||||
$("#configId").attr('readonly', true);
|
||||
var id = $(this).attr("data-id");
|
||||
@@ -252,6 +297,7 @@ export default {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#save").click(function () {
|
||||
if ($("#sysConfForm").validationEngine('validate')) {
|
||||
$.ajax({
|
||||
@@ -264,6 +310,9 @@ export default {
|
||||
$("#sysConfModal").modal('hide');
|
||||
$("#tipMsg").text("保存成功");
|
||||
$("#tipModal").modal('show');
|
||||
getSysConfList().then(res => {
|
||||
$('#table').bootstrapTable('load', res.rows);
|
||||
});
|
||||
TableHelper.doRefresh("#table");
|
||||
} else {
|
||||
$("#tipMsg").text("保存失败");
|
||||
@@ -274,26 +323,8 @@ export default {
|
||||
}
|
||||
});
|
||||
});
|
||||
// $("#sysConf-load").click(function(){
|
||||
// $.ajax({
|
||||
// type: 'post',
|
||||
// url: "/admin/sysConf/loadList.action",
|
||||
// dataType: "json",
|
||||
// success: function (json) {
|
||||
// if(json.success == 'true')
|
||||
// {
|
||||
// $("#tipMsg").text("删除成功");
|
||||
// $("#tipModal").modal('show');
|
||||
// TableHelper.doRefresh("#table");
|
||||
// } else {
|
||||
// $("#tipMsg").text("删除失败");
|
||||
// $("#tipModal").modal('show');
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -302,6 +333,14 @@ export default {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.td_center {
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
|
||||
.table_line {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.td_center {
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
|
@@ -53,7 +53,7 @@
|
||||
<div class="form-group">
|
||||
<label for="roleCode" class="col-sm-2 control-label">A类型:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="radio-inline js-rolePropMap"><input type="radio" id="normal_A" ,
|
||||
<label class="radio-inline js-rolePropMap"><input type="radio" id="normal_A"
|
||||
name="rolePropMap" value="normal_A">普通A</label>
|
||||
<label class="radio-inline js-rolePropMap"><input type="radio" id="super_A"
|
||||
name="rolePropMap" value="super_A">超级A</label>
|
||||
|
@@ -174,6 +174,8 @@
|
||||
</template>
|
||||
<script>
|
||||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||||
import { formatTime } from '@/utils/maintainer';
|
||||
|
||||
export default {
|
||||
name: "BlockedAdminView",
|
||||
setup() { },
|
||||
@@ -195,15 +197,10 @@ export default {
|
||||
autoclose: true,
|
||||
startDate: new Date()
|
||||
})
|
||||
$(function () {//默认时间
|
||||
var todayDate = new Date();
|
||||
var minute = todayDate.getMinutes() < 10 ? "0" + todayDate.getMinutes() : todayDate.getMinutes();
|
||||
var month = (todayDate.getMonth() + 1) < 10 ? "0" + (todayDate.getMonth() + 1) : (todayDate.getMonth() + 1);
|
||||
var todayDateStr = todayDate.getFullYear() + "-" + month + "-" + todayDate.getDate() + " " + todayDate.getHours() + ":" + minute;
|
||||
$("#addStartDate").val(todayDateStr);
|
||||
$("#startDate").val(todayDateStr);
|
||||
})
|
||||
$(function () {
|
||||
var todayDate = new Date();
|
||||
$("#addStartDate").val(formatTime(todayDate));
|
||||
$("#startDate").val(formatTime(todayDate));
|
||||
$('#table').bootstrapTable('destroy');
|
||||
// 清空分页组件的容器
|
||||
$('.fixed-table-pagination').empty();
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -245,11 +245,11 @@ export default {
|
||||
formatter: function (val, row, index) {
|
||||
switch (val) {
|
||||
case 1:
|
||||
return '跳app页面';
|
||||
return '跳转房间';
|
||||
case 2:
|
||||
return '跳聊天室';
|
||||
return '跳H5页面';
|
||||
case 3:
|
||||
return '跳h5页面';
|
||||
return '跳聊天室';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -1,6 +1,8 @@
|
||||
const { defineConfig } = require('@vue/cli-service')
|
||||
var webpack = require('webpack')
|
||||
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
|
||||
var AutoImport = require('unplugin-auto-import/webpack')
|
||||
var Components = require('unplugin-vue-components/webpack')
|
||||
var { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
|
||||
module.exports = defineConfig({
|
||||
transpileDependencies: true,
|
||||
chainWebpack: config => {
|
||||
@@ -19,9 +21,12 @@ module.exports = defineConfig({
|
||||
'windows.jQuery': 'jquery',
|
||||
Popper: ['popper.js', 'default']
|
||||
}),
|
||||
new BundleAnalyzerPlugin({
|
||||
openAnalyzer: false
|
||||
})
|
||||
AutoImport({
|
||||
resolvers: [ElementPlusResolver()],
|
||||
}),
|
||||
Components({
|
||||
resolvers: [ElementPlusResolver()],
|
||||
}),
|
||||
],
|
||||
},
|
||||
devServer: {
|
||||
|
Reference in New Issue
Block a user