43 Commits

Author SHA1 Message Date
d2a56965fc 修改本地php请求 2025-08-19 09:44:48 +08:00
gyq
c20cb8cfbc Merge branch 'master-php' of e.coding.net:g-cphe0354/duanju/video_admin into master-php 2025-08-01 16:24:25 +08:00
gyq
ebf40e35f6 优化 2025-08-01 16:24:05 +08:00
9fcadc1248 Merge branch 'master-php' of https://e.coding.net/g-cphe0354/duanju/video_admin into master-php 2025-08-01 16:23:36 +08:00
d34c5a84b8 修改部分接口 2025-08-01 16:23:34 +08:00
gyq
9e95072685 优化 2025-07-29 15:49:50 +08:00
943ef313cf 更新部分接口传参 2025-07-29 15:49:11 +08:00
b82eb59b1d Merge branch 'master-php' of https://e.coding.net/g-cphe0354/duanju/video_admin into master-php 2025-07-28 16:07:54 +08:00
842270186a 修改部分接口传参,修复登录验证码错误弹窗不显示问题 2025-07-28 16:07:52 +08:00
gyq
329299a3b5 任务兑换字段不统一问题修改 2025-07-28 10:02:55 +08:00
7744a8112d 修改849接口 2025-07-23 18:27:26 +08:00
8054985445 修改请求地址,修改查询用户详情接口和common/type接口,增加params传承 2025-07-23 15:10:44 +08:00
bf3dc320c0 修改用户详情接口传参,增加userId参数,暂时剔除请求401重新登录 2025-07-23 11:09:56 +08:00
eb2b6c15f2 修复请求问题 2025-07-23 10:10:39 +08:00
b711e87f50 修改验证码接口 2025-07-23 09:25:51 +08:00
3e4ec97803 修改测试链接 2025-07-23 09:19:12 +08:00
gyq
1cfad99f47 优化用户状态编辑 2025-05-26 14:16:02 +08:00
gyq
de16122ec1 新增用户状态修改 2025-05-24 18:16:33 +08:00
duan
2073deec7b 修改文案长度问题 2025-04-21 15:14:11 +08:00
duan
3a211fc862 添加订单统计,达标情况 2025-04-21 14:35:02 +08:00
duan
9ee23afc38 抽奖次数、邀请好友优化 2025-04-02 09:51:53 +08:00
duan
6cccadbbce 抽奖次数、邀请好友 2025-04-01 10:00:31 +08:00
duan
1d2862765b Merge branch 'master' of https://e.coding.net/g-cphe0354/duanju/video_admin 2025-03-06 18:29:00 +08:00
duan
bf93fea486 修改拉黑原因 2025-03-06 18:28:58 +08:00
d1c676336e 更新readme.md 2025-02-26 09:40:25 +08:00
25dcbea759 修改用户信息的问题 2025-02-26 08:52:52 +08:00
duan
55af5fd698 提交代码 2025-02-25 19:37:37 +08:00
gyq
d5d19e2696 去除抽奖转盘接口app/ 2025-02-05 09:34:17 +08:00
gyq
5c5516834e 优化时间选择 2025-01-24 17:43:46 +08:00
gyq
97e8be58c5 优化 2025-01-18 16:45:08 +08:00
gyq
99ef49ffc6 版本更新显示ios 2025-01-17 17:12:16 +08:00
gyq
15354833e2 优化全局系统设置 2025-01-14 15:16:20 +08:00
gyq
21f049f65c 优化订单汇总 2025-01-14 14:31:35 +08:00
gyq
eb33ef97b1 会员列表新增订单汇总 2025-01-14 13:32:54 +08:00
gyq
65d61c5ebc 新增实名用户列表 2025-01-14 08:51:36 +08:00
gyq
93fb3bc46f 优化 2025-01-13 16:45:07 +08:00
gyq
95d1eda7a3 提现中心优化 2025-01-13 16:27:25 +08:00
gyq
67a15a9183 Merge branch 'master' of e.coding.net:g-cphe0354/duanju/video_admin into gyq 2025-01-09 17:30:13 +08:00
6f83ecd9f9 弹窗公共列表增加类型展示 2025-01-09 16:41:55 +08:00
2c65bfca6a 增加弹窗广告类型,修改内容为富文本 2025-01-09 15:54:22 +08:00
gyq
c65278cb28 优化提现统计 2025-01-09 14:59:48 +08:00
gyq
2cd5bb75dd 提现中心新增危险用户提示 2025-01-08 15:18:01 +08:00
wwz
2dc98838c7 累计提现金额 保留后两位 2025-01-07 11:09:59 +08:00
44 changed files with 5652 additions and 4830 deletions

View File

@@ -7,3 +7,9 @@
- 发布时可动态配置CDN静态资源切换新旧版本 - 发布时可动态配置CDN静态资源切换新旧版本
雷池测试
https://47.122.26.160:9443
admin kwxpryrq
雷池正式
https://47.122.73.144:9443/
admin Qhs6AogY

View File

@@ -1,102 +1,105 @@
'use strict' "use strict";
// Template version: 1.2.5 // Template version: 1.2.5
// see http://vuejs-templates.github.io/webpack for documentation. // see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path') const path = require("path");
const devEnv = require('./dev.env') const devEnv = require("./dev.env");
module.exports = { module.exports = {
dev: { dev: {
// Paths // Paths
assetsSubDirectory: 'static', assetsSubDirectory: "static",
assetsPublicPath: '/', assetsPublicPath: "/",
// 代理列表, 是否开启代理通过[./dev.env.js]配置 // 代理列表, 是否开启代理通过[./dev.env.js]配置
proxyTable: devEnv.OPEN_PROXY === false ? {} : { proxyTable:
'/czg': { devEnv.OPEN_PROXY === false
// target: 'http://192.168.0.132:8100/czg/', ? {}
// target: 'https://duanjuadmin.xianmxkj.com/czg/', : {
target: 'http://127.0.0.1/czg/', "/czg": {
changeOrigin: true, // target: 'http://192.168.0.132:8100/czg/',
pathRewrite: { // target: 'https://duanjuadmin.xianmxkj.com/czg/',
'^/czg': '' target: "http://127.0.0.1/czg/",
} changeOrigin: true,
}, pathRewrite: {
'/weixin': { "^/czg": ""
target: 'https://api.weixin.qq.com/', }
// target: 'https://duanjuadmin.xianmxkj.com/czg/', },
// target: 'http://127.0.0.1/czg/', "/weixin": {
changeOrigin: true, target: "https://api.weixin.qq.com/",
pathRewrite: { // target: 'https://duanjuadmin.xianmxkj.com/czg/',
'^/weixin': '' // target: 'http://127.0.0.1/czg/',
} changeOrigin: true,
}, pathRewrite: {
}, "^/weixin": ""
}
}
},
// Various Dev Server settings // Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST host: "localhost", // can be overwritten by process.env.HOST
port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: true, autoOpenBrowser: true,
errorOverlay: true, errorOverlay: true,
notifyOnErrors: true, notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
// Use Eslint Loader? // Use Eslint Loader?
// If true, your code will be linted during bundling and // If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console. // linting errors and warnings will be shown in the console.
useEslint: true, useEslint: true,
// If true, eslint errors and warnings will also be shown in the error overlay // If true, eslint errors and warnings will also be shown in the error overlay
// in the browser. // in the browser.
showEslintErrorsInOverlay: false, showEslintErrorsInOverlay: false,
/** /**
* Source Maps * Source Maps
*/ */
// https://webpack.js.org/configuration/devtool/#development // https://webpack.js.org/configuration/devtool/#development
devtool: 'eval-source-map', devtool: "eval-source-map",
// If you have problems debugging vue-files in devtools, // If you have problems debugging vue-files in devtools,
// set this to false - it *may* help // set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting // https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true, cacheBusting: true,
// CSS Sourcemaps off by default because relative paths are "buggy" // CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README // with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps) // (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected, // In our experience, they generally work as expected,
// just be aware of this issue when enabling this option. // just be aware of this issue when enabling this option.
cssSourceMap: false, cssSourceMap: false
}, },
build: { build: {
// publicPath: '/admin/', // publicPath: '/admin/',
// Template for index.html // Template for index.html
index: path.resolve(__dirname, '../dist/index.html'), index: path.resolve(__dirname, "../dist/index.html"),
// Paths // Paths
assetsRoot: path.resolve(__dirname, '../dist'), assetsRoot: path.resolve(__dirname, "../dist"),
assetsSubDirectory: 'static', assetsSubDirectory: "static",
assetsPublicPath: './', assetsPublicPath: "./",
/** /**
* Source Maps * Source Maps
*/ */
productionSourceMap: false, productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production // https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map', devtool: "#source-map",
// Gzip off by default as many popular static hosts such as // Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you. // Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to: // Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin // npm install --save-dev compression-webpack-plugin
productionGzip: false, productionGzip: false,
productionGzipExtensions: ['js', 'css'], productionGzipExtensions: ["js", "css"],
// Run the build command with an extra argument to // Run the build command with an extra argument to
// View the bundle analyzer report after build finishes: // View the bundle analyzer report after build finishes:
// `npm run build --report` // `npm run build --report`
// Set to `true` or `false` to always turn it on or off // Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report bundleAnalyzerReport: process.env.npm_config_report
} }
} };

199
package-lock.json generated
View File

@@ -47,7 +47,7 @@
}, },
"color-convert": { "color-convert": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -56,13 +56,13 @@
}, },
"color-name": { "color-name": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true "dev": true
}, },
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true "dev": true
}, },
@@ -79,7 +79,7 @@
}, },
"string-width-cjs": { "string-width-cjs": {
"version": "npm:string-width@4.2.3", "version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -90,19 +90,19 @@
"dependencies": { "dependencies": {
"ansi-regex": { "ansi-regex": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true "dev": true
}, },
"emoji-regex": { "emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true "dev": true
}, },
"strip-ansi": { "strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -122,7 +122,7 @@
}, },
"strip-ansi-cjs": { "strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1", "version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -131,7 +131,7 @@
"dependencies": { "dependencies": {
"ansi-regex": { "ansi-regex": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true "dev": true
} }
@@ -150,7 +150,7 @@
}, },
"wrap-ansi-cjs": { "wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0", "version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -161,13 +161,13 @@
"dependencies": { "dependencies": {
"ansi-regex": { "ansi-regex": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true "dev": true
}, },
"ansi-styles": { "ansi-styles": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -176,13 +176,13 @@
}, },
"emoji-regex": { "emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true "dev": true
}, },
"string-width": { "string-width": {
"version": "4.2.3", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -193,7 +193,7 @@
}, },
"strip-ansi": { "strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -212,7 +212,7 @@
}, },
"@parcel/watcher": { "@parcel/watcher": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.0.tgz",
"integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -238,7 +238,7 @@
"dependencies": { "dependencies": {
"braces": { "braces": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -248,7 +248,7 @@
}, },
"fill-range": { "fill-range": {
"version": "7.1.1", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -258,14 +258,14 @@
}, },
"is-extglob": { "is-extglob": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"is-glob": { "is-glob": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -275,14 +275,14 @@
}, },
"is-number": { "is-number": {
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"micromatch": { "micromatch": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -293,7 +293,7 @@
}, },
"to-regex-range": { "to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -305,84 +305,84 @@
}, },
"@parcel/watcher-android-arm64": { "@parcel/watcher-android-arm64": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
"integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-darwin-arm64": { "@parcel/watcher-darwin-arm64": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
"integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-darwin-x64": { "@parcel/watcher-darwin-x64": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
"integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-freebsd-x64": { "@parcel/watcher-freebsd-x64": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
"integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-arm-glibc": { "@parcel/watcher-linux-arm-glibc": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
"integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-arm-musl": { "@parcel/watcher-linux-arm-musl": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
"integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-arm64-glibc": { "@parcel/watcher-linux-arm64-glibc": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
"integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-arm64-musl": { "@parcel/watcher-linux-arm64-musl": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
"integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-x64-glibc": { "@parcel/watcher-linux-x64-glibc": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
"integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-linux-x64-musl": { "@parcel/watcher-linux-x64-musl": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz",
"integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-win32-arm64": { "@parcel/watcher-win32-arm64": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz",
"integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"@parcel/watcher-win32-ia32": { "@parcel/watcher-win32-ia32": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz",
"integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==",
"dev": true, "dev": true,
"optional": true "optional": true
@@ -1391,7 +1391,7 @@
"dependencies": { "dependencies": {
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -1400,7 +1400,7 @@
}, },
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -1417,7 +1417,7 @@
}, },
"postcss": { "postcss": {
"version": "6.0.23", "version": "6.0.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -1428,7 +1428,7 @@
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -2426,7 +2426,7 @@
"dependencies": { "dependencies": {
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.11.1", "version": "0.11.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
} }
} }
@@ -3250,7 +3250,7 @@
}, },
"normalize-path": { "normalize-path": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true "dev": true
} }
@@ -3401,7 +3401,7 @@
}, },
"clone-deep": { "clone-deep": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -3412,7 +3412,7 @@
"dependencies": { "dependencies": {
"kind-of": { "kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true "dev": true
} }
@@ -3805,7 +3805,7 @@
"dependencies": { "dependencies": {
"big.js": { "big.js": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
"dev": true "dev": true
}, },
@@ -4237,6 +4237,11 @@
"resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz",
"integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==" "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw=="
}, },
"dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
"de-indent": { "de-indent": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
@@ -4477,7 +4482,7 @@
}, },
"detect-libc": { "detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"dev": true, "dev": true,
"optional": true "optional": true
@@ -5544,7 +5549,7 @@
}, },
"eventemitter3": { "eventemitter3": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
}, },
"events": { "events": {
@@ -5659,7 +5664,7 @@
}, },
"express": { "express": {
"version": "4.21.1", "version": "4.21.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", "resolved": "https://registry.npmmirror.com/express/-/express-4.21.1.tgz",
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -5780,7 +5785,7 @@
}, },
"fast-diff": { "fast-diff": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz",
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="
}, },
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
@@ -7114,7 +7119,7 @@
"dependencies": { "dependencies": {
"big.js": { "big.js": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
"dev": true "dev": true
}, },
@@ -7600,7 +7605,7 @@
}, },
"immutable": { "immutable": {
"version": "5.0.3", "version": "5.0.3",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.0.3.tgz",
"integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==",
"dev": true "dev": true
}, },
@@ -9187,8 +9192,7 @@
}, },
"js-md5": { "js-md5": {
"version": "0.8.3", "version": "0.8.3",
"resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz", "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz"
"integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="
}, },
"js-tokens": { "js-tokens": {
"version": "3.0.2", "version": "3.0.2",
@@ -9198,7 +9202,7 @@
}, },
"js-yaml": { "js-yaml": {
"version": "3.7.0", "version": "3.7.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.7.0.tgz",
"integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -9999,7 +10003,7 @@
}, },
"lodash.clonedeep": { "lodash.clonedeep": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
}, },
"lodash.cond": { "lodash.cond": {
@@ -10039,7 +10043,7 @@
}, },
"lodash.isequal": { "lodash.isequal": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
}, },
"lodash.keys": { "lodash.keys": {
@@ -10812,7 +10816,7 @@
"dependencies": { "dependencies": {
"is-extendable": { "is-extendable": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"requires": { "requires": {
"is-plain-object": "^2.0.4" "is-plain-object": "^2.0.4"
@@ -11190,7 +11194,7 @@
}, },
"node-addon-api": { "node-addon-api": {
"version": "7.1.1", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"dev": true, "dev": true,
"optional": true "optional": true
@@ -15580,7 +15584,7 @@
}, },
"parchment": { "parchment": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/parchment/-/parchment-3.0.0.tgz",
"integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==" "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A=="
}, },
"parse-asn1": { "parse-asn1": {
@@ -15744,7 +15748,7 @@
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.10", "version": "0.1.10",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
"dev": true "dev": true
}, },
@@ -16069,7 +16073,7 @@
"dependencies": { "dependencies": {
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16078,7 +16082,7 @@
}, },
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16095,7 +16099,7 @@
}, },
"postcss": { "postcss": {
"version": "6.0.23", "version": "6.0.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16106,7 +16110,7 @@
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16372,7 +16376,7 @@
"dependencies": { "dependencies": {
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16381,7 +16385,7 @@
}, },
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16398,7 +16402,7 @@
}, },
"postcss": { "postcss": {
"version": "6.0.23", "version": "6.0.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16409,7 +16413,7 @@
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16430,7 +16434,7 @@
"dependencies": { "dependencies": {
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16439,7 +16443,7 @@
}, },
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16456,7 +16460,7 @@
}, },
"postcss": { "postcss": {
"version": "6.0.23", "version": "6.0.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16467,7 +16471,7 @@
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16488,7 +16492,7 @@
"dependencies": { "dependencies": {
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16497,7 +16501,7 @@
}, },
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16514,7 +16518,7 @@
}, },
"postcss": { "postcss": {
"version": "6.0.23", "version": "6.0.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16525,7 +16529,7 @@
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -16937,8 +16941,7 @@
}, },
"qs": { "qs": {
"version": "6.13.1", "version": "6.13.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.1.tgz",
"integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==",
"requires": { "requires": {
"side-channel": "^1.0.6" "side-channel": "^1.0.6"
} }
@@ -16966,7 +16969,7 @@
}, },
"quill": { "quill": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz", "resolved": "https://registry.npmmirror.com/quill/-/quill-2.0.3.tgz",
"integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==", "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==",
"requires": { "requires": {
"eventemitter3": "^5.0.1", "eventemitter3": "^5.0.1",
@@ -16977,7 +16980,7 @@
}, },
"quill-delta": { "quill-delta": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-5.1.0.tgz",
"integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==",
"requires": { "requires": {
"fast-diff": "^1.3.0", "fast-diff": "^1.3.0",
@@ -17721,7 +17724,7 @@
"dependencies": { "dependencies": {
"qs": { "qs": {
"version": "6.5.3", "version": "6.5.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"dev": true "dev": true
} }
@@ -18233,7 +18236,7 @@
}, },
"sass": { "sass": {
"version": "1.83.0", "version": "1.83.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.83.0.tgz",
"integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -18245,7 +18248,7 @@
"dependencies": { "dependencies": {
"chokidar": { "chokidar": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.2.tgz", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.2.tgz",
"integrity": "sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==", "integrity": "sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -18254,7 +18257,7 @@
}, },
"readdirp": { "readdirp": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
"integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
"dev": true "dev": true
} }
@@ -18262,7 +18265,7 @@
}, },
"sass-loader": { "sass-loader": {
"version": "7.3.1", "version": "7.3.1",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-7.3.1.tgz",
"integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -18275,13 +18278,13 @@
"dependencies": { "dependencies": {
"pify": { "pify": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true "dev": true
}, },
"semver": { "semver": {
"version": "6.3.1", "version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true "dev": true
} }
@@ -18529,7 +18532,7 @@
}, },
"shallow-clone": { "shallow-clone": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -18538,7 +18541,7 @@
"dependencies": { "dependencies": {
"kind-of": { "kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true "dev": true
} }
@@ -18783,7 +18786,7 @@
}, },
"source-map-js": { "source-map-js": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true "dev": true
}, },
@@ -19322,12 +19325,12 @@
}, },
"kind-of": { "kind-of": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}, },
"micromatch": { "micromatch": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
"integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
"requires": { "requires": {
"arr-diff": "^4.0.0", "arr-diff": "^4.0.0",
@@ -19454,7 +19457,7 @@
}, },
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true, "dev": true,
"requires": { "requires": {
@@ -20832,22 +20835,22 @@
"dependencies": { "dependencies": {
"eventemitter3": { "eventemitter3": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
}, },
"fast-diff": { "fast-diff": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz",
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
}, },
"parchment": { "parchment": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", "resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz",
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
}, },
"quill": { "quill": {
"version": "1.3.7", "version": "1.3.7",
"resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", "resolved": "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz",
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
"requires": { "requires": {
"clone": "^2.1.1", "clone": "^2.1.1",
@@ -20860,7 +20863,7 @@
}, },
"quill-delta": { "quill-delta": {
"version": "3.6.3", "version": "3.6.3",
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz",
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
"requires": { "requires": {
"deep-equal": "^1.0.1", "deep-equal": "^1.0.1",
@@ -21604,7 +21607,7 @@
"dependencies": { "dependencies": {
"source-list-map": { "source-list-map": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
"integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
"dev": true "dev": true
} }

View File

@@ -17,6 +17,7 @@
"axios": "0.17.1", "axios": "0.17.1",
"babel-plugin-component": "0.10.1", "babel-plugin-component": "0.10.1",
"babel-polyfill": "6.26.0", "babel-polyfill": "6.26.0",
"dayjs": "^1.11.13",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"element-china-area-data": "^5.0.2", "element-china-area-data": "^5.0.2",
"element-ui": "2.8.2", "element-ui": "2.8.2",

View File

@@ -15,7 +15,7 @@ function del(data) {
} }
function getList(data) { function getList(data) {
return $http({ return $http({
url: 'app/discSpinning/selectDiscSpinning', url: 'discSpinning/selectDiscSpinning',
method: 'get', method: 'get',
params: data params: data
}) })

14
src/api/viplist.js Normal file
View File

@@ -0,0 +1,14 @@
import $http from "@/utils/httpRequest";
/**
* 根据交易订单号获取汇总信息
* @param {*} params
* @returns
*/
export function queryByTradeNo(params) {
return $http({
url: "/order/queryByTradeNo",
method: "get",
params
});
}

View File

@@ -38,3 +38,41 @@ export function summary_query(params) {
params params
}); });
} }
/**
* 实名信息列表
* @param {*} params
* @returns
*/
export function userInfo_list(params) {
return $http({
url: "/userInfo/list",
method: "get",
params
});
}
/**
* 实名信息修改
* @param {*} data
* @returns
*/
export function userInfo(data) {
return $http({
url: "/userInfo",
method: "put",
data
});
}
/**
* 实名删除
* @param {*} data
* @returns
*/
export function userInfoDel(data) {
return $http({
url: "/userInfo",
method: "DELETE",
data
});
}

View File

@@ -4,8 +4,11 @@ export const productUrl='dj-admin';
// const baseUrl = "http://192.168.1.7:8100/czg/" // const baseUrl = "http://192.168.1.7:8100/czg/"
// const baseUrl = "https://api.tianjinzhitongdaohe.com/czg/" // const baseUrl = "https://api.tianjinzhitongdaohe.com/czg/"
const baseUrl = "https://web-api.hnsiyao.cn/czg/" //测试 // const baseUrl = "https://web-api.hnsiyao.cn/czg/" //测试
// const baseUrl = "https://web.hnsiyao.cn/czg/" // 线上 // const baseUrl = "https://web.hnsiyao.cn/czg/" // 线上
// const baseUrl = "http://192.168.1.31:8080/admin/" // php本地
// const baseUrl = "https://playlet.test.sxczgkj.com/admin/" // php测试服
const baseUrl = "http://192.168.1.10:8787/czg/" // php测试服
export default{ export default{
baseUrl baseUrl

View File

@@ -37,6 +37,8 @@ const mainRoutes = {
{path: '/userList', component: _import('user/userList'), name: 'userList', meta: {title: '用户列表', isTab: true}}, {path: '/userList', component: _import('user/userList'), name: 'userList', meta: {title: '用户列表', isTab: true}},
{path: '/allocationList',component: _import('allocation/allocationList'),name: 'allocationList',meta: {title: '配置列表', isTab: true}}, {path: '/allocationList',component: _import('allocation/allocationList'),name: 'allocationList',meta: {title: '配置列表', isTab: true}},
{path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: {title: '财务中心', isTab: true}}, {path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: {title: '财务中心', isTab: true}},
{path: '/shareFriends', component: _import('finance/shareFriends'), name: 'shareFriends', meta: {title: '邀请好友奖励', isTab: true}},
{path: '/lotteryInquiry', component: _import('finance/lotteryInquiry'), name: 'lotteryInquiry', meta: {title: '抽奖查询', isTab: true}},
{path: '/message', component: _import('message/message'), name: 'message', meta: {title: '消息中心', isTab: true}}, {path: '/message', component: _import('message/message'), name: 'message', meta: {title: '消息中心', isTab: true}},
{path: '/renwu', component: _import('renwu/index'), name: 'renwu', meta: {title: '任务中心', isTab: false}}, {path: '/renwu', component: _import('renwu/index'), name: 'renwu', meta: {title: '任务中心', isTab: false}},
{path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: {title: '任务配置', isTab: true}}, {path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: {title: '任务配置', isTab: true}},

View File

@@ -9,11 +9,11 @@
</el-table-column> </el-table-column>
<el-table-column prop="value" label="内容" width="500"> <el-table-column prop="value" label="内容" width="500">
</el-table-column> </el-table-column>
<el-table-column label="是否返回给App"> <el-table-column label="是否返回给App" prop="isAppUse" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch v-model="scope.row.isAppUse" <!-- <el-switch v-model="scope.row.isAppUse" @change="updateAmendNotice($event, scope.row)"
@change="updateAmendNotice($event,scope.row)" :active-value="1" :inactive-value="0"></el-switch> -->
:active-value="1" :inactive-value="0"></el-switch> {{ scope.row.isAppUse == 1 ? '是' : '否' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createAt" label="创建时间"> <el-table-column prop="createAt" label="创建时间">
@@ -35,7 +35,9 @@
</el-table-column> </el-table-column>
<el-table-column prop="value" label="内容" width="500"> <el-table-column prop="value" label="内容" width="500">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">{{scope.row.value}}</div> <div
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;line-clamp: 3;overflow: hidden;max-height:80px;">
{{ scope.row.value }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createAt" label="创建时间"> <el-table-column prop="createAt" label="创建时间">
@@ -114,8 +116,8 @@
<el-table-column prop="value" label="内容" width="500"> <el-table-column prop="value" label="内容" width="500">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 4;overflow: hidden;"> style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 4;line-clamp: 4;overflow: hidden;">
{{scope.row.value}}</div> {{ scope.row.value }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createAt" label="创建时间"> <el-table-column prop="createAt" label="创建时间">
@@ -168,48 +170,52 @@
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="文件上传配置" name="wenjian"> <el-tab-pane label="文件上传配置" name="wenjian">
<el-table v-loading="tableDataLoading" :data="tableData"> <el-table v-loading="tableDataLoading" :data="tableData">
<el-table-column fixed prop="type" label="编号" align="center" width="80"> <el-table-column fixed prop="type" label="编号" align="center" width="80">
</el-table-column> </el-table-column>
<el-table-column prop="min" label="类型"> <el-table-column prop="min" label="类型">
</el-table-column> </el-table-column>
<el-table-column prop="value" label="内容" width="500"> <el-table-column prop="value" label="内容" width="500">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">{{scope.row.value}}</div> <div
</template> style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;line-clamp: 3;overflow: hidden;max-height:80px;">
</el-table-column> {{ scope.row.value }}</div>
<el-table-column prop="createAt" label="创建时间"> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" prop="id" width="120"> <el-table-column prop="createAt" label="创建时间">
<template slot-scope="scope"> </el-table-column>
<el-button size="mini" type="primary" :disabled="!isAuth('allocationList:update')" <el-table-column label="操作" prop="id" width="120">
@click="amend(scope.$index, scope.row)">编辑 <template slot-scope="scope">
</el-button> <el-button size="mini" type="primary" :disabled="!isAuth('allocationList:update')"
</template> @click="amend(scope.$index, scope.row)">编辑
</el-table-column> </el-button>
</el-table> </template>
</el-table-column>
</el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="协议配置" name="xieyi"> <el-tab-pane label="协议配置" name="xieyi">
<el-table v-loading="tableDataLoading" :data="tableData"> <el-table v-loading="tableDataLoading" :data="tableData">
<el-table-column fixed prop="type" label="编号" align="center" width="80"> <el-table-column fixed prop="type" label="编号" align="center" width="80">
</el-table-column> </el-table-column>
<el-table-column prop="min" label="类型"> <el-table-column prop="min" label="类型">
</el-table-column> </el-table-column>
<el-table-column prop="value" label="内容" width="500"> <el-table-column prop="value" label="内容" width="500">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">{{scope.row.value}}</div> <div
</template> style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;line-clamp: 3;overflow: hidden;max-height:80px;">
</el-table-column> {{ scope.row.value }}</div>
<el-table-column prop="createAt" label="创建时间"> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" prop="id" width="120"> <el-table-column prop="createAt" label="创建时间">
<template slot-scope="scope"> </el-table-column>
<el-button size="mini" type="primary" :disabled="!isAuth('allocationList:update')" <el-table-column label="操作" prop="id" width="120">
@click="amend(scope.$index, scope.row)">编辑 <template slot-scope="scope">
</el-button> <el-button size="mini" type="primary" :disabled="!isAuth('allocationList:update')"
</template> @click="amend(scope.$index, scope.row)">编辑
</el-table-column> </el-button>
</el-table> </template>
</el-table-column>
</el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="开关配置" name="kaiguan"> <el-tab-pane label="开关配置" name="kaiguan">
<el-table v-loading="tableDataLoading" :data="tableData"> <el-table v-loading="tableDataLoading" :data="tableData">
@@ -239,8 +245,8 @@
<el-table-column prop="value" label="内容"> <el-table-column prop="value" label="内容">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;"> style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;line-clamp: 3;overflow: hidden;max-height:80px;">
{{scope.row.value}} {{ scope.row.value }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@@ -255,6 +261,32 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="分享好友页面配置" name="Share">
<el-form ref="ShareFriends" :model="ShareFriends" :rules="ShareFriendsrules" label-width="80px">
<el-form-item label="顶部图">
<div
style=" width: 148px; height: 148px; border: 1px dashed #c0ccda; border-radius: 6px;text-align: center;line-height: 148px; ">
<el-upload class="avatar-uploader" v-model="ShareFriends.imageUrl"
:action="$http.adornUrlUp('alioss/upload')" :show-file-list="false"
:on-success="handleAvatarSuccess">
<img v-if="imageUrl" :src="imageUrl" class="avatar"
style="border-radius: 6px; width: 148px; height: 148px" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<div> *建议优先选择jpg格式并且最好控制在500kb内</div>
</el-form-item>
<el-form-item label="邀请文案" prop="tips">
<el-row>
<el-col :span="8"><el-input v-model="ShareFriends.tips"></el-input></el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs> </el-tabs>
<!-- 修改弹框 --> <!-- 修改弹框 -->
<el-dialog title="修改" :visible.sync="dialogFormVisible" center> <el-dialog title="修改" :visible.sync="dialogFormVisible" center>
@@ -263,19 +295,22 @@
<el-input v-model="form.min" style="width:65%;" readonly></el-input> <el-input v-model="form.min" style="width:65%;" readonly></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内容:" :label-width="formLabelWidth"> <el-form-item label="内容:" :label-width="formLabelWidth">
<quill-editor v-if="form.conditionFrom=='xieyi'" ref="myTextEditor" v-model="form.value" :options="quillOption" <quill-editor v-if="form.conditionFrom == 'xieyi'" ref="myTextEditor" v-model="form.value"
style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;margin-bottom: 60px;"> :options="quillOption"
style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;margin-bottom: 60px;">
</quill-editor> </quill-editor>
<div v-else-if="form.conditionFrom=='image'"> <div v-else-if="form.conditionFrom == 'image'">
<!-- <el-input v-model="form.value" style="width:65%;"></el-input> --> <!-- <el-input v-model="form.value" style="width:65%;"></el-input> -->
<el-upload class="avatar-uploader" v-model="form.value" <el-upload class="avatar-uploader" v-model="form.value"
:action="$http.adornUrlUp('alioss/upload')" :show-file-list="false" :action="$http.adornUrlUp('alioss/upload')" :show-file-list="false"
:on-success="handleAvatarSuccess1"> :on-success="handleAvatarSuccess1">
<img v-if="form.value" :src="form.value" class="avatar" style="width: 148px;height: 148px;" /> <img v-if="form.value" :src="form.value" class="avatar"
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i> style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon"
style="font-size: 28px;color: #8c939d"></i>
</el-upload> </el-upload>
</div> </div>
<div v-else-if="form.conditionFrom=='kaiguan'"> <div v-else-if="form.conditionFrom == 'kaiguan'">
<div> <div>
<el-radio-group v-model="form.value"> <el-radio-group v-model="form.value">
<el-radio label="是"></el-radio> <el-radio label="是"></el-radio>
@@ -283,12 +318,16 @@
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
<el-input v-else v-model="form.value" :rows="4" style="width:65%;"></el-input> <el-input v-else v-model="form.value" :rows="4" style="width:65%;"></el-input>
<!-- <el-input v-model="form.value" style="width:65%;"></el-input> --> <!-- <el-input v-model="form.value" style="width:65%;"></el-input> -->
</el-form-item> </el-form-item>
<el-form-item label="是否返回给App" :label-width="formLabelWidth"> <el-form-item label="是否返回给App" :label-width="formLabelWidth">
<el-switch v-model="form.isAppUse" :active-value="1" :inactive-value="0"></el-switch> <!-- <el-switch v-model="form.isAppUse" :active-value="1" :inactive-value="0"></el-switch> -->
<el-radio-group v-model="form.isAppUse">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -300,264 +339,341 @@
</template> </template>
<script> <script>
import { import {
quillEditor
} from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import quillConfig from '../locality/quill-config.js'
export default {
components: {
quillEditor quillEditor
} from 'vue-quill-editor' },
import 'quill/dist/quill.core.css' data() {
import 'quill/dist/quill.snow.css' return {
import 'quill/dist/quill.bubble.css' quillOption: quillConfig,
import quillConfig from '../locality/quill-config.js' openValue: '是',
export default { closeValue: '否',
components: { limit: 10,
quillEditor page: 0,
}, min: '',
data() { value: '',
return { id: '',
quillOption: quillConfig, condition: 'xitong',
openValue: '', activeName: 'first',
closeValue: '否', dialogFormVisible: false,
limit: 10, dialogFormVisible1: false,
page: 0, tableDataLoading: true,
formLabelWidth: '200px',
ShareFriends: {},
ShareFriendsrules: {
imageUrl: [{
required: true,
message: '请选择图片',
trigger: 'blur'
}],
tips: [{
required: true,
message: '请输入文案',
trigger: 'blur'
}],
},
form: {
id: '',
min: '', min: '',
value: '', value: '',
type: '',
isAppUse: false,
},
form2: {
id: '', id: '',
condition: 'xitong', min: '',
activeName: 'first', value: '',
dialogFormVisible: false, type: '',
dialogFormVisible1: false, },
tableDataLoading: true, values: [{
formLabelWidth: '200px', value: 1,
form: { label: '是'
id: '', },
min: '', {
value: '', value: 2,
type: '', label: ''
isAppUse: false,
},
form2: {
id: '',
min: '',
value: '',
type: '',
},
values: [{
value: 1,
label: '是'
},
{
value: 2,
label: '否'
}
],
tableData: [],
checkBoxData: [] //多选框选择的值
} }
}, ],
methods: { imageUrl: '',
handleSizeChange(val) { tableData: [],
this.limit = val; checkBoxData: [] //多选框选择的值
this.dataSelect();
},
handleCurrentChange(val) {
this.page = val - 1;
this.dataSelect();
},
handleClick(tab, event) {
if (tab._props.label == '全局系统配置') {
this.condition = 'xitong'
this.dataSelect()
}
if (tab._props.label == '首页配置') {
this.condition = 'shouye'
this.dataSelect()
}
if (tab._props.label == '微信配置') {
this.condition = 'weixin'
this.dataSelect()
}
if (tab._props.label == '支付宝配置') {
this.condition = 'zhifubao'
this.dataSelect()
}
if (tab._props.label == '短信配置') {
this.condition = 'duanxin'
this.dataSelect()
}
if (tab._props.label == '任务系统配置') {
this.condition = 'renwu'
this.dataSelect()
}
if (tab._props.label == '文件上传配置') {
this.condition = 'oss'
this.dataSelect()
}
if (tab._props.label == '服务费配置') {
this.condition = 'fuwufei'
this.dataSelect()
}
if (tab._props.label == '协议配置') {
this.condition = 'xieyi'
this.dataSelect()
}
if (tab._props.label == '图片配置') {
this.condition = 'image'
this.dataSelect()
}
if (tab._props.label == '开关配置') {
this.condition = 'kaiguan'
this.dataSelect()
}
if (tab._props.label == '客服配置') {
this.condition = 'kefu'
this.dataSelect()
}
},
// 修改弹框
amend(index, rows) {
this.dialogFormVisible = true;
this.form.id = rows.id;
this.form.type = rows.type
this.form.min = rows.min;
this.form.value = rows.value;
this.form.max = rows.max;
this.form.createAt = rows.createAt;
this.form.isAppUse = rows.isAppUse;
this.form.conditionFrom = rows.conditionFrom
},
updateAmendNotice(e,row){
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
...row,
isAppUse: e
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
}
})
this.dataSelect()
} else {
this.$message.error(data.msg)
}
})
},
// 修改
amendNoticeTo() {
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
'id': this.form.id,
'type': this.form.type,
'value': this.form.value,
'min': this.form.min,
'max': this.form.max,
'createAt': this.form.createAt,
'conditionFrom': this.form.conditionFrom,
isAppUse: this.form.isAppUse
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.dialogFormVisible = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
}
})
this.dataSelect()
} else {
this.$message.error(data.msg)
}
})
},
// 修改首页
amendWhether(index, rows) {
this.dialogFormVisible1 = true;
this.form2.id = rows.id;
this.form2.type = rows.type
this.form2.min = rows.min;
this.form2.value = rows.value;
this.form2.max = rows.max;
this.form2.createAt = rows.createAt;
this.form2.conditionFrom = rows.conditionFrom
},
WhetherNoticeTo() {
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
'id': this.form2.id,
'type': this.form2.type,
'value': this.form2.value,
'min': this.form2.min,
'max': this.form2.max,
'createAt': this.form2.createAt,
'conditionFrom': this.form2.conditionFrom
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.dialogFormVisible1 = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
} else {
this.$message.error(data.msg)
}
})
},
// 获取数据列表
dataSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/${this.condition}`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
}
})
},
handleAvatarSuccess1(file, fileList) {
this.form.value = file.data
console.log('file.data',file.data)
},
},
mounted() {
this.dataSelect()
} }
},
methods: {
handleSizeChange(val) {
this.limit = val;
this.dataSelect();
},
handleCurrentChange(val) {
this.page = val - 1;
this.dataSelect();
},
onSubmit() {
console.log(this.ShareFriends,'111111111111')
if (!this.ShareFriends.imageUrl) {
this.$message({
message: '请选择图片',
type: 'warning',
duration: 1500
})
return false
}
this.$refs.ShareFriends.validate((valid) => {
if (valid) {
console.log(111)
this.$http({
url: this.$http.adornUrl('/ext/sys/invite/friend/config/save'),
method: 'post',
data: this.$http.adornData({
...this.ShareFriends,
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getData()
}
})
} else {
this.$message.error(data.msg)
}
})
} else {
console.log('error submit!!');
return false;
}
});
},
handleClick(tab, event) {
if (tab._props.label == '全局系统配置') {
this.condition = 'xitong'
this.dataSelect()
}
if (tab._props.label == '首页配置') {
this.condition = 'shouye'
this.dataSelect()
}
if (tab._props.label == '微信配置') {
this.condition = 'weixin'
this.dataSelect()
}
if (tab._props.label == '支付宝配置') {
this.condition = 'zhifubao'
this.dataSelect()
}
if (tab._props.label == '短信配置') {
this.condition = 'duanxin'
this.dataSelect()
}
if (tab._props.label == '任务系统配置') {
this.condition = 'renwu'
this.dataSelect()
}
if (tab._props.label == '文件上传配置') {
this.condition = 'oss'
this.dataSelect()
}
if (tab._props.label == '服务费配置') {
this.condition = 'fuwufei'
this.dataSelect()
}
if (tab._props.label == '协议配置') {
this.condition = 'xieyi'
this.dataSelect()
}
if (tab._props.label == '图片配置') {
this.condition = 'image'
this.dataSelect()
}
if (tab._props.label == '开关配置') {
this.condition = 'kaiguan'
this.dataSelect()
}
if (tab._props.label == '客服配置') {
this.condition = 'kefu'
this.dataSelect()
}
if (tab._props.label == '分享好友页面配置') {
this.condition = 'Share'
this.getData()
}
},
getData(){
this.$http({
url: this.$http.adornUrl(`ext/sys/invite/friend/config/get`),
method: 'get',
params: {}
}).then(({
data
}) => {
if (data && data.code === 0) {
this.ShareFriends = data.data
this.imageUrl = data.data.imageUrl
}
})
},
// 修改弹框
amend(index, rows) {
this.dialogFormVisible = true;
this.form.id = rows.id;
this.form.type = rows.type
this.form.min = rows.min;
this.form.value = rows.value;
this.form.max = rows.max;
this.form.createAt = rows.createAt;
this.form.isAppUse = rows.isAppUse;
this.form.conditionFrom = rows.conditionFrom
},
updateAmendNotice(e, row) {
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
...row,
isAppUse: e
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
}
})
this.dataSelect()
} else {
this.$message.error(data.msg)
}
})
},
// 修改
amendNoticeTo() {
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
'id': this.form.id,
'type': this.form.type,
'value': this.form.value,
'min': this.form.min,
'max': this.form.max,
'createAt': this.form.createAt,
'conditionFrom': this.form.conditionFrom,
isAppUse: this.form.isAppUse
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.dialogFormVisible = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
}
})
this.dataSelect()
} else {
this.$message.error(data.msg)
}
})
},
// 修改首页
amendWhether(index, rows) {
this.dialogFormVisible1 = true;
this.form2.id = rows.id;
this.form2.type = rows.type
this.form2.min = rows.min;
this.form2.value = rows.value;
this.form2.max = rows.max;
this.form2.createAt = rows.createAt;
this.form2.conditionFrom = rows.conditionFrom
},
WhetherNoticeTo() {
this.$http({
url: this.$http.adornUrl('common/update'),
method: 'post',
data: this.$http.adornData({
'id': this.form2.id,
'type': this.form2.type,
'value': this.form2.value,
'min': this.form2.min,
'max': this.form2.max,
'createAt': this.form2.createAt,
'conditionFrom': this.form2.conditionFrom
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.dialogFormVisible1 = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
} else {
this.$message.error(data.msg)
}
})
},
// 获取数据列表
dataSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/${this.condition}`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
}
})
},
handleAvatarSuccess(file, fileList) {
this.ShareFriends.imageUrl = file.data
this.imageUrl = file.data
},
handleAvatarSuccess1(file, fileList) {
this.form.value = file.data
console.log('file.data', file.data)
},
},
mounted() {
this.dataSelect()
} }
}
</script> </script>
<style scoped="scoped"> <style scoped="scoped">
.eit { .eit {
height: 120px; height: 120px;
} }
</style> </style>

View File

@@ -2,16 +2,8 @@
<div> <div>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<div style="float: right; margin-right: 2%"> <div style="float: right; margin-right: 2%">
<el-button <el-button style="margin: 10px 0" :disabled="!isAuth('app:add')" size="mini" type="primary" icon="document"
style="margin: 10px 0" v-if="upgradeData1.records.length <= 0" @click="addUpgrade">添加升级</el-button>
:disabled="!isAuth('app:add')"
size="mini"
type="primary"
icon="document"
v-if="upgradeData1.records.length <= 0"
@click="addUpgrade"
>添加升级</el-button
>
</div> </div>
<el-table v-loading="tableDataLoading" :data="upgradeData1.records"> <el-table v-loading="tableDataLoading" :data="upgradeData1.records">
<el-table-column fixed prop="id" label="编号" width="80"> <el-table-column fixed prop="id" label="编号" width="80">
@@ -20,7 +12,7 @@
<el-table-column prop="androidWgtUrl" label="安卓"> </el-table-column> <el-table-column prop="androidWgtUrl" label="安卓"> </el-table-column>
<!-- <el-table-column prop="iosWgtUrl" label="苹果"> </el-table-column> --> <!-- <el-table-column prop="iosWgtUrl" label="苹果"> </el-table-column> -->
<el-table-column prop="version" label="安卓版本"> </el-table-column> <el-table-column prop="version" label="安卓版本"> </el-table-column>
<!-- <el-table-column prop="iosVersion" label="ios版本"> </el-table-column> --> <el-table-column prop="iosVersion" label="ios版本"> </el-table-column>
<el-table-column prop="content" label="升级方式"> <el-table-column prop="content" label="升级方式">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{
@@ -31,33 +23,18 @@
<el-table-column prop="createAt" label="创建时间"> </el-table-column> <el-table-column prop="createAt" label="创建时间"> </el-table-column>
<el-table-column label="操作" width="200"> <el-table-column label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="primary" :disabled="!isAuth('app:update')"
size="mini" @click="upgradebj(scope.$index, scope.row)">编辑
type="primary"
:disabled="!isAuth('app:update')"
@click="upgradebj(scope.$index, scope.row)"
>编辑
</el-button> </el-button>
<el-button <el-button size="mini" type="danger" :disabled="!isAuth('app:delete')" @click="upgradelete(scope.row)">删除
size="mini"
type="danger"
:disabled="!isAuth('app:delete')"
@click="upgradelete(scope.row)"
>删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleSizeChange2" @current-change="handleCurrentChange2"
@size-change="handleSizeChange2" :page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
@current-change="handleCurrentChange2" layout="total,sizes, prev, pager, next,jumper" :total="upgradeData1.total">
:page-sizes="[10, 20, 30, 40]"
:page-size="limit"
:current-page="page"
layout="total,sizes, prev, pager, next,jumper"
:total="upgradeData1.total"
>
</el-pagination> </el-pagination>
</div> </div>
<!-- 添加修改升级弹框 --> <!-- 添加修改升级弹框 -->
@@ -71,66 +48,36 @@
<el-input v-model="formupgrad.wgtUrl" style="width: 65%"></el-input> <el-input v-model="formupgrad.wgtUrl" style="width: 65%"></el-input>
</el-form-item> --> </el-form-item> -->
<div class="file-box" style="margin-bottom: 10px; display: flex"> <div class="file-box" style="margin-bottom: 10px; display: flex">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right"><i
><i style="color: #f56c6c; margin-right: 2px">*</i>安卓包</span style="color: #f56c6c; margin-right: 2px">*</i>安卓包</span>
> <div style="
<div
style="
width: 200px; width: 200px;
height: 148px; height: 148px;
border: 1px dashed #c0ccda; border: 1px dashed #c0ccda;
border-radius: 6px; border-radius: 6px;
text-align: center; text-align: center;
" ">
> <el-upload class="avatar-uploader" v-model="formupgrad.androidWgtUrl" action="" :auto-upload="false"
<el-upload :onChange="onChooseAndriod" :show-file-list="false" :multiple="false">
class="avatar-uploader" <div v-if="formupgrad.androidWgtUrl" class="flex flex-col flex-xy-center">
v-model="formupgrad.androidWgtUrl" <img src="../../assets/img/android.png" style="width: 50px; height: 50px" />
action=""
:auto-upload="false"
:onChange="onChooseAndriod"
:show-file-list="false"
:multiple="false"
>
<div
v-if="formupgrad.androidWgtUrl"
class="flex flex-col flex-xy-center"
>
<img
src="../../assets/img/android.png"
style="width: 50px; height: 50px"
/>
<span style="margin-top: 10px">{{ <span style="margin-top: 10px">{{
formupgrad.androidWgtUrl | name formupgrad.androidWgtUrl | name
}}</span> }}</span>
</div> </div>
<i <i v-if="!formupgrad.androidWgtUrl && percentage <= 0"
v-if="!formupgrad.androidWgtUrl && percentage <= 0" class="el-icon-plus avatar-uploader-icon iconss"></i>
class="el-icon-plus avatar-uploader-icon iconss" <el-progress type="circle" v-if="
></i> !formupgrad.androidWgtUrl &&
<el-progress percentage > 0 &&
type="circle" percentage <= 100 &&
v-if=" key == 'andriod'
!formupgrad.androidWgtUrl && " :percentage="percentage" color="#efefef"></el-progress>
percentage > 0 &&
percentage <= 100 &&
key == 'andriod'
"
:percentage="percentage"
color="#efefef"
></el-progress>
</el-upload> </el-upload>
</div> </div>
</div> </div>
<el-form-item <el-form-item label="安卓地址:" :label-width="formLabelWidth" required>
label="安卓地址:" <el-input v-model="formupgrad.androidWgtUrl" style="width: 65%"></el-input>
:label-width="formLabelWidth"
required
>
<el-input
v-model="formupgrad.androidWgtUrl"
style="width: 65%"
></el-input>
</el-form-item> </el-form-item>
<!-- <div class="file-box" style="margin-bottom: 10px; display: flex"> <!-- <div class="file-box" style="margin-bottom: 10px; display: flex">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right"
@@ -190,50 +137,19 @@
style="width: 65%" style="width: 65%"
></el-input> ></el-input>
</el-form-item> --> </el-form-item> -->
<el-form-item <el-form-item label="安卓版本号:" :label-width="formLabelWidth" required>
label="安卓版本号:" <el-input v-model="formupgrad.version" style="width: 65%"></el-input>
:label-width="formLabelWidth"
required
>
<el-input
v-model="formupgrad.version"
style="width: 65%"
></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item <el-form-item label="ios版本号" :label-width="formLabelWidth" required>
label="ios版本号" <el-input v-model="formupgrad.iosVersion" style="width: 65%"></el-input>
:label-width="formLabelWidth" </el-form-item>
required <el-form-item label="升级方式:" :label-width="formLabelWidth" required>
> <el-select v-model="formupgrad.method" placeholder="请选择升级方式" style="width: 65%">
<el-input <el-option v-for="item in methods" :key="item.value" :label="item.label" :value="item.value">
v-model="formupgrad.iosVersion"
style="width: 65%"
></el-input>
</el-form-item> -->
<el-form-item
label="升级方式:"
:label-width="formLabelWidth"
required
>
<el-select
v-model="formupgrad.method"
placeholder="请选择升级方式"
style="width: 65%"
>
<el-option
v-for="item in methods"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="升级内容:" :label-width="formLabelWidth" required>
label="升级内容:"
:label-width="formLabelWidth"
required
>
<el-input v-model="formupgrad.des" style="width: 65%"></el-input> <el-input v-model="formupgrad.des" style="width: 65%"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -307,7 +223,7 @@ export default {
choicenData2: [], choicenData2: [],
upgradeData: [], upgradeData: [],
upgradeData1: { upgradeData1: {
records:[] records: []
}, },
choicenData: [], choicenData: [],
types: [ types: [
@@ -361,8 +277,8 @@ export default {
}, },
}, },
methods: { methods: {
resetFormupgrad(){ resetFormupgrad() {
for(let i in this.formupgrad){ for (let i in this.formupgrad) {
this.formupgrad[i] = ""; this.formupgrad[i] = "";
} }
}, },
@@ -404,8 +320,8 @@ export default {
console.log(data); console.log(data);
const date = new Date(); const date = new Date();
const houzhui = "." + data.name.substr(data.name.lastIndexOf(".") + 1); const houzhui = "." + data.name.substr(data.name.lastIndexOf(".") + 1);
const isTest=config.baseUrl.includes('web.hnsiyao.cn')?false:true const isTest = config.baseUrl.includes('web.hnsiyao.cn') ? false : true
const appName=isTest?'test-duanju':'sy-duanju' const appName = isTest ? 'test-duanju' : 'sy-duanju'
const name = "app/" + appName + houzhui; const name = "app/" + appName + houzhui;
console.log(name); console.log(name);
const fileRes = await this.ossClient.partUpload(name, data.raw, (p) => { const fileRes = await this.ossClient.partUpload(name, data.raw, (p) => {
@@ -530,7 +446,7 @@ export default {
message: "操作成功", message: "操作成功",
type: "success", type: "success",
duration: 1500, duration: 1500,
onClose: () => {}, onClose: () => { },
}); });
}); });
} }
@@ -565,7 +481,7 @@ export default {
message: "操作成功", message: "操作成功",
type: "success", type: "success",
duration: 1500, duration: 1500,
onClose: () => {}, onClose: () => { },
}); });
}); });
}, },
@@ -595,7 +511,7 @@ export default {
}); });
}); });
}) })
.catch(() => {}); .catch(() => { });
}, },
// 升级配置数据列表 // 升级配置数据列表
@@ -632,16 +548,19 @@ export default {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
::v-deep .avatar-uploader { ::v-deep .avatar-uploader {
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
height: 100%; height: 100%;
} }
.el-upload { .el-upload {
width: 100%; width: 100%;
height: 100%; height: 100%;
box-sizing: border-box; box-sizing: border-box;
} }
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
@@ -652,9 +571,11 @@ export default {
text-align: center; text-align: center;
border: 1px dotted rgba(67, 79, 103, 0.4); border: 1px dotted rgba(67, 79, 103, 0.4);
} }
.margin-auto { .margin-auto {
margin: auto; margin: auto;
} }
.cards { .cards {
padding: 0 8px; padding: 0 8px;
margin-bottom: 15px; margin-bottom: 15px;
@@ -678,12 +599,15 @@ export default {
height: 113px; height: 113px;
color: rgba(0, 0, 0, 0.65); color: rgba(0, 0, 0, 0.65);
} }
.flex { .flex {
display: flex; display: flex;
} }
.flex-col { .flex-col {
flex-direction: column; flex-direction: column;
} }
.flex-xy-center { .flex-xy-center {
justify-content: center; justify-content: center;
align-items: center; align-items: center;

View File

@@ -628,7 +628,7 @@
dataSelect() { dataSelect() {
this.tableDataLoading = true this.tableDataLoading = true
this.$http({ this.$http({
url: this.$http.adornUrl('admin/sdkType/getSdkTypeList'), url: this.$http.adornUrl('sdkType/getSdkTypeList'),
method: 'get', method: 'get',
params: this.$http.adornParams({ params: this.$http.adornParams({
'page': this.page, 'page': this.page,
@@ -784,7 +784,7 @@
// this.startTime = this.info2.stockDate2 // this.startTime = this.info2.stockDate2
// } // }
this.$http({ this.$http({
url: this.$http.adornUrl('admin/sdkInfo/getSdkList'), url: this.$http.adornUrl('/admin/sdkInfo/getSdkList'),
method: 'get', method: 'get',
params: this.$http.adornParams({ params: this.$http.adornParams({
'page': this.page, 'page': this.page,

View File

@@ -48,26 +48,27 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">总收入</div>
<div class="text_color">
<span>{{
tableData.totalRevenue ? tableData.totalRevenue : 0
}}</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="6" class="cards"> <el-col :span="6" class="cards">
<div class="box"> <div class="box">
<div class="box_num"> <div class="box_num">
<div class="box_color">今日收入</div> <div class="box_color">今日收入</div>
<div class="text_color"> <div class="text_color">
<span>{{ <span>{{
tableData.todayRevenue ? tableData.todayRevenue : 0 tableData.todayPayAmount ? tableData.todayPayAmount : 0
}}</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">今日订单笔数</div>
<div class="text_color">
<span>{{
tableData.todayPayCount ? tableData.todayPayCount : 0
}}</span }}</span
> >
</div> </div>
@@ -77,10 +78,10 @@
<el-col :span="6" class="cards"> <el-col :span="6" class="cards">
<div class="box"> <div class="box">
<div class="box_num"> <div class="box_num">
<div class="box_color">本月收入</div> <div class="box_color">今日提现</div>
<div class="text_color"> <div class="text_color">
<span>{{ <span>{{
tableData.monthRevenue ? tableData.monthRevenue : 0 tableData.todayExtractAmount ? tableData.todayExtractAmount : 0
}}</span }}</span
> >
</div> </div>
@@ -90,10 +91,10 @@
<el-col :span="6" class="cards"> <el-col :span="6" class="cards">
<div class="box"> <div class="box">
<div class="box_num"> <div class="box_num">
<div class="box_color">本年收入</div> <div class="box_color">今日提现笔数</div>
<div class="text_color"> <div class="text_color">
<span>{{ <span>{{
tableData.yearRevenue ? tableData.yearRevenue : 0 tableData.todayExtractCount ? tableData.todayExtractCount : 0
}}</span }}</span
> >
</div> </div>
@@ -445,6 +446,51 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">下级签到奖励</div>
<div class="text_color">
<span>{{ orderStat.signInAwardMoney ? orderStat.signInAwardMoney : 0 }}</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">分享达标奖励</div>
<div class="text_color">
<span>{{ orderStat.shareAwardMoney ? orderStat.shareAwardMoney : 0 }}</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">新人福利任务完成</div>
<div class="text_color">
<span>{{ orderStat.newUserTaskDoneAwardMoney ? orderStat.newUserTaskDoneAwardMoney : 0 }}</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="6" class="cards">
<div class="box">
<div class="box_num">
<div class="box_color">邀请15人已达标</div>
<div class="text_color">
<span>{{ orderStat.inviteTaskDoneAwardMoney ? orderStat.inviteTaskDoneAwardMoney : 0 }}</span
>
</div>
</div>
</div>
</el-col>
</el-row> </el-row>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="分销统计" name="five"> <el-tab-pane label="分销统计" name="five">
@@ -1078,7 +1124,10 @@ export default {
this.tableDataLoading = false; this.tableDataLoading = false;
if (data.code == 0) { if (data.code == 0) {
let returnData = data.data; let returnData = data.data;
this.orderStat = returnData; this.$nextTick(() => {
this.orderStat = returnData;
});
// this.orderStat = returnData;
} }
}); });
}, },

View File

@@ -18,7 +18,7 @@
</el-input> </el-input>
</el-col> </el-col>
<el-col :span="10" class="login-captcha"> <el-col :span="10" class="login-captcha">
<img :src="captchaPath" @click="getCaptcha()" alt=""> <img :src="captchaPath" @click="getCaptcha()" alt="">
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
@@ -35,6 +35,7 @@
<script> <script>
import { getUUID } from '@/utils' import { getUUID } from '@/utils'
import { entryName } from '@/utils/httpRequest' import { entryName } from '@/utils/httpRequest'
import { method } from 'lodash'
export default { export default {
data () { data () {
return { return {
@@ -84,16 +85,24 @@
this.$router.replace({ name: 'home' }) this.$router.replace({ name: 'home' })
} else { } else {
this.getCaptcha() this.getCaptcha()
this.$message.error(data.msg) this.$message.error(data.message)
} }
}) })
} }
}) })
}, },
// 获取验证码 // 获取验证码
getCaptcha () { async getCaptcha () {
this.dataForm.uuid = getUUID() this.dataForm.uuid = getUUID()
this.captchaPath = this.$http.adornUrl(`/captcha.jpg?uuid=${this.dataForm.uuid}`) const res =await this.$http({
url:'indetcode/getCode',
method:'get',
params:{
uuid:this.dataForm.uuid
}
})
console.log(res);
this.captchaPath=res.data.data.img
} }
} }
} }

View File

@@ -1,46 +1,24 @@
<template> <template>
<el-dialog <el-dialog :title="form.id ? '修改红包' : '新增红包'" width="500px" :visible.sync="dialogVisible" @close="diaClose"
:title="form.id ? '修改红包' : '新增红包'" :close-on-click-modal="true">
width="500px"
:visible.sync="dialogVisible"
@close="diaClose"
:close-on-click-modal="true"
>
<el-form :model="form" label-width="100px"> <el-form :model="form" label-width="100px">
<el-form-item label="描述" required> <el-form-item label="描述" required>
<el-input v-model="form.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="从第几次开始变化"> <el-form-item label="从第几次开始变化">
<el-input-number <el-input-number :min="0" stepstep-strictly v-model="form.num"></el-input-number>
:min="0"
stepstep-strictly
v-model="form.num"
></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="最大金额" required> <el-form-item label="最大金额" required>
<el-input-number <el-input-number :min="0" :max="100" v-model="form.maxAmount"></el-input-number>
:min="0"
:max="100"
v-model="form.maxAmount"
></el-input-number>
<span></span> <span></span>
</el-form-item> </el-form-item>
<el-form-item label="中奖概率" required> <el-form-item label="中奖概率" required>
<el-input-number <el-input-number :min="0" :max="1" :step="0.1" v-model="form.random"></el-input-number>
:min="0"
:max="1"
:step="0.1"
v-model="form.random"
></el-input-number>
<span></span> <span></span>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" required> <el-form-item label="是否启用" required>
<el-switch <el-switch v-model="form.status" :inactive-value="0" :active-value="1"></el-switch>
v-model="form.status"
:inactive-value="0"
:active-value="1"
></el-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -56,9 +34,9 @@ import { $redPackApi } from "@/api/red-pack.js";
import { isNull } from "@/utils/validate.js"; import { isNull } from "@/utils/validate.js";
export default { export default {
props: { props: {
source:{ source: {
type:[String,Number], type: [String, Number],
default:1 default: 1
} }
}, },
data() { data() {
@@ -82,7 +60,7 @@ export default {
console.log(item); console.log(item);
this.dialogVisible = true; this.dialogVisible = true;
this.item = item; this.item = item;
if (item!==undefined) { if (item !== undefined) {
this.form = { this.form = {
...item, ...item,
num: item.num === "" || item.num === null ? undefined : item.num, num: item.num === "" || item.num === null ? undefined : item.num,
@@ -114,12 +92,12 @@ export default {
} }
console.log(id); console.log(id);
const res = id const res = id
? await $redPackApi.update({ ...this.form, num: this.form.num || "" ,discType:this.source}) ? await $redPackApi.update({ ...this.form, num: this.form.num || "", discType: this.source, type: this.source })
: await $redPackApi.add({...this.form,discType:this.source}); : await $redPackApi.add({ ...this.form, discType: this.source, type: this.source });
console.log(res); console.log(res);
const { data, msg } = res; const { data, msg } = res;
if (data && data.code == 0) { if (data && data.code == 0) {
this.$message.success(id?"修改成功":"添加成功"); this.$message.success(id ? "修改成功" : "添加成功");
this.$emit("refresh"); this.$emit("refresh");
this.diaClose(); this.diaClose();
} else { } else {
@@ -133,9 +111,11 @@ export default {
.el-form-item__label { .el-form-item__label {
text-align: left; text-align: left;
} }
::v-deep .el-form-item__label { ::v-deep .el-form-item__label {
text-align: left; text-align: left;
} }
.upload-file-box { .upload-file-box {
border-radius: 6px; border-radius: 6px;
width: 148px; width: 148px;
@@ -145,6 +125,7 @@ export default {
align-items: center; align-items: center;
overflow: hidden; overflow: hidden;
border: 1px solid #c0c4cc; border: 1px solid #c0c4cc;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;

View File

@@ -42,8 +42,28 @@
<el-table v-loading="tableData.loading" :data="tableData.list" border stripe> <el-table v-loading="tableData.loading" :data="tableData.list" border stripe>
<el-table-column label="ID" prop="id" width="80"></el-table-column> <el-table-column label="ID" prop="id" width="80"></el-table-column>
<el-table-column label="用户ID" prop="userId" width="100"></el-table-column> <el-table-column label="用户ID" prop="userId" width="100"></el-table-column>
<el-table-column label="用户名" prop="userName" width="150"></el-table-column> <el-table-column label="用户名" prop="userName" width="200">
<el-table-column label="提现信息"> <template slot-scope="scope">
<template v-if="scope.row.relationId">
<div class="danger_user">
<div class="user_info">
<i class="icon el-icon-warning"></i>
危险用户{{ scope.row.userName }}
</div>
<el-tag type="danger" disable-transitions>{{ scope.row.relationId }}</el-tag>
</div>
</template>
<template v-else>
{{ scope.row.userName }}
</template>
</template>
</el-table-column>
<el-table-column label="提现账号" prop="zhifubao" width="200">
<template slot-scope="scope">
{{ scope.row.zhifubaoName }} / {{ scope.row.zhifubao }}
</template>
</el-table-column>
<el-table-column label="提现信息" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div>提现金额{{ scope.row.money }}</div> <div>提现金额{{ scope.row.money }}</div>
<div>手续费{{ scope.row.rate }}</div> <div>手续费{{ scope.row.rate }}</div>
@@ -63,11 +83,6 @@
<div>待审提现申请笔数{{ scope.row.verifyCount }}</div> <div>待审提现申请笔数{{ scope.row.verifyCount }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="支付宝信息" prop="zhifubao" width="200">
<template slot-scope="scope">
{{ scope.row.zhifubaoName }} / {{ scope.row.zhifubao }}
</template>
</el-table-column>
<el-table-column label="申请时间" prop="createAt" width="200"></el-table-column> <el-table-column label="申请时间" prop="createAt" width="200"></el-table-column>
<el-table-column label="转账时间" prop="outAt" width="200"></el-table-column> <el-table-column label="转账时间" prop="outAt" width="200"></el-table-column>
<el-table-column label="状态" prop="state" width="200"> <el-table-column label="状态" prop="state" width="200">
@@ -78,13 +93,8 @@
<el-tag type="success" v-if="scope.row.state == 1" disable-transitions> <el-tag type="success" v-if="scope.row.state == 1" disable-transitions>
成功 成功
</el-tag> </el-tag>
<div style="display: flex;flex-direction: column;" v-if="scope.row.state == 2"> <div class="tag_danger" v-if="scope.row.state == 2">
<div> 失败{{ scope.row.refund }}
<el-tag type="danger" disable-transitions>
失败
</el-tag>
</div>
<div>原因{{ scope.row.refund }}</div>
</div> </div>
<el-tag type="warning" v-if="scope.row.state == 3" disable-transitions> <el-tag type="warning" v-if="scope.row.state == 3" disable-transitions>
待审核 待审核
@@ -130,6 +140,7 @@
</template> </template>
<script> <script>
import dayjs from 'dayjs'
import { cashOutAuditPage, cashOutAuditAudit } from "@/api/withdraw.js"; import { cashOutAuditPage, cashOutAuditAudit } from "@/api/withdraw.js";
export default { export default {
data() { data() {
@@ -159,7 +170,7 @@ export default {
id: "", id: "",
isAgree: "1", isAgree: "1",
refund: "", refund: "",
userId:'' userId: ''
}, },
rules: { rules: {
isAgree: [], isAgree: [],
@@ -217,10 +228,12 @@ export default {
this.cashOutAuditPage(); this.cashOutAuditPage();
}, },
// 确认选择日期 // 确认选择日期
changeTime() { changeTime(e) {
console.log(e);
this.timeValue = e
if (this.timeValue.length == 2) { if (this.timeValue.length == 2) {
this.query.startTime = this.timeValue[0]; this.query.startTime = dayjs(this.timeValue[0]).format("YYYY-MM-DD HH:mm:ss");
this.query.endTime = this.timeValue[1]; this.query.endTime = dayjs(this.timeValue[1]).format("YYYY-MM-DD HH:mm:ss");
} else { } else {
this.query.startTime = ""; this.query.startTime = "";
this.query.endTime = ""; this.query.endTime = "";
@@ -256,3 +269,31 @@ export default {
} }
}; };
</script> </script>
<style scoped lang="scss">
.danger_user {
display: flex;
flex-direction: column;
gap: 4px;
.user_info {
display: flex;
align-items: center;
$color: #F56C6C;
color: $color;
gap: 4px;
.icon {
color: $color;
}
}
}
.tag_danger {
background-color: rgba(245, 108, 108, .1);
color: #f56c6c;
border-radius: 4px;
border: 1px solid rgba(245, 108, 108, .2);
padding: 2px 10px;
}
</style>

View File

@@ -72,9 +72,9 @@
<div>提现次数{{ scope.row.subCount }}</div> <div>提现次数{{ scope.row.subCount }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="支付宝信息" prop="zhifubao"> <el-table-column label="提现账号" prop="zhifubao">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.zhifubaoName }} / {{ scope.row.zhifubao }} {{ scope.row.zhiFuBaoName }} / {{ scope.row.zhiFuBao }}
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@@ -4,7 +4,7 @@
<el-tab-pane label="提现审核" name="withdraw"> <el-tab-pane label="提现审核" name="withdraw">
<WithdrawManage></WithdrawManage> <WithdrawManage></WithdrawManage>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="支付宝提现统计" name="withdrawTotal"> <el-tab-pane label="提现统计" name="withdrawTotal">
<WithdrawTotal></WithdrawTotal> <WithdrawTotal></WithdrawTotal>
</el-tab-pane> </el-tab-pane>
<!-- 拒绝弹框 --> <!-- 拒绝弹框 -->
@@ -228,7 +228,7 @@
<div class="box_num"> <div class="box_num">
<div class="box_color">累计提现金额</div> <div class="box_color">累计提现金额</div>
<div class="text_color"> <div class="text_color">
<span>{{ withdrawData.sumMoney }}</span> <span> {{ formatMoney(withdrawData.sumMoney) }}</span>
</div> </div>
</div> </div>
</div> </div>
@@ -529,6 +529,10 @@
<el-tab-pane label="现金红包抽奖金额配置" name="senven"> <el-tab-pane label="现金红包抽奖金额配置" name="senven">
<div class=""> <div class="">
<div style="margin-bottom: 20px"> <div style="margin-bottom: 20px">
<el-select @change="redPackInit" v-model="zhuanPanType" placeholder="请选择">
<el-option v-for="item in zhuanPanTypes" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-button type="primary" @click="openPop('refAddRedPack')">添加</el-button> <el-button type="primary" @click="openPop('refAddRedPack')">添加</el-button>
</div> </div>
<el-table :border="true" :data="redPackData"> <el-table :border="true" :data="redPackData">
@@ -556,7 +560,7 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<pop-add-zhuanpan ref="refAddZhuanpan" @refresh="zhuanPanRefresh" :source="zhuanPanType"></pop-add-zhuanpan> <pop-add-zhuanpan ref="refAddZhuanpan" @refresh="zhuanPanRefresh" :source="zhuanPanType"></pop-add-zhuanpan>
<pop-add-red-pack ref="refAddRedPack" @refresh="redpackRefresh"></pop-add-red-pack> <pop-add-red-pack ref="refAddRedPack" @refresh="redpackRefresh" :source="zhuanPanType"></pop-add-red-pack>
</div> </div>
</template> </template>
@@ -705,6 +709,10 @@ export default {
}; };
}, },
methods: { methods: {
formatMoney(value) {
if (!value) return '0.00';
return Number(value).toFixed(2);
},
zhuanPanTypeChange() { zhuanPanTypeChange() {
this.zhuanPanInit(); this.zhuanPanInit();
}, },
@@ -1098,7 +1106,8 @@ export default {
const { data } = await $redPackApi.getList({ const { data } = await $redPackApi.getList({
page: this.page, page: this.page,
limit: this.limit, limit: this.limit,
source: this.zhuanPanType source: this.zhuanPanType,
type: this.zhuanPanType
}); });
this.redPackData = data.data.records; this.redPackData = data.data.records;
}, },

View File

@@ -0,0 +1,164 @@
<template>
<div>
<div style="display: inline-block;">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="用户昵称/手机号">
<el-input v-model="formInline.keywords" placeholder="请输入用户昵称/手机号" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="onSubmit">搜索</el-button>
<el-button icon="Refresh" @click="reset">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table :data="rechargeData.list">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="avatar" label="头像">
<template slot-scope="scope">
<img :src="scope.row.avatar" alt="" style="width: 50px; height: 50px; border-radius: 50%;" />
</template>
</el-table-column>
<el-table-column prop="userName" label="用户昵称"></el-table-column>
<el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column prop="todayUnlocked" label="今日订单数">
</el-table-column>
<el-table-column prop="todayDrawCount" label="当日抽奖次数">
</el-table-column>
<el-table-column prop="" label="操作">
<template slot-scope="scope">
<el-button type="text" @click="rewardDetails(scope.row)">查看抽奖详情</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4" @current-change="handleCurrentChange4"
:page-sizes="[10, 20, 30, 40]" :page-size="rechargeData.limit" :current-page="rechargeData.page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeData.totalCount">
</el-pagination>
</div>
<!-- 详情 -->
<el-dialog title="抽奖详情" :visible.sync="dialogVisible" width="50%">
<div>抽奖次数合计:{{ rechargeDataA.totalCount }} </div>
<el-table :data="rechargeDataA.list">
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="抽奖结果"></el-table-column>
<el-table-column prop="number" label="金额"></el-table-column>
<el-table-column prop="createTime" label="抽奖时间"></el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4A" @current-change="handleCurrentChange4A"
:page-sizes="[10, 20, 30, 40]" :page-size="rechargeDataA.limit" :current-page="rechargeDataA.page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeDataA.totalCount">
</el-pagination>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
rechargeDataList: [],
formInline: {
keywords: ''
},
rechargeData: {
totalCount: 0,
list: [],
page: 1,
limit: 10,
},
rechargeDataA: {
totalCount: 0,
list: [],
page: 1,
limit: 10,
itemUserId: ''
},
list: [],
dialogVisible: false,
}
},
mounted() {
this.getRechargeData()
},
methods: {
goUrl(item) {
this.$router.push({ path: '/orderCenter', query: { userName: item.userName } })
},
onSubmit() {
this.rechargeData.page = 1
this.rechargeData.limit = 10
this.getRechargeData()
}, reset() {
this.formInline = {
keywords: ''
}
this.getRechargeData()
},
getRechargeData() {
this.$http.get('/ext/sys/lottery/count/query/page', {
params: {
page: this.rechargeData.page,
limit: this.rechargeData.limit,
keywords: this.formInline.keywords
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeData.list = response.data.data.list
this.rechargeData.totalCount = response.data.data.totalCount
// this.rechargeData = response.data.data
} else {
this.$message.error(response.data.msg)
}
}).catch(error => {
console.error(error)
})
}, rewardDetails(item) {
if (item) {
this.rechargeDataA.itemUserId = item.userId
}
this.$http.get('/ext/sys/lottery/detail/page', {
params: {
page: this.rechargeDataA.page,
limit: this.rechargeDataA.limit,
userId: this.rechargeDataA.itemUserId
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeDataA.list = response.data.data.list
this.rechargeDataA.totalCount = response.data.data.totalCount
this.dialogVisible = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
handleSizeChange4(val) {
this.rechargeData.limit = val
this.rechargeData.page = 1
this.getRechargeData()
},
handleCurrentChange4(val) {
this.rechargeData.page = val
this.getRechargeData()
},
handleSizeChange4A(val) {
this.rechargeDataA.limit = val
this.rechargeDataA.page = 1
this.rewardDetails()
},
handleCurrentChange4A(val) {
console.log(val, '11111111111')
this.rechargeDataA.page = val
this.rewardDetails()
}
}
}
</script>

View File

@@ -0,0 +1,231 @@
<template>
<div>
<div style="display: inline-block;">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="用户昵称/手机号">
<el-input v-model="formInline.keywords" placeholder="请输入用户昵称/手机号" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="onSubmit">搜索</el-button>
<el-button icon="Refresh" @click="reset">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table :data="rechargeDataAA.list">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column label="头像" width="200">
<template slot-scope="scope">
<img :src="scope.row.avatar" alt="头像" style="width: 50px; height: 50px; border-radius: 50%;" />
</template>
</el-table-column>
<el-table-column prop="userName" label="用户昵称"></el-table-column>
<el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column prop="signInNum" label="总签到人数"></el-table-column>
<el-table-column prop="awardAmount" label="已发放奖励总金额"></el-table-column>
<el-table-column label="操作" width="300">
<template slot-scope="scope">
<el-button type="text" @click="viewUserDetails(scope.row)">查看用户详情</el-button>
<el-button type="text" @click="rewardDetails(scope.row)">奖励详情</el-button>
<el-button type="text" @click="signInDetails(scope.row)">签到详情</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4" @current-change="handleCurrentChange4"
:page-sizes="[10, 20, 30, 40]" :page-size="rechargeDataAA.limit" :current-page="rechargeDataAA.page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeDataAA.totalCount">
</el-pagination>
</div>
<!-- 奖励详情 -->
<el-dialog title="奖励详情" :visible.sync="dialogVisible" width="50%">
<div>奖励发放金额合计{{ rechargeDataBB.totalCount }} </div>
<el-table :data="rechargeDataBB.list">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="amount" label="发放金额"></el-table-column>
<el-table-column prop="userPhone" label="有效邀请人"></el-table-column>
<el-table-column prop="createTime" label="发放时间"></el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4BB" @current-change="handleCurrentChange4BB"
:page-sizes="[10, 20, 30, 40]" :page-size="rechargeDataCC.limit" :current-page="rechargeDataCC.page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeDataCC.totalCount">
</el-pagination>
</div>
</el-dialog>
<!-- 签到详情 -->
<el-dialog title="签到详情" :visible.sync="dialogVisibles" width="50%">
<div><span>签到人数合计{{ rechargeDataCC.totalCount }}</span> <span>实名人数合计{{
rechargeDataCC.totalCount }}</span> </div>
<el-table :data="rechargeDataCC.list">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="userName" label="签到账号"></el-table-column>
<el-table-column prop="phone" label="签到手机号"></el-table-column>
<el-table-column prop="userName" label="实名信息">
<template slot-scope="scope">
<div>姓名{{ scope.row.realName }}</div>
<div>身份证号{{ scope.row.idCardNo }}</div>
<div>银行卡号{{ scope.row.bankCardNo }}</div>
<div>开户行{{ scope.row.bankBranch }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="签到时间"></el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4CC" @current-change="handleCurrentChange4CC"
:page-sizes="[10, 20, 30, 40]" :page-size="rechargeDataCC.limit" :current-page="rechargeDataCC.page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeDataCC.totalCount">
</el-pagination>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
rewardDetailsList: [], // 奖励详情列表
rewardtotalPage: 0, // 奖励详情总页数
signInDetailsList: [], // 签到详情列表
signInDetailsTotalPage: 0, // 签到详情总页数
formInline: {
keywords: ''
},
page: 1,
limit: 10,
rechargeDataAA: {
totalCount: 0,
list: [],
page: 1,
limit: 10,
},
rechargeDataBB: {
totalCount: 0,
list: [],
page: 1,
limit: 10,
},
rechargeDataCC: {
totalCount: 0,
list: [],
page: 1,
limit: 10,
},
dialogVisible: false,// 控制奖励详情弹窗的显示与隐藏
dialogVisibles: false // 控制签到详情弹窗的显示与隐藏
}
},
mounted() {
this.getRechargeData()
},
methods: {
viewUserDetails(item) {
this.$router.push({ path: '/userDetail', query: { userId: item.userId, active: 'first' } })
},
rewardDetails(item) {
if (item) {
this.rechargeDataBB.itemUserId = item.userId
}
this.$http.get('/ext/sys/invite/friend/award/detail/page', {
params: {
page: this.rechargeDataBB.page,
limit: this.rechargeDataBB.limit,
userId: this.rechargeDataBB.itemUserId
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeDataBB.list = response.data.data.list
this.rechargeDataBB.totalCount = response.data.data.totalCount
this.dialogVisible = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
signInDetails(item) {
if (item) {
this.rechargeDataCC.itemUserId = item.userId
}
this.$http.get('/ext/sys/invite/friend/signIn/page', {
params: {
page: this.rechargeDataCC.page,
limit: this.rechargeDataCC.limit,
userId: this.rechargeDataCC.itemUserId
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeDataCC.list = response.data.data.list
this.rechargeDataCC.totalCount = response.data.data.totalCount
this.dialogVisibles = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
onSubmit() {
this.rechargeDataAA.page = 1
this.rechargeDataAA.limit = 10
this.getRechargeData()
},
reset() {
this.formInline = {
keywords: ''
}
this.getRechargeData()
},
getRechargeData() {
this.$http.get('/ext/sys/invite/friend/award/page', {
params: {
page: this.rechargeDataAA.page,
limit: this.rechargeDataAA.limit,
keywords: this.formInline.keywords
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeDataAA.list = response.data.data.list
this.rechargeDataAA.totalCount = response.data.data.totalCount
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
handleSizeChange4(val) {
this.rechargeDataAA.limit = val
this.rechargeDataAA.page = 1
this.getRechargeData()
},
handleCurrentChange4(val) {
this.rechargeDataAA.page = val
this.getRechargeData()
},
handleSizeChange4BB(val) {
this.rechargeDataBB.limit = val
this.rechargeDataBB.page = 1
this.rewardDetails()
},
handleCurrentChange4BB(val) {
this.rechargeDataBB.page = val
this.rewardDetails()
},
handleSizeChange4CC(val) {
this.rechargeDataCC.limit = val
this.rechargeDataCC.page = 1
this.signInDetails()
},
handleCurrentChange4CC(val) {
this.rechargeDataCC.page = val
this.signInDetails()
}
}
}
</script>

View File

@@ -1850,7 +1850,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl('sys/user/info/' + userId), url: this.$http.adornUrl('sys/user/info/' + userId),
method: 'get', method: 'get',
params: this.$http.adornParams({}) params: {
...this.$http.adornParams({}),
userId: userId
}
}).then(({ }).then(({
data data
}) => { }) => {
@@ -3078,7 +3081,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl('common/type/152'), url: this.$http.adornUrl('common/type/152'),
method: 'get', method: 'get',
params: this.$http.adornParams({}) params: {
...this.$http.adornParams({}),
type:152
}
}).then(({ }).then(({
data data
}) => { }) => {
@@ -3090,7 +3096,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl('common/type/153'), url: this.$http.adornUrl('common/type/153'),
method: 'get', method: 'get',
params: this.$http.adornParams({}) params: {
...this.$http.adornParams({}),
type:153
}
}).then(({ }).then(({
data data
}) => { }) => {

View File

@@ -1,17 +1,49 @@
<template> <template>
<el-dialog :title="title" width="500px" :visible.sync="dialogVisible" @close="diaClose" <el-dialog
:close-on-click-modal="true"> :title="title"
<div > width="800px"
top="20px"
:visible.sync="dialogVisible"
@close="diaClose"
:close-on-click-modal="true"
>
<div>
<el-form ref="form" :rules="rules" :model="form" label-width="100px"> <el-form ref="form" :rules="rules" :model="form" label-width="100px">
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input v-model="form.title"></el-input> <el-input v-model="form.title"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="content"> <el-form-item label="类型" prop="title">
<el-input v-model="form.content" type="textarea"></el-input> <el-radio-group v-model="form.type">
<el-radio
:label="item.value"
v-for="(item, index) in types"
:key="index"
>{{ item.label }}</el-radio
>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="状态" required> <el-form-item label="状态" required>
<el-switch v-model="form.state" :active-value="1" :inactive-value="0"></el-switch> <el-switch
v-model="form.state"
:active-value="1"
:inactive-value="0"
></el-switch>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="content">
<quill-editor
ref="myTextEditor"
v-model="form.content"
:options="quillOption"
style="
padding-bottom: 50px;
height: 300px;
width: 100%;
display: inline-table;
"
>
</quill-editor>
</el-form-item>
</el-form> </el-form>
</div> </div>
@@ -23,21 +55,35 @@
</template> </template>
<script> <script>
import {$announcement as $api} from "@/api/announcement.js"; import { $announcement as $api } from "@/api/announcement.js";
import { $types } from "../data.js";
import { quillEditor } from "vue-quill-editor";
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
import quillConfig from "../../locality/quill-config.js";
export default { export default {
components: {
quillEditor,
},
data() { data() {
return { return {
quillOption: quillConfig,
types: $types,
dialogVisible: false, dialogVisible: false,
title: "", title: "",
rules: { rules: {
title: [{ required: true, message: "请输入公告标题", trigger: "blur" }], title: [{ required: true, message: "请输入公告标题", trigger: "blur" }],
content: [{ required: true, message: "请输入公告内容", trigger: "blur" }], content: [
{ required: true, message: "请输入公告内容", trigger: "blur" },
],
}, },
form: { form: {
title:'', title: "",
content:'', content: "",
state:1, state: 1,
type: "",
}, },
}; };
}, },
@@ -51,9 +97,10 @@ export default {
diaClose() { diaClose() {
this.dialogVisible = false; this.dialogVisible = false;
this.form = { this.form = {
title:'', title: "",
content:'', content: "",
state:1, state: 1,
type: "",
}; };
this.$refs.form.resetFields(); this.$refs.form.resetFields();
}, },
@@ -64,6 +111,9 @@ export default {
if (!this.form.content) { if (!this.form.content) {
return this.$message.error("请输入公告内容"); return this.$message.error("请输入公告内容");
} }
if (this.form.type === "") {
return this.$message.error("请选择公告类型");
}
this.submit(); this.submit();
}, },
async submit() { async submit() {

View File

@@ -0,0 +1,4 @@
export const $types=[
{label:'首页',value:0},
{label:'提现',value:1}
]

View File

@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="首页弹窗公告" name="dialogMessage"> <el-tab-pane label="弹窗公告" name="dialogMessage">
<div style="float: right; margin-right: 2%"> <div style="float: right; margin-right: 2%">
<el-button <el-button
style="margin: 10px 0" style="margin: 10px 0"
@@ -16,7 +16,16 @@
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column prop="id" label="编号" width="80"> </el-table-column> <el-table-column prop="id" label="编号" width="80"> </el-table-column>
<el-table-column prop="title" label="标题"> </el-table-column> <el-table-column prop="title" label="标题"> </el-table-column>
<el-table-column prop="content" label="内容"> </el-table-column> <el-table-column prop="title" label="类型">
<template slot-scope="scope">
<div>{{ returnType(scope.row) }}</div>
</template>
</el-table-column>
<el-table-column prop="content" label="内容" width="480">
<template slot-scope="scope">
<div v-html="scope.row.content"></div>
</template>
</el-table-column>
<el-table-column prop="content" label="是否启用"> <el-table-column prop="content" label="是否启用">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch :value="scope.row.state" :active-value="1" :inactive-value="0" @change="dialogMessageUpdate($event, scope.row)"> </el-switch> <el-switch :value="scope.row.state" :active-value="1" :inactive-value="0" @change="dialogMessageUpdate($event, scope.row)"> </el-switch>
@@ -355,10 +364,12 @@
<script> <script>
import {$announcement} from '@/api/announcement'; import {$announcement} from '@/api/announcement';
import popAddMessage from './components/pop-add-message.vue'; import popAddMessage from './components/pop-add-message.vue';
import {$types} from './data.js';
export default { export default {
components:{popAddMessage}, components:{popAddMessage},
data() { data() {
return { return {
noticeTypes: $types,
limit: 10, limit: 10,
page: 1, page: 1,
state: 1, state: 1,
@@ -413,6 +424,10 @@ import popAddMessage from './components/pop-add-message.vue';
} }
}, },
methods: { methods: {
returnType(row) {
const item=this.noticeTypes.find(item => item.value == row.type)
return item.label
},
dialogMessageUpdate(e,item){ dialogMessageUpdate(e,item){
$announcement.update({...item,state:e}).then(({ $announcement.update({...item,state:e}).then(({
data data

File diff suppressed because it is too large Load Diff

View File

@@ -1576,6 +1576,9 @@
this.$http({ this.$http({
url: this.$http.adornUrl('common/type/247'), url: this.$http.adornUrl('common/type/247'),
method: 'get', method: 'get',
params: {
type:247
},
data: this.$http.adornData({}) data: this.$http.adornData({})
}).then(({ }).then(({
data data

View File

@@ -1453,6 +1453,9 @@
this.$http({ this.$http({
url: this.$http.adornUrl('common/type/247'), url: this.$http.adornUrl('common/type/247'),
method: 'get', method: 'get',
params: {
type:247
},
data: this.$http.adornData({}) data: this.$http.adornData({})
}).then(({ }).then(({
data data

View File

@@ -1158,7 +1158,8 @@
'page': this.page, 'page': this.page,
'limit': this.limit, 'limit': this.limit,
'member': this.member, 'member': this.member,
'phone': this.phone 'phone': this.phone,
type:88
}) })
}).then(({ }).then(({
data data

View File

@@ -148,7 +148,9 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`/sys/menu/info/${this.dataForm.id}`), url: this.$http.adornUrl(`/sys/menu/info/${this.dataForm.id}`),
method: 'get', method: 'get',
params: this.$http.adornParams() params: this.$http.adornParams({
menuId: this.dataForm.id
})
}).then(({data}) => { }).then(({data}) => {
this.dataForm.id = data.menu.menuId this.dataForm.id = data.menu.menuId
this.dataForm.type = data.menu.type this.dataForm.type = data.menu.type

View File

@@ -130,7 +130,9 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`/sys/menu/delete/${id}`), url: this.$http.adornUrl(`/sys/menu/delete/${id}`),
method: 'post', method: 'post',
data: this.$http.adornData() data: this.$http.adornData({
menuId: id
})
}).then(({data}) => { }).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({

View File

@@ -72,12 +72,15 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`/sys/role/info/${this.dataForm.id}`), url: this.$http.adornUrl(`/sys/role/info/${this.dataForm.id}`),
method: 'get', method: 'get',
params: this.$http.adornParams() params: this.$http.adornParams({
roleId:this.dataForm.id
})
}).then(({data}) => { }).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.dataForm.roleName = data.role.roleName this.dataForm.roleName = data.role.roleName
this.dataForm.remark = data.role.remark this.dataForm.remark = data.role.remark
var idx = data.role.menuIdList.indexOf(this.tempKey) var idx = data.role.menuIdList.indexOf(this.tempKey)
console.log(idx);
if (idx !== -1) { if (idx !== -1) {
data.role.menuIdList.splice(idx, data.role.menuIdList.length - idx) data.role.menuIdList.splice(idx, data.role.menuIdList.length - idx)
} }

View File

@@ -126,7 +126,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`/sys/user/info/${this.dataForm.id}`), url: this.$http.adornUrl(`/sys/user/info/${this.dataForm.id}`),
method: 'get', method: 'get',
params: this.$http.adornParams() params: {
...this.$http.adornParams(),
'userId': this.dataForm.id
}
}).then(({data}) => { }).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.dataForm.userName = data.user.username this.dataForm.userName = data.user.username

View File

@@ -190,7 +190,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`sys/user/info/${this.dataForm.id}`), url: this.$http.adornUrl(`sys/user/info/${this.dataForm.id}`),
method: 'get', method: 'get',
params: this.$http.adornParams() params: {
...this.$http.adornParams(),
'userId': this.dataForm.id
}
}).then(({ }).then(({
data data
}) => { }) => {

View File

@@ -193,7 +193,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`sys/user/info/${this.dataForm.id}`), url: this.$http.adornUrl(`sys/user/info/${this.dataForm.id}`),
method: 'get', method: 'get',
params: this.$http.adornParams() params: {
...this.$http.adornParams(),
'userId': this.dataForm.id
}
}).then(({ }).then(({
data data
}) => { }) => {

View File

@@ -1,370 +1,388 @@
<template> <template>
<el-tabs v-model = "activeName" @tab-click = "handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label = "订单列表" name = "first"> <el-tab-pane label="订单列表" name="first">
<div style = "margin-right:2%;"> <div style="margin-right:2%;">
<span>状态</span> <span>状态</span>
<el-select v-model="status" style="width:150px;margin-left: 10px;" @change="animeDat(status)"> <el-select v-model="status" style="width:150px;margin-left: 10px;" @change="animeDat(status)">
<el-option v-for="item in statesnum" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in statesnum" :key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
</el-select>&nbsp;&nbsp;&nbsp;&nbsp; </el-select>&nbsp;&nbsp;&nbsp;&nbsp;
<div style="position: relative;display: inline-block;"> <div style="position: relative;display: inline-block;">
<span>订单编号</span> <span>订单编号</span>
<el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入订单编号" <el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入订单编号"
v-model="ordersNo"></el-input>&nbsp;&nbsp; v-model="ordersNo"></el-input>&nbsp;&nbsp;
</div> </div>
<span>订单类型</span> <span>订单类型</span>
<el-select v-model="ordersType" style="width:150px;margin-left: 10px;" @change="animeDat()"> <el-select v-model="ordersType" style="width:150px;margin-left: 10px;" @change="animeDat()">
<el-option v-for="item in ordersTypenum" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in ordersTypenum" :key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
</el-select>&nbsp;&nbsp;&nbsp;&nbsp; </el-select>&nbsp;&nbsp;&nbsp;&nbsp;
<div style="position: relative;display: inline-block;"> <div style="position: relative;display: inline-block;">
<span>购买用户昵称</span> <span>购买用户昵称</span>
<el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入购买用户昵称" <el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入购买用户昵称"
v-model="userName"></el-input>&nbsp;&nbsp; v-model="userName"></el-input>&nbsp;&nbsp;
</div> </div>
<div style="position: relative;display: inline-block;"> <div style="position: relative;display: inline-block;">
<span>渠道码</span> <span>渠道码</span>
<el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入渠道码" <el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入渠道码"
v-model="qdCode"></el-input>&nbsp;&nbsp; v-model="qdCode"></el-input>&nbsp;&nbsp;
</div> </div>
<div style="position: relative;display: inline-block;"> <div style="position: relative;display: inline-block;">
<span>渠道商名称</span> <span>渠道商名称</span>
<el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入渠道商名称" <el-input style="width: 200px;" @keydown.enter.native="select" placeholder="请输入渠道商名称"
v-model="sysUserName"></el-input>&nbsp;&nbsp; v-model="sysUserName"></el-input>&nbsp;&nbsp;
</div> </div>
<div style="margin:5px;display: inline-block;"> <div style="margin:5px;display: inline-block;">
<span>开始时间</span> <span>开始时间</span>
<el-date-picker style="width: 160px;margin-left: 10px;" v-model="startTime" align="right" <el-date-picker style="width: 160px;margin-left: 10px;" v-model="startTime" align="right"
type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间"> type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间">
</el-date-picker> </el-date-picker>
</div> </div>
<div style="margin:5px;display: inline-block;"> <div style="margin:5px;display: inline-block;">
<span>截止时间</span> <span>截止时间</span>
<el-date-picker style="width: 160px;margin-left: 10px;" v-model="endTime" align="right" type="date" <el-date-picker style="width: 160px;margin-left: 10px;" v-model="endTime" align="right" type="date"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择截止时间"> format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择截止时间">
</el-date-picker> </el-date-picker>
</div> </div>
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="select">查询 <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="select">查询
</el-button> </el-button>
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置 <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置
</el-button> </el-button>
</div> </div>
<el-table v-loading = "tableDataLoading" :data = "tableData.list" > <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column fixed prop = "ordersId" label = "编号" width = "80"></el-table-column> <el-table-column fixed prop="ordersId" label="编号" width="80"></el-table-column>
<el-table-column prop = "ordersNo" label = "订单编号" width = "180"></el-table-column> <el-table-column prop="ordersNo" label="订单编号" width="180"></el-table-column>
<el-table-column prop = "userName" label = "购买用户昵称" width = "120" align="center"> <el-table-column prop="userName" label="购买用户昵称" width="120" align="center">
<template slot-scope = "scope"> <template slot-scope="scope">
<span style = "color: #4f9dec;cursor: pointer;" @click = "updates(scope.row)"> <span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row)">
{{ scope.row.userName}} {{ scope.row.userName }}
</span> </span>
</template>
</el-table-column>
<el-table-column prop = "title" label = "购买短剧/会员等级" width = "180" align="center">
<template slot-scope = "scope">
<span v-if = "scope.row.ordersType == 1">{{scope.row.title}}</span>
<span v-if = "scope.row.ordersType == 2 && scope.row.vipNameType==0">月卡</span>
<span v-if = "scope.row.ordersType == 2 && scope.row.vipNameType==1">季卡</span>
<span v-if = "scope.row.ordersType == 2 && scope.row.vipNameType==2">年卡</span>
</template>
</el-table-column>
<el-table-column prop = "qdCode" label = "渠道码"></el-table-column>
<el-table-column prop = "sysUserName" label = "渠道商名称" width = "180">
<template slot-scope = "scope">
<span style = "color: #4f9dec;">{{ scope.row.sysUserName}}</span>
</template>
</el-table-column>
<el-table-column prop = "payWay" label = "订单类型" width = "120">
<template slot-scope = "scope">
<span v-if = "scope.row.ordersType == 1">短剧</span>
<span v-if = "scope.row.ordersType == 2">会员</span>
</template>
</el-table-column>
<el-table-column prop = "payWay" label = "支付方式" width = "120">
<template slot-scope = "scope">
<span v-if = "scope.row.payWay == null">暂无</span>
<span v-if = "scope.row.payWay == 1">微信APP</span>
<span v-if = "scope.row.payWay == 2">微信公众号</span>
<span v-if = "scope.row.payWay == 3">微信小程序</span>
<span v-if = "scope.row.payWay == 4">支付宝</span>
<span v-if = "scope.row.payWay == 5">会员免费</span>
<span v-if = "scope.row.payWay == 6">金币</span>
<span v-if = "scope.row.payWay == 7">抖音</span>
<span v-if = "scope.row.payWay == 8">快手</span>
</template>
</el-table-column>
<el-table-column prop="payDiamond" label="钻石价格" width="100">
</el-table-column>
<el-table-column prop="diamond" label="是否是钻石支付" width="100">
<template slot-scope="scope">
<span v-if="scope.row.diamond == 1"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column prop = "payMoney" label = "支付金额" width = "120"></el-table-column>
<el-table-column prop = "qdMoney" label = "渠道佣金">
<template slot-scope = "scope">
<span >{{ scope.row.qdMoney?scope.row.qdMoney:0}}</span>
</template>
</el-table-column>
<el-table-column prop = "status" label = "状态" width="80" fixed="right">
<template slot-scope = "scope">
<span v-if = "scope.row.status == null">待支付</span>
<span v-if = "scope.row.status == 0">待支付</span>
<span v-if = "scope.row.status == 1">已支付</span>
<span v-if = "scope.row.status == 2">已退款</span>
</template>
</el-table-column>
<!-- <el-table-column prop = "refundContent" label = "退款原因" ></el-table-column> -->
<el-table-column prop = "createTime" label = "创建时间" width = "200" ></el-table-column>
<el-table-column label = "操作" width = "80" align="center" fixed="right">
<template slot-scope = "scope">
<el-button style="margin:5px;" size="mini" type="warning" icon="document" :disabled="!isAuth('orderCenter:tuikuan')" @click="tuikuanBtn(scope.row)" v-if="scope.row.status==1&&scope.row.payWay != 5">退款
</el-button>
<el-button size = "mini" type = "danger" :disabled = "!isAuth('orderCenter:delete')" style="margin:5px;"
@click = "deletes(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="title" label="购买短剧/会员等级" width="180" align="center">
<template slot-scope="scope">
<span v-if="scope.row.ordersType == 1">{{ scope.row.title }}</span>
<span v-if="scope.row.ordersType == 2 && scope.row.vipNameType == 0">月卡</span>
<span v-if="scope.row.ordersType == 2 && scope.row.vipNameType == 1">季卡</span>
<span v-if="scope.row.ordersType == 2 && scope.row.vipNameType == 2">年卡</span>
</template>
</el-table-column>
<el-table-column prop="qdCode" label="渠道码"></el-table-column>
<el-table-column prop="sysUserName" label="渠道商名称" width="180">
<template slot-scope="scope">
<span style="color: #4f9dec;">{{ scope.row.sysUserName }}</span>
</template>
</el-table-column>
<el-table-column prop="payWay" label="订单类型" width="120">
<template slot-scope="scope">
<span v-if="scope.row.ordersType == 1">短剧</span>
<span v-if="scope.row.ordersType == 2">会员</span>
</template>
</el-table-column>
<el-table-column prop="payWay" label="支付方式" width="120">
<template slot-scope="scope">
<span v-if="scope.row.payWay == null">暂无</span>
<span v-if="scope.row.payWay == 1">微信APP</span>
<span v-if="scope.row.payWay == 2">微信公众号</span>
<span v-if="scope.row.payWay == 3">微信小程序</span>
<span v-if="scope.row.payWay == 4">支付宝</span>
<span v-if="scope.row.payWay == 5">会员免费</span>
<span v-if="scope.row.payWay == 6">金币</span>
<span v-if="scope.row.payWay == 7">抖音</span>
<span v-if="scope.row.payWay == 8">快手</span>
</template>
</el-table-column>
<el-table-column prop="payDiamond" label="钻石价格" width="100">
</el-table-column>
<el-table-column prop="diamond" label="是否是钻石支付" width="100">
<template slot-scope="scope">
<span v-if="scope.row.diamond == 1"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column prop="payMoney" label="支付金额" width="120"></el-table-column>
<el-table-column prop="qdMoney" label="渠道佣金">
<template slot-scope="scope">
<span>{{ scope.row.qdMoney ? scope.row.qdMoney : 0 }}</span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="80" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.status == null">待支付</span>
<span v-if="scope.row.status == 0">待支付</span>
<span v-if="scope.row.status == 1">已支付</span>
<span v-if="scope.row.status == 2">已退款</span>
</template>
</el-table-column>
<!-- <el-table-column prop = "refundContent" label = "退款原因" ></el-table-column> -->
<el-table-column prop="createTime" label="创建时间" width="200"></el-table-column>
<el-table-column label="操作" width="80" align="center" fixed="right">
<template slot-scope="scope">
<el-button style="margin:5px;" size="mini" type="warning" icon="document"
:disabled="!isAuth('orderCenter:tuikuan')" @click="tuikuanBtn(scope.row)"
v-if="scope.row.status == 1 && scope.row.payWay != 5">退款
</el-button>
<el-button size="mini" type="danger" :disabled="!isAuth('orderCenter:delete')"
style="margin:5px;" @click="deletes(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div style="color: #B94A48;font-size: 20px;margin-top: 10px;display: inline-block;"> <div style="color: #B94A48;font-size: 20px;margin-top: 10px;display: inline-block;">
本页累计收入统计{{totalMoney.toFixed(2)}} </div> 本页累计收入统计{{ totalMoney.toFixed(2) }} </div>
<div style = "text-align: center;margin-top: 10px;float:right"> <div style="text-align: center;margin-top: 10px;float:right">
<el-pagination @size-change = "handleSizeChange" @current-change = "handleCurrentChange" :page-sizes = "[10, 20, 30, 40, 100, 200, 500]" <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-size = "limit" :current-page = "page" layout = "total,sizes, prev, pager, next,jumper" :page-sizes="[10, 20, 30, 40, 100, 200, 500]" :page-size="limit" :current-page="page"
:total = "tableData.totalCount"> layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination> </el-pagination>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>
<script> <script>
export default {
data () {
return {
page: 1,
limit: 10,
classify: 1,
ordersNo: '',
imageUrl: '',
url: '',
status: '',
activeName: 'first',
tableDataLoading: true,
tableData: [],
checkBoxData: [],//多选框选择的值
statesnum:[
{
label: '全部',
value: ''
},
{
label: '待支付',
value: 0
},
{
label: '已支付',
value: 1
},
{
label: '已退款',
value: 2
},
],
totalMoney: 0,
ordersTypenum: [{
label: '全部',
value: ''
},
{
label: '短剧',
value: 1
},
{
label: '会员',
value: 2
},
],
ordersType: '',
userName: '',
startTime: '',
endTime: '',
qdCode:'',
sysUserName:'',
} export default {
data() {
return {
page: 1,
limit: 10,
classify: 1,
ordersNo: '',
imageUrl: '',
url: '',
status: '',
activeName: 'first',
tableDataLoading: true,
tableData: [],
checkBoxData: [],//多选框选择的值
statesnum: [
{
label: '全部',
value: ''
},
{
label: '待支付',
value: 0
},
{
label: '已支付',
value: 1
},
{
label: '已退款',
value: 2
},
],
totalMoney: 0,
ordersTypenum: [{
label: '全部',
value: ''
},
{
label: '短剧',
value: 1
},
{
label: '会员',
value: 2
},
],
ordersType: '',
userName: '',
startTime: '',
endTime: '',
qdCode: '',
sysUserName: '',
}
},
methods: {
// 多选
changeFun(val) {
this.checkBoxData = val
}, },
methods: { //处理默认选中当前日期
// 多选 // getNowTime () {
changeFun (val) { // var now = new Date()
this.checkBoxData = val // var year = now.getFullYear() //得到年份
}, // var month = now.getMonth() //得到月份
//处理默认选中当前日期 // var date = now.getDate() //得到日期
// getNowTime () { // var hh = now.getHours() < 10 ? '0' + now.getHours() : now.getHours()
// var now = new Date() // var mm = now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes()
// var year = now.getFullYear() //得到年份 // var ss = now.getSeconds() < 10 ? '0' + now.getSeconds() : now.getSeconds()
// var month = now.getMonth() //得到月份 // month = month + 1
// var date = now.getDate() //得到日期 // month = month.toString().padStart(2, '0')
// var hh = now.getHours() < 10 ? '0' + now.getHours() : now.getHours() // date = date.toString().padStart(2, '0')
// var mm = now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes() // var defaultDate = `${year}-${month}-${date} ${hh}:${mm}:${ss}`
// var ss = now.getSeconds() < 10 ? '0' + now.getSeconds() : now.getSeconds() // return defaultDate
// month = month + 1 // this.$set(this.info, 'stockDate', defaultDate)
// month = month.toString().padStart(2, '0') // },
// date = date.toString().padStart(2, '0') // tabs切换
// var defaultDate = `${year}-${month}-${date} ${hh}:${mm}:${ss}` handleClick(tab, event) {
// return defaultDate if (tab._props.label == '订单列表') {
// this.$set(this.info, 'stockDate', defaultDate)
// },
// tabs切换
handleClick (tab, event) {
if (tab._props.label == '订单列表') {
this.page = 1
this.limit = 10
this.classify = 1
this.dataSelect()
}
},
handleSizeChange (val) {
this.limit = val
this.dataSelect()
},
handleCurrentChange (val) {
this.page = val
this.dataSelect()
},
// 查询短剧列表
select() {
this.page = 1 this.page = 1
this.limit = 10 this.limit = 10
this.classify = 1
this.dataSelect() this.dataSelect()
}, }
// 重置短剧列表 },
cleans() { handleSizeChange(val) {
this.ordersNo = '' this.limit = val
this.status = '' this.dataSelect()
this.page = 1 },
this.ordersType = '' handleCurrentChange(val) {
this.userName = '' this.page = val
this.startTime = '' this.dataSelect()
this.endTime = '' },
this.qdCode = '' // 查询短剧列表
this.sysUserName = '' select() {
this.page = 1
this.limit = 10
this.dataSelect()
},
// 重置短剧列表
cleans() {
this.ordersNo = ''
this.status = ''
this.page = 1
this.ordersType = ''
this.userName = ''
this.startTime = ''
this.endTime = ''
this.qdCode = ''
this.sysUserName = ''
this.dataSelect() this.dataSelect()
}, },
// select选择事件 // select选择事件
animeDat(state) { animeDat(state) {
this.page = 1 this.page = 1
this.status = state this.status = state
console.log(state) console.log(state)
this.dataSelect() this.dataSelect()
}, },
// 删除banner图 // 删除banner图
deletes (row) { deletes(row) {
let delid = row.ordersId let delid = row.ordersId
this.$confirm(`确定删除此条信息?`, '提示', { this.$confirm(`确定删除此条信息?`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ this.$http({
url: this.$http.adornUrl(`order/deleteOrders?ids=${delid}`), url: this.$http.adornUrl(`order/deleteOrders?ids=${delid}`),
method: 'get', method: 'get',
data: this.$http.adornData({}) data: this.$http.adornData({})
}).then(({data}) => { }).then(({ data }) => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
})
}).catch(() => {
})
},
// 获取数据列表
dataSelect() {
this.tableDataLoading = true
this.totalMoney = 0
this.$http({
url: this.$http.adornUrl('order/selectOrders'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit,
'ordersNo': this.ordersNo,
'status': this.status,
'ordersType': this.ordersType,
'userName': this.userName,
'startTime': this.startTime,
'endTime': this.endTime,
'qdCode': this.qdCode,
'sysUserName': this.sysUserName,
})
}).then(({ data }) => {
if (data && data.code === 0) {
this.tableDataLoading = false
for (var i in data.data.list) {
if (data.data.list[i].payMoney) {
this.totalMoney = this.totalMoney + Number(data.data.list[i].payMoney)
}
}
let returnData = data.data
this.tableData = returnData
}
})
},
// 详情跳转
updates(row) {
this.$router.push({ path: '/userDetail', query: { userId: row.userId } })
},
// 退款
tuikuanBtn(row) {
let delid = row.ordersId
this.$confirm(`确定退款吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('order/refundOrders?ordersId=' + delid),
method: 'post',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data.code == 0) {
this.$message({ this.$message({
message: '删除成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.dataSelect() this.dataSelect()
} }
}) })
}) } else {
}).catch(() => { this.$message({
}) message: data.msg,
}, type: 'warning',
// 获取数据列表 duration: 1500,
dataSelect () { onClose: () => {
this.tableDataLoading = true
this.totalMoney = 0
this.$http({
url: this.$http.adornUrl('order/selectOrders'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit,
'ordersNo':this.ordersNo,
'status':this.status,
'ordersType': this.ordersType,
'userName': this.userName,
'startTime': this.startTime,
'endTime': this.endTime,
'qdCode': this.qdCode,
'sysUserName': this.sysUserName,
})
}).then(({data}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
for (var i in data.data.list) {
if (data.data.list[i].payMoney) {
this.totalMoney = this.totalMoney + Number(data.data.list[i].payMoney)
} }
} })
let returnData = data.data
this.tableData = returnData
} }
})
},
// 详情跳转
updates (row) {
this.$router.push({path: '/userDetail', query: {userId: row.userId}})
},
// 退款
tuikuanBtn(row){
let delid = row.ordersId
this.$confirm(`确定退款吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('order/refundOrders?ordersId='+delid),
method: 'post',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if(data.code==0){
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
}else{
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => {
}
})
}
})
}) })
}, })
}, },
mounted () { },
this.dataSelect() mounted() {
if (this.$route.query.userName) {
this.status = 1
this.userName = this.$route.query.userName
} }
} this.dataSelect()
},
watch: {
// 监听路由变化,重新获取数据
'$route'(to, from) {
if (to.query.userName) {
this.status = 1
this.userName = to.query.userName
this.dataSelect()
}
},
},
}
</script> </script>
<style> <style>
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
</style> </style>

View File

@@ -208,9 +208,12 @@ export default {
page: this.tableData.page, page: this.tableData.page,
limit: this.tableData.limit limit: this.tableData.limit
}); });
console.log("获取抽奖记录列表", data);
this.tableData.loading = false; this.tableData.loading = false;
this.tableData.list = data.page.list; this.tableData.list = data.data.list;
this.tableData.total = data.page.totalCount; this.tableData.total = data.data.totalCount;
} catch (error) { } catch (error) {
this.tableData.loading = false; this.tableData.loading = false;
console.log(error); console.log(error);

File diff suppressed because it is too large Load Diff

View File

@@ -1311,7 +1311,10 @@
this.$http({ this.$http({
url: this.$http.adornUrl(`user/${userId}`), url: this.$http.adornUrl(`user/${userId}`),
method: 'get', method: 'get',
params: this.$http.adornParams({}) params: {
...this.$http.adornParams({}),
userId: userId,
},
}).then(({ }).then(({
data data
}) => { }) => {

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,204 @@
<template>
<div>
<el-form :model="queryForm" inline @submit.native.prevent="queryByTradeNo">
<el-form-item label="订单号" prop="outTradeNo">
<el-input v-model="queryForm.outTradeNo" placeholder="请输入订单号查询" style="width: 500px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="queryByTradeNo" :loading="loading">查询</el-button>
<el-button @click="resetHandle">重置</el-button>
</el-form-item>
</el-form>
<div class="order_info">
<div class="item">
<div class="title">
用户信息
</div>
<template v-if="orderInfo.userInfo">
<div class="row">
<span> 昵称</span>{{ orderInfo.userInfo.userName }}
</div>
<div class="row">
<span> 手机号</span>{{ orderInfo.userInfo.phone }}
</div>
<div class="row">
<span> 支付宝账号</span>{{ orderInfo.userInfo.zhiFuBao }}
</div>
<div class="row">
<span>支付宝姓名</span> {{ orderInfo.userInfo.zhiFuBaoName }}
</div>
<div class="row">
<span>状态</span>
<span v-if="orderInfo.userInfo.status == 1" style="color: #67C23A;">正常</span>
<span v-else style="color: #F56C6C;">异常</span>
</div>
<div class="row" v-if="!orderInfo.userInfo.status">
<span>异常原因</span> <span style="color: #F56C6C;">{{ orderInfo.userInfo.platform }}</span>
</div>
</template>
<div class="empty" v-else>空空如也~</div>
</div>
<div class="item">
<div class="title">
<span>实名认证信息</span>
</div>
<template v-if="orderInfo.authInfo">
<div class="row">
<span>真实姓名</span> {{ orderInfo.authInfo.certName }}
</div>
<div class="row">
<span>身份证号</span> {{ orderInfo.authInfo.certNo }}
</div>
<div class="row">
<span>银行名称</span> {{ orderInfo.authInfo.bankName }}
</div>
<div class="row">
<span>银行卡号</span> {{ orderInfo.authInfo.accountNo }}
</div>
<div class="row">
<span>预留手机号</span> {{ orderInfo.authInfo.mobile }}
</div>
</template>
<div class="empty" v-else>空空如也~</div>
</div>
<div class="item">
<div class="title">
提现信息
</div>
<template v-if="orderInfo.withdrawTotal">
<div class="row">
<span>成功合计</span> {{ orderInfo.withdrawTotal.success.total }}
</div>
<div class="row">
<span>成功笔数</span> {{ orderInfo.withdrawTotal.success.count }}
</div>
<div class="row">
<span>失败合计</span> {{ orderInfo.withdrawTotal.fail.count }}
</div>
<div class="row">
<span>失败笔数</span> {{ orderInfo.withdrawTotal.fail.count }}
</div>
<div class="row">
<span>审核中合计</span> {{ orderInfo.withdrawTotal.auditing.count }}
</div>
<div class="row">
<span>审核中笔数</span> {{ orderInfo.withdrawTotal.auditing.count }}
</div>
<div class="row">
<span>其他合计</span> {{ orderInfo.withdrawTotal.other.count }}
</div>
<div class="row">
<span>其他笔数</span> {{ orderInfo.withdrawTotal.other.count }}
</div>
</template>
<div class="empty" v-else>空空如也~</div>
</div>
<div class="item">
<div class="title">
支付信息
</div>
<template v-if="orderInfo.payTotal">
<div class="row">
<span>成功合计</span> {{ orderInfo.payTotal.success.total }}
</div>
<div class="row">
<span>成功笔数</span> {{ orderInfo.payTotal.success.count }}
</div>
<div class="row">
<span>失败合计</span> {{ orderInfo.payTotal.fail.count }}
</div>
<div class="row">
<span>失败笔数</span> {{ orderInfo.payTotal.fail.count }}
</div>
<div class="row">
<span>未付款合计</span> {{ orderInfo.payTotal.unpaid.count }}
</div>
<div class="row">
<span>未付款笔数</span> {{ orderInfo.payTotal.unpaid.count }}
</div>
</template>
<div class="empty" v-else>空空如也~</div>
</div>
</div>
</div>
</template>
<script>
import { queryByTradeNo } from '@/api/viplist.js'
export default {
data() {
return {
loading: false,
queryForm: {
// outTradeNo: '7ed7edc900884b6dabf871a330c3e13b-1075149450307057439'
outTradeNo: ''
},
orderInfo: ''
}
},
methods: {
// 重置
resetHandle() {
this.queryForm.outTradeNo = ''
this.orderInfo = ''
},
// 根据订单号查询
async queryByTradeNo() {
try {
if (!this.queryForm.outTradeNo) return
this.loading = true
const res = await queryByTradeNo({ outTradeNo: this.queryForm.outTradeNo })
if (res.data.code == 0) {
this.orderInfo = res.data.data
} else {
this.orderInfo = ''
this.$message.error(res.data.message)
}
} catch (error) {
this.orderInfo = ''
console.log(error);
}
this.loading = false
}
}
}
</script>
<style scoped lang="scss">
.order_info {
display: grid;
grid-template-columns: repeat(2, auto);
grid-template-rows: repeat(2, auto);
grid-column-gap: 15px;
grid-row-gap: 15px;
.item {
border: 1px solid #ececec;
padding: 15px;
background-color: #fff;
.title {
font-size: 16px;
font-weight: bold;
padding-bottom: 10px;
}
.row {
margin-top: 10px;
span {
color: #999;
}
}
.empty {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: #999;
padding-bottom: 45px;
}
}
}
</style>

View File

@@ -0,0 +1,194 @@
<template>
<div>
<div>
<el-form :inline="true" :model="query" class="demo-form-inline">
<el-form-item label="手机号">
<el-input v-model="query.phone" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="用户名">
<el-input v-model="query.name" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getTableData">查询</el-button>
<el-button @click="resetHandle">重置</el-button>
</el-form-item>
</el-form>
</div>
<div>
<el-table :data="tableData.list" v-loading="tableData.loading" border stripe>
<el-table-column label="用户ID" prop="userId"></el-table-column>
<el-table-column label="用户名" prop="name"></el-table-column>
<el-table-column label="手机号" prop="mobile"></el-table-column>
<el-table-column label="实名信息" prop="certName" width="300">
<template slot-scope="scope">
<div>姓名{{ scope.row.certName }}</div>
<div>身份证号{{ scope.row.certNo }}</div>
<div>银行卡号{{ scope.row.accountNo }}</div>
<div>开户行{{ scope.row.bankName }}</div>
</template>
</el-table-column>
<el-table-column label="操作" width="180" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="edit(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="del(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 40]" :page-size="tableData.limit" :current-page="tableData.page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.total">
</el-pagination>
</div>
<el-dialog title="编辑" width="600px" :visible.sync="visible" @close="onClose">
<el-form :model="form" :rules="rules" ref="form" label-width="100px" label-position="left">
<el-form-item label="姓名" prop="certName">
<el-input v-model="form.certName" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="certNo">
<el-input v-model="form.certNo" placeholder="请输入身份证号"></el-input>
</el-form-item>
<el-form-item label="银行卡号" prop="accountNo">
<el-input v-model="form.accountNo" placeholder="请输入银行卡号"></el-input>
</el-form-item>
<el-form-item label="预留手机号" prop="mobile">
<el-input v-model="form.mobile" placeholder="请输入预留手机号"></el-input>
</el-form-item>
<el-form-item label="开户行" prop="bankName">
<el-input v-model="form.bankName" placeholder="请输入开户行"></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer" style="display: flex; justify-content: flex-end;">
<el-button size="small" @click="visible = false"> </el-button>
<el-button size="small" type="primary" :loading="confirmLoading"
@click="confirmHandle">确定</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { userInfo_list, userInfo, userInfoDel } from "@/api/withdraw.js";
export default {
data() {
return {
query: {
phone: "",
name: "",
},
resetQuery: {},
tableData: {
page: 1,
limit: 10,
total: 0,
list: [],
loading: false
},
visible: false,
confirmLoading: false,
form: {
userId: '',
certName: "",
certNo: "",
accountNo: "",
mobile: "",
bankName: "",
},
rules: {
certName: [{ required: true, message: "请输入姓名", trigger: "blur" }],
certNo: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
accountNo: [{ required: true, message: "请输入银行卡号", trigger: "blur" }],
mobile: [{ required: true, message: "请输入预留手机号", trigger: "blur" }],
bankName: [{ required: true, message: "请输入开户行", trigger: "blur" }],
}
}
},
mounted() {
this.resetQuery = { ...this.query };
this.getTableData()
},
methods: {
// 确定编辑
confirmHandle() {
this.$refs.form.validate(async valid => {
if (valid) {
try {
this.confirmLoading = true
await userInfo(this.form)
this.visible = false
this.$message.success('编辑成功')
this.getTableData()
} catch (error) {
console.log(error);
}
this.confirmLoading = false
}
})
},
// 关闭弹窗, 重置表单
onClose() {
this.$refs.form.resetFields();
},
// 编辑
edit(row) {
this.form = { ...row }
this.visible = true
},
// 删除
del(row) {
console.log(row);
this.$confirm('是否删除该用户信息?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
await userInfoDel({ userId: row.userId })
this.$message.success('删除成功')
this.getTableData()
} catch (error) {
console.log(error);
}
}).catch(() => { })
},
// 重置
resetHandle() {
this.query = { ...this.resetQuery }
this.tableData.page = 1
this.getTableData()
},
// 分页数量
handleSizeChange(size) {
this.tableData.page = 1;
this.tableData.limit = size;
this.getTableData();
},
// 分页
handleCurrentChange(val) {
this.tableData.page = val;
this.getTableData();
},
// 获取数据
async getTableData() {
try {
this.tableData.loading = true
const { data } = await userInfo_list({
page: this.tableData.page,
limit: this.tableData.limit,
phone: this.query.phone,
name: this.query.name,
})
this.tableData.list = data.data.list
this.tableData.total = data.data.totalCount
} catch (error) {
console.log(error);
}
this.tableData.loading = false
}
}
}
</script>

View File

@@ -1,54 +1,64 @@
<template> <template>
<el-tabs v-model = "activeName" @tab-click = "handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<!-- <el-tab-pane label = "会员列表" name = "first"> --> <el-tab-pane label="会员列表" name="first">
<div style = "margin-right:2%;text-align: right;"> <div style="margin-right:2%;text-align: right;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" :disabled="!isAuth('viplist:add')" @click="add">添加 <el-button style="margin-left:15px;" size="mini" type="primary" icon="document"
</el-button> :disabled="!isAuth('viplist:add')" @click="add">添加
</el-button>
</div> </div>
<el-table v-loading = "tableDataLoading" :data = "tableData.list" > <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column fixed prop = "id" label = "编号" width = "50"></el-table-column> <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
<el-table-column prop = "vipNameType" label = "会员类型" width = "150"> <el-table-column prop="vipNameType" label="会员类型" width="150">
<template slot-scope = "scope"> <template slot-scope="scope">
<span v-if = "scope.row.vipNameType == 0">月会员</span> <span v-if="scope.row.vipNameType == 0">月会员</span>
<span v-if = "scope.row.vipNameType == 1">季会员</span> <span v-if="scope.row.vipNameType == 1">季会员</span>
<span v-if = "scope.row.vipNameType == 2">年会员</span> <span v-if="scope.row.vipNameType == 2">年会员</span>
</template>
</el-table-column>
<el-table-column prop = "money" label = "会员价格" >
</el-table-column>
<el-table-column prop="payDiamond" label="钻石价格">
</el-table-column>
<el-table-column label = "操作" width = "180" align="center" fixed="right">
<template slot-scope = "scope">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" :disabled="!isAuth('viplist:update')" @click="updata(scope.row)">修改
</el-button>
<el-button size = "mini" type = "danger" :disabled="!isAuth('viplist:delete')" @click = "deletes(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="money" label="会员价格">
</el-table-column>
<el-table-column prop="payDiamond" label="钻石价格">
</el-table-column>
<el-table-column label="操作" width="180" align="center" fixed="right">
<template slot-scope="scope">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document"
:disabled="!isAuth('viplist:update')" @click="updata(scope.row)">修改
</el-button>
<el-button size="mini" type="danger" :disabled="!isAuth('viplist:delete')"
@click="deletes(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div style = "text-align: center;margin-top: 10px;float:right"> <div style="text-align: center;margin-top: 10px;float:right">
<el-pagination @size-change = "handleSizeChange" @current-change = "handleCurrentChange" :page-sizes = "[5, 10, 15, 20]" <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-size = "limit" :current-page = "page" layout = "total,sizes, prev, pager, next,jumper" :page-sizes="[5, 10, 15, 20]" :page-size="limit" :current-page="page"
:total = "tableData.totalCount"> layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination> </el-pagination>
</div> </div>
<!-- </el-tab-pane> --> </el-tab-pane>
<el-tab-pane label="实名用户" name="realName">
<RealNameList ref="RealNameList" />
</el-tab-pane>
<el-tab-pane label="订单汇总" name="orderInfo">
<OrderInfo ref="OrderInfo" />
</el-tab-pane>
<el-dialog title="添加" :visible.sync="dialogFormVisible" center> <el-dialog title="添加" :visible.sync="dialogFormVisible" center>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">会员类型</span> <span style="width: 200px;display: inline-block;text-align: right;">会员类型</span>
<el-radio-group v-model="vipNameType"> <el-radio-group v-model="vipNameType">
<el-radio :label="0">月会员</el-radio> <el-radio :label="0">月会员</el-radio>
<el-radio :label="1">季会员</el-radio> <el-radio :label="1">季会员</el-radio>
<el-radio :label="2">年会员</el-radio> <el-radio :label="2">年会员</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">会员价格</span> <span style="width: 200px;display: inline-block;text-align: right;">会员价格</span>
<el-input style="width:50%;" v-model="money" type="number" min="0" placeholder="请输入会员价格" ></el-input> <el-input style="width:50%;" v-model="money" type="number" min="0" placeholder="请输入会员价格"></el-input>
</div> </div>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">钻石价格</span> <span style="width: 200px;display: inline-block;text-align: right;">钻石价格</span>
<el-input style="width:50%;" v-model="payDiamond" type="number" min="0" placeholder="请输入钻石价格" ></el-input> <el-input style="width:50%;" v-model="payDiamond" type="number" min="0"
placeholder="请输入钻石价格"></el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -58,12 +68,12 @@
</el-dialog> </el-dialog>
<el-dialog title="修改" :visible.sync="dialogFormVisible1" center> <el-dialog title="修改" :visible.sync="dialogFormVisible1" center>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">会员类型</span> <span style="width: 200px;display: inline-block;text-align: right;">会员类型</span>
<el-radio-group v-model="vipNameType"> <el-radio-group v-model="vipNameType">
<el-radio :label="0">月会员</el-radio> <el-radio :label="0">月会员</el-radio>
<el-radio :label="1">季会员</el-radio> <el-radio :label="1">季会员</el-radio>
<el-radio :label="2">年会员</el-radio> <el-radio :label="2">年会员</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">会员价格</span> <span style="width: 200px;display: inline-block;text-align: right;">会员价格</span>
@@ -71,7 +81,8 @@
</div> </div>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">钻石价格</span> <span style="width: 200px;display: inline-block;text-align: right;">钻石价格</span>
<el-input style="width:50%;" v-model="payDiamond" type="number" min="0" placeholder="请输入钻石价格" ></el-input> <el-input style="width:50%;" v-model="payDiamond" type="number" min="0"
placeholder="请输入钻石价格"></el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1 = false"> </el-button> <el-button @click="dialogFormVisible1 = false"> </el-button>
@@ -82,229 +93,236 @@
</template> </template>
<script> <script>
export default { import RealNameList from './components/realNameList.vue'
data () { import OrderInfo from './components/orderInfo.vue'
return { export default {
activeName:'first', components: {
page: 1, RealNameList,
limit: 10, OrderInfo
classify: 1, },
id:'', data() {
vipNameType: -1, return {
money: '', activeName: 'first',
payDiamond:'', // activeName: 'orderInfo',
tableDataLoading:false, page: 1,
dialogFormVisible:false, limit: 10,
dialogFormVisible1:false, classify: 1,
tableData:{}, id: '',
} vipNameType: -1,
}, money: '',
methods: { payDiamond: '',
// 多选 tableDataLoading: false,
changeFun (val) { dialogFormVisible: false,
this.checkBoxData = val dialogFormVisible1: false,
}, tableData: {},
// tabs切换
handleClick (tab, event) {
if (tab._props.label == '轮播图') {
this.page = 1
this.limit = 5
this.classify = 1
this.dataSelect()
}
},
handleSizeChange (val) {
this.limit = val
this.dataSelect()
},
handleCurrentChange (val) {
this.page = val
this.dataSelect()
},
// 查询列表
select() {
this.page = 1
this.limit = 10
this.dataSelect()
},
// 添加
add(){
this.vipNameType = -1
this.money = ''
this.payDiamond = ''
this.id = ''
this.dialogFormVisible = true
},
updata(row){
this.vipNameType = row.vipNameType
this.money = row.money
this.payDiamond = row.payDiamond
this.id = row.id
this.dialogFormVisible1 = true
},
vipAdd(){
if (this.vipNameType == -1) {
this.$notify({
title: '提示',
duration: 1800,
message: '请选择会员类型',
type: 'warning'
});
return
}
if (this.money === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入会员价格',
type: 'warning'
});
return
}
if (this.payDiamond === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入钻石价格',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl('vipDetails/insertVipDetails'),
method: 'post',
data: this.$http.adornData({
'vipNameType':this.vipNameType,
'money':this.money,
'payDiamond':this.payDiamond,
})
}).then(({data}) => {
if(data.code == 0){
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dialogFormVisible = false
this.dataSelect()
}
})
}else{
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => {
}
})
}
})
},
vipUpdata(){
if (this.money === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入会员价格',
type: 'warning'
});
return
}
if (this.payDiamond === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入钻石价格',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl('vipDetails/updateVipDetails'),
method: 'post',
data: this.$http.adornData({
'vipNameType':this.vipNameType,
'money':this.money,
'payDiamond':this.payDiamond,
'id':this.id
})
}).then(({data}) => {
if(data.code == 0){
this.dialogFormVisible1 = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
}else{
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => {
}
})
}
})
},
// 删除banner图
deletes (row) {
let delid = row.id
this.$confirm(`确定删除此条信息?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl(`vipDetails/deleteVipDetails?id=${delid}`),
method: 'post',
params: this.$http.adornParams({})
}).then(({data}) => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
})
}).catch(() => {
})
},
// 获取数据列表
dataSelect () {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl('vipDetails/selectVipDetailsList'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit
})
}).then(({data}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data
this.tableData = returnData
}
})
}
},
mounted () {
this.dataSelect()
} }
},
methods: {
// 多选
changeFun(val) {
this.checkBoxData = val
},
// tabs切换
handleClick(tab, event) {
if (tab._props.label == '轮播图') {
this.page = 1
this.limit = 5
this.classify = 1
this.dataSelect()
}
},
handleSizeChange(val) {
this.limit = val
this.dataSelect()
},
handleCurrentChange(val) {
this.page = val
this.dataSelect()
},
// 查询列表
select() {
this.page = 1
this.limit = 10
this.dataSelect()
},
// 添加
add() {
this.vipNameType = -1
this.money = ''
this.payDiamond = ''
this.id = ''
this.dialogFormVisible = true
},
updata(row) {
this.vipNameType = row.vipNameType
this.money = row.money
this.payDiamond = row.payDiamond
this.id = row.id
this.dialogFormVisible1 = true
},
vipAdd() {
if (this.vipNameType == -1) {
this.$notify({
title: '提示',
duration: 1800,
message: '请选择会员类型',
type: 'warning'
});
return
}
if (this.money === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入会员价格',
type: 'warning'
});
return
}
if (this.payDiamond === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入钻石价格',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl('vipDetails/insertVipDetails'),
method: 'post',
data: this.$http.adornData({
'vipNameType': this.vipNameType,
'money': this.money,
'payDiamond': this.payDiamond,
})
}).then(({ data }) => {
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dialogFormVisible = false
this.dataSelect()
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => {
}
})
}
})
},
vipUpdata() {
if (this.money === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入会员价格',
type: 'warning'
});
return
}
if (this.payDiamond === '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入钻石价格',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl('vipDetails/updateVipDetails'),
method: 'post',
data: this.$http.adornData({
'vipNameType': this.vipNameType,
'money': this.money,
'payDiamond': this.payDiamond,
'id': this.id
})
}).then(({ data }) => {
if (data.code == 0) {
this.dialogFormVisible1 = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => {
}
})
}
})
},
// 删除banner图
deletes(row) {
let delid = row.id
this.$confirm(`确定删除此条信息?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl(`vipDetails/deleteVipDetails?id=${delid}`),
method: 'post',
params: this.$http.adornParams({})
}).then(({ data }) => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
}
})
})
}).catch(() => {
})
},
// 获取数据列表
dataSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl('vipDetails/selectVipDetailsList'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit
})
}).then(({ data }) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data
this.tableData = returnData
}
})
}
},
mounted() {
this.dataSelect()
} }
}
</script> </script>
<style> <style>
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
</style> </style>

View File

@@ -83,7 +83,7 @@
:page-size="limit" :page-size="limit"
:current-page="page" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" layout="total,sizes, prev, pager, next,jumper"
:total="tableData.total" :total="tableData.totalCount"
> >
</el-pagination> </el-pagination>
</div> </div>