| | |
| | | "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", |
| | |
| | | if (extParams.api == null) { |
| | | throw new Error('Missing config option \'api\'.') |
| | | } |
| | | this.api = require('@/api' + extParams.api) |
| | | if(extParams.api.indexOf('@/') ==-1){ |
| | | this.api = require('@/api' + extParams.api) |
| | | }else{ |
| | | this.api = require(extParams.api) |
| | | } |
| | | extParams['field.id'] && (this.configData['field.id'] = extParams['field.id']) |
| | | }, |
| | | /** |
| | |
| | | }, |
| | | 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' |
| | | }) |
| | | }, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 |
| | | } |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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 '@/views/meeting/api/rooms' |
| | | import { getSystemDictData } from '@/api/system/dictData' |
| | | import { fetchTree } from '@/api/system/department' |
| | | import { cancelById, bookingsDetail } from '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/projects' |
| | | import { findList } from '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/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: '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/rooms' |
| | | import { updateById } from '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/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: '@/views/meeting/api/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 '@/views/meeting/api/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: '@/views/meeting/api/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> |
| | |
| | | password: nacos |
| | | discovery: |
| | | server-addr: http://175.27.187.84:8848 #é
ç½®Nacoså°å |
| | | namespace: dev_renkang |
| | | namespace: dmvisit |
| | | username: nacos |
| | | password: nacos |
| | | gateway: |