Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加29个文件
已删除2个文件
已修改69个文件
已重命名1个文件
| | |
| | | "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=", |
| | | "dev": true |
| | | }, |
| | | "@transloadit/prettier-bytes": { |
| | | "version": "0.0.7", |
| | | "resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", |
| | | "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==" |
| | | }, |
| | | "@types/anymatch": { |
| | | "version": "1.3.1", |
| | | "resolved": "https://registry.npm.taobao.org/@types/anymatch/download/@types/anymatch-1.3.1.tgz?cache=0&sync_timestamp=1613378060592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fanymatch%2Fdownload%2F%40types%2Fanymatch-1.3.1.tgz", |
| | |
| | | "@types/express-serve-static-core": "*", |
| | | "@types/node": "*" |
| | | } |
| | | }, |
| | | "@types/event-emitter": { |
| | | "version": "0.3.5", |
| | | "resolved": "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz", |
| | | "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==" |
| | | }, |
| | | "@types/express": { |
| | | "version": "4.17.11", |
| | |
| | | "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "@uppy/companion-client": { |
| | | "version": "2.2.2", |
| | | "resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz", |
| | | "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==", |
| | | "requires": { |
| | | "@uppy/utils": "^4.1.2", |
| | | "namespace-emitter": "^2.0.1" |
| | | } |
| | | }, |
| | | "@uppy/core": { |
| | | "version": "2.3.4", |
| | | "resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz", |
| | | "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==", |
| | | "requires": { |
| | | "@transloadit/prettier-bytes": "0.0.7", |
| | | "@uppy/store-default": "^2.1.1", |
| | | "@uppy/utils": "^4.1.3", |
| | | "lodash.throttle": "^4.1.1", |
| | | "mime-match": "^1.0.2", |
| | | "namespace-emitter": "^2.0.1", |
| | | "nanoid": "^3.1.25", |
| | | "preact": "^10.5.13" |
| | | } |
| | | }, |
| | | "@uppy/store-default": { |
| | | "version": "2.1.1", |
| | | "resolved": "https://registry.npmmirror.com/@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", |
| | | "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==", |
| | | "requires": { |
| | | "lodash.throttle": "^4.1.1" |
| | | } |
| | | }, |
| | | "@uppy/xhr-upload": { |
| | | "version": "2.1.3", |
| | | "resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz", |
| | | "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==", |
| | | "requires": { |
| | | "@uppy/companion-client": "^2.2.2", |
| | | "@uppy/utils": "^4.1.2", |
| | | "nanoid": "^3.1.25" |
| | | } |
| | | }, |
| | | "@vue/babel-helper-vue-jsx-merge-props": { |
| | |
| | | "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.3.0.tgz", |
| | | "integrity": "sha1-trQKdiVCnSvXwigd26YB7QXcfxo=", |
| | | "dev": true |
| | | }, |
| | | "@wangeditor/basic-modules": { |
| | | "version": "1.1.7", |
| | | "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz", |
| | | "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==", |
| | | "requires": { |
| | | "is-url": "^1.2.4" |
| | | } |
| | | }, |
| | | "@wangeditor/code-highlight": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz", |
| | | "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==", |
| | | "requires": { |
| | | "prismjs": "^1.23.0" |
| | | } |
| | | }, |
| | | "@wangeditor/core": { |
| | | "version": "1.1.19", |
| | | "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz", |
| | | "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==", |
| | | "requires": { |
| | | "@types/event-emitter": "^0.3.3", |
| | | "event-emitter": "^0.3.5", |
| | | "html-void-elements": "^2.0.0", |
| | | "i18next": "^20.4.0", |
| | | "scroll-into-view-if-needed": "^2.2.28", |
| | | "slate-history": "^0.66.0" |
| | | } |
| | | }, |
| | | "@wangeditor/editor": { |
| | | "version": "5.1.23", |
| | | "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz", |
| | | "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==", |
| | | "requires": { |
| | | "@uppy/core": "^2.1.1", |
| | | "@uppy/xhr-upload": "^2.0.3", |
| | | "@wangeditor/basic-modules": "^1.1.7", |
| | | "@wangeditor/code-highlight": "^1.0.3", |
| | | "@wangeditor/core": "^1.1.19", |
| | | "@wangeditor/list-module": "^1.0.5", |
| | | "@wangeditor/table-module": "^1.1.4", |
| | | "@wangeditor/upload-image-module": "^1.0.2", |
| | | "@wangeditor/video-module": "^1.1.4", |
| | | "dom7": "^3.0.0", |
| | | "is-hotkey": "^0.2.0", |
| | | "lodash.camelcase": "^4.3.0", |
| | | "lodash.clonedeep": "^4.5.0", |
| | | "lodash.debounce": "^4.0.8", |
| | | "lodash.foreach": "^4.5.0", |
| | | "lodash.isequal": "^4.5.0", |
| | | "lodash.throttle": "^4.1.1", |
| | | "lodash.toarray": "^4.4.0", |
| | | "nanoid": "^3.2.0", |
| | | "slate": "^0.72.0", |
| | | "snabbdom": "^3.1.0" |
| | | } |
| | | }, |
| | | "@wangeditor/editor-for-vue": { |
| | | "version": "5.1.12", |
| | | "resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz", |
| | | "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==" |
| | | }, |
| | | "@wangeditor/list-module": { |
| | | "version": "1.0.5", |
| | | "resolved": "https://registry.npmmirror.com/@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", |
| | | "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", |
| | | "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", |
| | | "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==" |
| | | }, |
| | | "@webassemblyjs/ast": { |
| | | "version": "1.9.0", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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", |
| | | "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" |
| | | }, |
| | | "concat-map": { |
| | | "version": "0.0.1", |
| | | "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", |
| | |
| | | "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", |
| | | "dev": true |
| | | }, |
| | | "d": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz", |
| | | "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", |
| | | "requires": { |
| | | "es5-ext": "^0.10.64", |
| | | "type": "^2.7.2" |
| | | } |
| | | }, |
| | | "dashdash": { |
| | | "version": "1.14.1", |
| | | "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073454623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "dom7": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz", |
| | | "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", |
| | | "requires": { |
| | | "ssr-window": "^3.0.0-alpha.1" |
| | | } |
| | | }, |
| | | "domain-browser": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1604239998047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz", |
| | |
| | | "is-callable": "^1.1.4", |
| | | "is-date-object": "^1.0.1", |
| | | "is-symbol": "^1.0.2" |
| | | } |
| | | }, |
| | | "es5-ext": { |
| | | "version": "0.10.64", |
| | | "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz", |
| | | "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", |
| | | "requires": { |
| | | "es6-iterator": "^2.0.3", |
| | | "es6-symbol": "^3.1.3", |
| | | "esniff": "^2.0.1", |
| | | "next-tick": "^1.1.0" |
| | | } |
| | | }, |
| | | "es6-iterator": { |
| | | "version": "2.0.3", |
| | | "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", |
| | | "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", |
| | | "requires": { |
| | | "d": "1", |
| | | "es5-ext": "^0.10.35", |
| | | "es6-symbol": "^3.1.1" |
| | | } |
| | | }, |
| | | "es6-symbol": { |
| | | "version": "3.1.4", |
| | | "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", |
| | | "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", |
| | | "requires": { |
| | | "d": "^1.0.2", |
| | | "ext": "^1.7.0" |
| | | } |
| | | }, |
| | | "escalade": { |
| | |
| | | "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", |
| | | "dev": true |
| | | }, |
| | | "esniff": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz", |
| | | "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", |
| | | "requires": { |
| | | "d": "^1.0.1", |
| | | "es5-ext": "^0.10.62", |
| | | "event-emitter": "^0.3.5", |
| | | "type": "^2.7.2" |
| | | } |
| | | }, |
| | | "espree": { |
| | | "version": "6.2.1", |
| | | "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1607143966756&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", |
| | | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", |
| | | "dev": true |
| | | }, |
| | | "event-emitter": { |
| | | "version": "0.3.5", |
| | | "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", |
| | | "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", |
| | | "requires": { |
| | | "d": "1", |
| | | "es5-ext": "~0.10.14" |
| | | } |
| | | }, |
| | | "event-pubsub": { |
| | | "version": "4.3.0", |
| | |
| | | "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "ext": { |
| | | "version": "1.7.0", |
| | | "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", |
| | | "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", |
| | | "requires": { |
| | | "type": "^2.7.2" |
| | | } |
| | | }, |
| | | "extend": { |
| | |
| | | "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=", |
| | | "dev": true |
| | | }, |
| | | "html-void-elements": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", |
| | | "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" |
| | | }, |
| | | "html-webpack-plugin": { |
| | | "version": "3.2.0", |
| | | "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1615296040860&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", |
| | |
| | | "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=", |
| | | "dev": true |
| | | }, |
| | | "i18next": { |
| | | "version": "20.6.1", |
| | | "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz", |
| | | "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", |
| | | "requires": { |
| | | "@babel/runtime": "^7.12.0" |
| | | } |
| | | }, |
| | | "iconv-lite": { |
| | | "version": "0.4.24", |
| | | "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1594184264130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz", |
| | | "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", |
| | | "dev": true |
| | | }, |
| | | "immer": { |
| | | "version": "9.0.21", |
| | | "resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz", |
| | | "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" |
| | | }, |
| | | "import-cwd": { |
| | | "version": "2.1.0", |
| | |
| | | "is-extglob": "^2.1.1" |
| | | } |
| | | }, |
| | | "is-hotkey": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz", |
| | | "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==" |
| | | }, |
| | | "is-negative-zero": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123080624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", |
| | | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", |
| | | "dev": true |
| | | }, |
| | | "is-url": { |
| | | "version": "1.2.4", |
| | | "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz", |
| | | "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" |
| | | }, |
| | | "is-utf8": { |
| | | "version": "0.2.1", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz", |
| | | "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" |
| | | }, |
| | | "lodash.camelcase": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmmirror.com/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", |
| | | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" |
| | | }, |
| | | "lodash.debounce": { |
| | | "version": "4.0.8", |
| | | "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", |
| | | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", |
| | | "dev": true |
| | | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" |
| | | }, |
| | | "lodash.defaultsdeep": { |
| | | "version": "4.6.1", |
| | | "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz", |
| | | "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", |
| | | "dev": true |
| | | }, |
| | | "lodash.foreach": { |
| | | "version": "4.5.0", |
| | | "resolved": "https://registry.npmmirror.com/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", |
| | | "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" |
| | | }, |
| | | "lodash.kebabcase": { |
| | | "version": "4.1.1", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", |
| | | "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", |
| | | "dev": true |
| | | }, |
| | | "lodash.throttle": { |
| | | "version": "4.1.1", |
| | | "resolved": "https://registry.npmmirror.com/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", |
| | | "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==" |
| | | }, |
| | | "lodash.transform": { |
| | | "version": "4.6.0", |
| | |
| | | "integrity": "sha1-jLMT5Zll08Bc+/iYkVomevRqM1w=", |
| | | "dev": true |
| | | }, |
| | | "mime-match": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz", |
| | | "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==", |
| | | "requires": { |
| | | "wildcard": "^1.1.0" |
| | | } |
| | | }, |
| | | "mime-types": { |
| | | "version": "2.1.30", |
| | | "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.30.tgz", |
| | |
| | | "thenify-all": "^1.0.0" |
| | | } |
| | | }, |
| | | "namespace-emitter": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz", |
| | | "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==" |
| | | }, |
| | | "nan": { |
| | | "version": "2.14.2", |
| | | "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz", |
| | | "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=", |
| | | "dev": true |
| | | }, |
| | | "nanoid": { |
| | | "version": "3.3.7", |
| | | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", |
| | | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" |
| | | }, |
| | | "nanomatch": { |
| | | "version": "1.2.13", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz?cache=0&sync_timestamp=1594317434347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.2.tgz", |
| | | "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=", |
| | | "dev": true |
| | | }, |
| | | "next-tick": { |
| | | "version": "1.1.0", |
| | | "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", |
| | | "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" |
| | | }, |
| | | "nice-try": { |
| | | "version": "1.0.5", |
| | |
| | | "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=", |
| | | "dev": true |
| | | }, |
| | | "preact": { |
| | | "version": "10.21.0", |
| | | "resolved": "https://registry.npmmirror.com/preact/-/preact-10.21.0.tgz", |
| | | "integrity": "sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==" |
| | | }, |
| | | "prelude-ls": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", |
| | |
| | | "lodash": "^4.17.20", |
| | | "renderkid": "^2.0.4" |
| | | } |
| | | }, |
| | | "prismjs": { |
| | | "version": "1.29.0", |
| | | "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz", |
| | | "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" |
| | | }, |
| | | "process": { |
| | | "version": "0.11.10", |
| | |
| | | "ajv-keywords": "^3.5.2" |
| | | } |
| | | }, |
| | | "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", |
| | | "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", |
| | | "requires": { |
| | | "compute-scroll-into-view": "^1.0.20" |
| | | } |
| | | }, |
| | | "scss-tokenizer": { |
| | | "version": "0.2.3", |
| | | "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz", |
| | |
| | | "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", |
| | | "dev": true |
| | | }, |
| | | "slate": { |
| | | "version": "0.72.8", |
| | | "resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz", |
| | | "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==", |
| | | "requires": { |
| | | "immer": "^9.0.6", |
| | | "is-plain-object": "^5.0.0", |
| | | "tiny-warning": "^1.0.3" |
| | | }, |
| | | "dependencies": { |
| | | "is-plain-object": { |
| | | "version": "5.0.0", |
| | | "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", |
| | | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" |
| | | } |
| | | } |
| | | }, |
| | | "slate-history": { |
| | | "version": "0.66.0", |
| | | "resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz", |
| | | "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==", |
| | | "requires": { |
| | | "is-plain-object": "^5.0.0" |
| | | }, |
| | | "dependencies": { |
| | | "is-plain-object": { |
| | | "version": "5.0.0", |
| | | "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", |
| | | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" |
| | | } |
| | | } |
| | | }, |
| | | "slice-ansi": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz?cache=0&sync_timestamp=1618554953055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-2.1.0.tgz", |
| | |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "snabbdom": { |
| | | "version": "3.6.2", |
| | | "resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.2.tgz", |
| | | "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==" |
| | | }, |
| | | "snapdragon": { |
| | | "version": "0.8.2", |
| | |
| | | "safer-buffer": "^2.0.2", |
| | | "tweetnacl": "~0.14.0" |
| | | } |
| | | }, |
| | | "ssr-window": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz", |
| | | "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" |
| | | }, |
| | | "ssri": { |
| | | "version": "6.0.2", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz", |
| | | "integrity": "sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM=" |
| | | }, |
| | | "tiny-warning": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz", |
| | | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" |
| | | }, |
| | | "tiptap": { |
| | | "version": "1.32.2", |
| | | "resolved": "https://registry.npmjs.org/tiptap/-/tiptap-1.32.2.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581364203962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz", |
| | | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", |
| | | "dev": true |
| | | }, |
| | | "type": { |
| | | "version": "2.7.2", |
| | | "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", |
| | | "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" |
| | | }, |
| | | "type-check": { |
| | | "version": "0.3.2", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "wildcard": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz", |
| | | "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" |
| | | }, |
| | | "word-wrap": { |
| | | "version": "1.2.3", |
| | | "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", |
| | |
| | | }, |
| | | "dependencies": { |
| | | "@riophae/vue-treeselect": "^0.4.0", |
| | | "@wangeditor/editor": "^5.1.23", |
| | | "@wangeditor/editor-for-vue": "^5.1.12", |
| | | "axios": "^0.21.1", |
| | | "core-js": "^3.6.5", |
| | | "echarts": "^5.4.3", |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/updateById', data) |
| | | } |
| | | // åæ¶ |
| | | export function cancelById (data) { |
| | | debugger |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/cancelById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/delete/${id}`) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function bookingsDetail (id) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/bookings/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡ |
| | | export function getRoomStatistics (yearNum, roomId) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/getRoomStatistics?yearNum=${yearNum}&roomId=${roomId}`) |
| | | } |
| | | // ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡å¯¼åºExcel |
| | | export function exportRoomStatistics (data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/exportRoomStatistics`, data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // 人ååå ä¼è®®æ¶å¸¸ |
| | | export function getUserStatistics (data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/getUserStatistics`, data) |
| | | } |
| | | // 人åå伿¶é¿ç»è®¡å¯¼åºExcel |
| | | export function exportUserStatistics (data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/exportUserStatistics`, data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // |
| | | export function reservationCancel (type) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/reservationCancel?type=${type}`) |
| | | } |
| | | // |
| | | export function findMothBookingMeet ({roomId, dateMonth}) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/findMothBookingMeet?roomId=${roomId}&dateMonth=${dateMonth}`) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/devices/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/devices/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/devices/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/devices/updateById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/business/devices/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/devices/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function home (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/home/home', data, { |
| | | trim: true |
| | | }) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/notice/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/notice/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/notice/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/notice/updateById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/notice/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/notice/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/projects/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/projects/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/projects/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/projects/updateById', data) |
| | | } |
| | | // ä¼è®®å
³èçé¡¹ç® |
| | | export function findListByObjId ({objId, objType}) { |
| | | // return request.post('/meetingAdmin/cloudService/business/projects/findListByObjId', { params }) |
| | | return request.post(`/meetingAdmin/cloudService/projects/findListByObjId?objId=${objId}&objType=${objType}`) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/projects/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/projects/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/roomRecord/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/roomRecord/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/roomRecord/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/roomRecord/updateById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/roomRecord/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/roomRecord/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function findList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/roomTime/findList', data) |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/updateById', data) |
| | | } |
| | | // ä¿®æ¹ç¶æ |
| | | export function updateStatusById (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/updateStatusById', data) |
| | | } |
| | | |
| | | // |
| | | export function findList (data) { |
| | | return request.post('/meetingAdmin/cloudService/business/rooms/findList', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/meetingAdmin/cloudService/rooms/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/rooms/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| | |
| | | export function deleteById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/system/dictData/delete/${id}`) |
| | | } |
| | | |
| | | // æ¥è¯¢åå
¸å¼æ°æ® |
| | | export function getSystemDictData (label) { |
| | | return request.get(`/visitsAdmin/cloudService/system/dictData/getSystemDictData?dictCode=SYSTEM&label=${label}`) |
| | | } |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/system/dictData/delete/batch', { |
| | |
| | | if (extParams.api == null) { |
| | | throw new Error('Missing config option \'api\'.') |
| | | } |
| | | this.api = require('@/api' + extParams.api) |
| | | if(extParams.api.indexOf('@/',0) === 0){ |
| | | this.api = require(extParams.api) |
| | | }else { |
| | | this.api = require('@/api' + extParams.api) |
| | | } |
| | | extParams['field.id'] && (this.configData['field.id'] = extParams['field.id']) |
| | | }, |
| | | /** |
| | |
| | | if (extParams.api == null) { |
| | | throw new Error('Missing config option \'api\'.') |
| | | } |
| | | this.api = require('@/api' + extParams.api) |
| | | |
| | | if(extParams.api.indexOf('@/',0) === 0){ |
| | | this.api = require(extParams.api) |
| | | }else { |
| | | this.api = require('@/api' + extParams.api) |
| | | } |
| | | // this.api = require('@/api' + extParams.api) |
| | | extParams.module && (this.module = extParams.module) |
| | | extParams['field.id'] && (this.configData['field.id'] = extParams['field.id']) |
| | | extParams['field.main'] && (this.configData['field.main'] = extParams['field.main']) |
| | |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/cars', |
| | | api: '/business/parkBook', |
| | | 'field.id': 'id' |
| | | }) |
| | | } |
| | |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/company', |
| | | api: '/business/company.js', |
| | | 'field.id': 'id' |
| | | }) |
| | | } |
| | |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/company', |
| | | api: '/business/company.js', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | |
| | | uploadImage: { |
| | | // server: '/api/upload', |
| | | name: 'file', |
| | | server: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal', |
| | | server: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadLocal', |
| | | meta: { |
| | | folder: 'shop' |
| | | }, |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload' |
| | | } |
| | | }, |
| | | |
| | |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload(file) { |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload' |
| | | } |
| | | }, |
| | | |
| | |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | this.$message.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload(file) { |
| | |
| | | data() { |
| | | return { |
| | | fileList:null, |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload?folder='+this.uploadData.folder |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload?folder='+this.uploadData.folder |
| | | } |
| | | }, |
| | | |
| | |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { fileurl: data.imgaddr, fileurlFull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | // // æ¦æª |
| | | beforeFileUpload(file) { |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload' |
| | | } |
| | | }, |
| | | |
| | |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { fileurl: data.imgaddr, fileUrlFull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload(file) { |
| | |
| | | width: 90px !important; |
| | | height: 90px !important; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | </span> |
| | | </div> |
| | | </el-upload> |
| | | <el-image-viewer |
| | | v-if="showViewer" |
| | | <el-image-viewer |
| | | v-if="showViewer" |
| | | :on-close="closeViewer" |
| | | :initialIndex="tempIndex" |
| | | :url-list="srcList" |
| | | :z-index="3000" |
| | | /> |
| | | </div> |
| | | |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal', |
| | | |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadLocal', |
| | | |
| | | realList: [], |
| | | srcList: [], |
| | | tempIndex: 0, |
| | |
| | | this.srcList = [] |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | beforeUpload(file) { |
| | | |
| | | |
| | | this.$emit('beginUpload') |
| | | return true |
| | | }, |
| | | // ä¸ä¼ å¾çæå |
| | | uploadSuccess (res, file, fileList) { |
| | | uploadSuccess (res, file, fileList) { |
| | | // console.log('this.fileList', this.fileList); |
| | | // console.log('fileList', fileList); |
| | | this.$emit('endUpload') |
| | | this.$emit('uploadEnd') |
| | | this.realList = fileList |
| | | this.srcList.push(res.data.url) |
| | | // console.log('file', file); |
| | |
| | | } |
| | | }, |
| | | fail (err, file, fileList) { |
| | | this.$emit('endUpload') |
| | | this.$emit('uploadEnd') |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | }, |
| | | handlePictureCardPreview(file) { |
| | |
| | | this.realList.splice(tempIndex, 1) |
| | | this.fileList.splice(tempIndex, 1) |
| | | this.srcList.splice(tempIndex, 1) |
| | | |
| | | |
| | | }, |
| | | }, |
| | | } |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload' |
| | | } |
| | | }, |
| | | |
| | |
| | | fd.append('folder', 'visit/') |
| | | fd.append('file', file) |
| | | return upload(fd).then(res => { |
| | | return res.prefixPath + res.folder + res.halfPath |
| | | return res.url |
| | | }) |
| | | } |
| | | }), |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:bookings:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="searchForm.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="é¢çº¦é¨é¨" prop="department"> |
| | | <el-cascader |
| | | v-model="searchForm.department" |
| | | :options="department" |
| | | :show-all-levels="false" |
| | | clearable |
| | | :props="props" |
| | | ></el-cascader> |
| | | <!-- @change="handleChange" --> |
| | | <!-- <el-select |
| | | v-model="searchForm.departmentId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©é¨é¨" |
| | | > |
| | | <el-option v-for="item in department" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ä¸»é¢" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥ä¼è®®ä¸»é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é¢çº¦äºº" prop="realName"> |
| | | <el-input v-model="searchForm.realName" placeholder="请è¾å
¥é¢çº¦äºº" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ç¶æ" prop="status"> |
| | | <el-select |
| | | v-model="searchForm.status" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ç¶æ" |
| | | > |
| | | <el-option v-for="item in status" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®æ¶é´" prop="startTime"> |
| | | <el-date-picker |
| | | v-model="date" |
| | | type="datetimerange" |
| | | range-separator="è³" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | @change="selectDate" |
| | | ></el-date-picker> |
| | | <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å¼å§æ¶é´" @change="search"/> --> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="ç»ææ¶é´" prop="endTime"> |
| | | <el-date-picker v-model="searchForm.endTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥ç»ææ¶é´" @change="search"/> |
| | | </el-form-item> --> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:bookings:create', 'business:bookings:exportExcel']"> |
| | | <li><el-button type="primary" @click="$refs.operaBookingsWindow.open('æ°å»ºä¼è®®')" v-permissions="['business:bookings:create']">æ°å»º</el-button></li> |
| | | <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:bookings:delete']">å é¤</el-button></li> --> |
| | | <li><el-button :loading="isWorking.export" v-permissions="['business:bookings:exportExcel']" @click="exportExcel">导åº</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> |
| | | <el-table-column prop="name" label="ä¼è®®ä¸»é¢" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.name }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="roomName" label="ä¼è®®å®¤" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.roomName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="meetingTime" label="ä¼è®®æ¶é´" align="center" min-width="120px"></el-table-column> |
| | | <el-table-column prop="managerInfo" label="é¢çº¦äºº" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column label="ç¶æ" align="center" min-width="60px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.status==0" style="color:rgb(127, 178, 53)">æ£å¸¸</span> |
| | | <span v-else style="color:rgb(234, 54, 38)">åæ¶</span> |
| | | <!-- {{ row.status==0 ? 'æ£å¸¸' : 'åæ¶' }} --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" align="center" min-width="100px"></el-table-column> |
| | | <!-- <el-table-column prop="content" label="ä¼è®®å
容" min-width="100px"></el-table-column> --> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:bookings:update', 'business:bookings:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | align="center" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <template v-if="row.status==0"> |
| | | <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', row)">æ¥ç</el-button> |
| | | <el-button v-if="row.flag == 0" type="text" @click="$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', row)" v-permissions="['business:bookings:update']">ä¿®æ¹</el-button> |
| | | <el-button type="text" @click="copy(row)">å¤å¶</el-button> |
| | | <el-button v-if="row.flag == 0" type="text" @click="cancelMeeting(row.id)" v-permissions="['business:bookings:update']">åæ¶</el-button> |
| | | </template> |
| | | <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange"/> |
| | | <OperaBookingsDetailWindow ref="operaBookingsDetailWindow"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaBookingsWindow from '@/views/meeting/components/OperaBookingsWindow' |
| | | import OperaBookingsDetailWindow from '@/views/meeting/components/OperaBookingsDetailWindow' |
| | | import { findList } from '@/api/meeting/rooms' |
| | | import { getSystemDictData } from '@/api/system/dictData' |
| | | import { fetchTree } from '@/api/system/department' |
| | | import { cancelById, bookingsDetail } from '@/api/meeting/bookings' |
| | | export default { |
| | | name: 'Bookings', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaBookingsWindow, OperaBookingsDetailWindow }, |
| | | data () { |
| | | return { |
| | | date: [], |
| | | // æç´¢ |
| | | searchForm: { |
| | | roomId: '', |
| | | // departmentId: [], |
| | | department: [], |
| | | realName: '', |
| | | status: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | name: '', |
| | | roomId: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | content: '' |
| | | }, |
| | | props: { |
| | | label: 'name', |
| | | value: 'id', |
| | | checkStrictly: true |
| | | }, |
| | | rooms: [ |
| | | { name: '201ä¼è®®å®¤', id: '0' } |
| | | ], |
| | | department: [ |
| | | { name: 'å¼åé¨é¨', id: '0' } |
| | | ], |
| | | status: [ |
| | | { name: 'å
¨é¨', id: '' }, |
| | | { name: 'æ£å¸¸', id: '0' }, |
| | | { name: 'åæ¶', id: '1' }, |
| | | ], |
| | | link: 'https://dmtest.ahapp.net/meeting_h5/' //H5_LINK_ADDR |
| | | } |
| | | }, |
| | | provide() { |
| | | return { |
| | | rooms: () => this.rooms |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨', |
| | | api: '/meeting/bookings', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | fetchTree() |
| | | .then(res => { |
| | | this.department = this.newTree(res) |
| | | }) |
| | | getSystemDictData('H5_LINK_ADDR') |
| | | .then(res => { |
| | | console.log(res); |
| | | this.link=res.code |
| | | }) |
| | | findList({status:0}) |
| | | .then(res => { |
| | | this.rooms = res |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | newTree(tree) { |
| | | return tree.map(item => { |
| | | let newItem = {...item} |
| | | if (item.children.length == 0) { |
| | | this.$delete( newItem, 'children' ) |
| | | } else { |
| | | newItem.children = this.newTree(newItem.children) |
| | | } |
| | | return newItem |
| | | }); |
| | | }, |
| | | selectDate(v) { |
| | | this.searchForm.endTime = v[1] + ' 23:59:59' |
| | | this.searchForm.startTime = v[0] + ' 00:00:00' |
| | | }, |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.date = [] |
| | | this.searchForm.startTime = '' |
| | | this.searchForm.endTime = '' |
| | | this.search() |
| | | }, |
| | | copy(row) { |
| | | let text = `${row.realName} é请æ¨å å
¥ä¼è®®\nä¼è®®ä¸»é¢ï¼${row.name}\nä¼è®®å®¤ï¼${row.roomName}\nä¼è®®æ¶é´ï¼${row.meetingTime}\nç¹å»é¾æ¥ç´æ¥å å
¥ä¼è®®ï¼\n${this.link}?id=${row.id}` |
| | | this.$copyText(text) |
| | | .then(() => { |
| | | this.$message.success('ä¼è®®ä¿¡æ¯å¤å¶æåï¼å»å享ç»åäºå§~') |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | }, |
| | | cancelMeeting(id) { |
| | | this.$dialog.messageWaring('åæ¶ä¼è®®', 'æ¯å¦åæ¶å½åä¼è®®ï¼') |
| | | .then(() => { |
| | | cancelById({id}) |
| | | .then(() => { |
| | | this.$message.success('åæ¶æå') |
| | | this.handlePageChange() |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | }) |
| | | |
| | | }, |
| | | showDetail(id) { |
| | | bookingsDetail(id) |
| | | .then(res => { |
| | | this.$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', res) |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | }, |
| | | editBookings(id) { |
| | | bookingsDetail(id) |
| | | .then(res => { |
| | | this.$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', res) |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | |
| | | }, |
| | | handlePageChange (pageIndex) { |
| | | this.__checkApi() |
| | | this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex |
| | | this.isWorking.search = true |
| | | let form = JSON.parse(JSON.stringify(this.searchForm)) |
| | | if (form.department.length) { |
| | | form.departmentId = form.department[form.department.length-1] |
| | | } |
| | | this.api.fetchList({ |
| | | page: this.tableData.pagination.pageIndex, |
| | | capacity: this.tableData.pagination.pageSize, |
| | | model: form, |
| | | sorts: this.tableData.sorts |
| | | }) |
| | | .then(data => { |
| | | this.tableData.list = data.records |
| | | this.tableData.pagination.total = data.total |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.search = false |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | width="600px" |
| | | > |
| | | <div class="title-style"> |
| | | <div class="header-title">{{ form.name }}</div> |
| | | <div class="item-value">{{ `${form.roomName} ${form.meetingTime}` }}</div> |
| | | </div> |
| | | <div class="content-style"> |
| | | <div class="item"> |
| | | <div class="item-title">åä¼äººå</div> |
| | | <div>{{ form.sysList.map(item => `${item.realName}`).join('ï¼') }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="item-title">ä¼è®®å
容</div> |
| | | <div class="item-value">{{ form.content || 'æ ' }}</div> |
| | | </div> |
| | | <div v-if="form.projectList.length" class="item"> |
| | | <div class="">æå¡é¡¹</div> |
| | | <div class="item-value">{{ form.projectList.map(item => item.projectName).join(' | ') }}</div> |
| | | </div> |
| | | <div class="item" v-if="form.fileList.length"> |
| | | <div class="item-title">éä»¶</div> |
| | | <div> |
| | | <FileLink |
| | | :links="form.fileList" |
| | | linkName="fileFullUrl" |
| | | :isUpload="false" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="item" v-if="!!form.remark"> |
| | | <div class="item-title">夿³¨</div> |
| | | <div class="item-value">{{ form.remark }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="bottom-style"> |
| | | <div class="item-title">é¢çº¦äºº</div> |
| | | <div class="item-value">{{ form.managerInfo }}</div> |
| | | </div> |
| | | <div slot="footer"> |
| | | <el-button @click="visible=false">åæ¶</el-button> |
| | | </div> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import FileLink from '@/views/meeting/components/common/FileLink' |
| | | export default { |
| | | name: 'OperaBookingsDetailWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, FileLink }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | roomName: '', |
| | | meetingTime: '', |
| | | date: '', |
| | | editDate: '', |
| | | projectList: [], |
| | | remark: '', |
| | | roomId: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | times: [], |
| | | content: '', |
| | | sysList: [], |
| | | fileList: [], |
| | | managerInfo: '' |
| | | }, |
| | | // room: [], |
| | | sysList: [], |
| | | projectList: [], |
| | | timelist: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/bookings', |
| | | 'field.id': 'id' |
| | | }) |
| | | |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | // open (title, target) { |
| | | // this.title = title |
| | | // this.visible = true |
| | | // this.timelist = [] |
| | | // // æ°å»º |
| | | // if (target == null) { |
| | | // this.$nextTick(() => { |
| | | // this.$refs.form.resetFields() |
| | | // this.form[this.configData['field.id']] = null |
| | | // }) |
| | | // return |
| | | // } |
| | | // // ç¼è¾ |
| | | // this.$nextTick(() => { |
| | | // for (const key in this.form) { |
| | | // this.form[key] = target[key] |
| | | // } |
| | | // // this.form.projectList = target.projectList ? target.projectList.map(item => item.projectId) : [] |
| | | // // this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : [] |
| | | // // this.form.date = target.startTime.split(' ')[0] |
| | | |
| | | // }) |
| | | // }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | .title-style { |
| | | padding: 20px; |
| | | border-bottom: 10px #f7f7f7 solid; |
| | | } |
| | | .content-style { |
| | | padding: 20px; |
| | | border-bottom: 10px #f7f7f7 solid; |
| | | } |
| | | .item { |
| | | padding: 5px 0; |
| | | } |
| | | .header-title { |
| | | font-size: 16px; |
| | | font-weight: 600; |
| | | padding-bottom: 5px; |
| | | } |
| | | .item-title { |
| | | font-size: 16px; |
| | | color: #999; |
| | | padding-bottom: 5px; |
| | | } |
| | | .item-value { |
| | | font-size: 14px; |
| | | color: #111; |
| | | } |
| | | .bottom-style { |
| | | padding: 20px; |
| | | } |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="ï¼"> |
| | | <el-form-item label="å
³èä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="form.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©å
³èä¼è®®å®¤" |
| | | @change="selectRoom" |
| | | > |
| | | <el-option v-for="item in rooms()" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="é¢å®æ¥æ" prop="date"> |
| | | <el-date-picker |
| | | v-model="form.date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="è¯·éæ©é¢å®æ¥æ" |
| | | @change="selectDate" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="é¢å®æ¶é´" prop="times"> |
| | | <div class="time-style"> |
| | | <div |
| | | class="time-item" |
| | | v-for="(item, index) in timelist" |
| | | :key="item.id" |
| | | :class="form.times.indexOf(index)!=-1?'time-item-sel': item.isUse ? 'time-item-disable' : ''" |
| | | @click="selectTimes(index, item)" |
| | | >{{ `${item.startTime}-${item.endTime}` }}</div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ä¸»é¢" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥ä¼è®®ä¸»é¢" :maxlength="30" v-trim/> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="åä¼äººå" prop="sysList"> |
| | | <!-- <el-input style="width:40%" disabled v-model="sysList" placeholder="éæ©åä¼äººå" v-trim/> --> |
| | | <el-select |
| | | v-model="form.sysList" |
| | | filterable |
| | | clearable |
| | | multiple |
| | | placeholder="éæ©é¨é¨æå" |
| | | > |
| | | <el-option |
| | | v-for="item in sysList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.department?`${item.department.name}-${item.realname}`:item.realname" |
| | | ></el-option> |
| | | <!-- <el-option :key="1" :value="1" label="ç¦ç¨" /> --> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®å
容" prop="content"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="form.content" |
| | | :maxlength="300" |
| | | show-word-limit |
| | | :autosize="{ minRows: 4, maxRows: 12}" |
| | | placeholder="请è¾å
¥ä¼è®®å
容" |
| | | v-trim |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item v-if="projectList.length" label="éæ©æå¡é¡¹ç®" prop="projectList"> |
| | | <el-checkbox-group v-model="form.projectList"> |
| | | <el-checkbox |
| | | v-for="project in projectList" |
| | | :label="project.id" |
| | | :key="project.id" |
| | | >{{project.name}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®éä»¶" prop="fileList"> |
| | | <div> |
| | | <el-button type="primary" icon="el-icon-upload" @click="$refs.upFile.click()">ä¼è®®éä»¶</el-button> |
| | | </div> |
| | | <div class="data-list"> |
| | | <FileLink |
| | | :links="form.fileList" |
| | | linkName="fileFullUrl" |
| | | /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®å¤æ³¨" prop="remark"> |
| | | <el-input type="textarea" v-model="form.remark" placeholder="请è¾å
¥ä¼è®®å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | <input type="file" @change="upFiles" ref="upFile" style="display: none;" /> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import FileLink from '@/views/meeting/components/common/FileLink' |
| | | import { uploadFileLocal as upload } from '@/api/system/common' |
| | | import { fetchList as userList } from '@/api/system/user' |
| | | import { findListByObjId } from '@/api/meeting/projects' |
| | | import { findList } from '@/api/meeting/roomTime' |
| | | import { numRule, arrayRule } from '@/utils/form' |
| | | export default { |
| | | name: 'OperaBookingsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, FileLink }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | date: '', |
| | | editDate: '', |
| | | projectList: [], |
| | | remark: '', |
| | | name: '', |
| | | roomId: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | times: [], |
| | | content: '', |
| | | sysList: [], |
| | | fileList: [], |
| | | }, |
| | | isEdit: false, |
| | | // room: [], |
| | | sysList: [], |
| | | projectList: [], |
| | | timelist: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | roomId: [ |
| | | { required: true, validator: numRule, message: 'è¯·éæ©å
³èä¼è®®å®¤', tigger: 'change' } |
| | | ], |
| | | date: [ |
| | | { required: true, message: 'è¯·éæ©é¢å®æ¥æ', tigger: 'change' } |
| | | ], |
| | | times: [ |
| | | { required: true, validator: arrayRule, message: 'è¯·éæ©é¢çº¦æ¶é´', tigger: 'change' } |
| | | ], |
| | | sysList: [ |
| | | { required: true, validator: arrayRule, message: 'è¯·éæ©åä¼äººå', tigger: 'change' } |
| | | ], |
| | | name: [ |
| | | { required: true, message: 'è¯·éæ©è¾å
¥ä¼è®®ä¸»é¢', tigger: 'blur' } |
| | | ], |
| | | // content: [ |
| | | // { required: true, message: '请è¾å
¥ä¼è®®å
容', tigger: 'blur' } |
| | | // ], |
| | | } |
| | | } |
| | | }, |
| | | inject: ['rooms'], |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/bookings', |
| | | 'field.id': 'id' |
| | | }) |
| | | userList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: { realname: this.filterText }, |
| | | }) |
| | | .then(res => { |
| | | console.log('userList', res); |
| | | this.sysList = res.records |
| | | }) |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.timelist = [] |
| | | this.isEdit = false |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | console.log(this.form.content); |
| | | debugger |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.isEdit = true |
| | | this.form.projectList = target.projectList ? target.projectList.map(item => item.projectId) : [] |
| | | this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : [] |
| | | // console.log(target.startTime.split(' ')); |
| | | // debugger |
| | | this.form.date = target.startTime.split(' ')[0] |
| | | this.getTimes(true) |
| | | this.selectRoom(this.form.roomId) |
| | | }) |
| | | }, |
| | | selectRoom(objId) { |
| | | this.getTimes() |
| | | findListByObjId({ |
| | | objId, |
| | | objType: 0, |
| | | }) |
| | | .then(res => { |
| | | this.projectList = res |
| | | }) |
| | | }, |
| | | selectDate(v) { |
| | | // console.log(v); |
| | | this.getTimes() |
| | | }, |
| | | getTimes(isInit=false) { |
| | | this.form.times = [] |
| | | this.timelist = [] |
| | | |
| | | if (this.form.date && this.form.roomId) { |
| | | findList({ |
| | | yudingDate: this.form.date + ' 00:00:00', |
| | | roomId: this.form.roomId, |
| | | bookingId: this.form.id |
| | | }) |
| | | .then(res => { |
| | | this.timelist = res |
| | | if (isInit) { |
| | | this.timelist.forEach((itme, index) => { |
| | | if (itme.isChoose) { |
| | | itme.isUse = false |
| | | this.form.times.push(index) |
| | | } |
| | | }) |
| | | // let startTime = this.form.startTime.split(' ')[1] |
| | | // let endTime = this.form.endTime.split(' ')[1] |
| | | // let firstIndex = this.timelist.findIndex(item => item.startTime == startTime) |
| | | // let lastIndex = this.timelist.findIndex(item => item.endTime == endTime) |
| | | // let index = firstIndex |
| | | // while(index <= lastIndex) { |
| | | // this.form.times.push(index) |
| | | // index ++ |
| | | // } |
| | | // console.log('startTime', startTime); |
| | | // console.log('endTime', endTime); |
| | | // console.log('firstIndex', firstIndex); |
| | | // console.log('lastIndex', lastIndex); |
| | | // console.log('this.form.times', this.form.times); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | selectTimes(index, item) { |
| | | if (this.isEdit) { |
| | | return |
| | | } |
| | | let tempIndex = this.form.times.indexOf(index) |
| | | if (tempIndex != -1) { |
| | | if (tempIndex==0) { |
| | | // console.log(this.form.times); |
| | | // debugger |
| | | this.form.times.splice(0, 1) |
| | | } else if (tempIndex==this.form.times.length-1) { |
| | | this.form.times.splice(tempIndex, 1) |
| | | } |
| | | } else { |
| | | if (item.isUse) { |
| | | return |
| | | } |
| | | if (this.form.times.length && index+1 !== this.form.times[0] && index-1 !== this.form.times[this.form.times.length-1]) { |
| | | this.$message.error('é¢çº¦æ¶é´å¿
é¡»æ¯ç¸é»çï¼') |
| | | return |
| | | } |
| | | this.form.times.push(index) |
| | | this.form.times.sort((x,y)=> x - y) |
| | | } |
| | | // console.log(this.form.times); |
| | | }, |
| | | upFiles(file) { |
| | | const formdate = new FormData() |
| | | this.isUploading = true |
| | | formdate.append('file', file.target.files[0]) |
| | | formdate.append('folder', 'projects') |
| | | upload(formdate) |
| | | .then(res => { |
| | | // console.log(this.form); |
| | | this.form.fileList.push({ |
| | | name: res.originname, |
| | | url: res.url, |
| | | fileurl: res.imgaddr |
| | | }) |
| | | }) |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | .finally(() => this.isUploading = false) |
| | | this.$refs.upFile.value = null |
| | | }, |
| | | // 确认æ°å»º |
| | | __confirmCreate () { |
| | | this.$refs.form.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // console.log(this.form); |
| | | // debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | let bookingTimeList = [] |
| | | this.form.times.forEach(item => { |
| | | bookingTimeList.push({ |
| | | timeId: this.timelist[item].id, |
| | | id: this.timelist[item].bookingTimeId |
| | | }) |
| | | }) |
| | | let startTime = this.form.date + ' ' + this.timelist[this.form.times[0]].startTime + ':00' |
| | | let endTime = this.form.date + ' ' + this.timelist[this.form.times[this.form.times.length-1]].endTime + ':00' |
| | | this.api.create({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList, |
| | | startTime, |
| | | endTime, |
| | | bookingTimeList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('æ°å»ºæå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | // ç¡®è®¤ä¿®æ¹ |
| | | __confirmEdit () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | let bookingTimeList = [] |
| | | this.form.times.forEach(item => { |
| | | bookingTimeList.push({ |
| | | timeId: this.timelist[item].id, |
| | | id: this.timelist[item].bookingTimeId |
| | | }) |
| | | }) |
| | | let startTime = this.form.date + ' ' + this.timelist[this.form.times[0]].startTime + ':00' |
| | | let endTime = this.form.date + ' ' + this.timelist[this.form.times[this.form.times.length-1]].endTime + ':00' |
| | | this.api.updateById({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList, |
| | | startTime, |
| | | endTime, |
| | | bookingTimeList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('ä¿®æ¹æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | ::v-deep .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff !important; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .time-style { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | cursor: pointer; |
| | | .time-item { |
| | | margin-right: 8px; |
| | | margin-bottom: 8px; |
| | | border: #111 solid 1px; |
| | | font-size: 14px; |
| | | line-height: 14px; |
| | | padding: 5px; |
| | | border-radius: 5px; |
| | | color: #111; |
| | | } |
| | | .time-item-sel { |
| | | border-color: $primary-color; |
| | | background-color: $primary-color; |
| | | color: #fff; |
| | | } |
| | | .time-item-disable { |
| | | border-color: #999; |
| | | background-color: #999; |
| | | color: #111; |
| | | } |
| | | } |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" label-width="110px" label-suffix="ï¼" :rules="rules"> |
| | | <!-- <el-form-item label="å建人ç¼ç " prop="creator"> |
| | | <el-input v-model="form.creator" placeholder="请è¾å
¥å建人ç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å建æ¶é´" prop="createDate"> |
| | | <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å建æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°äººç¼ç " prop="editor"> |
| | | <el-input v-model="form.editor" placeholder="请è¾å
¥æ´æ°äººç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°æ¶é´" prop="editDate"> |
| | | <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æ´æ°æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦å é¤0å¦ 1æ¯" prop="isdeleted"> |
| | | <el-input v-model="form.isdeleted" placeholder="请è¾å
¥æ¯å¦å é¤0å¦ 1æ¯" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> --> |
| | | <el-form-item label="é¨ç¦ID" prop="code"> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥é¨ç¦ID" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="é¨ç¦åç§°" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥é¨ç¦åç§°" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å
³èä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="form.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©å
³èä¼è®®å®¤" |
| | | > |
| | | <el-option v-for="item in room()" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="ç¶æ 0å¯ç¨ 1ç¦ç¨" prop="status"> |
| | | <el-input v-model="form.status" placeholder="请è¾å
¥ç¶æ 0å¯ç¨ 1ç¦ç¨" v-trim/> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import { numRule } from '@/utils/form' |
| | | export default { |
| | | name: 'OperaDevicesWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | | roomId: '', |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | code: [ |
| | | { required: true, message: '请è¾å
¥é¨ç¦ID', tigger: 'blur' } |
| | | ], |
| | | name: [ |
| | | { required: true, message: '请è¾å
¥é¨ç¦åç§°', tigger: 'blur' } |
| | | ], |
| | | roomId: [ |
| | | { required: true, validator: numRule, message: 'è¯·éæ©å
³èä¼è®®å®¤', tigger: 'change' } |
| | | ], |
| | | } |
| | | } |
| | | }, |
| | | inject: ['room'], |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/devices', |
| | | 'field.id': 'id' |
| | | }) |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | width="70%" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ é¢" prop="title"> |
| | | <el-input v-model="form.title" placeholder="请è¾å
¥æ é¢ï¼ä¸è¶
è¿30个å" maxlength="30" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å
容" prop="content"> |
| | | <!-- <el-input type="textarea" v-model="form.content" placeholder="请è¾å
¥å
容" v-trim/> --> |
| | | </el-form-item> |
| | | <RichEditor :content="{ content: form.content }" @edit="form.content=$event"></RichEditor> |
| | | |
| | | <!-- <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨æ·ç¼ç ï¼å
³èmember表ï¼" prop="memberId"> |
| | | <el-input v-model="form.memberId" placeholder="请è¾å
¥ç¨æ·ç¼ç ï¼å
³èmember表ï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="对象ç¼ç " prop="objId"> |
| | | <el-input v-model="form.objId" placeholder="请è¾å
¥å¯¹è±¡ç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="对象类å " prop="objType"> |
| | | <el-input v-model="form.objType" placeholder="请è¾å
¥å¯¹è±¡ç±»å " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ¶æ¯ç±»å 0ç³»ç»æ¶æ¯ 1ä¼è®®éç¥" prop="type"> |
| | | <el-input v-model="form.type" placeholder="请è¾å
¥æ¶æ¯ç±»å 0ç³»ç»æ¶æ¯ 1ä¼è®®éç¥" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ 0æªè¯» 1已读" prop="status"> |
| | | <el-input v-model="form.status" placeholder="请è¾å
¥ç¶æ 0æªè¯» 1已读" v-trim/> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import RichEditor from '@/components/common/RichEditor.vue' |
| | | export default { |
| | | name: 'OperaNoticeWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, RichEditor }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | memberId: '', |
| | | title: '', |
| | | content: '', |
| | | objId: '', |
| | | objType: '', |
| | | type: '', |
| | | status: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: 'meeting/notice', |
| | | 'field.id': 'id' |
| | | }) |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | v-loading="isUploading" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="ï¼"> |
| | | <el-form-item label="åç§°" prop="name"> |
| | | <el-input v-model="form.name" maxlength="6" placeholder="请è¾å
¥ï¼ä¸è¶
è¿6个å" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å±ç¤ºå¾" prop="imgurlfull"> |
| | | <!-- {{ form.imgurlfull }} --> |
| | | <UploadAvatarImage |
| | | :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }" |
| | | :uploadData="uploadData" |
| | | @uploadSuccess="uploadAvatarSuccess" |
| | | @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç (ååº)" prop="sortnum"> |
| | | <el-input v-model="form.sortnum" placeholder="请è¾å
¥æåºç " v-trim/> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="å建人ç¼ç " prop="creator"> |
| | | <el-input v-model="form.creator" placeholder="请è¾å
¥å建人ç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å建æ¶é´" prop="createDate"> |
| | | <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å建æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°äººç¼ç " prop="editor"> |
| | | <el-input v-model="form.editor" placeholder="请è¾å
¥æ´æ°äººç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°æ¶é´" prop="editDate"> |
| | | <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æ´æ°æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦å é¤0å¦ 1æ¯" prop="isdeleted"> |
| | | <el-input v-model="form.isdeleted" placeholder="请è¾å
¥æ¯å¦å é¤0å¦ 1æ¯" v-trim/> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="徿 " prop="imgurl"> |
| | | <el-input v-model="form.imgurl" placeholder="请è¾å
¥å¾æ " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ 0å¯ç¨ 1ç¦ç¨" prop="status"> |
| | | <el-input v-model="form.status" placeholder="请è¾å
¥ç¶æ 0å¯ç¨ 1ç¦ç¨" v-trim/> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | export default { |
| | | name: 'OperaProjectsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, UploadAvatarImage }, |
| | | data () { |
| | | return { |
| | | isUploading: false, |
| | | uploadData: { |
| | | folder: 'projects' |
| | | }, |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | name: '', |
| | | remark: '', |
| | | imgurlfull: '', |
| | | imgurl: '', |
| | | status: '', |
| | | sortnum: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/projects', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.imgurl = '' |
| | | this.form.imgurlfull = '' |
| | | debugger |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | console.log('this.form', this.form); |
| | | }) |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | uploadAvatarSuccess(file) { |
| | | this.form.imgurl = file.imgurl; |
| | | this.form.imgurlfull = file.imgurlfull; |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="å建人ç¼ç " prop="creator"> |
| | | <el-input v-model="form.creator" placeholder="请è¾å
¥å建人ç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å建æ¶é´" prop="createDate"> |
| | | <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å建æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°äººç¼ç " prop="editor"> |
| | | <el-input v-model="form.editor" placeholder="请è¾å
¥æ´æ°äººç¼ç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°æ¶é´" prop="editDate"> |
| | | <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æ´æ°æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦å é¤0å¦ 1æ¯" prop="isdeleted"> |
| | | <el-input v-model="form.isdeleted" placeholder="请è¾å
¥æ¯å¦å é¤0å¦ 1æ¯" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="人åç¼ç ï¼å
³èsystem_user表ï¼" prop="userId"> |
| | | <el-input v-model="form.userId" placeholder="请è¾å
¥äººåç¼ç ï¼å
³èsystem_user表ï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å
³è对象ç¼ç ï¼å
³èroomsæbooking表ï¼" prop="objId"> |
| | | <el-input v-model="form.objId" placeholder="请è¾å
¥å
³è对象ç¼ç ï¼å
³èroomsæbooking表ï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å
³è对象类å 0ä¼è®®å®¤ç®¡çå 1åä¼äººå" prop="objType"> |
| | | <el-input v-model="form.objType" placeholder="请è¾å
¥å
³è对象类å 0ä¼è®®å®¤ç®¡çå 1åä¼äººå" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®å®¤ç¼ç ï¼å
³èrooms表ï¼" prop="roomId"> |
| | | <el-input v-model="form.roomId" placeholder="请è¾å
¥ä¼è®®å®¤ç¼ç ï¼å
³èrooms表ï¼" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | export default { |
| | | name: 'OperaRoomRecordWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | userId: '', |
| | | objId: '', |
| | | objType: '', |
| | | roomId: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/roomRecord', |
| | | 'field.id': 'id' |
| | | }) |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | v-loading="isUploading" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="ï¼"> |
| | | <el-form-item label="ä¼è®®å®¤åç§°" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥ä¼è®®å®¤åç§°" :maxlength="10" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="弿¾æ¶é´" prop="timeRange"> |
| | | <el-time-picker |
| | | is-range |
| | | value-format="HH:mm" |
| | | format="HH:mm" |
| | | v-model="timeRange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | @change="selectRange" |
| | | ></el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ç²åº¦åé" prop="intervalTime"> |
| | | <el-input v-model="form.intervalTime" type="number" placeholder="请è¾å
¥æ¶é´ç²åº¦ï¼åéï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="容纳人æ°" prop="limitNum"> |
| | | <el-input v-model="form.limitNum" type="number" placeholder="请è¾å
¥å®¹çº³äººæ°" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="管çå" prop="sysList"> |
| | | <el-select |
| | | v-model="form.sysList" |
| | | filterable |
| | | multiple |
| | | clearable |
| | | placeholder="è¯·éæ©é¨é¨" |
| | | > |
| | | <!-- :label="`${item.department.name}-${item.realname}`" --> |
| | | <el-option |
| | | v-for="item in userList()" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | |
| | | :label="item.department?`${item.department.name}-${item.realname}`:item.realname" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æä¾æå¡é¡¹ç®" prop="projectList"> |
| | | <el-checkbox-group v-model="form.projectList"> |
| | | <el-checkbox v-for="project in projectList" :label="project.id" :key="project.id">{{project.name}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®å®¤å¾ç" prop="imgurl"> |
| | | <UploadAvatarImage |
| | | :file="{ 'imgurlfull': form.imgFullUrl, 'imgurl': form.imgurl }" |
| | | :uploadData="uploadData" |
| | | @uploadSuccess="uploadAvatarSuccess" |
| | | @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="使ç¨é¡»ç¥" prop="tips"> |
| | | <el-input v-model="form.tips" type="textarea" placeholder="请è¾å
¥ä½¿ç¨é¡»ç¥" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | import { numRule } from '@/utils/form' |
| | | import { fetchList } from '@/api/meeting/projects' |
| | | export default { |
| | | name: 'OperaRoomsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, UploadAvatarImage }, |
| | | data () { |
| | | let timeRangeRule = (rule, value, callBack) => { |
| | | if (!this.form.startTime) { |
| | | callBack(new Error('è¯·éæ©å¼å§æ¶é´')) |
| | | return |
| | | } |
| | | if (!this.form.endTime) { |
| | | callBack(new Error('è¯·éæ©ç»ææ¶é´')) |
| | | return |
| | | } |
| | | callBack() |
| | | } |
| | | return { |
| | | isUploading: false, |
| | | uploadData: { |
| | | folder: 'projects' |
| | | }, |
| | | timeRange: ['', ''], |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | sysList: [], |
| | | projectList: [], |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | name: '', |
| | | remark: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | limitNum: '', |
| | | imgurl: '', |
| | | imgFullUrl: '', |
| | | tips: '', |
| | | status: '', |
| | | intervalTime: '' |
| | | }, |
| | | user: [], |
| | | projectList: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请è¾å
¥ä¼è®®å®¤åç§°', tigger: 'blur' } |
| | | ], |
| | | intervalTime: [ |
| | | { required: true, validator: numRule, message: '请è¾å
¥æ¶é´ç²åº¦', tigger: 'blur' } |
| | | ], |
| | | timeRange: [ |
| | | { required: true, validator: timeRangeRule, tigger: 'change' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | inject: ['userList'], |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/rooms', |
| | | 'field.id': 'id' |
| | | }) |
| | | // realname: this.filterText |
| | | fetchList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: {}, |
| | | }) |
| | | .then(res => { |
| | | this.projectList = res.records |
| | | }) |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.imgFullUrl = '' |
| | | // this.timeRange = ['14:34:55', '14:34:55'] |
| | | // debugger |
| | | this.timeRange = ['', ''] |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.timeRange = [target.startTime, target.endTime] |
| | | this.form.projectList = this.form.projectList ? target.projectList.map(item => item.projectId) : [] |
| | | this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : [] |
| | | // console.log(this.form.imgFullUrl); |
| | | }) |
| | | }, |
| | | selectRange(v) { |
| | | // console.log(this.timeRange); |
| | | console.log(v); |
| | | this.form.startTime = v[0] |
| | | this.form.endTime = v[1] |
| | | console.log(this.form.startTime, this.form.endTime); |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | uploadAvatarSuccess(file) { |
| | | this.form.imgurl = file.imgurl; |
| | | this.form.imgFullUrl = file.imgurlfull; |
| | | }, |
| | | // 确认æ°å»º |
| | | __confirmCreate () { |
| | | this.$refs.form.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // console.log(this.form); |
| | | // debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | this.api.create({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('æ°å»ºæå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | // ç¡®è®¤ä¿®æ¹ |
| | | __confirmEdit () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | console.log(this.form); |
| | | debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | this.api.updateById({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('ä¿®æ¹æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <FileLinkItem |
| | | v-for="(item, index) in links" |
| | | :key="index" |
| | | :link="item[linkName]" |
| | | :name="item.name" |
| | | :isUpload="isUpload" |
| | | @showFile="showFile" |
| | | @deleteAction="deleteFile(index)" |
| | | /> |
| | | <PDFPreview ref="PDFPreview" /> |
| | | <el-image-viewer |
| | | v-if="showViewer" |
| | | :on-close="close" |
| | | :initialIndex="tempIndex" |
| | | :url-list="srcList" |
| | | :zIndex="3000" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { fileType } from '@/utils/util'; |
| | | import FileLinkItem from './FileLinkItem.vue'; |
| | | import PDFPreview from './PDFPreview' |
| | | import ElImageViewer from 'element-ui/packages/image/src/image-viewer' |
| | | export default { |
| | | components: { |
| | | FileLinkItem, |
| | | PDFPreview, |
| | | ElImageViewer |
| | | }, |
| | | props: { |
| | | links: { |
| | | type: Array, |
| | | required: true |
| | | }, |
| | | isUpload: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | linkName: { |
| | | type: String, |
| | | required: true |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | showViewer: false |
| | | } |
| | | }, |
| | | computed: { |
| | | // å¾çå°å |
| | | srcList() { |
| | | return this.links.filter(item => { |
| | | let link = item[this.linkName] |
| | | return fileType(link) == 1 |
| | | }).map(item => item[this.linkName]) |
| | | } |
| | | }, |
| | | methods: { |
| | | deleteFile(index) { |
| | | this.links.splice(index, 1) |
| | | }, |
| | | downloadFile(url) { |
| | | window.open(url, '_blank') |
| | | }, |
| | | showFile(url) { |
| | | debugger |
| | | let type = fileType(url) |
| | | switch (type) { |
| | | case 1: |
| | | this.tempIndex = this.srcList.findIndex(item => item == url) |
| | | this.showViewer = true |
| | | break; |
| | | case 2: |
| | | this.$refs.PDFPreview.open('', { url }) |
| | | break; |
| | | case 3: |
| | | window.open(url, '_blank') |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }, |
| | | close() { |
| | | this.showViewer = false |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="file-link"> |
| | | <div class="like-link" @click="showFile(link)">{{ name }}</div> |
| | | <i v-if="isUpload" class="el-icon-delete delete" @click="deleteFile()"></i> |
| | | <i v-else class="el-icon-download download" @click="downloadFile(link)"></i> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | props: { |
| | | link: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | name: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | |
| | | isUpload: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | showViewer: false |
| | | } |
| | | }, |
| | | methods: { |
| | | deleteFile() { |
| | | this.$emit('deleteAction') |
| | | }, |
| | | downloadFile(url) { |
| | | window.open(url, '_blank') |
| | | }, |
| | | showFile(link) { |
| | | this.$emit('showFile',link) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .file-link { |
| | | // height: 26px; |
| | | display: flex; |
| | | font-size: 14px; |
| | | line-height: 26px; |
| | | |
| | | .like-link { |
| | | line-height: 26px; |
| | | color: #216EEE; |
| | | cursor: pointer; |
| | | text-decoration: underline; |
| | | } |
| | | .delete { |
| | | box-sizing: border-box; |
| | | line-height: 26px; |
| | | margin-left: 10px; |
| | | width: 16px; |
| | | height: 16px; |
| | | // background-color: #BFC3CB; |
| | | color: #216EEE; |
| | | border-radius: 50%; |
| | | padding: 1.5px; |
| | | cursor: pointer; |
| | | &:hover { |
| | | color: #ff0000; |
| | | } |
| | | } |
| | | .download { |
| | | line-height: 26px; |
| | | box-sizing: border-box; |
| | | margin-left: 10px; |
| | | width: 16px; |
| | | height: 16px; |
| | | color: #828D9E; |
| | | border-radius: 50%; |
| | | padding: 1.5px; |
| | | cursor: pointer; |
| | | &:hover { |
| | | color: #216EEE; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog |
| | | class="global-window" |
| | | :visible="visible" |
| | | :with-header="true" |
| | | :close-on-press-escape="false" |
| | | :wrapper-closable="false" |
| | | :append-to-body="true" |
| | | @close="visible=false" |
| | | width="70%" |
| | | > |
| | | <div class="pdf-container"> |
| | | <iframe |
| | | :src="`${path}/pdfjs/web/viewer.html?file=${form.url}`" |
| | | frameborder="0" |
| | | style="width: 100%; height: 100%;" |
| | | ></iframe> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | export default { |
| | | name: 'OperaCompanyUserWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow }, |
| | | data () { |
| | | return { |
| | | path: process.env.VUE_APP_CONTEXT_PATH == '/' ? '' : process.env.VUE_APP_CONTEXT_PATH, |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | url: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .address { |
| | | ::v-deep .el-form-item { |
| | | display: flex; |
| | | } |
| | | ::v-deep .el-form-item__content { |
| | | flex: 1; |
| | | } |
| | | ::v-deep .el-select { |
| | | width: 32%; |
| | | .el-input__inner { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | .pdf-container { |
| | | width: 100%; |
| | | height: calc(80vh - 100px); |
| | | overflow-y: scroll; |
| | | } |
| | | ::v-deep .el-dialog__header { |
| | | padding: 0 !important; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | // background-color: rgba($color: #000000, $alpha: 0.3); |
| | | |
| | | } |
| | | ::v-deep .window__footer { |
| | | height: 1px; |
| | | } |
| | | // ::v-deep .el-dialog__body { |
| | | // background-color: rgba($color: #000000, $alpha: 0.3); |
| | | // } |
| | | .ins-pdf-button-box { |
| | | display: flex; |
| | | padding: 20px; |
| | | div { |
| | | width: 80px; |
| | | // background-color: #fff; |
| | | background-color: #f5f5f5; |
| | | margin-right: 10px; |
| | | text-align: center; |
| | | padding: 8px; |
| | | } |
| | | .last-style { |
| | | border: 1px solid #666; |
| | | |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <div class="select-container"> |
| | | <div class="tree"> |
| | | <div style="display: flex; margin-bottom: 5px;"> |
| | | <el-input |
| | | placeholder="è¾å
¥å
³é®åè¿è¡è¿æ»¤" |
| | | v-model="filterText" |
| | | clearable |
| | | @input="inputAction" |
| | | @keypress.enter.native="search" |
| | | ></el-input> |
| | | <el-button @click="search" style="margin-left: 5px;" type="primary">æç´¢</el-button> |
| | | </div> |
| | | <el-tree |
| | | key="tree" |
| | | v-if="!filterList.length" |
| | | :data="data" |
| | | :load="loadNode" |
| | | lazy |
| | | > |
| | | <span class="custom-tree-node" slot-scope="{ node, data }"> |
| | | <span>{{ node.data.name }}</span> |
| | | <el-checkbox @change="selectUser(node.data)" v-if="node.data.isUser" v-model="node.data.isSelect"></el-checkbox> |
| | | </span> |
| | | </el-tree> |
| | | <div v-else> |
| | | <div v-for="item in filterList" :key="item.id" class="custom-tree-node"> |
| | | <span>{{ item.realname }}</span> |
| | | <el-checkbox @change="selectUser(item)" v-model="item.isSelect"></el-checkbox> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="line"></div> |
| | | <div class="selected"> |
| | | <div style="margin-bottom: 5px;">å·²éï¼{{ selectList.length }}</div> |
| | | <div v-for="item in selectList" :key="item.id" class="custom-tree-node"> |
| | | <span>{{ item.name }}</span> |
| | | <i class="el-icon-delete delete" @click="deleteAction(item)"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import { findTreeUser } from '@/api/system/department' |
| | | import { fetchList as userList } from '@/api/system/user' |
| | | export default { |
| | | name: 'selectMember', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow }, |
| | | data () { |
| | | return { |
| | | props: { |
| | | label: 'name', |
| | | children: 'zones', |
| | | isLeaf: 'isUser' |
| | | }, |
| | | data: [], |
| | | filterText: '', |
| | | filterList: [], |
| | | selectList: [], |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | name: '', |
| | | roomId: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | content: '' |
| | | }, |
| | | rootNode: {}, |
| | | // éªè¯è§å |
| | | rules: { |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/bookings', |
| | | 'field.id': 'id' |
| | | }) |
| | | |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.filterList = [] |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | // this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | loadNode(node, resolve) { |
| | | this.rootNode = node |
| | | // console.log(node, resolve); |
| | | if (node.data.isUser) { |
| | | return resolve([]) |
| | | } |
| | | let parentId = '' |
| | | if (node.level === 0) { |
| | | parentId = '' |
| | | } else { |
| | | parentId = node.data.id |
| | | } |
| | | findTreeUser({parentId}) |
| | | .then(res => { |
| | | // this.data = [res] |
| | | if (!parentId) { |
| | | resolve([res]) |
| | | } else { |
| | | let resolveList = [] |
| | | if (res.userList) { |
| | | res.userList.forEach(item => { |
| | | let index = this.selectList.findIndex(sel => sel.id == item.id) |
| | | resolveList.push({ |
| | | ...item, |
| | | name: item.realname, |
| | | isUser: true, |
| | | isSelect: index !== -1 |
| | | }) |
| | | }); |
| | | } |
| | | if (res.children) { |
| | | res.children.forEach(item => { |
| | | resolveList.push(item) |
| | | }) |
| | | } |
| | | |
| | | resolve(resolveList) |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | inputAction() { |
| | | if (!this.filterText) { |
| | | this.filterList = [] |
| | | } |
| | | }, |
| | | search() { |
| | | this.filterList = [] |
| | | if (this.filterText) { |
| | | userList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: { realname: this.filterText }, |
| | | }) |
| | | .then(res => { |
| | | // console.log(res); |
| | | // this.filterList = res.records |
| | | res.records.forEach(item => { |
| | | let index = this.selectList.findIndex(sel => sel.id == item.id) |
| | | this.filterList.push({ |
| | | ...item, |
| | | isSelect: index !== -1 |
| | | }) |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | selectUser(item) { |
| | | let index = this.selectList.findIndex(sel => sel.id == item.id) |
| | | if (index !== -1) { |
| | | this.selectList.splice(index, 1) |
| | | } else { |
| | | this.selectList.push({ |
| | | name: item.realname, |
| | | id: item.id |
| | | }) |
| | | } |
| | | }, |
| | | deleteAction(item) { |
| | | console.log(this.rootNode); |
| | | this.selectList.splice(this.selectList.findIndex(sel => sel.id == item.id), 1) |
| | | this.filterList.forEach(filter => { |
| | | if (filter.id == item.id) { |
| | | filter.isSelect = false |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .select-container { |
| | | display: flex; |
| | | height: 100%; |
| | | .tree { |
| | | padding: 0 10px 10px; |
| | | box-sizing: border-box; |
| | | width: calc(50% - 0.5px); |
| | | min-height: 200px; |
| | | // height: 100%; |
| | | |
| | | } |
| | | .line { |
| | | width: 1px; |
| | | min-height: 200px; |
| | | // height: 100%; |
| | | |
| | | background-color: #f7f7f7; |
| | | } |
| | | .selected { |
| | | padding: 0 10px 10px; |
| | | box-sizing: border-box; |
| | | // background-color: red; |
| | | // flex: 1; |
| | | width: calc(50% - 0.5px); |
| | | min-height: 200px; |
| | | // height: 100%; |
| | | } |
| | | } |
| | | .custom-tree-node { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | font-size: 14px; |
| | | padding-right: 8px; |
| | | } |
| | | .delete { |
| | | box-sizing: border-box; |
| | | line-height: 26px; |
| | | margin-left: 10px; |
| | | width: 16px; |
| | | height: 16px; |
| | | // background-color: #BFC3CB; |
| | | color: #216EEE; |
| | | border-radius: 50%; |
| | | padding: 1.5px; |
| | | cursor: pointer; |
| | | &:hover { |
| | | color: #ff0000; |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:devices:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="searchForm.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option v-for="item in room" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select |
| | | v-model="searchForm.status" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option :key="0" :value="0" label="å¯ç¨" /> |
| | | <el-option :key="1" :value="1" label="ç¦ç¨" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:devices:exportExcel']" @click="exportExcel">导åº</el-button> --> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:devices:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaDevicesWindow.open('æ°å»ºè®¾å¤')" icon="el-icon-plus" v-permissions="['business:devices:create']">æ°å»º</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="index" prop="index" label="åºå·" align="center" min-width="50px"></el-table-column> |
| | | <el-table-column prop="code" label="é¨ç¦ID" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="é¨ç¦åç§°" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="roomName" label="å
³èä¼è®®å®¤" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#999" |
| | | :active-value="0" |
| | | :inactive-value="1" |
| | | @change="changeStatus(row)" |
| | | ></el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!-- <el-table-column prop="createDate" label="å建æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="editor" label="æ´æ°äººç¼ç " min-width="100px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æ´æ°æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="isdeleted" label="æ¯å¦å é¤0å¦ 1æ¯" min-width="100px"></el-table-column> |
| | | <el-table-column prop="remark" label="夿³¨" min-width="100px"></el-table-column> |
| | | <el-table-column prop="code" label="设å¤å·ï¼ä¸å¯éå¤ï¼" min-width="100px"></el-table-column> --> |
| | | |
| | | <el-table-column |
| | | v-if="containPermissions(['business:devices:update', 'business:devices:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | align="center" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaDevicesWindow.open('ç¼è¾è®¾å¤', row)" icon="el-icon-edit" v-permissions="['business:devices:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:devices:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaDevicesWindow ref="operaDevicesWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDevicesWindow from '@/views/meeting/components/OperaDevicesWindow' |
| | | import { findList } from '@/api/meeting/rooms' |
| | | import { updateById } from '@/api/meeting/devices' |
| | | export default { |
| | | name: 'Devices', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaDevicesWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | id: '', |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | name: '', |
| | | code: '', |
| | | roomId: '', |
| | | status: '' |
| | | }, |
| | | room: [] |
| | | } |
| | | }, |
| | | provide() { |
| | | return { |
| | | room: () => this.room |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '设å¤ç®¡çä¿¡æ¯è¡¨', |
| | | api: '/meeting/devices', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | findList({status:0}) |
| | | .then(res => { |
| | | this.room = res |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | changeStatus(item) { |
| | | updateById(item) |
| | | .then(() => { |
| | | this.$message.success('ä¿®æ¹æå') |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | .finally(() => { |
| | | this.handlePageChange() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:notice:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="éç¥æ é¢" prop="title"> |
| | | <el-input v-model="searchForm.title" placeholder="请è¾å
¥éç¥æ é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åå¸äºº" prop="creatorName"> |
| | | <el-input v-model="searchForm.creatorName" placeholder="请è¾å
¥åå¸äºº" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">导åº</el-button> --> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:notice:create', 'business:notice:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaNoticeWindow.open('æ°å»ºæ¶æ¯éç¥')" icon="el-icon-plus" v-permissions="['business:notice:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:notice:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="title" label="æ é¢" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å叿¶é´" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="creatorName" label="åå¸äºº" align="center" min-width="100px"></el-table-column> |
| | | <!-- <el-table-column prop="editor" label="æ´æ°äººç¼ç " min-width="100px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æ´æ°æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="isdeleted" label="æ¯å¦å é¤0å¦ 1æ¯" min-width="100px"></el-table-column> |
| | | <el-table-column prop="remark" label="夿³¨" min-width="100px"></el-table-column> |
| | | <el-table-column prop="memberId" label="ç¨æ·ç¼ç ï¼å
³èmember表ï¼" min-width="100px"></el-table-column> |
| | | <el-table-column prop="content" label="å
容" min-width="100px"></el-table-column> |
| | | <el-table-column prop="objId" label="对象ç¼ç " min-width="100px"></el-table-column> |
| | | <el-table-column prop="objType" label="对象类å " min-width="100px"></el-table-column> |
| | | <el-table-column prop="type" label="æ¶æ¯ç±»å 0ç³»ç»æ¶æ¯ 1ä¼è®®éç¥" min-width="100px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ 0æªè¯» 1已读" min-width="100px"></el-table-column> --> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:notice:update', 'business:notice:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | align="center" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaNoticeWindow.open('ç¼è¾æ¶æ¯éç¥', row)" icon="el-icon-edit" v-permissions="['business:notice:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:notice:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaNoticeWindow ref="operaNoticeWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaNoticeWindow from '@/views/meeting/components/OperaNoticeWindow' |
| | | export default { |
| | | name: 'Notice', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaNoticeWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | id: '', |
| | | creatorName: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | memberId: '', |
| | | title: '', |
| | | content: '', |
| | | objId: '', |
| | | objType: '', |
| | | type: '', |
| | | status: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'æ¶æ¯éç¥ä¿¡æ¯è¡¨', |
| | | api: '@/views/meeting/api/notice', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:projects:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <!-- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="主é®" prop="id"> |
| | | <el-input v-model="searchForm.id" placeholder="请è¾å
¥ä¸»é®" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å建人ç¼ç " prop="creator"> |
| | | <el-input v-model="searchForm.creator" placeholder="请è¾å
¥å建人ç¼ç " @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å建æ¶é´" prop="createDate"> |
| | | <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å建æ¶é´" @change="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°äººç¼ç " prop="editor"> |
| | | <el-input v-model="searchForm.editor" placeholder="请è¾å
¥æ´æ°äººç¼ç " @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°æ¶é´" prop="editDate"> |
| | | <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æ´æ°æ¶é´" @change="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦å é¤0å¦ 1æ¯" prop="isdeleted"> |
| | | <el-input v-model="searchForm.isdeleted" placeholder="请è¾å
¥æ¯å¦å é¤0å¦ 1æ¯" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åç§°ï¼ä¸å¯éå¤ï¼" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥åç§°ï¼ä¸å¯éå¤ï¼" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="searchForm.remark" placeholder="请è¾å
¥å¤æ³¨" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="徿 " prop="imgurl"> |
| | | <el-input v-model="searchForm.imgurl" placeholder="请è¾å
¥å¾æ " @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ 0å¯ç¨ 1ç¦ç¨" prop="status"> |
| | | <el-input v-model="searchForm.status" placeholder="请è¾å
¥ç¶æ 0å¯ç¨ 1ç¦ç¨" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç ååº" prop="sortnum"> |
| | | <el-input v-model="searchForm.sortnum" placeholder="请è¾å
¥æåºç ååº" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:projects:exportExcel']" @click="exportExcel">导åº</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> --> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:projects:create', 'business:projects:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaProjectsWindow.open('æ°å»ºæå¡é¡¹ç®')" icon="el-icon-plus" v-permissions="['business:projects:create']">æ°å»º</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column label="徿 " align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <!-- {{ row.imgurlfull }} --> |
| | | <el-image |
| | | v-if="!!row.imgurlfull" |
| | | style="width: 80px; height: 40px;" |
| | | :src="row.imgurlfull" |
| | | :preview-src-list="[row.imgurlfull]" |
| | | ></el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="åç§°" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="æåºç (ååº)" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" align="center" min-width="100px"></el-table-column> |
| | | |
| | | <el-table-column |
| | | v-if="containPermissions(['business:projects:update', 'business:projects:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | align="center" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaProjectsWindow.open('ç¼è¾æå¡é¡¹ç®', row)" icon="el-icon-edit" v-permissions="['business:projects:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:projects:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaProjectsWindow ref="operaProjectsWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaProjectsWindow from '@/views/meeting/components/OperaProjectsWindow' |
| | | export default { |
| | | name: 'Projects', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaProjectsWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | id: '', |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | name: '', |
| | | remark: '', |
| | | imgurl: '', |
| | | status: '', |
| | | sortnum: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'æå¡é¡¹ç®ä¿¡æ¯è¡¨', |
| | | api: '@/views/meeting/api/projects', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:roomrecord:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="searchForm.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="人åå§å" prop="name"> |
| | | <el-input v-model="searchForm.userName" placeholder="请è¾å
¥äººåå§å" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ä¸»é¢" prop="name"> |
| | | <el-input v-model="searchForm.meeting" placeholder="请è¾å
¥ä¼è®®ä¸»é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç±»å" prop="status"> |
| | | <el-select v-model= "searchForm.objType" placeholder="è¯·éæ©ç¶æ"> |
| | | <el-option key="0" value="0" label="管çå" /> |
| | | <el-option key="1" value="1" label="åä¼äººå" /> |
| | | <el-option key="2" value="2" label="å¤é¨äººå" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å¼é¨æ¶é´" prop="startTime"> |
| | | <el-date-picker |
| | | v-model="date" |
| | | type="datetimerange" |
| | | range-separator="è³" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | @change="selectDate" |
| | | ></el-date-picker> |
| | | <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å¼å§æ¶é´" @change="search"/> --> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:roomrecord:exportExcel']" @click="exportExcel">导åº</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <!-- <ul class="toolbar" v-permissions="['business:roomrecord:create', 'business:roomrecord:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaRoomRecordWindow.open('æ°å»ºä¼è®®å®¤å¼é¨è®°å½è¡¨')" icon="el-icon-plus" v-permissions="['business:roomrecord:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:roomrecord:delete']">å é¤</el-button></li> |
| | | </ul>--> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column label="人åå§å" prop="userName" min-width="100px"></el-table-column> |
| | | <el-table-column label="人åç±»å" prop="objType" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.objType==0" >管çå</span> |
| | | <span v-else-if="row.objType==1">åä¼äººå</span> |
| | | <span v-else >å¤é¨äººå</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ä¼è®®ä¸»é¢" prop="meeting" min-width="100px"></el-table-column> |
| | | <el-table-column label="ä¼è®®å®¤" prop="roomName" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å¼é¨æ¶é´" min-width="100px"></el-table-column> |
| | | <!-- <el-table-column |
| | | v-if="containPermissions(['business:roomrecord:update', 'business:roomrecord:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaRoomRecordWindow.open('ç¼è¾ä¼è®®å®¤å¼é¨è®°å½è¡¨', row)" icon="el-icon-edit" v-permissions="['business:roomrecord:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:roomrecord:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column>--> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaRoomRecordWindow ref="operaRoomRecordWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaRoomRecordWindow from '@/views/meeting/components/OperaRoomRecordWindow' |
| | | import { findList } from '@/api/meeting/rooms' |
| | | export default { |
| | | name: 'RoomRecord', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaRoomRecordWindow }, |
| | | data () { |
| | | return { |
| | | date:[], |
| | | // æç´¢ |
| | | rooms: [ |
| | | { name: '201ä¼è®®å®¤', id: '0' } |
| | | ], |
| | | // æç´¢ |
| | | searchForm: { |
| | | userName: '', |
| | | roomId: '', |
| | | meeting: '', |
| | | objType:null, |
| | | startDate: null, |
| | | endDate: null, |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤å¼é¨è®°å½è¡¨', |
| | | api: '/meeting/roomRecord', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | findList({}) |
| | | .then(res => { |
| | | this.rooms = res |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | selectDate(v) { |
| | | this.searchForm.endDate = v[1] |
| | | this.searchForm.startDate = v[0] |
| | | }, |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.date = [] |
| | | this.searchForm = { |
| | | userName: '', |
| | | roomId: '', |
| | | meeting: '', |
| | | objType:null, |
| | | startDate: null, |
| | | endDate: null, |
| | | } |
| | | this.search() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:rooms:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> |
| | | <!-- <el-form-item label="ä¼è®®å®¤åç§°" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> --> |
| | | <!-- <el-form-item label="ä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="searchForm.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option |
| | | v-for="item in rooms" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <el-form-item label="年份" prop="yearNum"> |
| | | <!-- <div @click="selectMemberAction"> |
| | | <el-input v-model="searchForm.id" disabled placeholder="éæ©é¨é¨æå"></el-input> |
| | | </div> --> |
| | | <!-- {{ searchForm.sysList }} --> |
| | | <el-select |
| | | v-model="searchForm.yearNum" |
| | | clearable |
| | | placeholder="éæ©é¨é¨æå" |
| | | > |
| | | <el-option |
| | | v-for="item in years" |
| | | :key="item" |
| | | :value="item" |
| | | :label="`${item}å¹´`" |
| | | ></el-option> |
| | | <!-- <el-option :key="1" :value="1" label="ç¦ç¨" /> --> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:rooms:create', 'business:rooms:delete']"> |
| | | <li><el-button :loading="isWorking.export" v-permissions="['business:rooms:exportExcel']" @click="exportExcel">导åº</el-button></li> |
| | | <!-- <li><el-button type="primary" @click="$refs.operaRoomsWindow.open('æ°å»ºä¼è®®å®¤')" v-permissions="['business:rooms:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" v-permissions="['business:rooms:delete']">å é¤</el-button></li> --> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column prop="roomName" label="ä¼è®®å®¤" align="center" min-width="120px"></el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.januaryCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="äºæ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.februaryCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.marchCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åæ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.aprilCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="äºæ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.mayCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å
æ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.juneCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.julyCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å
«æ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.augustCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="乿" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.septemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åæ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.octoberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å䏿" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.novemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åäºæ" align="center" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.decemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | | </template> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import { getRoomStatistics, exportRoomStatistics } from '@/api/meeting/bookings' |
| | | // import { findList } from '@/api/meeting/rooms' |
| | | export default { |
| | | name: 'Rooms', |
| | | extends: BaseTable, |
| | | components: { TableLayout, }, |
| | | data () { |
| | | return { |
| | | years: [ |
| | | '2021', '2022', '2023' |
| | | ], |
| | | rooms: [], |
| | | // æç´¢ |
| | | searchForm: { |
| | | yearNum: '', |
| | | roomId: '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤ä¿¡æ¯è¡¨', |
| | | api: '/meeting/rooms', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | // findList({}) |
| | | // .then(res => { |
| | | // this.rooms = res |
| | | // }) |
| | | let tempYear = new Date().getFullYear() |
| | | this.searchForm.yearNum = tempYear |
| | | this.years = [tempYear-2, tempYear-1, tempYear] |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // 导åºExcel |
| | | exportExcel () { |
| | | this.__checkApi() |
| | | this.$dialog.exportConfirm('确认导åºåï¼') |
| | | .then(() => { |
| | | this.isWorking.export = true |
| | | exportRoomStatistics({ |
| | | page: this.tableData.pagination.pageIndex, |
| | | capacity: 1000000, |
| | | model: this.searchForm, |
| | | sorts: this.tableData.sorts |
| | | }) |
| | | .then(response => { |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.export = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | // 页ç åæ´å¤ç |
| | | handlePageChange () { |
| | | this.isWorking.search = true |
| | | getRoomStatistics(this.searchForm.yearNum, this.searchForm.roomId) |
| | | .then(data => { |
| | | this.tableData.list = data |
| | | // this.tableData.pagination.total = data.total |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.search = false |
| | | }) |
| | | }, |
| | | // selectMemberAction() { |
| | | // console.log('21212'); |
| | | // this.$refs.selectMember.open('éæ©ç®¡çå') |
| | | // }, |
| | | changeStatus(item) { |
| | | updateById({ |
| | | id: item.id, |
| | | status: item.status |
| | | }).then(res => { |
| | | this.search() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff !important; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:rooms:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ä¼è®®å®¤åç§°" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="管çå" prop="sysList"> |
| | | <el-select |
| | | v-model="searchForm.sysList" |
| | | filterable |
| | | clearable |
| | | multiple |
| | | placeholder="éæ©é¨é¨æå" |
| | | > |
| | | <el-option |
| | | v-for="item in userList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.department?`${item.department.name}-${item.realname}`:item.realname" |
| | | ></el-option> |
| | | <!-- :label="`${item.department.name}-${item.realname}`" --> |
| | | <!-- <el-option :key="1" :value="1" label="ç¦ç¨" /> --> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:rooms:exportExcel']" @click="exportExcel">导åº</el-button> --> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:rooms:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaRoomsWindow.open('æ°å»ºä¼è®®å®¤')" v-permissions="['business:rooms:create']">æ°å»º</el-button></li> |
| | | <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:rooms:delete']">å é¤</el-button></li> --> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <!-- <el-table-column type="selection" width="55"></el-table-column> --> |
| | | <el-table-column prop="name" label="ä¼è®®å®¤åç§°" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.name }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="startTime" label="弿¾æ¶é´" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.startTime}-${row.endTime}` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="intervalTime" label="ç²åº¦ï¼åéï¼" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="limitNum" label="容纳人æ°" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="limitNum" label="管çå" min-width="140px" align="center" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <span class="long-title-style">{{ row.sysList.map(item => item.realName).join(',') }}</span> |
| | | |
| | | <!-- <ul> |
| | | <li v-for="sys in row.sysList" :key="sys.id">{{sys.realName}}</li> |
| | | </ul> --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="limitNum" label="å¯éæå¡é¡¹" align="center" min-width="140px" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <div class="long-title-style">{{ row.projectList.map(item => item.projectName).join('|') }}</div> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#999" |
| | | :active-value="0" |
| | | :inactive-value="1" |
| | | @change="changeStatus(row)" |
| | | ></el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" align="center" min-width="140px"></el-table-column> |
| | | <!-- <el-table-column prop="editor" label="æ´æ°äººç¼ç " min-width="100px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æ´æ°æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="isdeleted" label="æ¯å¦å é¤0å¦ 1æ¯" min-width="100px"></el-table-column> |
| | | <el-table-column prop="remark" label="夿³¨" min-width="100px"></el-table-column> |
| | | <el-table-column prop="imgurl" label="ä¼è®®å®¤å¾ç" min-width="100px"></el-table-column> |
| | | <el-table-column prop="tips" label="使ç¨é¡»ç¥" min-width="100px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ 0å¯ç¨ 1ç¦ç¨" min-width="100px"></el-table-column> --> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:rooms:update', 'business:rooms:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaRoomsWindow.open('ç¼è¾ä¼è®®å®¤', row)" v-permissions="['business:rooms:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" v-permissions="['business:rooms:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaRoomsWindow ref="operaRoomsWindow" @success="handlePageChange"/> |
| | | <!-- <selectMember ref="selectMember" @done=""/> --> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaRoomsWindow from '@/views/meeting/components/OperaRoomsWindow' |
| | | import { fetchList as userList } from '@/api/system/user' |
| | | // import selectMember from '@/components/meeting/selectMember' |
| | | import { updateStatusById } from '@/api/meeting/rooms' |
| | | export default { |
| | | name: 'Rooms', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaRoomsWindow }, |
| | | data () { |
| | | return { |
| | | userList: [], |
| | | // æç´¢ |
| | | searchForm: { |
| | | id: '', |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | name: '', |
| | | remark: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | limitNum: '', |
| | | imgurl: '', |
| | | tips: '', |
| | | status: '', |
| | | intervalTime: '', |
| | | sysList: [] |
| | | } |
| | | } |
| | | }, |
| | | provide() { |
| | | return { |
| | | userList: () => this.userList |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤ä¿¡æ¯è¡¨', |
| | | api: '/meeting/rooms', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | userList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: { realname: this.filterText }, |
| | | }) |
| | | .then(res => { |
| | | this.userList = res.records |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // 页ç åæ´å¤ç |
| | | handlePageChange (pageIndex) { |
| | | this.__checkApi() |
| | | this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex |
| | | this.isWorking.search = true |
| | | let sysList = [...this.searchForm.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | console.log(sysList); |
| | | this.api.fetchList({ |
| | | page: this.tableData.pagination.pageIndex, |
| | | capacity: this.tableData.pagination.pageSize, |
| | | model: { |
| | | ...this.searchForm, |
| | | sysList |
| | | }, |
| | | sorts: this.tableData.sorts |
| | | }) |
| | | .then(data => { |
| | | this.tableData.list = data.records |
| | | this.tableData.pagination.total = data.total |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.search = false |
| | | }) |
| | | }, |
| | | // selectMemberAction() { |
| | | // console.log('21212'); |
| | | // this.$refs.selectMember.open('éæ©ç®¡çå') |
| | | // }, |
| | | changeStatus(item) { |
| | | updateStatusById({ |
| | | id: item.id, |
| | | status: item.status |
| | | }) |
| | | .then(() => { |
| | | this.$message.success('ä¿®æ¹æå') |
| | | |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | }) |
| | | .finally(() => { |
| | | this.handlePageChange() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff !important; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:rooms:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="人å" prop="userId"> |
| | | <el-select |
| | | v-model="searchForm.userId" |
| | | clearable |
| | | filterable |
| | | placeholder="éæ©äººå" |
| | | > |
| | | <el-option |
| | | v-for="item in sysList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.department?`${item.department.name}-${item.realname}`:item.realname" |
| | | ></el-option> |
| | | <!-- :label="item.name" --> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="年份" prop="yearNum"> |
| | | <el-select |
| | | v-model="searchForm.yearNum" |
| | | clearable |
| | | placeholder="鿩年份" |
| | | > |
| | | <el-option |
| | | v-for="item in years" |
| | | :key="item" |
| | | :value="item" |
| | | :label="`${item}å¹´`" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <!-- v-permissions="['business:rooms:create', 'business:rooms:delete']" --> |
| | | <ul class="toolbar" > |
| | | <!-- v-permissions="['business:rooms:exportExcel']" --> |
| | | <li><el-button :loading="isWorking.export" @click="exportExcel">导åº</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <!-- <el-table-column prop="roomName" label="ä¼è®®å®¤" align="center" min-width="100px"></el-table-column> --> |
| | | <el-table-column prop="realname" label="å§å" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.januaryCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="äºæ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.februaryCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.marchCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åæ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.aprilCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="äºæ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.mayCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å
æ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.juneCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="䏿" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.julyCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å
«æ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.augustCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="乿" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.septemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åæ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.octoberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="å䏿" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.novemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="januaryCount" label="åäºæ" align="center" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | {{ `${row.decemberCount}H` }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import { getUserStatistics, exportUserStatistics } from '@/api/meeting/bookings' |
| | | import { fetchList as userList } from '@/api/system/user' |
| | | |
| | | export default { |
| | | name: 'Rooms', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination }, |
| | | data () { |
| | | return { |
| | | years: [ |
| | | '2021', '2022', '2023' |
| | | ], |
| | | sysList: [], |
| | | // æç´¢ |
| | | searchForm: { |
| | | yearNum: '', |
| | | userId: '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤ä¿¡æ¯è¡¨', |
| | | api: '/meeting/rooms', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | let tempYear = new Date().getFullYear() |
| | | this.searchForm.yearNum = tempYear |
| | | this.years = [tempYear-2, tempYear-1, tempYear] |
| | | |
| | | // findList({}) |
| | | // .then(res => { |
| | | // this.rooms = res |
| | | // }) |
| | | userList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: { realname: this.filterText }, |
| | | }) |
| | | .then(res => { |
| | | console.log('userList', res); |
| | | this.sysList = res.records |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // 导åºExcel |
| | | exportExcel () { |
| | | this.__checkApi() |
| | | this.$dialog.exportConfirm('确认导åºåï¼') |
| | | .then(() => { |
| | | this.isWorking.export = true |
| | | exportUserStatistics({ |
| | | page: this.tableData.pagination.pageIndex, |
| | | capacity: 1000000, |
| | | model: this.searchForm, |
| | | sorts: this.tableData.sorts |
| | | }) |
| | | .then(response => { |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.export = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | handlePageChange (pageIndex) { |
| | | this.__checkApi() |
| | | this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex |
| | | this.isWorking.search = true |
| | | getUserStatistics({ |
| | | page: this.tableData.pagination.pageIndex, |
| | | capacity: this.tableData.pagination.pageSize, |
| | | model: this.searchForm, |
| | | sorts: this.tableData.sorts |
| | | }) |
| | | .then(data => { |
| | | this.tableData.list = data.records |
| | | this.tableData.pagination.total = data.total |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.search = false |
| | | }) |
| | | }, |
| | | // selectMemberAction() { |
| | | // console.log('21212'); |
| | | // this.$refs.selectMember.open('éæ©ç®¡çå') |
| | | // }, |
| | | changeStatus(item) { |
| | | updateById({ |
| | | id: item.id, |
| | | status: item.status |
| | | }).then(res => { |
| | | this.search() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff !important; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| | |
| | | package com.doumee.api.common; |
| | | |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.service.common.CaptchaService; |
| | |
| | | package com.doumee.api.common; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.utils.Constants; |
| | |
| | | @PostMapping("/create") |
| | | @CloudRequiredPermission("business:bookingtime:create") |
| | | public ApiResponse create(@RequestBody BookingTime bookingTime,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | bookingTime.setLoginUserInfo(this.getLoginUser(token)); |
| | | return ApiResponse.success(bookingTimeService.create(bookingTime)); |
| | | } |
| | | |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:bookingtime:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | @CloudRequiredPermission("business:bookingtime:update") |
| | | public ApiResponse updateById(@RequestBody BookingTime bookingTime) { |
| | | public ApiResponse updateById(@RequestBody BookingTime bookingTime, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | bookingTime.setLoginUserInfo(this.getLoginUser(token)); |
| | | bookingTimeService.updateById(bookingTime); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @CloudRequiredPermission("business:bookingtime:query") |
| | | public ApiResponse<PageData<BookingTime>> findPage (@RequestBody PageWrap<BookingTime> pageWrap) { |
| | | public ApiResponse<PageData<BookingTime>> findPage (@RequestBody PageWrap<BookingTime> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(bookingTimeService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:bookingtime:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<BookingTime> pageWrap, HttpServletResponse response) { |
| | | public void exportExcel (@RequestBody PageWrap<BookingTime> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | ExcelExporter.build(BookingTime.class).export(bookingTimeService.findPage(pageWrap).getRecords(), "ä¼è®®å®¤é¢çº¦æ¶é´æ®µå
³è表", response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | | @CloudRequiredPermission("business:bookingtime:query") |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(bookingTimeService.findById(id)); |
| | | } |
| | | |
| | |
| | | @ApiOperation("æ ¹æ®ç§å®¤æ¥ææ¥è¯¢ææçæ¶é´æ®µ") |
| | | @PostMapping("/findList") |
| | | @CloudRequiredPermission("business:roomtime:query") |
| | | public ApiResponse<List<BookingTime>> findPage (@RequestBody BookingTime pageWrap) { |
| | | public ApiResponse<List<BookingTime>> findPage (@RequestBody BookingTime pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(bookingTimeService.findList(pageWrap)); |
| | | } |
| | | } |
| ÎļþÃû´Ó server/meeting/meeting_admin/src/main/java/com/doumee/api/CloudBookingsController.java ÐÞ¸Ä |
| | |
| | | package com.doumee.api; |
| | | package com.doumee.cloud.admin; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.config.annotation.LoginNoRequired; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.excel.ExcelExporter; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.model.ApiResponse; |
| | |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | |
| | | * @author æ±è¹è¹ |
| | | * @date 2023/05/04 18:18 |
| | | */ |
| | | @Api(tags = "å¾®æå¡-ä¼è®®å®¤ç¸å
³æ¥å£") |
| | | @Api(tags = "ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨") |
| | | @RestController |
| | | @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/bookings") |
| | | public class CloudBookingsController extends BaseController { |
| | | @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/bookings") |
| | | public class BookingsCloudController extends BaseController { |
| | | |
| | | @Autowired |
| | | private BookingsService bookingsService; |
| | | |
| | | @ApiOperation("æµè¯ç½ç®¡") |
| | | @GetMapping("/test") |
| | | public ApiResponse test() { |
| | | return ApiResponse.success("ä¼è®®å®¤æµè¯æå"); |
| | | } |
| | | |
| | | @LoginNoRequired |
| | | @ApiOperation("æµè¯æ éç»å½æå") |
| | | @GetMapping("/testNoLogin") |
| | | public ApiResponse testNoLogin() { |
| | | return ApiResponse.success("ä¼è®®å®¤ç®¡çæµè¯æ éç»å½æå"); |
| | | } |
| | | @PreventRepeat |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | public ApiResponse create(@RequestBody Bookings bookings) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | @RequiresPermissions("business:bookings:create") |
| | | public ApiResponse create(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | LoginUserInfo user = getLoginUser(token); |
| | | bookings.setLoginUserInfo(user); |
| | | bookings.setCreator(user.getId()); |
| | | return ApiResponse.success(bookingsService.create(bookings)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | bookingsService.deleteById(id); |
| | | @RequiresPermissions("business:bookings:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | bookingsService.deleteById(id,this.getLoginUser(token)); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | @RequiresPermissions("business:bookings:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | | for (String id : idArray ){ |
| | | idList.add(Integer.valueOf(id)); |
| | | } |
| | | bookingsService.deleteByIdInBatch(idList); |
| | | bookingsService.deleteByIdInBatch(idList,this.getLoginUser(token)); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | public ApiResponse updateById(@RequestBody Bookings bookings) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | bookings.setCreator(user.getId()); |
| | | @RequiresPermissions("business:bookings:update") |
| | | public ApiResponse updateById(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | LoginUserInfo user = getLoginUser(token); |
| | | bookings.setLoginUserInfo(user); |
| | | bookings.setEditor(user.getId()); |
| | | bookingsService.updateById(bookings); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | public ApiResponse<PageData<Bookings>> findPage (@RequestBody PageWrap<Bookings> pageWrap) { |
| | | @RequiresPermissions("business:bookings:query") |
| | | public ApiResponse<PageData<Bookings>> findPage (@RequestBody PageWrap<Bookings> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | return ApiResponse.success(bookingsService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @RequiresPermissions("business:bookings:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<Bookings> pageWrap, HttpServletResponse response) { |
| | | public void exportExcel (@RequestBody PageWrap<Bookings> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | ExcelExporter.build(Bookings.class).export(bookingsService.findPage(pageWrap).getRecords(), "ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨", response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | | public ApiResponse<MeetingDetailResponse> findById(@PathVariable Integer id) { |
| | | @RequiresPermissions("business:bookings:query") |
| | | public ApiResponse<MeetingDetailResponse> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | return ApiResponse.success(bookingsService.getMeetingDetail(id)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("åæ¶") |
| | | @PostMapping("/cancelById") |
| | | public ApiResponse cancelById(@RequestBody Bookings bookings) { |
| | | @RequiresPermissions("business:bookings:update") |
| | | public ApiResponse cancelById(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | bookings.setLoginUserInfo(this.getLoginUser(token)); |
| | | bookingsService.cancelById(bookings); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡") |
| | | @GetMapping("/getRoomStatistics") |
| | | @RequiresPermissions("business:bookings:update") |
| | | public ApiResponse<List<RoomStatisticsVo>> getRoomStatistics(@RequestParam Integer yearNum, @RequestParam Integer roomId){ |
| | | return ApiResponse.success(bookingsService.getRoomStatistics(yearNum)); |
| | | } |
| | | |
| | | @ApiOperation("人ååå ä¼è®®æ¶å¸¸") |
| | | @PostMapping("/getUserStatistics") |
| | | @RequiresPermissions("business:bookings:update") |
| | | public ApiResponse<PageData<UserStatisticsVo>> getUserStatistics(@RequestBody PageWrap<UserStatisticsDTO> pageWrap ){ |
| | | return ApiResponse.success(bookingsService.getUserStatistics(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("人åå伿¶é¿ç»è®¡å¯¼åºExcel") |
| | | @PostMapping("/exportUserStatistics") |
| | | public void exportUserStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response) { |
| | | @RequiresPermissions("business:bookings:exportExcel") |
| | | public void exportUserStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | |
| | | List<UserStatisticsVo> records = bookingsService.getUserStatistics(pageWrap).getRecords(); |
| | | if (!CollectionUtils.isEmpty(records)){ |
| | |
| | | |
| | | @ApiOperation("ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡å¯¼åºExcel") |
| | | @PostMapping("/exportRoomStatistics") |
| | | public void exportRoomStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response) { |
| | | @RequiresPermissions("business:bookings:exportExcel") |
| | | public void exportRoomStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | List<RoomStatisticsVo> roomStatistics = bookingsService.getRoomStatistics(pageWrap.getModel().getYearNum()); |
| | | if (!CollectionUtils.isEmpty(roomStatistics)){ |
| | | JSONArray o = (JSONArray) JSON.toJSON(roomStatistics); |
| | |
| | | startTime = DateUtil.getMonday(); |
| | | endTime = DateUtil.getSunday(); |
| | | } |
| | | return ApiResponse.success(bookingsService.getMyJoinBookingMeet(getLoginUser().getId(), null,startTime,endTime)); |
| | | return ApiResponse.success(bookingsService.getMyJoinBookingMeet(getLoginUser(null).getId(), null,startTime,endTime)); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ApiOperation("è·åç¨æ·å½å½æé¢çº¦ä¼è®®æ
åµ") |
| | | @PostMapping("/findMothBookingMeet") |
| | | public ApiResponse<List<DateTimeResourceDate>> findMothBookingMeet( @RequestParam(required = false) Integer roomId,String dateMonth){ |
| | | |
| | | |
| | | return ApiResponse.success(bookingsService.findMothBookingMeet(getLoginUser().getId(),roomId,dateMonth)); |
| | | return ApiResponse.success(bookingsService.findMothBookingMeet(getLoginUser(null).getId(),roomId,dateMonth)); |
| | | } |
| | | } |
| | |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), |
| | | @ApiImplicitParam(paramType = "query", dataType = "String", name = "yearMonth", value = "å¹´æ yyyy-MM", required = true) |
| | | }) |
| | | public ApiResponse<List<MonthDataResponse>> monthDay(@RequestParam String yearMonth) { |
| | | public ApiResponse<List<MonthDataResponse>> monthDay(@RequestParam String yearMonth, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | List<String> dataList = DateUtil.getDayByMonth(yearMonth); |
| | | List<MonthDataResponse> monthDataResponseList = new ArrayList<>(); |
| | |
| | | // @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), |
| | | @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "ä¼è®®ä¸»é®", required = true), |
| | | }) |
| | | public ApiResponse<MeetingDetailResponse> meetingDetail(@RequestParam Integer id) { |
| | | public ApiResponse<MeetingDetailResponse> meetingDetail( @RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam Integer id) { |
| | | return ApiResponse.success("æ¥è¯¢æå", bookingsService.getMeetingDetail(id)); |
| | | } |
| | | |
| | |
| | | }) |
| | | public ApiResponse<String> getQrCode(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | LoginUserInfo user = getLoginUser(token); |
| | | // LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | return ApiResponse.success("æ¥è¯¢æå", bookingsService.getQrCode(id,user.getId())); |
| | | } |
| | | |
| | |
| | | }) |
| | | public void getQrCodeImg(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token, HttpServletResponse response) throws Exception { |
| | | LoginUserInfo user = getLoginUser(token); |
| | | // LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | response.setHeader("Cache-Control", "no-store, no-cache"); |
| | | response.setContentType("image/jpeg"); |
| | | String content =bookingsService.getQrCode(id,user.getId()); |
| | |
| | | }) |
| | | public ApiResponse<Integer> reservationMeeting(@RequestBody BookingsRequest bookingsRequest,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | LoginUserInfo user = getLoginUser(token); |
| | | // LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | bookingsRequest.setCreator(user.getId()); |
| | | bookingsRequest.setEditor(user.getId()); |
| | | bookingsRequest.setLoginUserInfo(this.getLoginUser(token)); |
| | | return ApiResponse.success("æä½æå",bookingsService.reservationMeeting(bookingsRequest)); |
| | | } |
| | | |
| | |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | @CloudRequiredPermission("business:multifile:create") |
| | | public ApiResponse create(@RequestBody Multifile multifile) { |
| | | public ApiResponse create(@RequestBody Multifile multifile, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(multifileService.create(multifile)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | @CloudRequiredPermission("business:multifile:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | multifileService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:multifile:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | @CloudRequiredPermission("business:multifile:update") |
| | | public ApiResponse updateById(@RequestBody Multifile multifile) { |
| | | public ApiResponse updateById(@RequestBody Multifile multifile, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | multifileService.updateById(multifile); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @CloudRequiredPermission("business:multifile:query") |
| | | public ApiResponse<PageData<Multifile>> findPage (@RequestBody PageWrap<Multifile> pageWrap) { |
| | | public ApiResponse<PageData<Multifile>> findPage (@RequestBody PageWrap<Multifile> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(multifileService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:multifile:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<Multifile> pageWrap, HttpServletResponse response) { |
| | | public void exportExcel (@RequestBody PageWrap<Multifile> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | ExcelExporter.build(Multifile.class).export(multifileService.findPage(pageWrap).getRecords(), "éä»¶ä¸ä¼ ä¿¡æ¯è¡¨", response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | | @CloudRequiredPermission("business:multifile:query") |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(multifileService.findById(id)); |
| | | } |
| | | } |
| | |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | @CloudRequiredPermission("business:projectrel:create") |
| | | public ApiResponse create(@RequestBody ProjectRel projectRel) { |
| | | public ApiResponse create(@RequestBody ProjectRel projectRel, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectRelService.create(projectRel)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | @CloudRequiredPermission("business:projectrel:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | projectRelService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:projectrel:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | @CloudRequiredPermission("business:projectrel:update") |
| | | public ApiResponse updateById(@RequestBody ProjectRel projectRel) { |
| | | public ApiResponse updateById(@RequestBody ProjectRel projectRel, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | projectRelService.updateById(projectRel); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @CloudRequiredPermission("business:projectrel:query") |
| | | public ApiResponse<PageData<ProjectRel>> findPage (@RequestBody PageWrap<ProjectRel> pageWrap) { |
| | | public ApiResponse<PageData<ProjectRel>> findPage (@RequestBody PageWrap<ProjectRel> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectRelService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:projectrel:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<ProjectRel> pageWrap, HttpServletResponse response) { |
| | | public void exportExcel (@RequestBody PageWrap<ProjectRel> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | ExcelExporter.build(ProjectRel.class).export(projectRelService.findPage(pageWrap).getRecords(), "æå¡é¡¹ç®å
³è表", response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | | @CloudRequiredPermission("business:projectrel:query") |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectRelService.findById(id)); |
| | | } |
| | | } |
| | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | @CloudRequiredPermission("business:projects:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | projectsService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:projects:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @CloudRequiredPermission("business:projects:query") |
| | | public ApiResponse<PageData<Projects>> findPage (@RequestBody PageWrap<Projects> pageWrap) { |
| | | public ApiResponse<PageData<Projects>> findPage (@RequestBody PageWrap<Projects> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectsService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:projects:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<Projects> pageWrap, HttpServletResponse response) { |
| | | public void exportExcel (@RequestBody PageWrap<Projects> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | ExcelExporter.build(Projects.class).export(projectsService.findPage(pageWrap).getRecords(), "æå¡é¡¹ç®ä¿¡æ¯è¡¨", response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | | @CloudRequiredPermission("business:projects:query") |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectsService.findById(id)); |
| | | } |
| | | |
| | |
| | | @ApiOperation("ä¼è®®å
³èç项ç®") |
| | | @PostMapping("/findListByObjId") |
| | | @CloudRequiredPermission("business:projects:query") |
| | | public ApiResponse<List<ProjectsResponse>> findListByObjId (@RequestParam Integer objId, @RequestParam Integer objType) { |
| | | public ApiResponse<List<ProjectsResponse>> findListByObjId (@RequestParam Integer objId, @RequestParam Integer objType, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(projectsService.getProjectsList(objId,objType)); |
| | | } |
| | | |
| | |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | @CloudRequiredPermission("business:rooms:create") |
| | | public ApiResponse create(@RequestBody Rooms rooms) { |
| | | public ApiResponse create(@RequestBody Rooms rooms,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | rooms.setLoginUserInfo(this.getLoginUser(token)); |
| | | return ApiResponse.success(roomsService.create(rooms)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | @CloudRequiredPermission("business:rooms:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | roomsService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:rooms:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | @CloudRequiredPermission("business:rooms:update") |
| | | public ApiResponse updateById(@RequestBody Rooms rooms) { |
| | | public ApiResponse updateById(@RequestBody Rooms rooms,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | rooms.setLoginUserInfo(this.getLoginUser(token)); |
| | | roomsService.updateById(rooms); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | @CloudRequiredPermission("business:userrel:create") |
| | | public ApiResponse create(@RequestBody UserRel userRel) { |
| | | public ApiResponse create(@RequestBody UserRel userRel, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(userRelService.create(userRel)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå é¤") |
| | | @GetMapping("/delete/{id}") |
| | | @CloudRequiredPermission("business:userrel:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | userRelService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @CloudRequiredPermission("business:userrel:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | | for (String id : idArray) { |
| | |
| | | @ApiOperation("æ ¹æ®IDä¿®æ¹") |
| | | @PostMapping("/updateById") |
| | | @CloudRequiredPermission("business:userrel:update") |
| | | public ApiResponse updateById(@RequestBody UserRel userRel) { |
| | | public ApiResponse updateById(@RequestBody UserRel userRel, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | userRelService.updateById(userRel); |
| | | return ApiResponse.success(null); |
| | | } |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @CloudRequiredPermission("business:userrel:query") |
| | | public ApiResponse<PageData<UserRel>> findPage (@RequestBody PageWrap<UserRel> pageWrap) { |
| | | public ApiResponse<PageData<UserRel>> findPage (@RequestBody PageWrap<UserRel> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(userRelService.findPage(pageWrap)); |
| | | } |
| | | |
| | |
| | | password: nacos |
| | | config: |
| | | server-addr: http://175.27.187.84:8848 #é
ç½®Nacoså°å |
| | | namespace: dev_renkang |
| | | namespace: dmvisit |
| | | username: nacos |
| | | password: nacos |
| | | # file-extension: yaml |
| | |
| | | # data-id: com.doumee.meeting.admin |
| | | discovery: |
| | | server-addr: http://175.27.187.84:8848 #é
ç½®Nacoså°å |
| | | namespace: dev_renkang |
| | | namespace: dmvisit |
| | | username: nacos |
| | | password: nacos |
| | | # å®å
¨é
ç½® |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="utf-8" ?> |
| | | <configuration> |
| | | <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <layout class="ch.qos.logback.classic.PatternLayout"> |
| | | <pattern>%highlight(%date{yyyy-MM-dd HH:mm:ss}) | %highlight(%-5level) | %highlight(%thread) | %highlight(%logger) | %msg%n</pattern> |
| | | </layout> |
| | | </appender> |
| | | <property name="log.path" value="logs/meetingAdmin"></property> |
| | | <property name="log.fileSize" value="100MB"></property> |
| | | <property name="log.historyDays" value="7"></property> |
| | | |
| | | <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>ERROR</level> |
| | | <!--å¹é
å°±èå»--> |
| | | <onMatch>DENY</onMatch> |
| | | <onMismatch>ACCEPT</onMismatch> |
| | | </filter> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <!--è·¯å¾--> |
| | | <fileNamePattern>${log.path}/info.%d.%i.log</fileNamePattern> |
| | | <maxFileSize>${log.fileSize}</maxFileSize> |
| | | <maxHistory>${log.historyDays}</maxHistory> |
| | | <totalSizeCap>1GB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | |
| | | <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
| | | <level>ERROR</level> |
| | | </filter> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | </encoder> |
| | | <!--æ»å¨çç¥--> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <!--è·¯å¾--> |
| | | <fileNamePattern>${log.path}/error.%d.%i.log</fileNamePattern> |
| | | <maxFileSize>${log.fileSize}</maxFileSize> |
| | | <maxHistory>${log.historyDays}</maxHistory> |
| | | <totalSizeCap>1GB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <!-- 弿¥åå
¥æ¥å¿ --> |
| | | <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender"> |
| | | <!-- ä¸ä¸¢å¤±æ¥å¿.é»è®¤ç,妿éåç80%已满,åä¼ä¸¢å¼TRACTãDEBUGãINFO级å«çæ¥å¿ --> |
| | | <discardingThreshold >0</discardingThreshold> |
| | | <!-- æ´æ¹é»è®¤çéåçæ·±åº¦,该å¼ä¼å½±åæ§è½.é»è®¤å¼ä¸º256 --> |
| | | <queueSize>512</queueSize> |
| | | <!-- æ·»å éå çappender,æå¤åªè½æ·»å ä¸ä¸ª --> |
| | | <appender-ref ref ="fileInfoLog"/> |
| | | </appender> |
| | | <root level="info"> |
| | | <appender-ref ref="consoleLog"/> |
| | | <appender-ref ref="fileInfoLog"/> |
| | | <appender-ref ref="fileErrorLog"/> |
| | | </root> |
| | | </configuration> |
| | |
| | | package com.doumee.dao.business.model; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤é¢çº¦æ¶é´æ®µå
³è表") |
| | | @TableName("`meeting_book_time`") |
| | | public class BookingTime { |
| | | public class BookingTime extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import com.doumee.dao.system.model.Multifile; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨") |
| | | @TableName("`meeting_book`") |
| | | public class Bookings { |
| | | public class Bookings extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("设å¤ç®¡çä¿¡æ¯è¡¨") |
| | | @TableName("`devices`") |
| | | public class Devices { |
| | | public class Devices extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("æå¡é¡¹ç®å
³è表") |
| | | @TableName("`meeting_project_rel`") |
| | | public class ProjectRel { |
| | | public class ProjectRel extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("æå¡é¡¹ç®ä¿¡æ¯è¡¨") |
| | | @TableName("`meeting_projects`") |
| | | public class Projects { |
| | | public class Projects extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤å¼é¨è®°å½è¡¨") |
| | | @TableName("`meeting_room_record`") |
| | | public class RoomRecord { |
| | | public class RoomRecord extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤é¢çº¦æ¶é´æ®µä¿¡æ¯è¡¨") |
| | | @TableName("`meeting_room_time`") |
| | | public class RoomTime { |
| | | public class RoomTime extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤ä¿¡æ¯è¡¨") |
| | | @TableName("`meeting_rooms`") |
| | | public class Rooms { |
| | | public class Rooms extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤ç®¡çåååä¼äººåå
³è表") |
| | | @TableName("`meeting_user_rel`") |
| | | public class UserRel { |
| | | public class UserRel extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | package com.doumee.dao.web.request; |
| | | |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import com.doumee.dao.business.model.BookingTime; |
| | | import com.doumee.dao.system.model.Multifile; |
| | | import com.doumee.dao.business.model.ProjectRel; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ä¼è®®å®¤é¢å®è¯·æ±ç±»") |
| | | public class BookingsRequest { |
| | | public class BookingsRequest extends LoginUserModel { |
| | | |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | | private Integer id; |
| | |
| | | package com.doumee.service.business; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.admin.response.DevWgResponseParam; |
| | |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | void deleteById(Integer id); |
| | | void deleteById(Integer id,LoginUserInfo user); |
| | | |
| | | /** |
| | | * å é¤ |
| | | * |
| | | * @param bookings å®ä½å¯¹è±¡ |
| | | */ |
| | | void delete(Bookings bookings); |
| | | void delete(Bookings bookings,LoginUserInfo user); |
| | | |
| | | /** |
| | | * æ¹é主é®å é¤ |
| | | * |
| | | * @param ids 主é®é |
| | | */ |
| | | void deleteByIdInBatch(List<Integer> ids); |
| | | void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user); |
| | | |
| | | /** |
| | | * 䏻鮿´æ° |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void deleteById(Integer id) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | public void deleteById(Integer id,LoginUserInfo user) { |
| | | Bookings bookings = new Bookings(); |
| | | bookings.setId(id); |
| | | bookings.setIsdeleted(MeetConstants.ONE); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void delete(Bookings bookings) { |
| | | public void delete(Bookings bookings,LoginUserInfo user) { |
| | | UpdateWrapper<Bookings> deleteWrapper = new UpdateWrapper<>(bookings); |
| | | bookingsMapper.delete(deleteWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteByIdInBatch(List<Integer> ids) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | public void deleteByIdInBatch(List<Integer> ids,LoginUserInfo user) { |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | return; |
| | | } |
| | |
| | | if(dbBookings.getStatus().equals(MeetConstants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "æ¬æ¬¡æä½å¤±è´¥,é¢çº¦ç¶æå·²æµè½¬"); |
| | | } |
| | | LoginUserInfo user = new LoginUserInfo(); |
| | | user.setId(bookings.getCreator()); |
| | | LoginUserInfo user = bookings.getLoginUserInfo(); |
| | | isCreateParamValid(bookings, user); |
| | | bookings.setEditDate(new Date()); |
| | | bookings.setEditor(user.getId()); |
| | |
| | | @Override |
| | | public void cancelById(Bookings bs) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(user == null){ |
| | | user = bs.getLoginUserInfo(); |
| | | } |
| | | /* |
| | | if(Objects.isNull(bookings)||bookings.getId()==null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); |
| | |
| | | } |
| | | queryWrapper.orderByDesc(Bookings::getCreateDate); |
| | | |
| | | String path = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); |
| | | SimpleDateFormat format1 = new SimpleDateFormat("HH:mm"); |
| | |
| | | queryWrapper.orderByDesc(Bookings::getCreateDate); |
| | | |
| | | // String path = systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String path = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | Bookings result = bookingsJoinMapper.selectOne(queryWrapper.last("limit 1")); |
| | | |
| | | if (result != null) { |
| | |
| | | .orderByDesc(!Objects.isNull(pageWrap.getModel().getStatus())&&pageWrap.getModel().getStatus().equals(MeetConstants.TWO),"a.START_TIME") |
| | | .orderByAsc(Objects.isNull(pageWrap.getModel().getStatus())||pageWrap.getModel().getStatus().equals(MeetConstants.ONE),"a.START_TIME") |
| | | ); |
| | | String prefixUrl = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | ; |
| | | String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | page.getRecords().forEach(i -> { |
| | | i.setPrefixUrl(prefixUrl); |
| | | i.setPrefixUrl(path); |
| | | }); |
| | | return page; |
| | | } |
| | |
| | | //åä¼äººåå表 |
| | | SystemUser param = new SystemUser(); |
| | | List<SystemUser> userResponseList = systemUserService.findList(param); |
| | | String avatarPath = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String avatarPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.MEMBER_IMG).getCode(); |
| | | userResponseList.forEach(i -> { |
| | | if(StringUtils.isNotBlank(i.getAvatar())){ |
| | | i.setAvatar(avatarPath+i.getAvatar()); |
| | |
| | | }); |
| | | meetingDetailResponse.setUserResponseList(userResponseList); |
| | | //æå¡é¡¹ |
| | | String projectsPath = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String projectsPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | List<ProjectsResponse> projectsResponseList = projectsService.getProjectsList(id, MeetConstants.ONE); |
| | | projectsResponseList.forEach(i -> { |
| | | i.setPrefixUrl(projectsPath); |
| | |
| | | insert.setImgurl(projects.getImgurl()); |
| | | insert.setStatus(MeetConstants.ZERO); |
| | | insert.setSortnum(projects.getSortnum()); |
| | | insert.setCreateDate(new Date()); |
| | | projectsMapper.insert(insert); |
| | | return projects.getId(); |
| | | } |
| | |
| | | @Transactional(rollbackFor = {BusinessException.class, Exception.class}) |
| | | public Integer create(Rooms rooms) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | |
| | | if(user ==null){ |
| | | user = rooms.getLoginUserInfo(); |
| | | } |
| | | isCreateParamValid(rooms, user); |
| | | |
| | | Calendar starttime = Calendar.getInstance(); |
| | |
| | | rooms.setStartTime(DateUtil.formatDate(starttime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | rooms.setEndTime(DateUtil.formatDate(endtime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | //TODO æ´æ°ä¼è®®å®¤æ¶é´æ®µ |
| | | // æ´æ°ä¼è®®å®¤æ¶é´æ®µ |
| | | updateRoomTimes(rooms, user); |
| | | |
| | | //TODO æ·»å 管ç人å |
| | | // æ·»å 管ç人å |
| | | updateManager(rooms, user); |
| | | //TODO æ·»å 管æå¡é¡¹ç® |
| | | // æ·»å 管æå¡é¡¹ç® |
| | | updateProjectRel(rooms, user); |
| | | return rooms.getId(); |
| | | } |
| | |
| | | public void updateById(Rooms rooms) { |
| | | |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | |
| | | if(user ==null){ |
| | | user = rooms.getLoginUserInfo(); |
| | | } |
| | | isCreateParamValid(rooms, user); |
| | | |
| | | Calendar starttime = Calendar.getInstance(); |
| | |
| | | queryWrapper.exists("select u.id from user_rel u where u.ISDELETED=0 and u.OBJ_ID =t.id and u.USER_ID in (" + StringUtils.strip(collect.toString(),"[]")+" )"); |
| | | } |
| | | |
| | | String path = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String path = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | |
| | | IPage<Rooms> result = roomsJoinMapper.selectJoinPage(page, Rooms.class, queryWrapper); |
| | | result.getRecords().stream().forEach(s ->{ |
| | |
| | | .exists(" select 1 from user_rel u where u.USER_ID = "+pageWrap.getModel().getUserId()+" and u.ISDELETED = 0 and u.OBJ_ID = rooms.id and u.OBJ_TYPE = 0 ") |
| | | .orderByDesc("CREATE_DATE") |
| | | ); |
| | | String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() |
| | | + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | page.getRecords().forEach(s->{ |
| | | s.setPrefixUrl(prefixUrl); |
| | | |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªæ¥è¯¢å°ä¼è®®å®¤ä¿¡æ¯"); |
| | | } |
| | | |
| | | String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode(); |
| | | String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); |
| | | |
| | | roomsResponse.setPrefixUrl(prefixUrl); |
| | | |
| | |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | </properties> |
| | | <dependencies> |
| | | <dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-dependencies</artifactId> |
| | | <version>2.3.12.RELEASE</version> |
| | | <type>pom</type> |
| | | <scope>import</scope> |
| | | </dependency> |
| | | <!-- <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-bootstrap</artifactId> |
| | | </dependency>--> |
| | | <dependency> |
| | | <groupId>com.alibaba.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
| | | <!-- <version>2.2.7.RELEASE</version>--> |
| | | </dependency> |
| | | <!--<dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | |
| | | </dependency>--> |
| | | <dependency> |
| | | <groupId>com.alibaba.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
| | | <!-- <version>2.2.7.RELEASE</version>--> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.alibaba.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> |
| | | <!-- <version>2.2.7.RELEASE</version>--> |
| | | <!-- <version>2.2.7.RELEASE</version>--> |
| | | </dependency> |
| | | <!-- Swagger å¢å¼ºknife4j å¾®æå¡starter --> |
| | | <dependency> |
| | | <groupId>com.github.xiaoymin</groupId> |
| | | <artifactId>knife4j-micro-spring-boot-starter</artifactId> |
| | | <version>3.0.3</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | <!-- æ¥å£ææ¡£ --> |
| | | </dependencies> |
| | | </project> |
| | |
| | | password: nacos |
| | | discovery: |
| | | server-addr: http://175.27.187.84:8848 #é
ç½®Nacoså°å |
| | | namespace: dev_renkang |
| | | namespace: dmvisit |
| | | username: nacos |
| | | password: nacos |
| | | gateway: |
| | |
| | | import org.springframework.web.method.HandlerMethod; |
| | | import org.springframework.web.servlet.HandlerInterceptor; |
| | | |
| | | import javax.servlet.http.Cookie; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.Arrays; |
| | | import java.util.Enumeration; |
| | | |
| | | public class LoginHandlerInterceptor implements HandlerInterceptor { |
| | | |
| | |
| | | Class<?> beanType = handlerMethod.getBeanType(); |
| | | if (!beanType.isAnnotationPresent(LoginNoRequired.class) && !handlerMethod.hasMethodAnnotation(LoginNoRequired.class)) { |
| | | //è·åtoken |
| | | Cookie[] cookies = request.getCookies(); |
| | | String token = request.getHeader(Constants.HEADER_USER_TOKEN); // ä» http 请æ±å¤´ä¸ååº token |
| | | if(StringUtils.isBlank(token)){ |
| | | for(Cookie c :cookies){ |
| | | if(StringUtils.equals(c.getName(),Constants.HEADER_USER_TOKEN)){ |
| | | token = c.getValue(); |
| | | } |
| | | } |
| | | } |
| | | if (StringUtils.isNotBlank(token)) { |
| | | LoginUserInfo user = checkLogin(request,response); |
| | | LoginUserInfo user = checkLogin(token); |
| | | if (handlerMethod.hasMethodAnnotation(CloudRequiredPermission.class)) { |
| | | CloudRequiredPermission p = handlerMethod.getMethodAnnotation(CloudRequiredPermission.class); |
| | | if(p.value()!=null && p.value().length>0){ |
| | |
| | | return true; |
| | | } |
| | | |
| | | private LoginUserInfo checkLogin(HttpServletRequest request, HttpServletResponse response) { |
| | | String token = request.getHeader(Constants.HEADER_USER_TOKEN); |
| | | private LoginUserInfo checkLogin(String token) { |
| | | if (token == null || token.isEmpty()) { |
| | | throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"æªç»å½"); |
| | | } |
| | |
| | | |
| | | public static final String ACCESS_KEY = "ACCESS_KEY"; |
| | | public static final String ENDPOINT = "ENDPOINT"; |
| | | public static final String RESOURCE_PATH = "RESOURCE_PATH"; |
| | | public static final String RESOURCE_PATH = "FTP_RESOURCE_PATH"; |
| | | //åéä¼è®®å¼å§ 宿¶æåå¤å°åéåé |
| | | |
| | | public static final String SYSTEM ="SYSTEM"; |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("éä»¶ä¸ä¼ ä¿¡æ¯è¡¨") |
| | | @TableName("`multifile`") |
| | | public class Multifile { |
| | | public class Multifile extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import com.doumee.core.utils.Constants; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | @Data |
| | | @ApiModel("ç³»ç»æ¶æ¯ä¿¡æ¯è¡¨") |
| | | @TableName("`notices`") |
| | | public class Notices { |
| | | public class Notices extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("æ°æ®æéé
ç½®") |
| | | @TableName("SYSTEM_DATA_PERMISSION") |
| | | public class SystemDataPermission implements Serializable { |
| | | public class SystemDataPermission extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("é¨é¨") |
| | | public class SystemDepartment implements Serializable { |
| | | public class SystemDepartment extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("é¨é¨ç¨æ·") |
| | | public class SystemDepartmentUser implements Serializable { |
| | | public class SystemDepartmentUser extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("åå
¸") |
| | | public class SystemDict implements Serializable { |
| | | public class SystemDict extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("åå
¸æ°æ®") |
| | | public class SystemDictData implements Serializable { |
| | | public class SystemDictData extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ç»å½æ¥å¿") |
| | | public class SystemLoginLog { |
| | | public class SystemLoginLog extends LoginUserModel { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | import com.baomidou.mybatisplus.annotation.FieldStrategy; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ç³»ç»èå") |
| | | public class SystemMenu implements Serializable { |
| | | public class SystemMenu extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ç³»ç»æé") |
| | | public class SystemPermission implements Serializable { |
| | | public class SystemPermission extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | import com.baomidou.mybatisplus.annotation.FieldStrategy; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("å²ä½") |
| | | public class SystemPosition implements Serializable { |
| | | public class SystemPosition extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("å²ä½ç¨æ·") |
| | | public class SystemPositionUser implements Serializable { |
| | | public class SystemPositionUser extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ç³»ç»è§è²") |
| | | public class SystemRole implements Serializable { |
| | | public class SystemRole extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("è§è²èåå
³è") |
| | | public class SystemRoleMenu implements Serializable { |
| | | public class SystemRoleMenu extends LoginUserModel implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | | @TableId(type = IdType.AUTO) |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("è§è²æéå
³è") |
| | | public class SystemRolePermission implements Serializable { |
| | | public class SystemRolePermission extends LoginUserModel implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | | @TableId(type = IdType.AUTO) |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("è·è¸ªæ¥å¿") |
| | | public class SystemTraceLog implements Serializable { |
| | | public class SystemTraceLog extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.doumee.core.constants.OperaType; |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | @Data |
| | | @ApiModel("ç³»ç»ç¨æ·") |
| | | @TableName("`SYSTEM_USER`") |
| | | public class SystemUser implements Serializable { |
| | | public class SystemUser extends LoginUserModel implements Serializable { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | |
| | | package com.doumee.dao.system.model; |
| | | |
| | | import com.doumee.core.model.LoginUserModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("ç¨æ·è§è²å
³è") |
| | | public class SystemUserRole implements Serializable { |
| | | public class SystemUserRole extends LoginUserModel implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | | @TableId(type = IdType.AUTO) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.cloud.common; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.FtpUtil; |
| | | import com.doumee.core.utils.aliyun.ALiYunUtil; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.springframework.web.multipart.MultipartHttpServletRequest; |
| | | import org.springframework.web.multipart.commons.CommonsMultipartResolver; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.PrintWriter; |
| | | import java.util.HashMap; |
| | | import java.util.Iterator; |
| | | import java.util.Map; |
| | | import java.util.UUID; |
| | | |
| | | /** |
| | | * @author Eva.Caesar Liu |
| | | * @date 2023/02/14 11:14 |
| | | */ |
| | | @Api(tags = "å
Œ
±ä¸ä¼ æ¥å£") |
| | | @Trace(exclude = true) |
| | | @RestController |
| | | @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/public") |
| | | @Slf4j |
| | | public class PublicCloudController extends BaseController { |
| | | |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | |
| | | |
| | | public static FtpUtil ftp = null; |
| | | |
| | | @ApiOperation(value = "ä¸ä¼ æä»¶å°FTP") |
| | | @RequestMapping(method= RequestMethod.POST,value="/upload") |
| | | @ResponseBody |
| | | public void upload(HttpServletRequest request, HttpServletResponse response, String folder) throws Exception { |
| | | // folder = systemDictDataBiz.queryByCode(Constants.FTP,folder).getCode(); |
| | | String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode(); |
| | | InputStream is = null; |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.setContentType("text/html;charset=UTF-8"); |
| | | Map<String, Object> context = new HashMap<>(); |
| | | try { |
| | | if(ftp == null){ |
| | | ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(), |
| | | Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()), |
| | | systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode()); |
| | | }else{ |
| | | ftp.connect(); |
| | | } |
| | | |
| | | CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); |
| | | if (multipartResovler.isMultipart(request)) { |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | Iterator<String> it = multipartRequest.getFileNames(); |
| | | while (it.hasNext()) { |
| | | MultipartFile file = multipartRequest.getFile(it.next()); |
| | | String originname = file.getOriginalFilename(); |
| | | is = file.getInputStream(); |
| | | String date = DateUtil.getNowShortDate(); |
| | | String fName = date+"/"+ UUID.randomUUID()+".jpg"; |
| | | String fileName = folder+"/"+fName; |
| | | boolean r = ftp.uploadInputstream(is,fileName); |
| | | if(r){ |
| | | context.put("success", true); |
| | | context.put("code", 200); |
| | | context.put("errno",0); |
| | | JSONObject fileJSON = new JSONObject(); |
| | | // fileJSON.put("prefixPath", prefixPath); |
| | | // fileJSON.put("folder", folder); |
| | | fileJSON.put("url", prefixPath+fileName); |
| | | fileJSON.put("imgaddr", fName); |
| | | fileJSON.put("imgname", fileName); |
| | | fileJSON.put("originname", originname); |
| | | context.put("data",fileJSON); |
| | | context.put("message","è¯·æ±æå"); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("ãä¸ä¼ FTP失败ã======================"+e.getMessage()); |
| | | } |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | context.put("errno",0); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | |
| | | public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName, |
| | | String access_id, String access_key, String resourcePath, String endpoint) throws Exception { |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.setContentType("text/html;charset=UTF-8"); |
| | | Map<String, Object> context = new HashMap<>(); |
| | | CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); |
| | | if (multipartResovler.isMultipart(request)) { |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | Iterator<String> it = multipartRequest.getFileNames(); |
| | | while (it.hasNext()) { |
| | | MultipartFile file = multipartRequest.getFile((String) it.next());// file |
| | | // multipartRequest.getFile((String) |
| | | // it.next()); |
| | | if (file != null) { |
| | | // 1ãä¸ä¼ å°æå¡å¨ä¸´æ¶æä»¶å¤¹ |
| | | String uploadFileName = file.getOriginalFilename(); |
| | | String originname = uploadFileName; |
| | | if (originname.lastIndexOf("/") >= 0) { |
| | | originname = originname.substring(originname.lastIndexOf("/") + 1); |
| | | } |
| | | String nfix = "";// åç¼å |
| | | if (StringUtils.isNotBlank(uploadFileName)) { |
| | | nfix = uploadFileName.substring(uploadFileName.lastIndexOf(".")); |
| | | } |
| | | if (StringUtils.equalsIgnoreCase(nfix, ".exe")) { |
| | | context.put("code", 4000); |
| | | context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼\".exe\"ä¸ä¼ æè¯¯ï¼"); |
| | | return; |
| | | } |
| | | if (StringUtils.equalsIgnoreCase(nfix, ".dll")) { |
| | | context.put("code", 4000); |
| | | context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼\".dll\"ä¸ä¼ æè¯¯ï¼"); |
| | | return; |
| | | } |
| | | String nowDate = DateUtil.getNowShortDate();// å½åæ¶é´ï¼å¹´ææ¥ï¼ |
| | | String fileName = UUID.randomUUID().toString() + nfix; |
| | | String tempFileName = nowDate + "/" + fileName; |
| | | String key = folder + tempFileName;// æä»¶å |
| | | ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key); |
| | | if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) { |
| | | // ç§»å¨æå,è¿åæä»¶å |
| | | // sendSuccessMessage(response, resourcePath+key); |
| | | context.put("success", true); |
| | | context.put("code", 200); |
| | | context.put("errno",0); |
| | | JSONObject fileJSON = new JSONObject(); |
| | | fileJSON.put("url", resourcePath + key); |
| | | fileJSON.put("imgaddr", tempFileName); |
| | | fileJSON.put("imgname", fileName); |
| | | fileJSON.put("originname", originname); |
| | | context.put("data",fileJSON); |
| | | context.put("message","è¯·æ±æå"); |
| | | writerJson(response, context); |
| | | return; |
| | | } else { |
| | | // ç§»å¨å¤±è´¥ |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | context.put("errno",0); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | |
| | | public static void writerJson(HttpServletResponse response, Object object) { |
| | | response.setContentType("application/json"); |
| | | writer(response, JSONObject.toJSONString(object)); |
| | | } |
| | | |
| | | private static void writer(HttpServletResponse response, String str) { |
| | | try { |
| | | StringBuffer result = new StringBuffer(); |
| | | //设置页é¢ä¸ç¼å |
| | | response.setHeader("Pragma", "No-cache"); |
| | | response.setHeader("Cache-Control", "no-cache"); |
| | | response.setCharacterEncoding("UTF-8"); |
| | | PrintWriter out = null; |
| | | out = response.getWriter(); |
| | | out.print(str); |
| | | out.flush(); |
| | | out.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception { |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.setContentType("text/html;charset=UTF-8"); |
| | | CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); |
| | | Map<String, Object> context = new HashMap<>(); |
| | | if (multipartResovler.isMultipart(request)) { |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | Iterator<String> it = multipartRequest.getFileNames(); |
| | | while (it.hasNext()) { |
| | | MultipartFile file = multipartRequest.getFile((String) it.next());// file |
| | | // = |
| | | // (CommonsMultipartFile) |
| | | // multipartRequest.getFile((String) |
| | | // it.next()); |
| | | if (file != null) { |
| | | if (file.getSize() > 200 * 1024 * 1024L) { |
| | | context.put("code", 4000); |
| | | context.put("message", "ä¸ä¼ æä»¶è¿å¤§"); |
| | | return; |
| | | } |
| | | System.out.println(file.getOriginalFilename()); |
| | | if (file.getOriginalFilename() == null) { |
| | | context.put("code", 4000); |
| | | context.put("message", "æä»¶åä¸å¯ä¸ºç©º"); |
| | | return; |
| | | } |
| | | /* |
| | | * if(file.getOriginalFilename().contains(",")||file.getOriginalFilename(). |
| | | * contains(" ")){ sendFailureMessage(response,"æä»¶åç§°æè¯¯,ä¸å¯å«æéå·çç¹æ®å符"); } |
| | | */ |
| | | |
| | | String nowDate = DateUtil.getNowShortDate(); |
| | | folder += nowDate + "/"; |
| | | String strDirPath = rootPath + folder; |
| | | File dirPath = new File(strDirPath); |
| | | if (!dirPath.exists()) { |
| | | dirPath.mkdirs(); |
| | | } |
| | | String uploadFileName = file.getOriginalFilename(); |
| | | String x = UUID.randomUUID().toString().replace("-", "") |
| | | + uploadFileName.substring(uploadFileName.lastIndexOf(".")); |
| | | String fileName = folder + x; |
| | | String fileNames = nowDate + "/" + x; |
| | | uploadFileName = uploadFileName.replace(" ", ""); |
| | | uploadFileName = uploadFileName.replace("ï¼", ","); |
| | | uploadFileName = uploadFileName.replaceAll(",", "-"); |
| | | System.err.println("R:" + fileName); |
| | | String fileAndPath = dir + fileName; |
| | | System.err.println("A:" + fileAndPath); |
| | | // 夿妿䏴æ¶ç®å½ä¸åå¨ç¸ååç§°çæä»¶å
å é¤ï¼å¨ä¸ä¼ |
| | | File tempFile = new File(rootPath + fileName); |
| | | if (tempFile.isFile() && tempFile.exists()) { |
| | | tempFile.getAbsoluteFile().delete(); |
| | | } |
| | | // ä¸ä¼ å°æå¡å¨ä¸´æ¶æä»¶å¤¹ |
| | | file.transferTo(tempFile); |
| | | // 转移å°FTPæå¡å¨ |
| | | String nfix = ""; |
| | | if (null != uploadFileName) { |
| | | nfix = uploadFileName.substring(uploadFileName.lastIndexOf(".")); |
| | | } |
| | | |
| | | if (StringUtils.equalsIgnoreCase(nfix, ".exe")) { |
| | | context.put("code", 4000); |
| | | context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼\".exe\"ä¸ä¼ æè¯¯ï¼"); |
| | | return; |
| | | } |
| | | if (StringUtils.equalsIgnoreCase(nfix, ".dll")) { |
| | | context.put("code", 4000); |
| | | context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼\".dll\"ä¸ä¼ æè¯¯ï¼"); |
| | | return; |
| | | } |
| | | |
| | | String remoteName = fileName; |
| | | String remoteFileName = fileAndPath; |
| | | |
| | | /* Map map = new HashMap(); |
| | | map.put("url", remoteFileName); |
| | | map.put("alt", uploadFileName); |
| | | map.put("href", remoteFileName); |
| | | List maps = Arrays.asList(remoteFileName);*/ |
| | | |
| | | if (true) { |
| | | // å
³éFTPæµ |
| | | // ç§»å¨æå,è¿åæä»¶å |
| | | |
| | | /*context.put("error", 0); |
| | | context.put("url", remoteFileName); |
| | | context.put("fullurl", remoteFileName); |
| | | context.put("fname", uploadFileName); |
| | | context.put("data", maps); |
| | | context.put("halfurl", fileNames);*/ |
| | | |
| | | context.put("success", true); |
| | | context.put("code", 200); |
| | | context.put("errno",0); |
| | | JSONObject fileJSON = new JSONObject(); |
| | | fileJSON.put("url", remoteFileName); |
| | | fileJSON.put("imgaddr", fileNames); |
| | | fileJSON.put("imgname", uploadFileName); |
| | | fileJSON.put("originname", uploadFileName); |
| | | context.put("data",fileJSON); |
| | | context.put("message","è¯·æ±æå"); |
| | | |
| | | writerJson(response, context); |
| | | return; |
| | | } else { |
| | | // ç§»å¨å¤±è´¥ |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | writerJson(response, context); |
| | | } |
| | | } |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | } |
| | | context.put("code", 0); |
| | | context.put("message", "ä¸ä¼ 失败"); |
| | | writerJson(response, context); |
| | | return; |
| | | } |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @ExcelColumn(name="å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | | @ExcelColumn(name="æ¯å¦å é¤0å¦ 1æ¯") |