From cc638d92ee7fe045bace3bcaba2b5edb2c21aa9f Mon Sep 17 00:00:00 2001 From: wang_yp <357754663@qq.com> Date: Tue, 24 Sep 2024 20:51:28 +0800 Subject: [PATCH] fix(api):update store --- package-lock.json | 614 +++++++++++++++++- package.json | 1 + src/App.tsx | 57 +- src/components/form/interface.ts | 2 + src/components/form/simple_form.tsx | 5 + src/pages/archives/archive.tsx | 301 +++++++++ src/pages/archives/archivesCat.tsx | 124 ++++ src/pages/archives/archivesCat_clumn.tsx | 46 ++ src/pages/archives/archivesFolder.tsx | 139 ++++ src/pages/archives/archives_conf.ts | 6 - src/pages/archives/index.tsx | 125 +--- src/pages/archives/preview.less | 28 + src/pages/archives/preview.tsx | 27 + src/pages/home/homeBottom/home_bottom.tsx | 20 +- src/pages/materialMgmt/material.tsx | 106 ++- src/pages/materialMgmt/material_column.tsx | 33 +- src/pages/polRegulations/cat_column.tsx | 19 + src/pages/polRegulations/index.tsx | 36 +- src/pages/polRegulations/regulations.tsx | 163 +++++ src/pages/polRegulations/regulationsCat.tsx | 127 ++++ .../polRegulations/regulations_column.tsx | 55 ++ src/pages/storage/index.tsx | 20 +- src/pages/user/user.tsx | 11 +- src/pages/whseMgmt/index.tsx | 18 +- src/store/archives.ts | 2 +- src/store/archives_category.ts | 2 +- src/store/folder.ts | 18 +- src/store/index.ts | 4 + src/store/regulations.ts | 19 + src/store/regulationsCat.ts | 19 + src/util/webRtc.ts | 47 ++ 31 files changed, 1931 insertions(+), 263 deletions(-) create mode 100644 src/pages/archives/archive.tsx create mode 100644 src/pages/archives/archivesCat.tsx create mode 100644 src/pages/archives/archivesCat_clumn.tsx create mode 100644 src/pages/archives/archivesFolder.tsx create mode 100644 src/pages/archives/preview.less create mode 100644 src/pages/archives/preview.tsx create mode 100644 src/pages/polRegulations/cat_column.tsx create mode 100644 src/pages/polRegulations/regulations.tsx create mode 100644 src/pages/polRegulations/regulationsCat.tsx create mode 100644 src/pages/polRegulations/regulations_column.tsx create mode 100644 src/store/regulations.ts create mode 100644 src/store/regulationsCat.ts create mode 100644 src/util/webRtc.ts diff --git a/package-lock.json b/package-lock.json index 9b3e4d3..b6b108a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,6 +82,7 @@ "webpack": "^5.64.4", "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^4.0.2", + "webrtc": "^1.14.1", "workbox-webpack-plugin": "^6.4.1" } }, @@ -7538,7 +7539,6 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "peer": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8050,7 +8050,6 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "peer": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8063,7 +8062,6 @@ "version": "1.1.7", "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "peer": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -10861,6 +10859,21 @@ "node": ">= 0.4.0" } }, + "node_modules/filetransfer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/filetransfer/-/filetransfer-2.0.5.tgz", + "integrity": "sha512-u48DwnSlHgXQs7KRrhsCXJIVUlqoQ4PbllMWqnsl9fD+rDvbMxXiGMXyLZ1+iKRw/EMezysK0vYo4CPtU6N7qA==", + "dependencies": { + "async": "^0.9.0", + "iana-hashes": "^1.0.0", + "wildemitter": "1.x" + } + }, + "node_modules/filetransfer/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/async/-/async-0.9.2.tgz", + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", @@ -11461,6 +11474,41 @@ "node": ">=0.10.0" } }, + "node_modules/getscreenmedia": { + "version": "1.5.6", + "resolved": "https://registry.npmmirror.com/getscreenmedia/-/getscreenmedia-1.5.6.tgz", + "integrity": "sha512-onBzBz0lqXUr85+OlJlCxNeQfikx2/o5vJJniTSbOr273PUbKIqRu7VQXAKBYW99ZF6AmmUX/5WU2pGskhLGFQ==", + "dependencies": { + "getusermedia": "^2.0.0" + } + }, + "node_modules/getscreenmedia/node_modules/getusermedia": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/getusermedia/-/getusermedia-2.0.1.tgz", + "integrity": "sha512-G1gFU5yt2B/atoufTyur/KqWwTgLTIV04cjgIr8cVKbZZM53Cp7bit3XomsZ82KFyS011DtB06wkzl7WZ7uHkA==", + "dependencies": { + "webrtc-adapter": "^2.0.2" + } + }, + "node_modules/getscreenmedia/node_modules/webrtc-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-2.1.0.tgz", + "integrity": "sha512-i38RPNdm68QS6jQFWDuYEOLv5HvWE0Hz99eePd7Nk/c3FmhFUR6zNyfhASdPewm2u1tMfHkRTx9cAZyq3prRlA==", + "dependencies": { + "sdp": "^1.0.0" + }, + "engines": { + "npm": "^3.10.0" + } + }, + "node_modules/getusermedia": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/getusermedia/-/getusermedia-1.3.7.tgz", + "integrity": "sha512-LO5s4IDZTkRbyBk+o+9/WTrJP34o6diQYPhc80ceNqoiYLarSbQQIpEm5WYnPaiFXt9JVbjndwHrjgiUxji4pQ==", + "dependencies": { + "webrtc-adapter": "^1.0.1" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", @@ -11621,6 +11669,14 @@ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, + "node_modules/hark": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/hark/-/hark-1.2.3.tgz", + "integrity": "sha512-u68vz9SCa38ESiFJSDjqK8XbXqWzyot7Cj6Y2b6jk2NJ+II3MY2dIrLMg/kjtIAun4Y1DHF/20hfx4rq1G5GMg==", + "dependencies": { + "wildemitter": "^1.2.0" + } + }, "node_modules/harmony-reflect": { "version": "1.6.2", "resolved": "https://registry.npmmirror.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz", @@ -11765,7 +11821,6 @@ "version": "3.0.4", "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "peer": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -12098,6 +12153,16 @@ "@babel/runtime": "^7.12.0" } }, + "node_modules/iana-hashes": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/iana-hashes/-/iana-hashes-1.1.0.tgz", + "integrity": "sha512-dNFf+NqkF9M1lSluGyHGZNwxdIc8tL++n12Fp3/pcW85jN0ZePP78KugTA16J/paPNlGANE6kUlw81OQs4ulLQ==", + "dependencies": { + "create-hash": "^1.1.0", + "create-hmac": "^1.1.3", + "randombytes": "^2.0.6" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -15715,6 +15780,25 @@ "node": ">=8.9.0" } }, + "node_modules/localmedia": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/localmedia/-/localmedia-1.2.1.tgz", + "integrity": "sha512-eETyJREvf7P1hiT/72VH/rdtlOqHafFn/oADG6D6tmAj/nETTeY3kSEODgzPdK+VejqvauC9gP5BpSLkcKwCuQ==", + "dependencies": { + "getscreenmedia": "^1.0.0", + "getusermedia": "^1.0.0", + "hark": "^1.0.0", + "mediastream-gain": "^1.0.0", + "mockconsole": "0.0.x", + "webrtcsupport": "^2.2.0", + "wildemitter": "^1.0.0" + } + }, + "node_modules/localmedia/node_modules/webrtcsupport": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/webrtcsupport/-/webrtcsupport-2.2.0.tgz", + "integrity": "sha512-9KvL8SxgzbMC/SUMvW+4qcvsXtAnM0iSuxjOwsCqBbA+DA5biaQq8+f4aGfb341BgoFrQX2PQNsvrL2YkuYB1w==" + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", @@ -15731,12 +15815,74 @@ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ==" + }, + "node_modules/lodash._arraymap": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz", + "integrity": "sha512-IhRssF2bzQoFQ2Q5H1O52HuJY+OtcHDZekEhaMJ6RkUF+gpLlAsizSRsKp3Ho555ANRk69DFp5b4LOlym4S0bw==" + }, + "node_modules/lodash._basecallback": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", + "integrity": "sha512-LQffghuO63ufDY33KKO1ezGKbcFZK3ngYV7JpxaUomoM5acf0YeXU3Pm8csVE0girVs50TXzfNibl69Co3ggJA==", + "dependencies": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.pairs": "^3.0.0" + } + }, + "node_modules/lodash._baseeach": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", + "integrity": "sha512-IqUZ9MQo2UT1XPGuBntInqTOlc+oV+bCo0kMp+yuKGsfvRSNgUW0YjWVZUrG/gs+8z/Eyuc0jkJjOBESt9BXxg==", + "dependencies": { + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._baseget": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/lodash._baseget/-/lodash._baseget-3.7.2.tgz", + "integrity": "sha512-OgVr3AufoSqlh6eHWOLdLzRdn6TU3LlEGQjtsyLr9XRtPoXUywzquM1uYE+qQAno1kB9CvpI1gsvGwiVwPinog==" + }, + "node_modules/lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha512-U+3GsNEZj9ebI03ncLC2pLmYVjgtYZEwdkAPO7UGgtGvAz36JVFPAQUufpSaVL93Cz5arc6JGRKZRhaOhyVJYA==", + "dependencies": { + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==" + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmmirror.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==" + }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "peer": true }, + "node_modules/lodash._topath": { + "version": "3.8.1", + "resolved": "https://registry.npmmirror.com/lodash._topath/-/lodash._topath-3.8.1.tgz", + "integrity": "sha512-QsF5c8A+Biv0oxuSCd05JqhXHPCjvFT0nMXVevfMgU1pp5iEHVSin2cKXi3lQe5+px285p7kAHVtOnbNE79syw==", + "dependencies": { + "lodash.isarray": "^3.0.0" + } + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -15757,11 +15903,48 @@ "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==" + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, + "node_modules/lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha512-lGWJ6N8AA3KSv+ZZxlTdn4f6A7kMfpJboeyvbFdE7IU9YAgweODqmOgdUHOA+c6lVWeVLysdaxciFXi+foVsWw==" + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.map": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/lodash.map/-/lodash.map-3.1.4.tgz", + "integrity": "sha512-v7djb/pW+RLcvsmQlHAjZN+zyKyiXgSEdq7V3kVmoT1aCa1bBWy4RbnJRN1SAvNGvkRVfqj66V01wiq+C3b6Cg==", + "dependencies": { + "lodash._arraymap": "^3.0.0", + "lodash._basecallback": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -15772,6 +15955,25 @@ "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.pairs": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.pairs/-/lodash.pairs-3.0.1.tgz", + "integrity": "sha512-lgXvpU43ZNQrZ/pK2cR97YzKeAno3e3HhcyvLKsofljeHKrQcZhT1vW7fg4X61c92tM+mjD/DypoLZYuAKNIkQ==", + "dependencies": { + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash.pluck": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lodash.pluck/-/lodash.pluck-3.1.2.tgz", + "integrity": "sha512-L0UkqH/O3Vh+3KowchOe2+YzWMGdR90CbzpzTXGMujZAVfBmjGSvaJwpflJa4C/WNhNvLrlCtMjo6/Uvhty67g==", + "dependencies": { + "lodash._baseget": "^3.0.0", + "lodash._topath": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.map": "^3.0.0" + } + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -15933,7 +16135,6 @@ "version": "1.3.5", "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "peer": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -15953,6 +16154,14 @@ "node": ">= 0.6" } }, + "node_modules/mediastream-gain": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mediastream-gain/-/mediastream-gain-1.0.1.tgz", + "integrity": "sha512-fRBqj0VYSM1w/FqybEhIxyFv0GZe3mej15psQmjaekEMaZEDMJJSk2R06vpqF2Wsn9Elzbx5MgaxORdcNCJkig==", + "dependencies": { + "webrtcsupport": "^1.0.0" + } + }, "node_modules/memfs": { "version": "3.5.3", "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", @@ -16327,6 +16536,11 @@ } } }, + "node_modules/mockconsole": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/mockconsole/-/mockconsole-0.0.1.tgz", + "integrity": "sha512-9wFq0SJFTaxxEYmfjWf4U8uYku5HKwn3OsTOct3aQFLDois6HrLse2iZAy7v5hyTNts2XH6Y1LW8iMXWxiH6Vg==" + }, "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -28389,7 +28603,6 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "peer": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -28503,6 +28716,30 @@ "node": "6.* || >= 7.*" } }, + "node_modules/rtcpeerconnection": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/rtcpeerconnection/-/rtcpeerconnection-3.1.6.tgz", + "integrity": "sha512-SObgG8nFtpuOD13bzlMv7tbKlTyAozbZdtE4DXc3zazSUt9b9AWbnnR+xyQw91eQ+lWXTdyHzPD8hZZSB9Rt3Q==", + "dependencies": { + "lodash.foreach": "^3.0.2", + "lodash.pluck": "^3.0.2", + "sdp-jingle-json": "2.x", + "traceablepeerconnection": "^1.0.0", + "webrtc-adapter-test": "^0.2.3", + "wildemitter": "1.x" + } + }, + "node_modules/rtcpeerconnection/node_modules/lodash.foreach": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-3.0.3.tgz", + "integrity": "sha512-PA7Lp7pe2HMJBoB1vELegEIF3waUFnM0fWDKJVYolwZ4zHh6WTmnq0xmzfQksD66gx2quhDNyBdyaE2T8/DP3Q==", + "dependencies": { + "lodash._arrayeach": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", @@ -29017,6 +29254,16 @@ "get-ready": "~1.0.0" } }, + "node_modules/sdp": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-1.5.4.tgz", + "integrity": "sha512-9x0+fpJHW2bbqtIktmL+H9m+BswgurPVPhWrur4cCZPDWDSsdGYvRBaKhDXlnNCD1b/Xi8cOTG2u703CTQuwgg==" + }, + "node_modules/sdp-jingle-json": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/sdp-jingle-json/-/sdp-jingle-json-2.2.1.tgz", + "integrity": "sha512-xmFFjZWsFrcX4kVWq3ZNjy7+VkH4nalB+RiNvQSQ7oDsDypI+93XcvO8FPSHgsHtUd2bTozLZgXM6KLeVtJ4Zw==" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", @@ -29321,7 +29568,6 @@ "version": "2.4.11", "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "peer": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -31080,6 +31326,15 @@ "node": ">=8" } }, + "node_modules/traceablepeerconnection": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/traceablepeerconnection/-/traceablepeerconnection-1.2.0.tgz", + "integrity": "sha512-YdBqgxPB03fwuNaEXZTOsqLxZJnA2A6D1UqA+1RVYFCc9VoD4EIprg0HiaWZpKqj3n1XuJiS+5hZBALqDjKpKw==", + "dependencies": { + "webrtc-adapter": "^1.0", + "wildemitter": "1.x" + } + }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", @@ -32451,6 +32706,37 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/webrtc": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/webrtc/-/webrtc-1.14.1.tgz", + "integrity": "sha512-en4xHfLMsgRY7cxju6qcHyCE56/+005HkC4V5qtpTLlUlHLxHX11pB8jnyZp6gaZ6A65sh0VnbHn1AyI052ovw==", + "dependencies": { + "filetransfer": "^2.0.0", + "localmedia": "^1.0.2", + "mockconsole": "0.0.1", + "rtcpeerconnection": "^3.0.6", + "webrtcsupport": "^1.2.4", + "wildemitter": "1.x" + } + }, + "node_modules/webrtc-adapter": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-1.2.2.tgz", + "integrity": "sha512-qJKt/SbDF62+8/akW0pTry0cPO5LVai+mIb3h9ei87sCfeVVKLpkX0/HgStLUtbu5cbuMi0UYHtuUaSvw3g75g==", + "dependencies": { + "sdp": "^1.0.0" + } + }, + "node_modules/webrtc-adapter-test": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/webrtc-adapter-test/-/webrtc-adapter-test-0.2.10.tgz", + "integrity": "sha512-fhFwkniodK0gDVYi/P/qMRV4PNLT+ctJo/WCKL4izK2SYkN6gj4ajy3Pi/bEgM5wRnUdN14oIlvb5BKtFtloVw==" + }, + "node_modules/webrtcsupport": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/webrtcsupport/-/webrtcsupport-1.3.2.tgz", + "integrity": "sha512-/7cKJNIFHUVuTgKRLUKNxqFzHXNI+sGUbYdJAcYWoXJyzkEy+NTmKyWPGf2qbE6hmJxfDLA5utyaBttxpT778A==" + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -32614,6 +32900,11 @@ "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz", "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" }, + "node_modules/wildemitter": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/wildemitter/-/wildemitter-1.2.1.tgz", + "integrity": "sha512-UMmSUoIQSir+XbBpTxOTS53uJ8s/lVhADCkEbhfRjUGFDPme/XGOb0sBWLx5sTz7Wx/2+TlAw1eK9O5lw5PiEw==" + }, "node_modules/win-release": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", @@ -38595,7 +38886,6 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "peer": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -39019,7 +39309,6 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "peer": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -39032,7 +39321,6 @@ "version": "1.1.7", "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "peer": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -41123,6 +41411,23 @@ "resolved": "https://registry.npmmirror.com/filesize/-/filesize-8.0.7.tgz", "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" }, + "filetransfer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/filetransfer/-/filetransfer-2.0.5.tgz", + "integrity": "sha512-u48DwnSlHgXQs7KRrhsCXJIVUlqoQ4PbllMWqnsl9fD+rDvbMxXiGMXyLZ1+iKRw/EMezysK0vYo4CPtU6N7qA==", + "requires": { + "async": "^0.9.0", + "iana-hashes": "^1.0.0", + "wildemitter": "1.x" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/async/-/async-0.9.2.tgz", + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" + } + } + }, "fill-range": { "version": "7.1.1", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", @@ -41545,6 +41850,40 @@ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "peer": true }, + "getscreenmedia": { + "version": "1.5.6", + "resolved": "https://registry.npmmirror.com/getscreenmedia/-/getscreenmedia-1.5.6.tgz", + "integrity": "sha512-onBzBz0lqXUr85+OlJlCxNeQfikx2/o5vJJniTSbOr273PUbKIqRu7VQXAKBYW99ZF6AmmUX/5WU2pGskhLGFQ==", + "requires": { + "getusermedia": "^2.0.0" + }, + "dependencies": { + "getusermedia": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/getusermedia/-/getusermedia-2.0.1.tgz", + "integrity": "sha512-G1gFU5yt2B/atoufTyur/KqWwTgLTIV04cjgIr8cVKbZZM53Cp7bit3XomsZ82KFyS011DtB06wkzl7WZ7uHkA==", + "requires": { + "webrtc-adapter": "^2.0.2" + } + }, + "webrtc-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-2.1.0.tgz", + "integrity": "sha512-i38RPNdm68QS6jQFWDuYEOLv5HvWE0Hz99eePd7Nk/c3FmhFUR6zNyfhASdPewm2u1tMfHkRTx9cAZyq3prRlA==", + "requires": { + "sdp": "^1.0.0" + } + } + } + }, + "getusermedia": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/getusermedia/-/getusermedia-1.3.7.tgz", + "integrity": "sha512-LO5s4IDZTkRbyBk+o+9/WTrJP34o6diQYPhc80ceNqoiYLarSbQQIpEm5WYnPaiFXt9JVbjndwHrjgiUxji4pQ==", + "requires": { + "webrtc-adapter": "^1.0.1" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", @@ -41664,6 +42003,14 @@ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, + "hark": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/hark/-/hark-1.2.3.tgz", + "integrity": "sha512-u68vz9SCa38ESiFJSDjqK8XbXqWzyot7Cj6Y2b6jk2NJ+II3MY2dIrLMg/kjtIAun4Y1DHF/20hfx4rq1G5GMg==", + "requires": { + "wildemitter": "^1.2.0" + } + }, "harmony-reflect": { "version": "1.6.2", "resolved": "https://registry.npmmirror.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz", @@ -41767,7 +42114,6 @@ "version": "3.0.4", "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "peer": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -42011,6 +42357,16 @@ "@babel/runtime": "^7.12.0" } }, + "iana-hashes": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/iana-hashes/-/iana-hashes-1.1.0.tgz", + "integrity": "sha512-dNFf+NqkF9M1lSluGyHGZNwxdIc8tL++n12Fp3/pcW85jN0ZePP78KugTA16J/paPNlGANE6kUlw81OQs4ulLQ==", + "requires": { + "create-hash": "^1.1.0", + "create-hmac": "^1.1.3", + "randombytes": "^2.0.6" + } + }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -44628,6 +44984,27 @@ "json5": "^2.1.2" } }, + "localmedia": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/localmedia/-/localmedia-1.2.1.tgz", + "integrity": "sha512-eETyJREvf7P1hiT/72VH/rdtlOqHafFn/oADG6D6tmAj/nETTeY3kSEODgzPdK+VejqvauC9gP5BpSLkcKwCuQ==", + "requires": { + "getscreenmedia": "^1.0.0", + "getusermedia": "^1.0.0", + "hark": "^1.0.0", + "mediastream-gain": "^1.0.0", + "mockconsole": "0.0.x", + "webrtcsupport": "^2.2.0", + "wildemitter": "^1.0.0" + }, + "dependencies": { + "webrtcsupport": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/webrtcsupport/-/webrtcsupport-2.2.0.tgz", + "integrity": "sha512-9KvL8SxgzbMC/SUMvW+4qcvsXtAnM0iSuxjOwsCqBbA+DA5biaQq8+f4aGfb341BgoFrQX2PQNsvrL2YkuYB1w==" + } + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", @@ -44641,12 +45018,74 @@ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ==" + }, + "lodash._arraymap": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz", + "integrity": "sha512-IhRssF2bzQoFQ2Q5H1O52HuJY+OtcHDZekEhaMJ6RkUF+gpLlAsizSRsKp3Ho555ANRk69DFp5b4LOlym4S0bw==" + }, + "lodash._basecallback": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", + "integrity": "sha512-LQffghuO63ufDY33KKO1ezGKbcFZK3ngYV7JpxaUomoM5acf0YeXU3Pm8csVE0girVs50TXzfNibl69Co3ggJA==", + "requires": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.pairs": "^3.0.0" + } + }, + "lodash._baseeach": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", + "integrity": "sha512-IqUZ9MQo2UT1XPGuBntInqTOlc+oV+bCo0kMp+yuKGsfvRSNgUW0YjWVZUrG/gs+8z/Eyuc0jkJjOBESt9BXxg==", + "requires": { + "lodash.keys": "^3.0.0" + } + }, + "lodash._baseget": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/lodash._baseget/-/lodash._baseget-3.7.2.tgz", + "integrity": "sha512-OgVr3AufoSqlh6eHWOLdLzRdn6TU3LlEGQjtsyLr9XRtPoXUywzquM1uYE+qQAno1kB9CvpI1gsvGwiVwPinog==" + }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha512-U+3GsNEZj9ebI03ncLC2pLmYVjgtYZEwdkAPO7UGgtGvAz36JVFPAQUufpSaVL93Cz5arc6JGRKZRhaOhyVJYA==", + "requires": { + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmmirror.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==" + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "peer": true }, + "lodash._topath": { + "version": "3.8.1", + "resolved": "https://registry.npmmirror.com/lodash._topath/-/lodash._topath-3.8.1.tgz", + "integrity": "sha512-QsF5c8A+Biv0oxuSCd05JqhXHPCjvFT0nMXVevfMgU1pp5iEHVSin2cKXi3lQe5+px285p7kAHVtOnbNE79syw==", + "requires": { + "lodash.isarray": "^3.0.0" + } + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -44667,11 +45106,48 @@ "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==" + }, "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.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha512-lGWJ6N8AA3KSv+ZZxlTdn4f6A7kMfpJboeyvbFdE7IU9YAgweODqmOgdUHOA+c6lVWeVLysdaxciFXi+foVsWw==" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.map": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/lodash.map/-/lodash.map-3.1.4.tgz", + "integrity": "sha512-v7djb/pW+RLcvsmQlHAjZN+zyKyiXgSEdq7V3kVmoT1aCa1bBWy4RbnJRN1SAvNGvkRVfqj66V01wiq+C3b6Cg==", + "requires": { + "lodash._arraymap": "^3.0.0", + "lodash._basecallback": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -44682,6 +45158,25 @@ "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "lodash.pairs": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.pairs/-/lodash.pairs-3.0.1.tgz", + "integrity": "sha512-lgXvpU43ZNQrZ/pK2cR97YzKeAno3e3HhcyvLKsofljeHKrQcZhT1vW7fg4X61c92tM+mjD/DypoLZYuAKNIkQ==", + "requires": { + "lodash.keys": "^3.0.0" + } + }, + "lodash.pluck": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lodash.pluck/-/lodash.pluck-3.1.2.tgz", + "integrity": "sha512-L0UkqH/O3Vh+3KowchOe2+YzWMGdR90CbzpzTXGMujZAVfBmjGSvaJwpflJa4C/WNhNvLrlCtMjo6/Uvhty67g==", + "requires": { + "lodash._baseget": "^3.0.0", + "lodash._topath": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.map": "^3.0.0" + } + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -44817,7 +45312,6 @@ "version": "1.3.5", "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "peer": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -44834,6 +45328,14 @@ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, + "mediastream-gain": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mediastream-gain/-/mediastream-gain-1.0.1.tgz", + "integrity": "sha512-fRBqj0VYSM1w/FqybEhIxyFv0GZe3mej15psQmjaekEMaZEDMJJSk2R06vpqF2Wsn9Elzbx5MgaxORdcNCJkig==", + "requires": { + "webrtcsupport": "^1.0.0" + } + }, "memfs": { "version": "3.5.3", "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", @@ -45102,6 +45604,11 @@ "integrity": "sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg==", "requires": {} }, + "mockconsole": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/mockconsole/-/mockconsole-0.0.1.tgz", + "integrity": "sha512-9wFq0SJFTaxxEYmfjWf4U8uYku5HKwn3OsTOct3aQFLDois6HrLse2iZAy7v5hyTNts2XH6Y1LW8iMXWxiH6Vg==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -54135,7 +54642,6 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "peer": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -54226,6 +54732,32 @@ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "peer": true }, + "rtcpeerconnection": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/rtcpeerconnection/-/rtcpeerconnection-3.1.6.tgz", + "integrity": "sha512-SObgG8nFtpuOD13bzlMv7tbKlTyAozbZdtE4DXc3zazSUt9b9AWbnnR+xyQw91eQ+lWXTdyHzPD8hZZSB9Rt3Q==", + "requires": { + "lodash.foreach": "^3.0.2", + "lodash.pluck": "^3.0.2", + "sdp-jingle-json": "2.x", + "traceablepeerconnection": "^1.0.0", + "webrtc-adapter-test": "^0.2.3", + "wildemitter": "1.x" + }, + "dependencies": { + "lodash.foreach": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-3.0.3.tgz", + "integrity": "sha512-PA7Lp7pe2HMJBoB1vELegEIF3waUFnM0fWDKJVYolwZ4zHh6WTmnq0xmzfQksD66gx2quhDNyBdyaE2T8/DP3Q==", + "requires": { + "lodash._arrayeach": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", @@ -54599,6 +55131,16 @@ "get-ready": "~1.0.0" } }, + "sdp": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-1.5.4.tgz", + "integrity": "sha512-9x0+fpJHW2bbqtIktmL+H9m+BswgurPVPhWrur4cCZPDWDSsdGYvRBaKhDXlnNCD1b/Xi8cOTG2u703CTQuwgg==" + }, + "sdp-jingle-json": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/sdp-jingle-json/-/sdp-jingle-json-2.2.1.tgz", + "integrity": "sha512-xmFFjZWsFrcX4kVWq3ZNjy7+VkH4nalB+RiNvQSQ7oDsDypI+93XcvO8FPSHgsHtUd2bTozLZgXM6KLeVtJ4Zw==" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", @@ -54853,7 +55395,6 @@ "version": "2.4.11", "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "peer": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -56233,6 +56774,15 @@ "punycode": "^2.1.1" } }, + "traceablepeerconnection": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/traceablepeerconnection/-/traceablepeerconnection-1.2.0.tgz", + "integrity": "sha512-YdBqgxPB03fwuNaEXZTOsqLxZJnA2A6D1UqA+1RVYFCc9VoD4EIprg0HiaWZpKqj3n1XuJiS+5hZBALqDjKpKw==", + "requires": { + "webrtc-adapter": "^1.0", + "wildemitter": "1.x" + } + }, "tryer": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", @@ -57268,6 +57818,37 @@ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" }, + "webrtc": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/webrtc/-/webrtc-1.14.1.tgz", + "integrity": "sha512-en4xHfLMsgRY7cxju6qcHyCE56/+005HkC4V5qtpTLlUlHLxHX11pB8jnyZp6gaZ6A65sh0VnbHn1AyI052ovw==", + "requires": { + "filetransfer": "^2.0.0", + "localmedia": "^1.0.2", + "mockconsole": "0.0.1", + "rtcpeerconnection": "^3.0.6", + "webrtcsupport": "^1.2.4", + "wildemitter": "1.x" + } + }, + "webrtc-adapter": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-1.2.2.tgz", + "integrity": "sha512-qJKt/SbDF62+8/akW0pTry0cPO5LVai+mIb3h9ei87sCfeVVKLpkX0/HgStLUtbu5cbuMi0UYHtuUaSvw3g75g==", + "requires": { + "sdp": "^1.0.0" + } + }, + "webrtc-adapter-test": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/webrtc-adapter-test/-/webrtc-adapter-test-0.2.10.tgz", + "integrity": "sha512-fhFwkniodK0gDVYi/P/qMRV4PNLT+ctJo/WCKL4izK2SYkN6gj4ajy3Pi/bEgM5wRnUdN14oIlvb5BKtFtloVw==" + }, + "webrtcsupport": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/webrtcsupport/-/webrtcsupport-1.3.2.tgz", + "integrity": "sha512-/7cKJNIFHUVuTgKRLUKNxqFzHXNI+sGUbYdJAcYWoXJyzkEy+NTmKyWPGf2qbE6hmJxfDLA5utyaBttxpT778A==" + }, "websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -57394,6 +57975,11 @@ "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz", "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" }, + "wildemitter": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/wildemitter/-/wildemitter-1.2.1.tgz", + "integrity": "sha512-UMmSUoIQSir+XbBpTxOTS53uJ8s/lVhADCkEbhfRjUGFDPme/XGOb0sBWLx5sTz7Wx/2+TlAw1eK9O5lw5PiEw==" + }, "win-release": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", diff --git a/package.json b/package.json index 29ee0ea..846770b 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "webpack": "^5.64.4", "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^4.0.2", + "webrtc": "^1.14.1", "workbox-webpack-plugin": "^6.4.1" }, "scripts": { diff --git a/src/App.tsx b/src/App.tsx index 53552c2..cd0815b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,66 +1,13 @@ -import { inject, observer } from "mobx-react"; -import { Modal } from "antd"; -import { Store } from "antd/lib/form/interface"; import { Outlet } from "react-router"; -import SimpleForm from "./components/form/simple_form"; -import { FormInstance } from "antd/lib/form"; -import React from "react"; import MyComponent from "./components/errorComp"; -const App = (props: Store) => { - const { usrStore } = props; - const formRef = React.useRef(null); - const loginForm = [ - { - type: "input", - label: "用户名", - name: "account", - value: "", - rules: [{ required: true, message: "请输入用户名!" }], - }, - { - type: "password", - label: "密码", - name: "password", - value: "", - rules: [{ required: true, message: "请输入密码!" }], - }, - ]; - const onFinish = (values: any) => { - usrStore.login({ - userName: values.account, - passWord: values.password, - }); - }; - const onFinishFailed = () => {}; +const App = () => { return ( <> - {}} - onOk={() => { - formRef.current?.submit(); - }} - onCancel={() => { - usrStore.closeLoginDilog(); - }} - > - - ); }; -export default inject("usrStore")(observer(App)); +export default App; diff --git a/src/components/form/interface.ts b/src/components/form/interface.ts index 518a7cd..816783f 100644 --- a/src/components/form/interface.ts +++ b/src/components/form/interface.ts @@ -1,4 +1,5 @@ import { FormInstance } from "antd" +import React from "react" export enum FormType { input = "input", select = "select", @@ -32,6 +33,7 @@ export interface SimpleFormData { onFinishFailed: Function, formDatas: Array, createCallback?: Function + children?: React.ReactElement } diff --git a/src/components/form/simple_form.tsx b/src/components/form/simple_form.tsx index 7609d49..56086ae 100644 --- a/src/components/form/simple_form.tsx +++ b/src/components/form/simple_form.tsx @@ -28,6 +28,9 @@ const SimpleForm = (props: SimpleFormData) => { onFinish={onFinish} autoComplete="on" > + { + props.children??props.children + } {props.formDatas.map((v) => { switch (v.type) { case FormType.input: @@ -159,6 +162,8 @@ const SimpleForm = (props: SimpleFormData) => { ); } })} + + ); }; diff --git a/src/pages/archives/archive.tsx b/src/pages/archives/archive.tsx new file mode 100644 index 0000000..25fa91d --- /dev/null +++ b/src/pages/archives/archive.tsx @@ -0,0 +1,301 @@ + +// // 档案管理 + +// import { Button, Space, Modal, FormInstance, Flex } from "antd"; +// import { inject, observer } from "mobx-react"; +// import { useEffect, useState } from "react"; +// import { Store } from "antd/lib/form/interface"; +// import SimpleForm from "@/components/form/simple_form"; +// import React from "react"; +// import { folderConfig } from "./archives_conf"; +// import { Form, Select } from "antd"; +// import BTable from "@/components/b_table"; +// const { Option } = Select; +// const Archive = (props: Store) => { +// const { folderStore,archivesStore } = props; +// const [isModalOpen, setIsModalOpen] = useState(false); +// const [isModalOpenArchives, setIsModalOpenArchives] = +// useState(false); + +// const [projectConfig, setProjectConfig] = useState([]); +// const formRef = React.useRef(null); +// const [tagId, setId] = useState(null); +// const [folderList, setfolderList] = useState(null); // 仓库列表 +// const onFinish = (values: any) => { +// let data = values; +// if (!tagId) { +// folderStore.add(data); +// } else { +// folderStore.putItem(tagId, data); +// } +// setIsModalOpen(false); +// }; +// useEffect(() => { +// folderStore.getlist().then(()=>{ +// setfolderList(folderStore.list); +// }); + +// }, [folderStore]); + +// // 添加事件 +// const addHandler = () => { +// setProjectConfig(folderConfig); +// setIsModalOpen(true); +// }; + +// // 取消 +// const cancelHandler = () => { +// setId(null); +// setIsModalOpen(false); +// }; + +// const cancelHandlerArch = () => { +// setIsModalOpenArchives(false); +// }; + +// // 文件夹点击 +// const folderHandle = () => { +// setIsModalOpenArchives(true); +// }; +// const onFinishFailed = () => {}; +// return ( +//
+// +// +// +// +// column_widget(any, record), +// }, +// ]} +// dataSource={archivesStore.list} +// /> +// cancelHandlerArch} +// onCancel={cancelHandlerArch} +// > +// +// formRef.current?.resetFields()} +// onOk={() => formRef.current?.submit()} +// onCancel={cancelHandler} +// > +// {}} +// formName="card_basic" +// colProps={12} +// span={6} +// subBtnName="提交" +// formDatas={projectConfig} +// onFinish={onFinish} +// initialValues={true} +// onFinishFailed={onFinishFailed} +// > +// +// +// +// +// +// +//
+// ); +// }; + +// export default inject(...["archivesStore", "folderStore"])( +// observer(Archive) +// ); + + +import { Button, Space, Modal, FormInstance, Select } from "antd"; +import { inject, observer } from "mobx-react"; +import BTable from "@/components/b_table"; +import { useEffect, useState } from "react"; +import { Store } from "antd/lib/form/interface"; +import SimpleForm from "@/components/form/simple_form"; +import React from "react"; +import { columns_ac, defaultConfig } from "./archivesCat_clumn"; +import { Form } from "antd"; +import dayjs from "dayjs"; +const { Option } = Select; +const Archive = (props: Store) => { + const { archivesStore, folderStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [projectConfig, setProjectConfig] = useState([]); + const formRef = React.useRef(null); + const [record, setRecord] = useState(null); + const [stashList, setStash] = useState(null); // 仓库列表 + // 获取物资列表 + useEffect(() => { + folderStore.getlist().then(() => { + setStash(folderStore.list) + setProjectConfig(defaultConfig); + }); + }, [folderStore]); + + // 获取分类 + useEffect(() => { + archivesStore.getlist() + }, [archivesStore]); + + const column_widget = (any, record) => { + return ( + + + + + + ); + }; + const edit = (record) => { + setIsModalOpen(true); + record.expiry_date = dayjs(record.expiry_date); + setRecord(record); + }; + const onFinish = (values: any) => { + let data = { + ...values, + file_url: values.file_url[0].name, + }; + if (!record?.id) { + archivesStore.add(data); + } else { + archivesStore.putItem(record.id, data); + } + setIsModalOpen(false); + }; + + const onFinishFailed = () => {}; + return ( +
+ + + + + column_widget(any, record), + }, + ]} + dataSource={archivesStore.list} + /> + formRef.current?.resetFields()} + onOk={() => formRef.current?.submit()} + onCancel={() => { + setIsModalOpen(false); + }} + > + { + if (record?.id) { + formRef.current?.setFieldsValue(record); + } else { + formRef.current?.setFieldsValue(null); + } + }} + formName="card_basic" + colProps={25} + subBtnName="提交" + formDatas={projectConfig} + onFinish={onFinish} + initialValues={true} + onFinishFailed={onFinishFailed} + > + <> + + + + + + + +
+ ); +}; + +export default inject( + "archivesStore", + "folderStore" +)(observer(Archive)); diff --git a/src/pages/archives/archivesCat.tsx b/src/pages/archives/archivesCat.tsx new file mode 100644 index 0000000..fc6be48 --- /dev/null +++ b/src/pages/archives/archivesCat.tsx @@ -0,0 +1,124 @@ +// 类别 + +import { Button, Space, Modal, FormInstance } from "antd"; +import { inject, observer } from "mobx-react"; +import BTable from "@/components/b_table"; +import { useEffect, useState } from "react"; +import { Store } from "antd/lib/form/interface"; +import SimpleForm from "@/components/form/simple_form"; +import React from "react"; +import { columns, defaultConfig } from "./archivesCat_clumn"; + +const ArchivesCat = (props: Store) => { + const { acStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [projectConfig, setProjectConfig] = useState([]); + const formRef = React.useRef(null); + const [record, setRecord] = useState(null); + useEffect(() => { + acStore.getlist(); + setProjectConfig(defaultConfig); + }, [acStore]); + const column_widget = (any, record) => { + return ( + + + + + + ); + }; + const edit = (record) => { + setIsModalOpen(true); + setRecord(record); + }; + const onFinish = (values: any) => { + let data = { + ...values, + pid: values.pid ?? 0, + }; + if (!record?.id) { + acStore.add(data); + } else { + acStore.putItem(record.id, data); + } + setIsModalOpen(false); + }; + const handleAdd = () => { + setRecord(null); + setProjectConfig(defaultConfig); + setIsModalOpen(true); + }; + const onFinishFailed = () => {}; + return ( +
+ + + + + column_widget(any, record), + }, + ]} + dataSource={acStore.list} + /> + formRef.current?.resetFields()} + onOk={() => formRef.current?.submit()} + onCancel={() => { + setIsModalOpen(false); + }} + > + { + if (record?.id) { + formRef.current?.setFieldsValue(record); + } else { + formRef.current?.setFieldsValue(null); + } + }} + formName="card_basic" + colProps={25} + subBtnName="提交" + formDatas={projectConfig} + onFinish={onFinish} + initialValues={true} + onFinishFailed={onFinishFailed} + /> + + +
+ ); +}; + +export default inject("acStore")(observer(ArchivesCat)); diff --git a/src/pages/archives/archivesCat_clumn.tsx b/src/pages/archives/archivesCat_clumn.tsx new file mode 100644 index 0000000..f52a4b6 --- /dev/null +++ b/src/pages/archives/archivesCat_clumn.tsx @@ -0,0 +1,46 @@ +import { FormType } from "@/components/form/interface"; +import { UserDataType } from "@/model/userModel"; +import { ColumnsType } from "antd/lib/table"; +export const columns: ColumnsType = [ + { + title: "分类名称", + dataIndex: "category_name", + }, +]; + +export const columns_ac: ColumnsType = [ + { + title: "档案名称", + dataIndex: "archives_name", + }, + { + title: "档案描述", + dataIndex: "archives_desc", + }, +]; + + +export const defaultConfig = [ + { + type: FormType.input, + label: "档案名称", + name: "archives_name", + value: "", + rules: [{ required: true, message: "请输入分类名称!" }], + }, + { + type: FormType.input, + label: "档案描述", + name: "archives_desc", + value: "", + }, + { + type: FormType.upload, + label: "档案文件", + name: "file_url", + value: "", + }, +]; + + + \ No newline at end of file diff --git a/src/pages/archives/archivesFolder.tsx b/src/pages/archives/archivesFolder.tsx new file mode 100644 index 0000000..d667401 --- /dev/null +++ b/src/pages/archives/archivesFolder.tsx @@ -0,0 +1,139 @@ +// 档案管理 + +import { Button, Space, Modal, FormInstance, Flex } from "antd"; +import { inject, observer } from "mobx-react"; +import { useEffect, useState } from "react"; +import { Store } from "antd/lib/form/interface"; +import SimpleForm from "@/components/form/simple_form"; +import React from "react"; +import FolderTwoTone from "@ant-design/icons/FolderOpenTwoTone"; +import { folderConfig } from "./archives_conf"; +import { Form, Select } from "antd"; +import Preview from "./preview"; +const { Option } = Select; +const ArchivesFolder = (props: Store) => { + const { folderStore, acStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [isModalOpenArchives, setIsModalOpenArchives] = + useState(false); + + const [projectConfig, setProjectConfig] = useState([]); + const formRef = React.useRef(null); + const [tagId, setId] = useState(null); + const [catList, setCatList] = useState(null); // 仓库列表 + const onFinish = (values: any) => { + let data = values; + if (!tagId) { + folderStore.add(data); + } else { + folderStore.putItem(tagId, data); + } + setIsModalOpen(false); + }; + useEffect(() => { + folderStore.getlist(); + acStore.getlist().then(() => { + setCatList(acStore.list); + }); + }, [folderStore, acStore]); + + // 添加事件 + const addHandler = () => { + setProjectConfig(folderConfig); + setIsModalOpen(true); + }; + + // 取消 + const cancelHandler = () => { + setId(null); + setIsModalOpen(false); + }; + + const cancelHandlerArch = () => { + setIsModalOpenArchives(false); + }; + + // 文件夹点击 + const folderHandle = (e) => { + folderStore.getAlist(e.identity).then((res) => { + setIsModalOpenArchives(true); + }) + }; + const onFinishFailed = () => {}; + return ( +
+ + + + + + {Array.from({ length: folderStore.list?.length ?? 0 }, (_, i) => ( +
folderHandle(folderStore.list[i])} + style={{ cursor: "pointer", width: "120px" }} + > + +

+ {folderStore.list[i].folder_name} +

+
+ ))} +
+ + + + formRef.current?.resetFields()} + onOk={() => formRef.current?.submit()} + onCancel={cancelHandler} + > + {}} + formName="card_basic" + colProps={12} + span={6} + subBtnName="提交" + formDatas={projectConfig} + onFinish={onFinish} + initialValues={true} + onFinishFailed={onFinishFailed} + > + + + + + +
+
+ ); +}; + +export default inject(...["archivesStore", "folderStore", "acStore"])( + observer(ArchivesFolder) +); diff --git a/src/pages/archives/archives_conf.ts b/src/pages/archives/archives_conf.ts index 34b7013..0dac495 100644 --- a/src/pages/archives/archives_conf.ts +++ b/src/pages/archives/archives_conf.ts @@ -1,10 +1,4 @@ export const folderConfig = [ - { - type: "input", - label: "所属档案分类", - name: "ac_identity", - value: "", - }, { type: "input", label: "文件夹名称", diff --git a/src/pages/archives/index.tsx b/src/pages/archives/index.tsx index 5b43c78..99a357e 100644 --- a/src/pages/archives/index.tsx +++ b/src/pages/archives/index.tsx @@ -1,106 +1,37 @@ -import { Button, Space, Modal, FormInstance, Flex } from "antd"; -import { inject, observer } from "mobx-react"; -import { useEffect, useState } from "react"; -import { Store } from "antd/lib/form/interface"; -import SimpleForm from "@/components/form/simple_form"; -import React from "react"; -import FolderTwoTone from "@ant-design/icons/FolderOpenTwoTone"; -import { folderConfig, catConfig, archiveConfig } from "./archives_conf"; -const Archives = (props: Store) => { - const { folderStore, acStore } = props; - const [isModalOpen, setIsModalOpen] = useState(false); - const [projectConfig, setProjectConfig] = useState([]); - const formRef = React.useRef(null); - const [tagId, setId] = useState(null); - const onFinish = (values: any) => { - let data = values; - data.head_img = values.head_img[0].url; - if (!tagId) { - folderStore.add(data); - } else { - folderStore.putItem(tagId, data); - } - setIsModalOpen(false); - }; - useEffect(() => { - folderStore.getlist(); - acStore.getlist(); - }, [folderStore, acStore]); - // 添加事件 - const addHandler = () => { - setProjectConfig(folderConfig); - setIsModalOpen(true); - }; +import { Tabs, TabsProps } from "antd"; +import ArchivesCat from "./archivesCat"; +import ArchivesFolder from "./archivesFolder"; +import Archive from "./archive"; - // 取消 - const cancelHandler = () => { - setId(null); - setIsModalOpen(false); - }; - // 文件夹点击 - const folderHandle = () => {}; - const addCatHandler = () => { - setProjectConfig(catConfig); - setIsModalOpen(true); +const Archives = () => { + const onChange = (key: string) => { + console.log(key); }; - - const addArchivesHandler = () => { - setProjectConfig(archiveConfig); - setIsModalOpen(true); - }; - const onFinishFailed = () => {}; + const items: TabsProps["items"] = [ + { + key: "1", + label: "档案类别管理", + children: , + }, + { + key: "2", + label: "档案文件夹管理", + children: , + }, + { + key: "3", + label: "档案管理", + children: , + }, + ]; return ( -
- - - - - - - - {Array.from({ length: folderStore.list?.length ?? 0 }, (_, i) => ( -
- -

{folderStore.list[i].folder_name}

-
- ))} -
- - formRef.current?.resetFields()} - onOk={() => formRef.current?.submit()} - onCancel={cancelHandler} - > - {}} - formName="card_basic" - colProps={12} - span={6} - subBtnName="提交" - formDatas={projectConfig} - onFinish={onFinish} - initialValues={true} - onFinishFailed={onFinishFailed} - /> - -
-
+ <> + + ); }; -export default inject(...["archivesStore", "folderStore", "acStore"])( - observer(Archives) -); +export default Archives; \ No newline at end of file diff --git a/src/pages/archives/preview.less b/src/pages/archives/preview.less new file mode 100644 index 0000000..3bf7e13 --- /dev/null +++ b/src/pages/archives/preview.less @@ -0,0 +1,28 @@ +.preview_container{ + width: 100%; + height: 100%; + display: flex; + align-items: start; + .preview_center{ + width: 10px; + } + .preview_left{ + width: 10%; + height: 100%; + .select{ + background-color: red; + color: #fff; + } + >span{ + display: block; + padding-left: 10px; + cursor: pointer; + height: 35px; + line-height: 35px; + } + } + .preview_right{ + width: 75%; + height: 100%; + } +} \ No newline at end of file diff --git a/src/pages/archives/preview.tsx b/src/pages/archives/preview.tsx new file mode 100644 index 0000000..1ec19b2 --- /dev/null +++ b/src/pages/archives/preview.tsx @@ -0,0 +1,27 @@ +import { useState } from "react"; +import "./preview.less"; +const Preview = (props: any) => { + const { list } = props; + const [selectIndex, setSelectIndex] = useState(0); + return ( +
+
+ {list.map((item: any, index: number) => ( + setSelectIndex(index)} + key={item} + > + {item.archives_name} + + ))} +
+
+
+

预览查看

+
+
+ ); +}; + +export default Preview; diff --git a/src/pages/home/homeBottom/home_bottom.tsx b/src/pages/home/homeBottom/home_bottom.tsx index 2fc051a..fb07355 100644 --- a/src/pages/home/homeBottom/home_bottom.tsx +++ b/src/pages/home/homeBottom/home_bottom.tsx @@ -1,17 +1,19 @@ import { useState } from "react"; import { Button, Modal } from "antd"; import "./right.less"; +import { webRTC } from "@/util/webRtc"; const HomeBottom = () => { const [isModalOpen, setIsModalOpen] = useState(false); const openDispatch = () => { setIsModalOpen(true); + webRTC.init(); }; const handleCancle = () => { setIsModalOpen(false); }; - const handleSubmit = ()=>{ + const handleSubmit = () => { setIsModalOpen(false); - } + }; return (
@@ -31,14 +33,24 @@ const HomeBottom = () => { , - , ]} onCancel={() => { setIsModalOpen(false); }} - > + > +
+ +
+
); }; diff --git a/src/pages/materialMgmt/material.tsx b/src/pages/materialMgmt/material.tsx index 787861b..349024b 100644 --- a/src/pages/materialMgmt/material.tsx +++ b/src/pages/materialMgmt/material.tsx @@ -1,4 +1,4 @@ -import { Button, Space, Modal, FormInstance } from "antd"; +import { Button, Space, Modal, FormInstance, Select } from "antd"; import { inject, observer } from "mobx-react"; import BTable from "@/components/b_table"; import { useEffect, useState } from "react"; @@ -6,17 +6,43 @@ import { Store } from "antd/lib/form/interface"; import SimpleForm from "@/components/form/simple_form"; import React from "react"; import { columns, defaultConfig } from "./material_column"; - +import { Form } from "antd"; +import dayjs from "dayjs"; +const { Option } = Select; const Material = (props: Store) => { - const { materialStore } = props; + const { materialStore, stashStore, storageStore, materialCatStore } = props; const [isModalOpen, setIsModalOpen] = useState(false); const [projectConfig, setProjectConfig] = useState([]); const formRef = React.useRef(null); const [record, setRecord] = useState(null); + const [stashList, setStash] = useState(null); // 仓库列表 + const [storageList, setStorageList] = useState([]); // 货架列表 + const [catList, setcatList] = useState([]); // 物资分类列表 + // 获取物资列表 useEffect(() => { - materialStore.getlist(); - setProjectConfig(defaultConfig); + materialStore.getlist().then(() => { + setProjectConfig(defaultConfig); + }); }, [materialStore]); + + // 获取仓库列表 + useEffect(() => { + stashStore.getlist().then(() => { + setStash(stashStore.list); + }); + }, [stashStore]); + + // 获取分类 + useEffect(() => { + materialCatStore.getlist().then(() => { + setcatList(materialCatStore.list); + }); + }, [materialCatStore]); + + const handleChange = async (v) => { + await storageStore.getlist({ stash_identity: v }); + setStorageList(storageStore.list ?? []); + }; const column_widget = (any, record) => { return ( @@ -45,12 +71,15 @@ const Material = (props: Store) => { }; const edit = (record) => { setIsModalOpen(true); + record.expiry_date = dayjs(record.expiry_date); setRecord(record); }; const onFinish = (values: any) => { let data = { ...values, - pid:values.pid??0 + pid: values.pid ?? 0, + storage_cloumn: Number(values.storage_cloumn), + supplie_piker: values.supplie_piker[0].name, }; if (!record?.id) { materialStore.add(data); @@ -117,11 +146,72 @@ const Material = (props: Store) => { onFinish={onFinish} initialValues={true} onFinishFailed={onFinishFailed} - /> + > + <> + + + + + + + + + + +
); }; -export default inject("materialStore")(observer(Material)); +export default inject( + "materialStore", + "stashStore", + "storageStore", + "materialCatStore" +)(observer(Material)); diff --git a/src/pages/materialMgmt/material_column.tsx b/src/pages/materialMgmt/material_column.tsx index 2cd6656..2c502ba 100644 --- a/src/pages/materialMgmt/material_column.tsx +++ b/src/pages/materialMgmt/material_column.tsx @@ -12,11 +12,11 @@ export const columns: ColumnsType = [ }, { title: "过期时间", - dataIndex: "storage_identity", + dataIndex: "expiry_date", }, { title: "货架名称", - dataIndex: "expiry_date", + dataIndex: "storage_name", }, { title: "货架位置", @@ -24,26 +24,12 @@ export const columns: ColumnsType = [ }, { title: "所属仓库", - dataIndex: "expiry_date", + dataIndex: "stash_name", }, ]; export const defaultConfig = [ - { - type: FormType.select, - label: "所属仓库", - name: "stash_identity", - value: "", - selectUrl:"storage/list", - rules: [{ required: true, message: "请输入物资名称!" }], - }, - { - type: FormType.input, - label: "所属货架", - name: "storage_identity", - value: "", - rules: [{ required: true, message: "请选择货架!" }], - }, + { type: FormType.input, label: "货架位置", @@ -51,14 +37,7 @@ export const defaultConfig = [ value: "", rules: [{ required: true, message: "请选择货架位置!" }], }, - { - type: FormType.select, - label: "物资分类", - name: "catory_identity", - value: 0, - selectUrl:"suppliesCat/list", - rules: [{ required: true, message: "请选择物资分类!" }], - }, + { type: FormType.input, label: "物资名称", @@ -84,6 +63,6 @@ export const defaultConfig = [ type: FormType.upload, label: "物资图片", name: "supplie_piker", - value: "", + value: [], }, ]; diff --git a/src/pages/polRegulations/cat_column.tsx b/src/pages/polRegulations/cat_column.tsx new file mode 100644 index 0000000..9fc061d --- /dev/null +++ b/src/pages/polRegulations/cat_column.tsx @@ -0,0 +1,19 @@ +import { FormType } from "@/components/form/interface"; +import { UserDataType } from "@/model/userModel"; +import { ColumnsType } from "antd/lib/table"; +export const columns: ColumnsType = [ + { + title: "分类名称", + dataIndex: "title", + }, +]; + +export const defaultConfig = [ + { + type: FormType.input, + label: "分类名称", + name: "title", + value: "", + rules: [{ required: true, message: "请输入仓库名称!" }], + }, +]; diff --git a/src/pages/polRegulations/index.tsx b/src/pages/polRegulations/index.tsx index dfe2734..9e5a851 100644 --- a/src/pages/polRegulations/index.tsx +++ b/src/pages/polRegulations/index.tsx @@ -1,10 +1,28 @@ +import { Tabs, TabsProps } from "antd"; +import RegulationsCat from "./regulationsCat"; +import Regulations from "./regulations"; + const PolRegulations = () => { - return ( - <> -

PolRegulations

- - ); - }; - - export default PolRegulations; - \ No newline at end of file + const onChange = (key: string) => { + console.log(key); + }; + const items: TabsProps["items"] = [ + { + key: "1", + label: "政治法规分类管理", + children: , + }, + { + key: "2", + label: "政治法规管理", + children: , + }, + ]; + return ( + <> + + + ); +}; + +export default PolRegulations; diff --git a/src/pages/polRegulations/regulations.tsx b/src/pages/polRegulations/regulations.tsx new file mode 100644 index 0000000..70e1ba3 --- /dev/null +++ b/src/pages/polRegulations/regulations.tsx @@ -0,0 +1,163 @@ +import { Button, Space, Modal, FormInstance, Select } from "antd"; +import { inject, observer } from "mobx-react"; +import BTable from "@/components/b_table"; +import { useEffect, useState } from "react"; +import { Store } from "antd/lib/form/interface"; +import SimpleForm from "@/components/form/simple_form"; +import React from "react"; +import { columns, defaultConfig } from "./regulations_column"; +import { Form } from "antd"; +import dayjs from "dayjs"; +const { Option } = Select; +const Regulations = (props: Store) => { + const { regulationsStore, regulationsCatStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [projectConfig, setProjectConfig] = useState([]); + const formRef = React.useRef(null); + const [record, setRecord] = useState(null); + const [stashList, setStash] = useState(null); // 仓库列表 + // 获取物资列表 + useEffect(() => { + regulationsStore.getlist().then(() => { + setProjectConfig(defaultConfig); + }); + }, [regulationsStore]); + + // 获取分类 + useEffect(() => { + regulationsCatStore.getlist().then(() => { + setStash(regulationsCatStore.list); + }); + }, [regulationsCatStore]); + + const column_widget = (any, record) => { + return ( + + + + + + ); + }; + const edit = (record) => { + setIsModalOpen(true); + record.expiry_date = dayjs(record.expiry_date); + setRecord(record); + }; + const onFinish = (values: any) => { + let data = { + ...values, + file_url: values.file_url[0].name, + }; + if (!record?.id) { + regulationsStore.add(data); + } else { + regulationsStore.putItem(record.id, data); + } + setIsModalOpen(false); + }; + + const onFinishFailed = () => {}; + return ( +
+ + + + + column_widget(any, record), + }, + ]} + dataSource={regulationsStore.list} + /> + formRef.current?.resetFields()} + onOk={() => formRef.current?.submit()} + onCancel={() => { + setIsModalOpen(false); + }} + > + { + if (record?.id) { + formRef.current?.setFieldsValue(record); + } else { + formRef.current?.setFieldsValue(null); + } + }} + formName="card_basic" + colProps={25} + subBtnName="提交" + formDatas={projectConfig} + onFinish={onFinish} + initialValues={true} + onFinishFailed={onFinishFailed} + > + <> + + + + + + + +
+ ); +}; + +export default inject( + "regulationsStore", + "regulationsCatStore" +)(observer(Regulations)); diff --git a/src/pages/polRegulations/regulationsCat.tsx b/src/pages/polRegulations/regulationsCat.tsx new file mode 100644 index 0000000..13f2fea --- /dev/null +++ b/src/pages/polRegulations/regulationsCat.tsx @@ -0,0 +1,127 @@ +import { Button, Space, Modal, FormInstance } from "antd"; +import { inject, observer } from "mobx-react"; +import BTable from "@/components/b_table"; +import { useEffect, useState } from "react"; +import { Store } from "antd/lib/form/interface"; +import SimpleForm from "@/components/form/simple_form"; +import React from "react"; +import { columns, defaultConfig } from "./cat_column"; + +const RegulationsCat = (props: Store) => { + const { regulationsCatStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [projectConfig, setProjectConfig] = useState([]); + const formRef = React.useRef(null); + const [record, setRecord] = useState(null); + useEffect(() => { + regulationsCatStore.getlist(); + setProjectConfig(defaultConfig); + }, [regulationsCatStore]); + const column_widget = (any, record) => { + return ( + + + + + + ); + }; + const edit = (record) => { + setIsModalOpen(true); + setRecord(record); + }; + const onFinish = (values: any) => { + let data = { + ...values, + pid:values.pid??0 + }; + if (!record?.id) { + regulationsCatStore.add(data); + } else { + regulationsCatStore.putItem(record.id, data); + } + setIsModalOpen(false); + }; + + const onFinishFailed = () => {}; + return ( +
+ + + + + column_widget(any, record), + }, + ]} + dataSource={regulationsCatStore.list} + /> + formRef.current?.resetFields()} + onOk={() => formRef.current?.submit()} + onCancel={() => { + setIsModalOpen(false); + }} + > + { + if (record?.id) { + formRef.current?.setFieldsValue(record); + } else { + formRef.current?.setFieldsValue(null); + } + }} + formName="card_basic" + colProps={25} + subBtnName="提交" + formDatas={projectConfig} + onFinish={onFinish} + initialValues={true} + onFinishFailed={onFinishFailed} + /> + + +
+ ); +}; + +export default inject("regulationsCatStore")(observer(RegulationsCat)); diff --git a/src/pages/polRegulations/regulations_column.tsx b/src/pages/polRegulations/regulations_column.tsx new file mode 100644 index 0000000..0c67b03 --- /dev/null +++ b/src/pages/polRegulations/regulations_column.tsx @@ -0,0 +1,55 @@ +import { FormType } from "@/components/form/interface"; +import { UserDataType } from "@/model/userModel"; +import { ColumnsType } from "antd/lib/table"; +export const columns: ColumnsType = [ + { + title: "法规标题", + dataIndex: "title", + }, + { + title: "法规副标题", + dataIndex: "sub_title", + }, + { + title: "法规内容", + dataIndex: "content", + width: 300, + ellipsis: true, + }, + { + title: "政策法规分类", + dataIndex: "storage_name", + }, +]; + +export const defaultConfig = [ + + { + type: FormType.input, + label: "法规标题", + name: "title", + value: "", + rules: [{ required: true, message: "请输入法规标题!" }], + }, + + { + type: FormType.input, + label: "法规副标题", + name: "sub_title", + value: "", + rules: [{ required: true, message: "请输入法规副标题!" }], + }, + { + type: "editor", + label: "内容", + name: "content", + value: "", + rules: [{ required: true, message: "请填写内容" }], + }, + { + type: "upload", + label: "附件图片", + name: "file_url", + value: [], + }, +]; diff --git a/src/pages/storage/index.tsx b/src/pages/storage/index.tsx index 387cd0b..fe6eb2b 100644 --- a/src/pages/storage/index.tsx +++ b/src/pages/storage/index.tsx @@ -22,24 +22,8 @@ const Storage = (props: Store) => { const column_widget = (any, record) => { return ( - - - + diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx index e0e4d30..a44e68b 100644 --- a/src/pages/user/user.tsx +++ b/src/pages/user/user.tsx @@ -8,12 +8,10 @@ import { Store } from "antd/lib/form/interface"; import "./user.less"; import SimpleForm from "@/components/form/simple_form"; import React from "react"; -import { useNavigate } from "react-router"; const User = (props: Store) => { const { usrStore } = props; const [isModalOpen, setIsModalOpen] = useState(false); - const nav = useNavigate(); const [projectConfig, setProjectConfig] = useState([]); const formRef = React.useRef(null); const [record, setRecord] = useState(null); @@ -164,14 +162,7 @@ const User = (props: Store) => { > 添加用户 - + diff --git a/src/pages/whseMgmt/index.tsx b/src/pages/whseMgmt/index.tsx index 45a9bf9..3b95721 100644 --- a/src/pages/whseMgmt/index.tsx +++ b/src/pages/whseMgmt/index.tsx @@ -54,10 +54,12 @@ const WhseMgmt = (props: Store) => { ); }; + // 编辑按钮 const edit = (record) => { setIsModalOpen(true); setRecord(record); }; + // 表单提交 const onFinish = (values: any) => { let data = { ...values, @@ -71,22 +73,18 @@ const WhseMgmt = (props: Store) => { } setIsModalOpen(false); }; + const addhandler = () => { + setRecord(null); + setProjectConfig(defaultConfig); + setIsModalOpen(true); + }; const onFinishFailed = () => {}; return (
- + { + constructor() { super(FolderConfig) - makeObservable(this, {}) + makeObservable(this, { + getAlist: action, + alist: observable, + }) } + + async getAlist(idl?: string) { + let res = await baseHttp.get(FolderConfig.AList+"/"+idl, {}); + this.alist = res.data?.record; + } + alist!: Array; } const folderStore = new FolderStore() export default folderStore; diff --git a/src/store/index.ts b/src/store/index.ts index 371fc5f..a005b8f 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -11,6 +11,8 @@ import { persMgmtStore } from './persMgmt'; import { storageStore } from './storage'; import { materialCatStore } from './materialCat'; import { materialStore } from './materialStore'; +import { regulationsCatStore } from './regulationsCat'; +import { regulationsStore } from './regulations'; const store = { usrStore, @@ -26,6 +28,8 @@ const store = { storageStore, materialCatStore, materialStore, + regulationsCatStore, + regulationsStore }; export default store; \ No newline at end of file diff --git a/src/store/regulations.ts b/src/store/regulations.ts new file mode 100644 index 0000000..6582787 --- /dev/null +++ b/src/store/regulations.ts @@ -0,0 +1,19 @@ +import { makeObservable } from "mobx"; +// 用户信息 +import BaseStore from "./baseStore"; +import { TagDataType } from "@/model/userModel"; + +class RegulationsConfig { + static LIST: string = "regulations/list" + static ADD: string = "regulations" + static DELETE: string = "regulations" + static EDIT: string = "regulations" +} +class Regulations extends BaseStore { + constructor() { + super(RegulationsConfig) + makeObservable(this, {}) + } +} +export const regulationsStore = new Regulations() + diff --git a/src/store/regulationsCat.ts b/src/store/regulationsCat.ts new file mode 100644 index 0000000..47a1465 --- /dev/null +++ b/src/store/regulationsCat.ts @@ -0,0 +1,19 @@ +import { makeObservable } from "mobx"; +// 用户信息 +import BaseStore from "./baseStore"; +import { TagDataType } from "@/model/userModel"; + +class RegulationsCatConfig { + static LIST: string = "regulations/catgory/list" + static ADD: string = "regulations/catgory" + static DELETE: string = "regulations/catgory" + static EDIT: string = "regulations/catgory" +} +class RegulationsCat extends BaseStore { + constructor() { + super(RegulationsCatConfig) + makeObservable(this, {}) + } +} +export const regulationsCatStore = new RegulationsCat() + diff --git a/src/util/webRtc.ts b/src/util/webRtc.ts new file mode 100644 index 0000000..b6edf75 --- /dev/null +++ b/src/util/webRtc.ts @@ -0,0 +1,47 @@ +import { message } from 'antd/lib'; +import WebRTC from 'webrtc'; + +class WebRtc { + private rtc: WebRTC + async init() { + this.rtc = new WebRTC({debug: true}); + try { + let strem = await navigator.mediaDevices.getUserMedia({ audio: true, video: true }) + var localVideo = document.getElementById('localVideo') as HTMLVideoElement; + localVideo.srcObject = strem; + console.log('localVideo', this.rtc?.addStream); + + // this.rtc?.addStream(strem); + + } catch (error) { + console.log(error); + + // message.error(`error ${JSON.stringify(message)}`) + } + } + calls() { + this.rtc.createOffer() + .then((offer) => { + // ... + }) + .catch((error) => { + console.log('Error creating offer: ', error); + }); + + // 接听呼叫 + this.rtc.createAnswer() + .then((answer) => { + // 发送answer信令等操作 + // ... + }) + .catch((error) => { + console.log('Error creating answer: ', error); + }); + } + + close() { + this.rtc.close(); + } +} + +export const webRTC = new WebRtc() \ No newline at end of file