Commit 505a8920 by qinjianhui

Merge branch 'dev' into 'master'

Dev

See merge request !34
parents 25c64c87 8d52c8a4
......@@ -1500,7 +1500,7 @@
},
"@transloadit/prettier-bytes": {
"version": "0.0.7",
"resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
"resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
"integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA=="
},
"@trysound/sax": {
......@@ -1745,7 +1745,7 @@
},
"@uppy/companion-client": {
"version": "2.2.2",
"resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz",
"resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz",
"integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
"requires": {
"@uppy/utils": "^4.1.2",
......@@ -1754,7 +1754,7 @@
},
"@uppy/core": {
"version": "2.3.4",
"resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz",
"resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz",
"integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
"requires": {
"@transloadit/prettier-bytes": "0.0.7",
......@@ -1769,12 +1769,12 @@
},
"@uppy/store-default": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz",
"resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz",
"integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ=="
},
"@uppy/utils": {
"version": "4.1.3",
"resolved": "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz",
"resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz",
"integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
"requires": {
"lodash.throttle": "^4.1.1"
......@@ -1782,7 +1782,7 @@
},
"@uppy/xhr-upload": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
"resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
"integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
"requires": {
"@uppy/companion-client": "^2.2.2",
......@@ -2396,7 +2396,7 @@
},
"@wangeditor/basic-modules": {
"version": "1.1.7",
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
"integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
"requires": {
"is-url": "^1.2.4"
......@@ -2404,7 +2404,7 @@
},
"@wangeditor/code-highlight": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
"integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
"requires": {
"prismjs": "^1.23.0"
......@@ -2412,7 +2412,7 @@
},
"@wangeditor/core": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
"integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
"requires": {
"@types/event-emitter": "^0.3.3",
......@@ -2425,7 +2425,7 @@
},
"@wangeditor/editor": {
"version": "5.1.23",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
"integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
"requires": {
"@uppy/core": "^2.1.1",
......@@ -2453,27 +2453,27 @@
},
"@wangeditor/editor-for-vue": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.2.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.2.tgz",
"integrity": "sha512-BOENvAXJVtVXlE2X50AAvjV82YlCUeu5cbeR0cvEQHQjYtiVnJtq7HSoj85r2kTgGouI5OrpJG9BBEjSjUSPyA=="
},
"@wangeditor/list-module": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
"integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ=="
},
"@wangeditor/table-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
"integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w=="
},
"@wangeditor/upload-image-module": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
"integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA=="
},
"@wangeditor/video-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
"resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
"integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg=="
},
"@webassemblyjs/ast": {
......@@ -2907,7 +2907,7 @@
},
"async-validator": {
"version": "1.8.5",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
"requires": {
"babel-runtime": "6.x"
......@@ -2915,7 +2915,7 @@
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"at-least-node": {
......@@ -2959,7 +2959,7 @@
},
"babel-helper-vue-jsx-merge-props": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
},
"babel-loader": {
......@@ -3052,7 +3052,7 @@
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"requires": {
"core-js": "^2.4.0",
......@@ -3061,12 +3061,12 @@
"dependencies": {
"core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
},
"regenerator-runtime": {
"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=="
}
}
......@@ -3416,6 +3416,16 @@
"integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
"dev": true
},
"clipboard": {
"version": "2.0.11",
"resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
"integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"clipboardy": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz",
......@@ -3493,7 +3503,7 @@
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
......@@ -3560,7 +3570,7 @@
},
"compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
},
"concat-map": {
......@@ -4106,9 +4116,14 @@
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
......@@ -4189,7 +4204,7 @@
},
"dom7": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
"requires": {
"ssr-window": "^3.0.0-alpha.1"
......@@ -4489,7 +4504,7 @@
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
"requires": {
"d": "1",
......@@ -5137,7 +5152,7 @@
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
"requires": {
"d": "1",
......@@ -5235,7 +5250,7 @@
},
"ext": {
"version": "1.7.0",
"resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
"requires": {
"type": "^2.7.2"
......@@ -5415,7 +5430,7 @@
},
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
......@@ -5605,6 +5620,14 @@
"slash": "^3.0.0"
}
},
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
"requires": {
"delegate": "^3.1.2"
}
},
"gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
......@@ -5796,7 +5819,7 @@
},
"html-void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
},
"html-webpack-plugin": {
......@@ -5889,7 +5912,7 @@
},
"i18next": {
"version": "20.6.1",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
"integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
"requires": {
"@babel/runtime": "^7.12.0"
......@@ -6119,7 +6142,7 @@
},
"is-hotkey": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz",
"resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
"integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
},
"is-interactive": {
......@@ -6220,7 +6243,7 @@
},
"is-url": {
"version": "1.2.4",
"resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
},
"is-weakref": {
......@@ -6314,7 +6337,7 @@
},
"js-md5": {
"version": "0.7.3",
"resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
"integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
},
"js-message": {
......@@ -6531,12 +6554,12 @@
},
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
},
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
},
"lodash.debounce": {
......@@ -6552,12 +6575,12 @@
},
"lodash.foreach": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
"integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
},
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
},
"lodash.kebabcase": {
......@@ -6586,12 +6609,12 @@
},
"lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
},
"lodash.toarray": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
"integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw=="
},
"lodash.truncate": {
......@@ -6874,7 +6897,7 @@
},
"mime-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz",
"resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz",
"integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
"requires": {
"wildcard": "^1.1.0"
......@@ -7032,7 +7055,7 @@
},
"namespace-emitter": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
"resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
"integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
},
"nanoid": {
......@@ -7083,7 +7106,7 @@
},
"next-tick": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
},
"nice-try": {
......@@ -7163,7 +7186,7 @@
},
"normalize-wheel": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
"integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
},
"npm-run-path": {
......@@ -7948,7 +7971,7 @@
},
"prismjs": {
"version": "1.29.0",
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
},
"process-nextick-args": {
......@@ -7994,7 +8017,7 @@
},
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"prr": {
......@@ -8244,7 +8267,7 @@
},
"resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"resolve": {
......@@ -8387,12 +8410,17 @@
},
"scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"requires": {
"compute-scroll-into-view": "^1.0.20"
}
},
"select": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
"integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
},
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
......@@ -8649,7 +8677,7 @@
},
"slate": {
"version": "0.72.8",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
"resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz",
"integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
"requires": {
"immer": "^9.0.6",
......@@ -8659,7 +8687,7 @@
},
"slate-history": {
"version": "0.66.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
"resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz",
"integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
"requires": {
"is-plain-object": "^5.0.0"
......@@ -8810,7 +8838,7 @@
},
"ssr-window": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
},
"ssri": {
......@@ -9115,7 +9143,7 @@
},
"throttle-debounce": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
"integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
},
"thunky": {
......@@ -9124,9 +9152,14 @@
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"dev": true
},
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
"to-fast-properties": {
......@@ -9466,6 +9499,14 @@
"integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
"dev": true
},
"vue-json-viewer": {
"version": "2.2.22",
"resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-2.2.22.tgz",
"integrity": "sha512-3oPH5BxoUWva/qp7wNJj+15FBXyi9Yu5VDW4mCWivjHR1pUpMv34fjqqxML7jh2uOqm1S/3Xks5nQ5JjC5+OWw==",
"requires": {
"clipboard": "^2.0.4"
}
},
"vue-loader": {
"version": "17.4.2",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.4.2.tgz",
......
......@@ -18,6 +18,7 @@
"js-md5": "^0.7.3",
"lodash": "~4.17.20",
"vue": "^2.6.14",
"vue-json-viewer": "^2.2.22",
"vue-router": "^3.5.1",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2",
......
import axios from './axios'
export function getMqMessagePage(data) {
return axios.post('sys/MqMessage/list_page', data)
}
export function getMessageDetails(data) {
return axios.get('sys/MqMessage/getMessageDetails?id=' + data)
}
export function getMessageReSend(data) {
return axios.get('sys/MqMessage/reSend?ids=' + data)
}
\ No newline at end of file
<template>
<div class="wraper" @mouseout="closeShow(data.id)">
<my-image
:title="data.name"
:proportion="proportion"
:image="data.icon"
@click="() => activeFn(data, index)">
<div
:class="`${data.restrictionLevel} ${
data.importedStatus ? 'store' : ''
}`">
<div class="left_mark" v-if="showSelectable">
<span
class="active-icon"
:class="{ active: selectIds.includes(data.id) }"></span>
</div>
<div class="right_check">
<slot name="right-check">
<!-- <div v-for="(item, index) in data.tagList" :key="index">
<img
style="display: block; border-radius: 5px"
height="20"
v-if="item.colorCode && item.colorCode.length > 7"
:src="formatUrl(imageUrl)"
:title="item.name"
alt="" />
<span
v-else
:title="item.name"
:style="{
display: 'block',
width: '20px',
fontSize: '12px',
textAlign: 'center',
lineHeight: '20px',
height: '20px',
background: item.colorCode,
borderRadius: '5px'
}">
{{ item.name.substr(0, 1) }}
</span>
</div>
<el-popover
v-if="isShowTag"
placement="bottom"
width="400"
trigger="click"
@show="showPopover(data)">
<div style="min-height: 50px">
<el-checkbox-group
v-model="customTag"
@change="($event) => changeTag($event)">
<el-checkbox
style="width: 100px"
v-for="(item, index) in customTagList"
:key="index"
:label="item.id"
:value="item.id">
<img
height="20"
style="vertical-align: middle; border-radius: 5px"
v-if="item.colorCode && item.colorCode.length > 7"
:src="
setimgUrl(item.colorCode, { h: 20, isCustom: isCustom })
"
:title="item.name"
alt="" />
<span v-else>
{{ item.name }}
</span>
</el-checkbox>
</el-checkbox-group>
</div>
<span
title="添加标签"
slot="reference"
v-if="operational"
class="addtag">
<img
title="添加标签"
width="24"
src="../../assets/images/supply/tig.png"
alt="" />
</span>
</el-popover> -->
</slot>
</div>
</div>
<div
class="app-btn-bottom"
style="width: 100%"
v-if="operational && isShowHomeSku === 'bottom'">
<transition>
<div
class="more_wrap"
style="max-width: 100%; overflow-x: auto; overflow-y: hidden;padding-top: 5px;">
<!-- 小图标按钮 -->
<slot name="operations" />
</div>
</transition>
</div>
</my-image>
<!-- -->
<div class="content">
<slot name="skuid" v-if="$slots.skuid"></slot>
<slot name="content">
<div
style="
display: flex;
align-items: center;
position: relative;
height: 24px;
">
<!-- 产品名称 -->
<slot name="product-name"></slot>
<!-- 价格 -->
<slot name="price" />
<!-- <div>
<span :class="!data.isCollectFee ? 'green' : 'red'">
{{ !data.isCollectFee ? '免费' : '收费' }}
</span>
</div> -->
<slot name="synthesizeStatus"></slot>
<slot name="level-time"></slot>
</div>
<!-- footer -->
<div class="footer_wrap">
<!-- <div
class="bottom-home-sku"
@click.stop="copy(data.id)">
<img
:title="'复制' + data.id"
height="20"
:src="require('@/assets/images/supply/id.png')"
alt="" />
<span>{{ data.id }}</span>
</div> -->
<!-- 底部额外图标 -->
<slot name="footer" />
</div>
</slot>
<slot name="otherContent"></slot>
</div>
<div class="tag-dialog"></div>
<!-- 用来放一些 Dialog -->
<slot name="extra" />
</div>
</template>
<script>
import MyImage from '../base/image.vue'
export default {
inheritAttrs: false,
props: {
// 控制一些元素显示与否
isStore: {
type: Boolean
},
width: {
type: Number,
default: 300
},
hasWidth: {
type: Boolean,
default: false
},
isFormat: {
type: Boolean,
default: false
},
smallWidth: {
type: Number,
default: 45
},
isShowTag: {
type: Boolean,
default: false
},
isShowHomeSku: {
type: [String, Boolean],
validator: (v) => v === 'top' || v === 'bottom' || !v
},
isSkuImageList: {
type: Boolean
},
isShowSkuId: {
type: Boolean,
default: true
},
isShowTitle: {
type: Boolean,
default: false
},
isShowLevel: {
type: Boolean,
default: true
},
isShowStatus: {
type: Boolean,
default: true
},
isShowSku: {
type: Boolean,
default: true
},
isShowSales: {
type: Boolean,
default: true
},
showSelectable: {
type: Boolean,
default: true
},
openly: {
type: Number,
default: 1
},
showOpenly: {
type: Boolean,
default: false
},
proportion: {
type: Number,
default: 125
},
data: {
type: Object,
default: () => ({ colorImageList: [] })
},
selectIds: {
type: Array,
default: () => []
},
activeFn: {
type: Function,
default: () => {}
},
index: {
type: Number,
default: null
},
searchForm: {
type: Object,
default: () => {}
},
operational: {
type: Boolean,
default: true
},
customTagList: {
type: Array,
default: () => []
},
isCustom: {
type: Boolean,
default: () => false
}
},
data() {
return {
imageUrl: '',
showColorImg: {},
logList: [],
customTag: []
}
},
components: {
MyImage
},
computed: {},
methods: {
formatUrl(url, num = 300) {
if (this.isFormat && url) {
if (!url.includes('custom.jomalls.com')) {
return url
}
const name = url.split('/')
const format = name[name.length - 1].split('.')
name[name.length - 1] = format[0] + `-${num}` + '.' + format[1]
return name.join('/')
}
return url
},
showPopover(data) {
this.customTag = []
if (data.tagList) {
this.customTag = data.tagList.map((item) => item.id)
}
},
isNew(date) {
const newdate = new Date().getTime()
date = new Date(date).getTime()
const difference = newdate - date
return difference < 604800000
},
showDetails(item) {
this.$emit('showDetails', item)
},
setCurrentImg(id, val) {
this.$set(this.showColorImg, id, true)
this.imageUrl = val
},
closeShow(id) {
this.$set(this.showColorImg, id, false)
},
copy(text) {
const oInput = document.createElement('input')
oInput.value = text
document.body.appendChild(oInput)
oInput.select() // 选择对象
document.execCommand('Copy') // 执行浏览器复制命令
oInput.className = 'oInput'
oInput.style.display = 'none'
document.body.removeChild(oInput)
this.$message.success('复制成功')
},
edit(item) {
this.$emit('showEdit', item)
}
}
}
</script>
<style scoped>
.wraper {
position: relative;
border-radius: 12px 0px 0px 0px;
border: 1px solid #efefef;
background: #eeeeee;
overflow: hidden;
}
.wraper:hover {
border: 1px solid #4168ff;
}
.addtag {
display: none;
}
.wraper:hover .addtag {
display: block;
}
.sales_wrap {
padding-top: 5px;
height: 24px;
display: flex;
align-items: center;
}
.sales_wrap svg {
margin-bottom: 5px;
}
.sales {
flex: 1;
height: 24px;
margin-left: 5px;
line-height: 24px;
box-sizing: border-box;
background-position: left center;
background-size: contain;
background-repeat: no-repeat;
display: inline-block;
font-size: 14px;
vertical-align: bottom;
padding-top: 1px;
font-weight: bold;
text-align: center;
}
.high {
color: red;
font-weight: bold;
color: #444444;
background: linear-gradient(0deg, rgb(255, 255, 255) 0%, #dddddd 100%);
border-radius: 4px 4px 0 0;
position: relative;
}
.high::before {
position: absolute;
top: -11px;
right: 0;
left: 0;
text-align: center;
line-height: 20px;
font-size: 12px;
font-weight: normal;
}
.today.high::before {
content: 'today';
}
.seven.high::before {
content: 'seven';
}
.thirty.high::before {
content: 'thirty';
}
.history.high::before {
content: 'history';
}
.active-icon {
position: relative;
display: block;
width: 16px;
height: 16px;
border: 1px solid #cccccc;
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.4) inset;
border-radius: 8px;
background: #fff;
}
.active-icon.active {
background: #4168ff;
position: relative;
border-color: #4168ff;
box-shadow: none;
font-size: 18px;
top: -1px;
left: -1px;
}
.active-icon.active::after {
position: absolute;
content: '';
top: 0px;
left: 4px;
width: 4px;
height: 8px;
border-width: 2px;
border-style: solid;
border-color: transparent #fff #fff transparent;
transform: rotate(45deg) scale(0.8);
}
.colors_main {
height: 40px;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.colors_wrap {
height: 40px;
flex: 1;
overflow-x: auto;
overflow-y: hidden;
}
.colors {
white-space: nowrap;
display: flex;
}
.colors_wrap::-webkit-scrollbar {
height: 5px;
width: 5px;
}
.colors li {
border-right: 1px solid #fff;
width: 30px;
min-width: 30px;
height: 30px;
background: #ddd;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
cursor: pointer;
margin-right: 5px;
border-radius: 5px;
overflow: hidden;
border: 1px solid #ddd;
box-sizing: border-box;
}
.colors li img {
object-fit: contain;
object-position: center;
}
.star {
display: inline-block;
width: 80px;
color: red;
padding-left: 2px;
}
.star span {
display: inline-block;
height: 14px;
width: 14px;
margin-right: 2px;
background-position: center;
background-size: contain;
/* background-image: url('../../assets/icon/star-no.svg'); */
}
.star span.active {
/* background-image: url('../../assets/icon/star.svg'); */
}
.moneyall {
/* background-image: url('../../assets/images/moneyall.png'); */
}
.moneyone {
/* background-image: url('../../assets/images/moneyone.png'); */
}
.rmb {
/* background-image: url('../../assets/images/rmb.png'); */
}
.version {
display: block;
width: 18px;
height: 18px;
line-height: 14px;
font-size: 12px;
color: #fff;
padding: 0 0 3px 2px;
text-align: center;
box-sizing: border-box;
/* background: no-repeat url('../../assets/images/supply/no-version.png'); */
}
.repeat {
display: inline-block;
height: 24px;
width: 24px;
border-radius: 12px;
font-size: 12px;
background: red;
line-height: 22px;
color: #fff;
text-align: center;
}
/* .version.main {
background-image: url('../../assets/images/supply/version.png');
}
.dollar {
background-image: url('../../assets/images/supply/money.png');
}
.eidt_title {
background-image: url('../../assets/images/edit001.png');
}
.edit_online {
background-image: url('../../assets/images/plane.png');
} */
.scroll {
overflow: auto;
padding-top: 10px;
user-select: none;
border: 1px solid #ddd;
}
.empty.elements {
border: none;
}
.select-number {
position: absolute;
left: 5px;
top: 10px;
}
.left_mark {
position: absolute;
top: 5px;
left: 5px;
}
.right_check {
position: absolute;
top: 5px;
right: 5px;
display: flex;
}
.right_check > * {
display: block;
margin-bottom: 5px;
}
.app-btn-top {
position: relative;
height: 30px;
}
.app-btn-top > .more_wrap {
position: absolute;
right: 5px;
}
.app-btn-bottom {
position: absolute;
bottom: 0px;
left: 0;
}
.log_btn {
height: 22px;
display: inline-block;
background: #ffffff;
margin-right: 5px;
padding: 0 8px;
font-size: 12px;
vertical-align: middle;
box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.2);
border-radius: 13px;
text-align: center;
cursor: pointer;
}
.edit {
vertical-align: middle;
}
.content {
padding: 5px 10px;
background: linear-gradient(
90deg,
rgba(228, 228, 228, 0.4) 0%,
rgba(255, 255, 255, 1) 100%
);
}
.wraper:hover .content {
background: linear-gradient(
90deg,
rgba(26, 125, 255, 0.404) 0%,
rgba(64, 158, 255, 0) 100%
);
}
.footer_wrap {
display: flex;
align-items: center;
padding: 5px 0px 0;
}
.more_wrap {
display: none;
height: 35px;
align-items: center;
}
.wraper:hover .more_wrap {
display: flex;
}
.more_wrap::v-deep > img {
margin-left: 6px;
}
.more_wrap::v-deep > img:hover {
transform: scale(1.3);
}
.price {
color: rgba(181, 124, 91, 1);
font-size: 14px;
font-weight: bold;
}
.green {
display: block;
width: 43px;
height: 16px;
line-height: 14px;
background: #8fc31f;
text-align: center;
border-radius: 8px;
font-size: 12px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #ffffff;
}
.red {
display: block;
width: 43px;
height: 16px;
line-height: 14px;
background: #f56c6c;
text-align: center;
border-radius: 8px;
font-size: 12px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #ffffff;
}
.bottom-home-sku {
cursor: pointer;
display: flex;
align-items: center;
padding: 2px 5px 2px 0;
background: rgba(255, 255, 255, 0.5);
border-radius: 5px;
margin-right: 6px;
position: relative;
z-index: 1;
}
.bottom-home-sku span,
.top-home-sku span {
font-size: 14px;
vertical-align: top;
margin-left: 5px;
color: #222;
}
.more_wrap::v-deep > .delete:hover,
.more_wrap::v-deep > .download:hover {
transform: scale(1.3);
}
.delete,
.download {
display: inline-block;
width: 20px;
height: 20px;
background: rgba(255, 0, 0, 0.678);
padding: 0 4px;
border-radius: 10px;
box-sizing: border-box;
}
.delete svg,
.download svg {
margin-top: -1px;
width: 12px;
height: 12px;
}
.product {
right: 66px;
background: #4168ff;
color: #ffffff;
padding: 0 8px 8px 8px;
border-radius: 18px;
}
.variants {
display: flex;
padding: 5px 0;
}
.variants + .variants {
border-top: 1px solid #ddd;
}
.variants .title {
width: 120px;
min-width: 110px;
color: #303133;
font-size: 14px;
font-weight: bold;
line-height: 20px;
}
.variants li {
display: inline-block;
position: relative;
width: 96px;
padding: 0 6px;
margin-left: 6px;
box-sizing: border-box;
border: 1px solid #dcdfe6;
background: #fff;
border-radius: 4px;
overflow: hidden;
white-space: nowrap;
font-weight: 500;
font-size: 12px;
line-height: 24px;
color: #606266;
cursor: pointer;
text-overflow: ellipsis;
padding-right: 10px;
}
.variants li.active {
border: 1px solid blue;
}
.variants li i {
position: absolute;
top: 7px;
right: 5px;
}
.value {
display: inline-block;
width: 150px;
text-align: left;
color: #000;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.wraper:hover .store::after {
display: none;
}
.store::after {
position: absolute;
background: #fff;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: '';
z-index: 999;
/* background: rgba(0, 0, 0, 0.3) url('../../assets/images/supply/dianpu.png')
no-repeat center; */
}
.img_footer_cont {
position: absolute;
display: none;
right: 0;
bottom: 0;
left: 0;
padding-top: 50px;
background-image: linear-gradient(
to top,
rgba(255, 255, 255, 0.9),
rgba(255, 255, 255, 0)
);
}
.img_footer_cont .title {
min-height: 24px;
line-height: 24px;
font-size: 12px;
color: #222;
padding: 5px 8px 0;
}
.wraper:hover .img_footer_cont {
display: block;
}
.top-home-sku {
position: absolute;
bottom: 5px;
left: 5px;
z-index: 888;
display: flex;
align-items: center;
padding: 2px 5px;
background: hsla(0, 0%, 100%, 0.5);
border-radius: 5px;
}
.top-home-sku > span {
width: auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
}
.openly {
top: 5px;
z-index: 3;
right: 5px;
position: absolute;
}
</style>
<!--
* @Description: 描述
* @Author: chd
* @Date: 2021-06-07 11:13:02
* @LastEditors: chd
* @LastEditTime: 2021-07-03 14:42:26
-->
<script>
export default {
functional: true,
name: 'image-view',
props: {
proportion: {
type: Number,
default: 0,
},
image: {
type: String,
default: '',
},
},
render(h, { children, listeners, props, data }) {
const title = data?.attrs?.title
return (
<div
title={title}
class={'image-view'}
style={data.style}
onClick={(e) => listeners.click && listeners.click(e)}>
<div
class="before"
style={{
paddingBottom: props.proportion ? props.proportion + '%' : '100%',
}}></div>
<div
style={{
position: 'absolute',
top: 0,
right: 0,
bottom: 0,
left: 0,
overflow: 'hidden',
textAlign: 'center',
}}>
<img
height="100%"
loading="lazy"
src={props.image}
alt=""
onError={(e) => {
e.target.title = '加载失败'
}}
/>
</div>
{children}
</div>
)
},
}
</script>
<style scoped>
.image-view {
background-position: center;
background-size: cover;
background-repeat: no-repeat;
position: relative;
cursor: pointer;
}
.image-view .before {
height: 0;
padding-bottom: 100%;
}
.image-view img {
width: 100%;
height: 100%;
object-fit: contain;
object-position: center;
}
.image-view img[src=''],
.image-view img:not([src]) {
opacity: 0;
}
</style>
......@@ -133,6 +133,12 @@ const routes = [
meta: { title: '丢单管理' }
},
{
path: '/operation/exceptionMessage',
component: () => import('@/views/operation/exceptionMessage.vue'),
name: 'exceptionMessage',
meta: { title: '异常消息' }
},
{
path: '/dynamicForm',
component: () => import('@/components/dynamicForms/index.vue'),
name: 'system_management',
......
......@@ -289,6 +289,14 @@ export default {
children: []
},
{
id: 6_2,
path: '',
label: '异常消息',
icon: 'el-icon-bell',
index: '/operation/exceptionMessage',
children: []
},
{
id: 9,
path: '',
label: '运维工具',
......
<template>
<div class="saas-manage card">
<div class="search">
<el-form :model="searchForm" size="small" :inline="true">
<el-form-item label="创建时间">
<el-date-picker
style="width: 360px"
v-model="period"
type="datetimerange"
value-format="yyyy-MM-dd HH:ss:mm"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="route">
<el-input
size="small"
style="width: 160px"
clearable
v-model.trim="searchForm.route"
placeholder="请输入route"></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-search"
@click="search">
查询
</el-button>
</el-form-item>
<el-form-item>
<el-button
type="warning"
size="small"
icon="el-icon-s-promotion"
@click="resendMsg()">
批量发送
</el-button>
</el-form-item>
</el-form>
</div>
<div
class="table_wrap"
style="min-height: 50%; max-height: 90%; padding: 0">
<table-view
:sourceData="messageLists"
:serialNumber="true"
:tableColumns="tableColumns"
ref="multipleTable"
@selectionChange="selectionChange"
:selection="true"></table-view>
</div>
<div class="pagination">
<el-pagination
layout="sizes, total, prev, pager, next, jumper"
background
:total="total"
:page-size="pageSize"
:current-page="currentPage"
@size-change="sizeChange"
@current-change="onCurrentChange"></el-pagination>
</div>
<el-dialog
title="查看详情"
:visible.sync="detailsVisible"
:close-on-click-modal="false"
width="700px">
<json-viewer :value="jsonData" :expand-depth="5"></json-viewer>
</el-dialog>
</div>
</template>
<script>
import {
getMqMessagePage,
getMessageDetails,
getMessageReSend
} from '@/common/api/message'
import tableView from '@/common/components/base/tableView.vue'
import JsonViewer from 'vue-json-viewer' // 下载vue-json-viewer插件
export default {
name: 'exceptionMessage',
components: { tableView, JsonViewer },
data() {
return {
detailsVisible: false,
jsonData: {},
period: [],
messageLists: [],
searchForm: {},
editForm: {
domain: ''
},
total: 0,
pageSize: 50,
currentPage: 1,
selection: [],
loading: false
}
},
computed: {
tableColumns() {
return [
{
label: 'route',
key: 'route'
},
{
label: '发送状态',
key: 'statusStr'
},
{
label: '创建时间',
key: 'createTime'
},
{
label: '操作',
width: 150,
render: (item) => (
<div>
<span
class="icon-view icon-tools-view"
title="详情"
onClick={() => this.lookJson(item.id)}>
<i class="el-icon-tickets"></i>
</span>
<span
class="icon-view icon-edit-view"
title="重新发送"
onClick={() => this.resendMsg(item)}>
<i class="el-icon-s-promotion"></i>
</span>
</div>
)
}
]
}
},
async created() {
this.getList()
},
methods: {
async resendMsg(row) {
const arr = row ? [row] : this.selection
if (arr.length === 0) {
this.$message.error('请至少选择一条记录')
return
}
try {
await this.$confirm('确认发送?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
const ids = arr.map((item) => item.id)
const loading = this.$loading({
background: 'rgba(0, 0, 0, 0.3)'
})
try {
const res = await getMessageReSend(String(ids))
if (res.code === 200) {
this.$message.success('发送成功')
this.selection = []
this.getList()
} else {
this.$message.error(res.message)
}
} finally {
loading.close()
}
} catch {}
},
async lookJson(id) {
this.jsonData = {}
const res = await getMessageDetails(id)
if (res.code === 200) {
this.jsonData = res.data || {}
this.detailsVisible = true
}
},
async getList() {
this.loading = true
const params = {
currentPage: this.currentPage,
pageSize: this.pageSize,
route: this.searchForm.route,
startTime: this.period && this.period[0],
endTime: this.period && this.period[1]
}
try {
const res = await getMqMessagePage(params)
this.messageLists = res.data.records || []
this.total = res.data.total || 0
} catch (e) {
console.error(e)
} finally {
this.loading = false
}
},
search() {
this.getList()
},
selectionChange(selection) {
this.selection = selection
},
onCurrentChange(currentPage) {
this.currentPage = currentPage
this.getList()
},
sizeChange(pageSize) {
this.pageSize = pageSize
this.getList()
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .jv-light {
background-color: #ececec !important;
}
.saas-manage {
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
&::v-deep {
.el-table .el-table__cell {
padding: 6px 0;
}
.el-input__inner {
padding: 0 4px;
}
.el-input--small .el-input__inner {
height: 30px;
line-height: 30px;
}
.el-icon-time:before {
content: '';
}
.el-dialog__footer {
text-align: center;
.el-button--small {
padding: 9px 50px;
}
}
.el-dialog__body {
padding: 10px 20px;
}
.el-range-editor--small .el-range-separator {
line-height: 31px;
}
.header-row-class-name th {
background-color: #f8f8f9;
}
.el-input-group__append {
padding-left: 0;
}
}
}
.search {
background: #fff;
}
.table-wrap {
background: #fff;
flex: 1;
overflow: hidden;
}
</style>
<template>
<div class="saas-manage card">
<div class="search">
<el-form
:model="searchForm"
size="small"
:inline="true"
>
<el-form-item label="所属平台">
<el-form :model="searchForm" size="small" :inline="true">
<el-form-item label="所属平台">
<el-select
style="width: 120px"
filterable
clearable
v-model="searchForm.salesPlatform"
placeholder="请选择所属平台"
>
placeholder="请选择所属平台">
<el-option
v-for="(value,
index) in plateformList"
v-for="(value, index) in plateformList"
:key="index"
:value="value"
:label="index"
></el-option>
:label="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="三方平台订单ID">
<el-input
style="width: 160px"
clearable
v-model="searchForm.orderThirdId"
placeholder="请输入三方平台订单ID"
></el-input>
</el-form-item>
<el-form-item label="店铺单号">
<el-input
style="width: 140px"
clearable
v-model="searchForm.shopNumber"
placeholder="请输入店铺单号"
></el-input>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
style="width: 360px"
v-model="searchForm.createTimeText"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-search"
@click="search"
>查询</el-button
>
</el-form-item>
<el-form-item>
<el-button
type="danger"
size="small"
icon="el-icon-delete"
@click="deleteData()"
>删除</el-button
>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-download"
@click="downloadData()"
>重新下载</el-button
>
</el-form-item>
<el-form-item>
<el-button
type="default"
size="small"
icon="el-icon-refresh"
@click="transformData()"
>重新转化</el-button
>
</el-form-item>
</el-form-item>
<el-form-item label="三方平台订单ID">
<el-input
style="width: 160px"
clearable
v-model="searchForm.orderThirdId"
placeholder="请输入三方平台订单ID"></el-input>
</el-form-item>
<el-form-item label="店铺单号">
<el-input
style="width: 140px"
clearable
v-model="searchForm.shopNumber"
placeholder="请输入店铺单号"></el-input>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
style="width: 360px"
v-model="searchForm.createTimeText"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="失败类型">
<el-select
v-model="searchForm.failType"
style="width: 120px"
filterable
clearable
value-key=""
placeholder="请选择失败类型">
<el-option
v-for="(type, index) in failTypes"
:key="index"
:label="type.value"
:value="type.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-search"
@click="search">
查询
</el-button>
</el-form-item>
<el-form-item>
<el-button
type="danger"
size="small"
icon="el-icon-delete"
@click="deleteData()">
删除
</el-button>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-download"
@click="downloadData()">
重新下载
</el-button>
</el-form-item>
<el-form-item>
<el-button
type="default"
size="small"
icon="el-icon-refresh"
@click="transformData()">
重新转化
</el-button>
</el-form-item>
</el-form>
</div>
<div class="table-wrap" v-loading="loading">
......@@ -99,11 +103,14 @@
:highlight-current-row="true"
@selection-change="handleSelectionChange"
@row-click="rowClick"
header-row-class-name="header-row-class-name"
>
header-row-class-name="header-row-class-name">
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="right" inline class="demo-table-expand" style="display: none;">
<el-form
label-position="right"
inline
class="demo-table-expand"
style="display: none">
<el-form-item label="所属平台">
<span>{{ props.row.salesPlatform }}</span>
</el-form-item>
......@@ -114,9 +121,20 @@
<span>{{ props.row.shopNumber }}</span>
</el-form-item>
</el-form>
<el-form label-position="right" label-width="100px" size="medium" class="demo-table-expand">
<el-form
label-position="right"
label-width="100px"
size="medium"
class="demo-table-expand">
<el-form-item label="失败原因:">
<span style="background-color: #f8f8f9;display: block;padding: 0 13px 0 13px;">{{ props.row.failReason }}</span>
<span
style="
background-color: #f8f8f9;
display: block;
padding: 0 13px 0 13px;
">
{{ props.row.failReason }}
</span>
</el-form-item>
</el-form>
</template>
......@@ -125,59 +143,56 @@
type="selection"
width="55"
header-align="center"
align="center"
>
</el-table-column>
align="center"></el-table-column>
<el-table-column
label="序号"
type="index"
width="50"
align="center"
header-align="center"
>
</el-table-column>
header-align="center"></el-table-column>
<el-table-column
label="namespace"
prop="namespace"
header-align="center"
align="center"
width="180"
:show-overflow-tooltip="true"
></el-table-column>
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="所属平台"
prop="salesPlatform"
header-align="center"
align="center"
width="180"
:show-overflow-tooltip="true"
></el-table-column>
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="店铺简称"
prop="shopShortName"
header-align="center"
align="center"
width="200"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="三方平台订单ID"
prop="orderThirdId"
width="200"
header-align="center"
>
</el-table-column>
header-align="center"></el-table-column>
<el-table-column
label="店铺单号"
prop="shopNumber"
header-align="center"
align="center"
width="200"
:show-overflow-tooltip="true"
></el-table-column>
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="失败类型"
prop="failType"
header-align="center"
align="center"
min-width="50"
:show-overflow-tooltip="true"
>
<template #default="{row}">
{{['下载失败','转化失败'][row.failType-1]}}
</template>
:show-overflow-tooltip="true">
<template #default="{ row }">
{{ ['下载失败', '转化失败'][row.failType - 1] }}
</template>
</el-table-column>
<el-table-column
label="失败原因"
......@@ -185,29 +200,25 @@
header-align="center"
align="center"
min-width="160"
:show-overflow-tooltip="true"
></el-table-column>
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="创建时间"
prop="createTime"
header-align="center"
align="center"
width="160"
:show-overflow-tooltip="true"
></el-table-column>
:show-overflow-tooltip="true"></el-table-column>
<el-table-column
label="操作"
header-align="center"
align="center"
width="55"
fixed="right"
>
fixed="right">
<template slot-scope="scope">
<i
style="cursor: pointer;color:#F56C6C"
class="el-icon-delete"
@click="deleteData(scope.row)"
></i>
<i
style="cursor: pointer; color: #f56c6c"
class="el-icon-delete"
@click="deleteData(scope.row)"></i>
</template>
</el-table-column>
</el-table>
......@@ -220,11 +231,8 @@
:page-size="pageSize"
:current-page="currentPage"
@size-change="sizeChange"
@current-change="onCurrentChange"
>
</el-pagination>
@current-change="onCurrentChange"></el-pagination>
</div>
</div>
</template>
<script>
......@@ -233,12 +241,16 @@ import {
downloadData,
convertOrderAgain,
deleteData, // eslint-disable-line no-unused-vars
listShopPlateformData,
listShopPlateformData
} from '@/common/api/operation/lossOrder'
export default {
name: 'lossOrderManage',
data() {
return {
failTypes: [
{ id: 1, value: '下载失败' },
{ id: 2, value: '转化失败' }
],
manageData: [],
searchForm: {},
total: 0,
......@@ -246,7 +258,7 @@ export default {
currentPage: 1,
loading: false,
selection: [],
plateformList: [],
plateformList: []
}
},
async created() {
......@@ -257,16 +269,15 @@ export default {
async getList() {
this.loading = true
try {
const res = await listTableData(
{
...this.searchForm,
createTimeStart: this.searchForm.createTimeText && this.searchForm.createTimeText[0],
createTimeEnd: this.searchForm.createTimeText && this.searchForm.createTimeText[1],
currentPage: this.currentPage,
pageSize: this.pageSize,
},
)
const res = await listTableData({
...this.searchForm,
createTimeStart:
this.searchForm.createTimeText && this.searchForm.createTimeText[0],
createTimeEnd:
this.searchForm.createTimeText && this.searchForm.createTimeText[1],
currentPage: this.currentPage,
pageSize: this.pageSize
})
this.manageData = res.data.records
this.total = res.data.total
} catch (e) {
......@@ -292,14 +303,14 @@ export default {
}
console.log(this.selection)
if (arr.length === 0) {
this.$message.error('请至少选择一条记录')
return
this.$message.error('请至少选择一条记录')
return
}
try {
await this.$confirm('确认重新下载?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
type: 'warning'
})
} catch {
return
......@@ -307,7 +318,7 @@ export default {
ids = this.selection.map((item) => item.id)
ids = ids.join()
const l = this.$loading({
background: 'rgba(0, 0, 0, 0.3)',
background: 'rgba(0, 0, 0, 0.3)'
})
try {
await downloadData(ids)
......@@ -329,14 +340,14 @@ export default {
}
console.log(this.selection)
if (arr.length === 0) {
this.$message.error('请至少选择一条记录')
return
this.$message.error('请至少选择一条记录')
return
}
try {
await this.$confirm('确认重新转化?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
type: 'warning'
})
} catch {
return
......@@ -344,7 +355,7 @@ export default {
ids = this.selection.map((item) => item.id)
ids = ids.join()
const l = this.$loading({
background: 'rgba(0, 0, 0, 0.3)',
background: 'rgba(0, 0, 0, 0.3)'
})
try {
await convertOrderAgain(ids)
......@@ -366,14 +377,14 @@ export default {
}
console.log(this.selection)
if (arr.length === 0) {
this.$message.error('请至少选择一条记录')
return
this.$message.error('请至少选择一条记录')
return
}
try {
await this.$confirm('确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
type: 'warning'
})
} catch {
return
......@@ -381,7 +392,7 @@ export default {
ids = this.selection.map((item) => item.id)
ids = ids.join()
const l = this.$loading({
background: 'rgba(0, 0, 0, 0.3)',
background: 'rgba(0, 0, 0, 0.3)'
})
try {
await deleteData(ids)
......@@ -405,10 +416,7 @@ export default {
this.getList()
},
rowClick(row) {
if (
this.selection.length === 1 &&
this.selection[0] === row
) {
if (this.selection.length === 1 && this.selection[0] === row) {
this.selection = []
this.$refs.table.clearSelection()
} else {
......@@ -416,8 +424,8 @@ export default {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row, true)
}
},
},
}
}
}
</script>
<style lang="scss" scoped>
......@@ -481,12 +489,12 @@ export default {
}
.demo-table-expand {
font-size: 0;
//padding: 0 20px 0 20px;
font-size: 0;
//padding: 0 20px 0 20px;
}
.el-form-item__label{
width: 90px!important;
color: #99a9bf!important;
.el-form-item__label {
width: 90px !important;
color: #99a9bf !important;
}
</style>
......@@ -101,7 +101,7 @@
</el-button>
</el-form-item>
</el-form>
<div
<!-- <div
class="table_wrap"
style="min-height: 50%; max-height: 82%; padding: 0">
<table-view
......@@ -111,9 +111,103 @@
ref="multipleTable"
@selectionChange="selectionChange"
:selection="true"></table-view>
</div> -->
<div
class="table_wrap scroll"
style="min-height: 50%; max-height: 82%; padding: 0 10px">
<div class="card-mode" v-if="sourceData.length > 0">
<div
class="card-item"
v-for="(item, index) in sourceData"
:key="index"
@click="onCardClicked(item)">
<app-list
:data="item"
:index="index"
:isFormat="true"
isShowHomeSku="bottom"
:isSkuImageList="true"
:hasWidth="true"
:isShowSku="false"
:isShowSales="false"
:isCustom="true"
:selectIds="selectIds">
<template slot="operations">
<img
:class="{ 'icon-disabled': !item.synthesizeStatus }"
@click.stop="editInfo(item)"
title="编辑"
width="24"
height="24"
:src="require('@/assets/images/edit.png')"
alt="" />
<img
title="删除"
width="24"
height="24"
@click.stop="deleteSection(item)"
:src="require('@/assets/images/delete.png')"
alt="" />
</template>
<template slot="price">
<span class="price" :title="item.name">
{{ item.name }}
</span>
</template>
<template slot="synthesizeStatus">
<div
title="应用类型"
style="
position: absolute;
right: 0;
width: 36px;
height: 20px;
">
<el-tag :type="!item.isCollectFee ? 'success' : 'warning'">
{{ !item.isCollectFee ? '免费' : '收费' }}
</el-tag>
</div>
</template>
<template slot="otherContent">
<div
:title="item.description"
class="sds-base-sku"
style="font-size: 14px">
<span>简述:{{ item.description }}</span>
</div>
<div class="sds-keyid">
<div class="product-id" v-show="item.id">
<img
:title="'appId:' + item.id"
height="20"
:src="require('@/assets/images/id.png')"
alt="" />
<span :title="item.id">
{{ item.id }}
</span>
</div>
<div class="product-sku">
<span :title="item.categoryName">
{{ item.categoryName }}
</span>
</div>
</div>
</template>
</app-list>
</div>
</div>
<div class="empty" v-else>暂无数据</div>
</div>
<div slot="footer" style="display: flex; justify-content: center">
<!-- <pagination :setValue="setpaginationOptions" :options="paginationOptions" /> -->
<div
slot="footer"
style="display: flex; justify-content: center; align-items: center">
<div class="select-number">
选中
<span style="color: red; font-weight: bold">
{{ selection.length }}
</span>
</div>
<el-pagination
layout="sizes, total, prev, pager, next, jumper"
background
......@@ -352,9 +446,9 @@
</template>
<script>
import Editor from '@/components/wangeditor/index.vue'
import tableView from '@/common/components/base/tableView.vue'
import ChooseTimePeriod from '@/components/base/chooseTimePeriod.vue'
// import ImageView from '@/components/base/ImageView.vue'
import appList from '@/components/app/app-list.vue'
import pagination from '../../mixins/pagination'
import { get, post } from '@/common/api/axios'
import UploadImages from '@/components/base/image-list.vue'
......@@ -364,7 +458,7 @@ export default {
components: {
UploadImages,
'v-editor': Editor,
tableView,
appList,
layout,
ChooseTimePeriod
// ImageView
......@@ -444,6 +538,9 @@ export default {
this.loadTypesData()
},
computed: {
selectIds() {
return this.selection.map((item) => item.id)
},
tableColumns() {
return [
{
......@@ -512,6 +609,23 @@ export default {
}
},
methods: {
onCardClicked(item) {
const status = this.isItemSelected(item)
if (!status) {
this.selection.push(item)
} else {
const index = this.selection.findIndex((e) => {
return e.id === item.id
})
this.selection.splice(index, 1)
}
},
isItemSelected(item) {
const index = this.selection.findIndex((e) => {
return item.id === e.id
})
return index !== -1
},
toggleNodeExpanded(node) {
node.expanded = !node.expanded
},
......@@ -538,7 +652,7 @@ export default {
const arr = v ? [v] : this.selection
if (arr.length === 0) return this.$message('请勾选至少一条记录')
const ids = arr.map((item) => item.id).join()
this.$confirm('确定删除选中的信息?', '提示', {
this.$confirm('确定删除选中的应用?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
......@@ -553,7 +667,7 @@ export default {
})
this.getList()
this.selection = []
this.$refs.multipleTable.clearSelectionBox()
// this.$refs.multipleTable.clearSelectionBox()
} else {
this.$alert(res.message, '错误提示', {
dangerouslyUseHTMLString: true
......@@ -563,7 +677,7 @@ export default {
})
.catch(() => {
this.selection = []
this.$refs.multipleTable.clearSelectionBox()
// this.$refs.multipleTable.clearSelectionBox()
})
},
// 分页
......@@ -843,7 +957,7 @@ export default {
}
</script>
<style scoped>
<style scoped lang="scss">
.customize-tree-node__label {
margin-left: 4px;
flex: 1;
......@@ -851,7 +965,83 @@ export default {
text-overflow: ellipsis;
white-space: nowrap;
}
::v-deep .card-mode {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 10px;
.price {
color: rgba(181, 124, 91, 1);
font-size: 14px;
font-weight: bold;
margin-right: 5px;
}
.sds-base-sku {
height: 30px;
line-height: 30px;
display: flex;
cursor: pointer;
white-space: nowrap;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.sds-keyid {
height: 30px;
align-items: center;
display: flex;
}
.product-id {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
line-height: 30px;
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.5);
border-radius: 5px;
margin-right: 6px;
position: relative;
z-index: 1;
flex: 1;
cursor: pointer;
}
.product-id > span {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 14px;
vertical-align: top;
margin-left: 5px;
color: #222;
}
.product-sku {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
line-height: 30px;
flex: 1;
text-align: right;
cursor: pointer;
}
.product-sku > span {
font-size: 14px;
border: solid 1px #9ac1f5;
background-color: #9ac1f5;
border-radius: 4px;
color: #fff;
padding: 2px 6px;
}
}
::v-deep .el-tag {
width: 36px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.customize-tree-node {
font-size: 14px;
flex: 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment