vome-core 0.0.89 → 0.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,63 @@
1
- const _0x3cb7b5=_0x46e7;(function(_0x651df5,_0x415b37){const _0x531cfd=_0x46e7,_0x16aca9=_0x651df5();while(!![]){try{const _0x4fcd03=parseInt(_0x531cfd(0x104))/0x1+parseInt(_0x531cfd(0xf1))/0x2+parseInt(_0x531cfd(0xf3))/0x3*(-parseInt(_0x531cfd(0xe3))/0x4)+parseInt(_0x531cfd(0xe2))/0x5*(parseInt(_0x531cfd(0xed))/0x6)+-parseInt(_0x531cfd(0xee))/0x7*(-parseInt(_0x531cfd(0xe5))/0x8)+-parseInt(_0x531cfd(0x109))/0x9*(parseInt(_0x531cfd(0xe1))/0xa)+-parseInt(_0x531cfd(0xf6))/0xb;if(_0x4fcd03===_0x415b37)break;else _0x16aca9['push'](_0x16aca9['shift']());}catch(_0x4306be){_0x16aca9['push'](_0x16aca9['shift']());}}}(_0x13cb,0xa49e6));function _0x46e7(_0xd28764,_0x11d0f9){_0xd28764=_0xd28764-0xe1;const _0x13cb4b=_0x13cb();let _0x46e75c=_0x13cb4b[_0xd28764];if(_0x46e7['EuOUkQ']===undefined){var _0x344517=function(_0x467a89){const _0x4710c2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56edf4='',_0x2dcca2='';for(let _0x3b0eac=0x0,_0x517fe3,_0x392e8a,_0x320a1e=0x0;_0x392e8a=_0x467a89['charAt'](_0x320a1e++);~_0x392e8a&&(_0x517fe3=_0x3b0eac%0x4?_0x517fe3*0x40+_0x392e8a:_0x392e8a,_0x3b0eac++%0x4)?_0x56edf4+=String['fromCharCode'](0xff&_0x517fe3>>(-0x2*_0x3b0eac&0x6)):0x0){_0x392e8a=_0x4710c2['indexOf'](_0x392e8a);}for(let _0x5076d3=0x0,_0x4b7533=_0x56edf4['length'];_0x5076d3<_0x4b7533;_0x5076d3++){_0x2dcca2+='%'+('00'+_0x56edf4['charCodeAt'](_0x5076d3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2dcca2);};_0x46e7['ncmiMJ']=_0x344517,_0x46e7['ytvwya']={},_0x46e7['EuOUkQ']=!![];}const _0x42f589=_0x13cb4b[0x0],_0x358aff=_0xd28764+_0x42f589,_0x417e13=_0x46e7['ytvwya'][_0x358aff];return!_0x417e13?(_0x46e75c=_0x46e7['ncmiMJ'](_0x46e75c),_0x46e7['ytvwya'][_0x358aff]=_0x46e75c):_0x46e75c=_0x417e13,_0x46e75c;}import{toast}from'vue-sonner';function _0x13cb(){const _0x5c0b1a=['B25SB2fK','C3rYAw5NAwz5','A2v5','5lIk5lYG572r57UC6zsz6k+V','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','yxbWl3b1yMXPyW','DxbSB2fK','zw50CMLLCW','C3rHDhvZ','DxjS','ChvIBgLJrg9TywLU','nJG0mJi0y2fSq1Db','yxbWzw5K','DxbSB2fKvxjS','CMvZCg9UC2vuzxH0','Ag9ZDa','mtGWmdi3sfPrve9U','BwLU','BMfTzq','nJCWvxDbsNDn','mJq0nZbLC2Dbzwm','mtiWyNPMDgzf','zMLSzq','nJeZodr2C2L0qMq','ChjLDMLLDW','zxjYB3i','zMXVB3i','B25WCM9NCMvZCW','5lIk5lYG5zYW5z2a5PEG5Pwi','ue9tva','Bg9HzgvK','mti4neP6CujnBq','nZq5Aw1IuLbc','B3bLBG','C2vUza','odG3mZi2C0f6C1b1','C2XPy2u','ndG1ngLKEfDUuq','Dg90ywW','ChjLDMLLD1vYBa','mtaYnJuXndv3qxn6rLy','AgfZ','5lIk5lYG5AsX6lsLicG'];_0x13cb=function(){return _0x5c0b1a;};return _0x13cb();}import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH=_0x3cb7b5(0xfd),SIGN_SKIP=new Set([_0x3cb7b5(0x102),_0x3cb7b5(0x108),_0x3cb7b5(0x106),_0x3cb7b5(0x103),'previewUrl',_0x3cb7b5(0xe6)]);export function useUpload(){async function _0x56edf4(_0x2dcca2,_0x3b0eac={}){const _0x1d5468=_0x46e7,{prefixPath:prefixPath=_0x1d5468(0xfe),onProgress:_0x517fe3}=_0x3b0eac,_0x392e8a=uploadUid(),_0x320a1e=extname(_0x2dcca2['name']),_0x5076d3=filename(_0x2dcca2[_0x1d5468(0x10b)])+'_'+_0x392e8a+(_0x320a1e?'.'+_0x320a1e:''),_0x4b7533=pathJoin(prefixPath,_0x5076d3),_0x1238ad=await request(UPLOAD_PATH,{'method':_0x1d5468(0xeb),'body':JSON[_0x1d5468(0xfa)]({})}),_0x36f115=String(_0x1238ad['host']||_0x1238ad[_0x1d5468(0x102)]||_0x1238ad[_0x1d5468(0x106)]||'');if(!_0x36f115)throw new Error(_0x1d5468(0xea));const _0x59584e=new FormData();_0x59584e[_0x1d5468(0x105)](_0x1d5468(0xfb),_0x4b7533);for(const [_0x4b9435,_0x2218bc]of Object[_0x1d5468(0x100)](_0x1238ad)){if(SIGN_SKIP['has'](_0x4b9435)||_0x2218bc==null||_0x59584e[_0x1d5468(0xf7)](_0x4b9435))continue;_0x59584e[_0x1d5468(0x105)](_0x4b9435,String(_0x2218bc));}_0x59584e[_0x1d5468(0x105)](_0x1d5468(0xe4),_0x2dcca2),await xhrUpload(_0x36f115,_0x59584e,_0x517fe3);const _0x43e064=String(_0x1238ad['publicDomain']||_0x1238ad[_0x1d5468(0xf5)]||_0x36f115);return{'url':pathJoin(_0x43e064,_0x4b7533),'key':_0x4b7533,'fileId':_0x392e8a};}return{'toUpload':_0x56edf4};}function xhrUpload(_0x544f07,_0x4c748d,_0x3071f1){return new Promise((_0x1c6fa5,_0xa359eb)=>{const _0x493c3a=_0x46e7,_0x1f389b=new XMLHttpRequest();_0x1f389b[_0x493c3a(0xef)]('POST',_0x544f07),_0x1f389b[_0x493c3a(0xff)][_0x493c3a(0xe9)]=_0x3d444e=>{const _0x15ba15=_0x493c3a;if(!_0x3d444e['lengthComputable'])return;_0x3071f1?.(Math[_0x15ba15(0x10a)](0x64,Math[_0x15ba15(0xe8)](_0x3d444e[_0x15ba15(0xec)]/_0x3d444e[_0x15ba15(0xf4)]*0x64)));},_0x1f389b[_0x493c3a(0xf9)]=()=>{const _0x5936c8=_0x493c3a;if(_0x1f389b['status']<0xc8||_0x1f389b[_0x5936c8(0x101)]>=0x12c){const _0x1376ee=_0x1f389b[_0x5936c8(0x107)]||_0x5936c8(0xf8)+_0x1f389b[_0x5936c8(0x101)]+')';toast[_0x5936c8(0xe7)](_0x1376ee[_0x5936c8(0xf2)](0x0,0xc8)),_0xa359eb(new Error(_0x1376ee));return;}_0x3071f1?.(0x64),_0x1c6fa5();},_0x1f389b['onerror']=()=>_0xa359eb(new Error(_0x493c3a(0xfc))),_0x1f389b[_0x493c3a(0xf0)](_0x4c748d);});}
1
+ import { toast } from "vue-sonner";
2
+ import { request } from "../api/client";
3
+ import { extname, filename, pathJoin, uploadUid } from "../lib/upload";
4
+ const UPLOAD_PATH = "/admin/base/comm/upload";
5
+ const SIGN_SKIP = new Set([
6
+ "url",
7
+ "host",
8
+ "uploadUrl",
9
+ "publicDomain",
10
+ "previewUrl",
11
+ "preview"
12
+ ]);
13
+ export function useUpload() {
14
+ async function toUpload(file, opts = {}) {
15
+ const { prefixPath = "app/public", onProgress } = opts;
16
+ const fileId = uploadUid();
17
+ const ext = extname(file.name);
18
+ const name = `${filename(file.name)}_${fileId}${ext ? `.${ext}` : ""}`;
19
+ const key = pathJoin(prefixPath, name);
20
+ const sign = await request(UPLOAD_PATH, {
21
+ method: "POST",
22
+ body: JSON.stringify({})
23
+ });
24
+ const host = String(sign.host || sign.url || sign.uploadUrl || "");
25
+ if (!host)
26
+ throw new Error("上传地址无效");
27
+ const fd = new FormData;
28
+ fd.append("key", key);
29
+ for (const [k, v] of Object.entries(sign)) {
30
+ if (SIGN_SKIP.has(k) || v == null || fd.has(k))
31
+ continue;
32
+ fd.append(k, String(v));
33
+ }
34
+ fd.append("file", file);
35
+ await xhrUpload(host, fd, onProgress);
36
+ const preview = String(sign.publicDomain || sign.previewUrl || host);
37
+ return { url: pathJoin(preview, key), key, fileId };
38
+ }
39
+ return { toUpload };
40
+ }
41
+ function xhrUpload(url, body, onProgress) {
42
+ return new Promise((resolve, reject) => {
43
+ const xhr = new XMLHttpRequest;
44
+ xhr.open("POST", url);
45
+ xhr.upload.onprogress = (e) => {
46
+ if (!e.lengthComputable)
47
+ return;
48
+ onProgress?.(Math.min(100, Math.floor(e.loaded / e.total * 100)));
49
+ };
50
+ xhr.onload = () => {
51
+ if (xhr.status < 200 || xhr.status >= 300) {
52
+ const msg = xhr.responseText || `上传失败 (${xhr.status})`;
53
+ toast.error(msg.slice(0, 200));
54
+ reject(new Error(msg));
55
+ return;
56
+ }
57
+ onProgress?.(100);
58
+ resolve();
59
+ };
60
+ xhr.onerror = () => reject(new Error("上传网络错误"));
61
+ xhr.send(body);
62
+ });
63
+ }
@@ -1 +1,24 @@
1
- function _0x302d(){const _0x2b30c2=['zNvSBa','mtb0y0nuAu8','DxnLCKfNzw50','oti1mJyZmfjZtNHhCq','zg9JDw1LBNrfBgvTzw50','nJGZndbQyNvNveW','mtqXovrkB2zvvq','DgvZDa','mZu2ntq3muDVuenWqq','mJe2mZG0m01VA2zUwq','Dg9mB3DLCKnHC2u','nZe5otC5B1HbuxLb','B3rOzxi','ofPUywHnAa','mJaYotCYnfPTEe1Uuq','mtj2zg1zzLi','Bwf0y2G','otGXnZyWDxL6D0nr'];_0x302d=function(){return _0x2b30c2;};return _0x302d();}(function(_0x227411,_0x4705b5){const _0x1d796b=_0x1ad3,_0x53b6e3=_0x227411();while(!![]){try{const _0x46f9b1=parseInt(_0x1d796b(0x1a1))/0x1+-parseInt(_0x1d796b(0x195))/0x2+parseInt(_0x1d796b(0x19f))/0x3+parseInt(_0x1d796b(0x1a4))/0x4*(-parseInt(_0x1d796b(0x197))/0x5)+-parseInt(_0x1d796b(0x193))/0x6*(-parseInt(_0x1d796b(0x19e))/0x7)+parseInt(_0x1d796b(0x1a3))/0x8*(-parseInt(_0x1d796b(0x199))/0x9)+parseInt(_0x1d796b(0x19b))/0xa*(parseInt(_0x1d796b(0x19c))/0xb);if(_0x46f9b1===_0x4705b5)break;else _0x53b6e3['push'](_0x53b6e3['shift']());}catch(_0x5c4c85){_0x53b6e3['push'](_0x53b6e3['shift']());}}}(_0x302d,0xc533c));function _0x1ad3(_0x2f93fb,_0x22e39e){_0x2f93fb=_0x2f93fb-0x193;const _0x302d2c=_0x302d();let _0x1ad38e=_0x302d2c[_0x2f93fb];if(_0x1ad3['ZenYil']===undefined){var _0x343b05=function(_0x136750){const _0x10ce33='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x49d3dc='',_0x16acaa='';for(let _0x253ce9=0x0,_0x18a729,_0x50c6db,_0x3f6656=0x0;_0x50c6db=_0x136750['charAt'](_0x3f6656++);~_0x50c6db&&(_0x18a729=_0x253ce9%0x4?_0x18a729*0x40+_0x50c6db:_0x50c6db,_0x253ce9++%0x4)?_0x49d3dc+=String['fromCharCode'](0xff&_0x18a729>>(-0x2*_0x253ce9&0x6)):0x0){_0x50c6db=_0x10ce33['indexOf'](_0x50c6db);}for(let _0x4aff30=0x0,_0x44f013=_0x49d3dc['length'];_0x4aff30<_0x44f013;_0x4aff30++){_0x16acaa+='%'+('00'+_0x49d3dc['charCodeAt'](_0x4aff30)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16acaa);};_0x1ad3['AFmhME']=_0x343b05,_0x1ad3['BXrZYI']={},_0x1ad3['ZenYil']=!![];}const _0xb16ddd=_0x302d2c[0x0],_0x3908fa=_0x2f93fb+_0xb16ddd,_0x45b76e=_0x1ad3['BXrZYI'][_0x3908fa];return!_0x45b76e?(_0x1ad38e=_0x1ad3['AFmhME'](_0x1ad38e),_0x1ad3['BXrZYI'][_0x3908fa]=_0x1ad38e):_0x1ad38e=_0x45b76e,_0x1ad38e;}export function getBrowser(){const _0x1d007e=_0x1ad3,{clientHeight:_0x49d3dc,clientWidth:_0x16acaa}=document[_0x1d007e(0x19a)],_0x253ce9=navigator[_0x1d007e(0x198)][_0x1d007e(0x1a0)]();let _0x18a729=(_0x253ce9[_0x1d007e(0x194)](/firefox|chrome|safari|opera/g)||[_0x1d007e(0x1a2)])[0x0];if((_0x253ce9[_0x1d007e(0x194)](/msie|trident/g)||[])[0x0])_0x18a729='msie';let _0x50c6db=_0x1d007e(0x196);if(_0x16acaa<0x300)_0x50c6db='xs';else{if(_0x16acaa<0x3e0)_0x50c6db='sm';else{if(_0x16acaa<0x4b0)_0x50c6db='md';else{if(_0x16acaa<0x780)_0x50c6db='xl';}}}const _0x3f6656=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0x1d007e(0x19d)](_0x253ce9);return{'height':_0x49d3dc,'width':_0x16acaa,'type':_0x18a729,'screen':_0x50c6db,'isMini':_0x50c6db==='xs'||!_0x3f6656};}
1
+ export function getBrowser() {
2
+ const { clientHeight: height, clientWidth: width } = document.documentElement;
3
+ const ua = navigator.userAgent.toLowerCase();
4
+ let type = (ua.match(/firefox|chrome|safari|opera/g) || ["other"])[0];
5
+ if ((ua.match(/msie|trident/g) || [])[0])
6
+ type = "msie";
7
+ let screen = "full";
8
+ if (width < 768)
9
+ screen = "xs";
10
+ else if (width < 992)
11
+ screen = "sm";
12
+ else if (width < 1200)
13
+ screen = "md";
14
+ else if (width < 1920)
15
+ screen = "xl";
16
+ const isPC = !/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(ua);
17
+ return {
18
+ height,
19
+ width,
20
+ type,
21
+ screen,
22
+ isMini: screen === "xs" || !isPC
23
+ };
24
+ }
@@ -1 +1,5 @@
1
- (function(_0x5346d0,_0x5ec889){var _0x423513=_0x35c4,_0x3b0f0f=_0x5346d0();while(!![]){try{var _0x3cfb0e=-parseInt(_0x423513(0x158))/0x1+parseInt(_0x423513(0x15e))/0x2*(-parseInt(_0x423513(0x155))/0x3)+-parseInt(_0x423513(0x154))/0x4+parseInt(_0x423513(0x15b))/0x5*(parseInt(_0x423513(0x15d))/0x6)+-parseInt(_0x423513(0x157))/0x7*(parseInt(_0x423513(0x15c))/0x8)+parseInt(_0x423513(0x159))/0x9+-parseInt(_0x423513(0x15a))/0xa*(-parseInt(_0x423513(0x156))/0xb);if(_0x3cfb0e===_0x5ec889)break;else _0x3b0f0f['push'](_0x3b0f0f['shift']());}catch(_0x1f5951){_0x3b0f0f['push'](_0x3b0f0f['shift']());}}}(_0xd374,0x2aa13));import{clsx}from'clsx';function _0xd374(){var _0x2f7f6e=['odK0mZjmDefmvu4','ndjvtxfQDKK','mJC3ntHVCvbju1O','mtmZmJa4ogzRugfItq','mZnjz2fwDxe','odm4otC1nxbfA1DUvq','mJaZDujet3fu','mtm3otC3AwPfEgPg','mtqZotGWmLryB2rbAq','mtbRuMzTs0u','mtqYnZa1CfzZC0Xl'];_0xd374=function(){return _0x2f7f6e;};return _0xd374();}function _0x35c4(_0x4416b3,_0x479c78){_0x4416b3=_0x4416b3-0x154;var _0xd3743b=_0xd374();var _0x35c470=_0xd3743b[_0x4416b3];if(_0x35c4['oZFcgm']===undefined){var _0x2dd544=function(_0x117269){var _0x393a39='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x183134='',_0x7ea361='';for(var _0x1cd9c5=0x0,_0x1ad83e,_0x238ae0,_0x4af718=0x0;_0x238ae0=_0x117269['charAt'](_0x4af718++);~_0x238ae0&&(_0x1ad83e=_0x1cd9c5%0x4?_0x1ad83e*0x40+_0x238ae0:_0x238ae0,_0x1cd9c5++%0x4)?_0x183134+=String['fromCharCode'](0xff&_0x1ad83e>>(-0x2*_0x1cd9c5&0x6)):0x0){_0x238ae0=_0x393a39['indexOf'](_0x238ae0);}for(var _0x36d506=0x0,_0x4587b7=_0x183134['length'];_0x36d506<_0x4587b7;_0x36d506++){_0x7ea361+='%'+('00'+_0x183134['charCodeAt'](_0x36d506)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x7ea361);};_0x35c4['mnbfQt']=_0x2dd544,_0x35c4['EekSsZ']={},_0x35c4['oZFcgm']=!![];}var _0x88c95=_0xd3743b[0x0],_0x45f900=_0x4416b3+_0x88c95,_0x20a9a3=_0x35c4['EekSsZ'][_0x45f900];return!_0x20a9a3?(_0x35c470=_0x35c4['mnbfQt'](_0x35c470),_0x35c4['EekSsZ'][_0x45f900]=_0x35c470):_0x35c470=_0x20a9a3,_0x35c470;}import{twMerge}from'tailwind-merge';export function cn(..._0x183134){return twMerge(clsx(_0x183134));}
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
@@ -1 +1,13 @@
1
- const _0x533160=_0x1312;(function(_0x1fd519,_0x3cb913){const _0x19bf60=_0x1312,_0x3b758d=_0x1fd519();while(!![]){try{const _0xe5f132=parseInt(_0x19bf60(0x127))/0x1*(-parseInt(_0x19bf60(0x136))/0x2)+parseInt(_0x19bf60(0x134))/0x3+-parseInt(_0x19bf60(0x130))/0x4*(parseInt(_0x19bf60(0x12d))/0x5)+-parseInt(_0x19bf60(0x132))/0x6*(parseInt(_0x19bf60(0x12c))/0x7)+parseInt(_0x19bf60(0x12f))/0x8*(parseInt(_0x19bf60(0x135))/0x9)+-parseInt(_0x19bf60(0x133))/0xa*(-parseInt(_0x19bf60(0x12b))/0xb)+-parseInt(_0x19bf60(0x131))/0xc*(-parseInt(_0x19bf60(0x137))/0xd);if(_0xe5f132===_0x3cb913)break;else _0x3b758d['push'](_0x3b758d['shift']());}catch(_0x46edc3){_0x3b758d['push'](_0x3b758d['shift']());}}}(_0x42af,0xdc3ea));export const DIALOG_FLOAT_CLASS=_0x533160(0x128);function _0x1312(_0x89d6cb,_0x523662){_0x89d6cb=_0x89d6cb-0x126;const _0x42af6f=_0x42af();let _0x131296=_0x42af6f[_0x89d6cb];if(_0x1312['ggdexY']===undefined){var _0x496355=function(_0xafaa17){const _0x1b6567='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2388c6='',_0x220628='';for(let _0x380222=0x0,_0x35995e,_0x30777a,_0x54ff33=0x0;_0x30777a=_0xafaa17['charAt'](_0x54ff33++);~_0x30777a&&(_0x35995e=_0x380222%0x4?_0x35995e*0x40+_0x30777a:_0x30777a,_0x380222++%0x4)?_0x2388c6+=String['fromCharCode'](0xff&_0x35995e>>(-0x2*_0x380222&0x6)):0x0){_0x30777a=_0x1b6567['indexOf'](_0x30777a);}for(let _0x17a4d5=0x0,_0x3a86e3=_0x2388c6['length'];_0x17a4d5<_0x3a86e3;_0x17a4d5++){_0x220628+='%'+('00'+_0x2388c6['charCodeAt'](_0x17a4d5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x220628);};_0x1312['pMgcrx']=_0x496355,_0x1312['ukJoWQ']={},_0x1312['ggdexY']=!![];}const _0x300038=_0x42af6f[0x0],_0xf7bd5e=_0x89d6cb+_0x300038,_0x11f59a=_0x1312['ukJoWQ'][_0xf7bd5e];return!_0x11f59a?(_0x131296=_0x1312['pMgcrx'](_0x131296),_0x1312['ukJoWQ'][_0xf7bd5e]=_0x131296):_0x131296=_0x11f59a,_0x131296;}export function isDialogFloatTarget(_0x2388c6){const _0x4d8f4d=_0x533160,_0x220628=_0x2388c6[_0x4d8f4d(0x12a)],_0x380222=_0x220628?.['originalEvent']?.[_0x4d8f4d(0x12e)]??_0x2388c6[_0x4d8f4d(0x12e)];if(!_0x380222)return![];const _0x35995e=_0x380222 instanceof Element?_0x380222:_0x380222[_0x4d8f4d(0x126)];return Boolean(_0x35995e?.[_0x4d8f4d(0x129)]('.'+DIALOG_FLOAT_CLASS));}function _0x42af(){const _0x57a114=['mtC1mZaYtKj1C3zZ','ntbtsLLWDxa','mtiZmdqYowvnrNnTAq','mtaXmtu4odn5sgX4Cuy','ofnlvMzIAG','nZiYmtCYmxDsBvLHva','CgfYzw50rwXLBwvUDa','mJi3ndCXqMHuEwn6','DM0TzgLHBg9NlwzSB2f0','y2XVC2vZDa','zgv0ywLS','mZC2mJuXn1ruBK1UEq','mZCXseTezeTh','ndG3ntvPsNPtA1u','DgfYz2v0','ohrZsujHuq','nJm2uhjrAejM','mZztALn0rMi'];_0x42af=function(){return _0x57a114;};return _0x42af();}export function preventDialogOutsideClose(_0x30777a){if(isDialogFloatTarget(_0x30777a))_0x30777a['preventDefault']();}
1
+ export const DIALOG_FLOAT_CLASS = "vm-dialog-float";
2
+ export function isDialogFloatTarget(event) {
3
+ const detail = event.detail;
4
+ const t = detail?.originalEvent?.target ?? event.target;
5
+ if (!t)
6
+ return false;
7
+ const el = t instanceof Element ? t : t.parentElement;
8
+ return Boolean(el?.closest(`.${DIALOG_FLOAT_CLASS}`));
9
+ }
10
+ export function preventDialogOutsideClose(event) {
11
+ if (isDialogFloatTarget(event))
12
+ event.preventDefault();
13
+ }
@@ -1 +1,64 @@
1
- (function(_0x556589,_0x146321){const _0x363f63=_0x378c,_0x37d851=_0x556589();while(!![]){try{const _0x20f604=parseInt(_0x363f63(0x9c))/0x1*(-parseInt(_0x363f63(0xa1))/0x2)+-parseInt(_0x363f63(0xaa))/0x3+parseInt(_0x363f63(0x8f))/0x4*(-parseInt(_0x363f63(0x9a))/0x5)+-parseInt(_0x363f63(0x91))/0x6*(-parseInt(_0x363f63(0x9e))/0x7)+parseInt(_0x363f63(0x8d))/0x8+parseInt(_0x363f63(0xa7))/0x9*(parseInt(_0x363f63(0xab))/0xa)+parseInt(_0x363f63(0x96))/0xb;if(_0x20f604===_0x146321)break;else _0x37d851['push'](_0x37d851['shift']());}catch(_0x4c22ff){_0x37d851['push'](_0x37d851['shift']());}}}(_0x3ed6,0xebcdc));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x839d4c){const _0x3ecf2e=_0x378c;return _0x839d4c[_0x3ecf2e(0xa5)](_0x3d30da=>Boolean(_0x3d30da[_0x3ecf2e(0xa3)])&&_0x3d30da[_0x3ecf2e(0x92)]!==_0x3ecf2e(0x8b)&&_0x3d30da['type']!=='op'&&_0x3d30da[_0x3ecf2e(0x92)]!==_0x3ecf2e(0xa9)&&_0x3d30da[_0x3ecf2e(0x92)]!==_0x3ecf2e(0x9b)&&!_0x3d30da[_0x3ecf2e(0x8e)]);}function formatExportCell(_0x3c2e30,_0x576e74){const _0x1b1f7a=_0x378c;if(!_0x3c2e30[_0x1b1f7a(0xa3)])return'';const _0x12b51f=_0x576e74[_0x3c2e30[_0x1b1f7a(0xa3)]];if(_0x3c2e30[_0x1b1f7a(0x90)])return _0x3c2e30['formatter'](_0x576e74,_0x12b51f);const _0x2b4b74=_0x3c2e30[_0x1b1f7a(0xa0)]==null?[]:toValue(_0x3c2e30[_0x1b1f7a(0xa0)]);if(Array['isArray'](_0x2b4b74)&&_0x2b4b74[_0x1b1f7a(0x9f)]&&_0x12b51f!=null&&_0x12b51f!==''){const _0x17431a=_0x2b4b74[_0x1b1f7a(0xa4)](_0x31bfb2=>_0x31bfb2[_0x1b1f7a(0xa6)]===_0x12b51f||String(_0x31bfb2[_0x1b1f7a(0xa6)])===String(_0x12b51f));if(_0x17431a)return _0x17431a[_0x1b1f7a(0x99)];}if(_0x12b51f==null)return'';return String(_0x12b51f);}export function flattenExportRows(_0x1962fb,_0x1559e1){const _0x3db6d4=_0x378c;if(!_0x1559e1)return _0x1962fb;const _0x316714=_0x1962fb[_0x3db6d4(0x93)](_0x8e287b=>Array[_0x3db6d4(0xa8)](_0x8e287b['children'])&&_0x8e287b[_0x3db6d4(0x8c)][_0x3db6d4(0x9f)]);if(!_0x316714)return _0x1962fb;return flattenTree(_0x1962fb);}export function crudColumnsToExcel(_0x39a22a){const _0x1e87c4=_0x378c;return pickExportColumns(_0x39a22a)[_0x1e87c4(0x97)](_0x19f70a=>({'prop':_0x19f70a['prop'],'label':_0x19f70a['label']||_0x19f70a['prop']}));}export function downloadExcelBuffer(_0x42ba4f,_0x588e4a){const _0x1ee507=_0x378c,_0x5c04bc=new Blob([_0x42ba4f],{'type':_0x1ee507(0x94)}),_0x42d25b=URL[_0x1ee507(0x95)](_0x5c04bc),_0x1cb29d=document[_0x1ee507(0x9d)]('a');_0x1cb29d[_0x1ee507(0x98)]=_0x42d25b,_0x1cb29d['download']=excelFilename(_0x588e4a),_0x1cb29d[_0x1ee507(0xac)](),URL[_0x1ee507(0xa2)](_0x42d25b);}function _0x378c(_0x204098,_0x1c9acb){_0x204098=_0x204098-0x8b;const _0x3ed696=_0x3ed6();let _0x378c90=_0x3ed696[_0x204098];if(_0x378c['AyYxyp']===undefined){var _0x308fde=function(_0x31722f){const _0x4f412b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x839d4c='',_0x3d30da='';for(let _0x3c2e30=0x0,_0x576e74,_0x12b51f,_0x2b4b74=0x0;_0x12b51f=_0x31722f['charAt'](_0x2b4b74++);~_0x12b51f&&(_0x576e74=_0x3c2e30%0x4?_0x576e74*0x40+_0x12b51f:_0x12b51f,_0x3c2e30++%0x4)?_0x839d4c+=String['fromCharCode'](0xff&_0x576e74>>(-0x2*_0x3c2e30&0x6)):0x0){_0x12b51f=_0x4f412b['indexOf'](_0x12b51f);}for(let _0x17431a=0x0,_0x31bfb2=_0x839d4c['length'];_0x17431a<_0x31bfb2;_0x17431a++){_0x3d30da+='%'+('00'+_0x839d4c['charCodeAt'](_0x17431a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3d30da);};_0x378c['lgzgwn']=_0x308fde,_0x378c['nuSnWB']={},_0x378c['AyYxyp']=!![];}const _0x463851=_0x3ed696[0x0],_0x51fec2=_0x204098+_0x463851,_0x43c96d=_0x378c['nuSnWB'][_0x51fec2];return!_0x43c96d?(_0x378c90=_0x378c['lgzgwn'](_0x378c90),_0x378c['nuSnWB'][_0x51fec2]=_0x378c90):_0x378c90=_0x43c96d,_0x378c90;}export function exportCrudExcel(_0x5ee997,_0x3b1b25,_0x2eb578){const _0x34f567=pickExportColumns(_0x5ee997),_0x51fe97=crudColumnsToExcel(_0x34f567),_0x2d22f5=buildExcelBuffer(_0x51fe97,_0x3b1b25,(_0x1e8473,_0x4b876)=>{const _0x12c616=_0x378c,_0x3a7f0a=_0x34f567[_0x12c616(0xa4)](_0x39c586=>_0x39c586['prop']===_0x1e8473);return _0x3a7f0a?formatExportCell(_0x3a7f0a,_0x4b876):String(_0x4b876[_0x1e8473]??'');});downloadExcelBuffer(_0x2d22f5,_0x2eb578);}function _0x3ed6(){const _0x1b1931=['zgLJDa','mJG3mgjJzgXrEG','CMv2B2TLt2jQzwn0vvjm','ChjVCa','zMLUza','zMLSDgvY','DMfSDwu','mta4v09HyNLV','AxnbCNjHEq','zxHWyw5K','mtG2ndG3mKXoEMLIyW','ntu4mtaWuffvv2LP','y2XPy2S','C2vSzwn0Aw9U','y2HPBgrYzw4','mtiYnJG3mdroA25gEwu','AgLKzgvU','mty3mtm4mg1xt0XICq','zM9YBwf0DgvY','mtCXnJe4r0fmDxjY','DhLWzq','C29Tzq','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','y3jLyxrLt2jQzwn0vvjm','mteWmZeZmdzQs2vgwKu','BwfW','AhjLzG','BgfIzwW','mtbSsxj3uei','Aw5KzxG','mtmYm0f3yM1JqG','y3jLyxrLrwXLBwvUDa','mJCZqvP0D3Dm','BgvUz3rO'];_0x3ed6=function(){return _0x1b1931;};return _0x3ed6();}
1
+ import { toValue } from "vue";
2
+ import {
3
+ buildExcelBuffer,
4
+ excelFilename
5
+ } from "../../shared/excel";
6
+ import { flattenTree } from "./tree";
7
+ export {
8
+ buildExcelBuffer,
9
+ excelFilename,
10
+ excelResponseHeaders
11
+ } from "../../shared/excel";
12
+ export function pickExportColumns(columns) {
13
+ return columns.filter((c) => Boolean(c.prop) && c.type !== "selection" && c.type !== "op" && c.type !== "expand" && c.type !== "index" && !c.hidden);
14
+ }
15
+ function formatExportCell(col, row) {
16
+ if (!col.prop)
17
+ return "";
18
+ const val = row[col.prop];
19
+ if (col.formatter)
20
+ return col.formatter(row, val);
21
+ const dict = col.dict == null ? [] : toValue(col.dict);
22
+ if (Array.isArray(dict) && dict.length && val != null && val !== "") {
23
+ const hit = dict.find((d) => d.value === val || String(d.value) === String(val));
24
+ if (hit)
25
+ return hit.label;
26
+ }
27
+ if (val == null)
28
+ return "";
29
+ return String(val);
30
+ }
31
+ export function flattenExportRows(rows, tree) {
32
+ if (!tree)
33
+ return rows;
34
+ const nested = rows.some((r) => Array.isArray(r.children) && r.children.length);
35
+ if (!nested)
36
+ return rows;
37
+ return flattenTree(rows);
38
+ }
39
+ export function crudColumnsToExcel(columns) {
40
+ return pickExportColumns(columns).map((c) => ({
41
+ prop: c.prop,
42
+ label: c.label || c.prop
43
+ }));
44
+ }
45
+ export function downloadExcelBuffer(buffer, filename) {
46
+ const blob = new Blob([buffer], {
47
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
48
+ });
49
+ const url = URL.createObjectURL(blob);
50
+ const link = document.createElement("a");
51
+ link.href = url;
52
+ link.download = excelFilename(filename);
53
+ link.click();
54
+ URL.revokeObjectURL(url);
55
+ }
56
+ export function exportCrudExcel(columns, rows, filename) {
57
+ const exportCols = pickExportColumns(columns);
58
+ const excelCols = crudColumnsToExcel(exportCols);
59
+ const buffer = buildExcelBuffer(excelCols, rows, (prop, row) => {
60
+ const col = exportCols.find((c) => c.prop === prop);
61
+ return col ? formatExportCell(col, row) : String(row[prop] ?? "");
62
+ });
63
+ downloadExcelBuffer(buffer, filename);
64
+ }
@@ -1 +1,61 @@
1
- const _0x16cc11=_0x2e02;(function(_0x13d78d,_0x222238){const _0x55be2f=_0x2e02,_0x32ddd5=_0x13d78d();while(!![]){try{const _0x1f18b5=parseInt(_0x55be2f(0x152))/0x1*(-parseInt(_0x55be2f(0x154))/0x2)+parseInt(_0x55be2f(0x147))/0x3*(-parseInt(_0x55be2f(0x14c))/0x4)+-parseInt(_0x55be2f(0x13a))/0x5+-parseInt(_0x55be2f(0x13d))/0x6+-parseInt(_0x55be2f(0x142))/0x7+-parseInt(_0x55be2f(0x14e))/0x8+parseInt(_0x55be2f(0x14d))/0x9;if(_0x1f18b5===_0x222238)break;else _0x32ddd5['push'](_0x32ddd5['shift']());}catch(_0x4b22f6){_0x32ddd5['push'](_0x32ddd5['shift']());}}}(_0x12b9,0x3bf99));import{apiUrl,getAccessToken}from'../api/client';import{downloadExcelBuffer}from'./export-excel';import{parseExcelBuffer}from'../../shared/excel';function authHeaders(_0x393933){const _0x55d2aa=_0x2e02,_0x2767e6=new Headers(_0x393933),_0x379752=getAccessToken();if(_0x379752)_0x2767e6[_0x55d2aa(0x151)](_0x55d2aa(0x140),_0x55d2aa(0x149)+_0x379752);return _0x2767e6;}function _0x2e02(_0xf94a9f,_0x5584ad){_0xf94a9f=_0xf94a9f-0x13a;const _0x12b965=_0x12b9();let _0x2e02fe=_0x12b965[_0xf94a9f];if(_0x2e02['WPAzTM']===undefined){var _0x74bb70=function(_0x2202db){const _0x1ae7fc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x393933='',_0x2767e6='';for(let _0x379752=0x0,_0x2d9d4e,_0x19705c,_0x5a7441=0x0;_0x19705c=_0x2202db['charAt'](_0x5a7441++);~_0x19705c&&(_0x2d9d4e=_0x379752%0x4?_0x2d9d4e*0x40+_0x19705c:_0x19705c,_0x379752++%0x4)?_0x393933+=String['fromCharCode'](0xff&_0x2d9d4e>>(-0x2*_0x379752&0x6)):0x0){_0x19705c=_0x1ae7fc['indexOf'](_0x19705c);}for(let _0x31e541=0x0,_0x421ae2=_0x393933['length'];_0x31e541<_0x421ae2;_0x31e541++){_0x2767e6+='%'+('00'+_0x393933['charCodeAt'](_0x31e541)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2767e6);};_0x2e02['hFsFTI']=_0x74bb70,_0x2e02['wkOvyM']={},_0x2e02['WPAzTM']=!![];}const _0x8dfe9c=_0x12b965[0x0],_0x35d2d7=_0xf94a9f+_0x8dfe9c,_0x393235=_0x2e02['wkOvyM'][_0x35d2d7];return!_0x393235?(_0x2e02fe=_0x2e02['hFsFTI'](_0x2e02fe),_0x2e02['wkOvyM'][_0x35d2d7]=_0x2e02fe):_0x2e02fe=_0x393235,_0x2e02fe;}function resolveNamespace(_0x2d9d4e){const _0x47e019=_0x2e02;if(!_0x2d9d4e)return'';return _0x2d9d4e[_0x47e019(0x143)]('/')?_0x2d9d4e:'/'+_0x2d9d4e;}function _0x12b9(){const _0x907c73=['mtq1mdaXnNL0EeH4Da','mtGWndC5mdDNzwn6sMO','mJy2ody4mgvbBKPNuW','5A+85ywL5QIH5P2/','l2LTCg9YDfrLBxbSyxrL','C2v0','mxzOEujACG','l2LTCg9YDa','odG4ndq2s1LIq0Hu','mZK3nJqWuxLOsMDw','5A+85ywL5AsX6lsLicG','yxbWzw5K','mtCZndKYnhvtu2ndBG','5lIl6l295QIH5P2/5AsX6lsLicG','zMLSzq','yxv0Ag9YAxPHDgLVBG','ywrK','mtC1ndCWnhLqqNj1BW','C3rHCNrZv2L0Aa','A2v5CW','yxjYyxLcDwzMzxi','zgf0yq','m1vSDNDPvq','AgfZ','qMvHCMvYia','y29Kzq','Dgv4Da'];_0x12b9=function(){return _0x907c73;};return _0x12b9();}function headersFromRows(_0x19705c){const _0x5843bf=_0x2e02,_0x5a7441=[],_0x31e541=new Set();for(const _0x421ae2 of _0x19705c){for(const _0x14da40 of Object[_0x5843bf(0x144)](_0x421ae2)){if(_0x31e541[_0x5843bf(0x148)](_0x14da40))continue;_0x31e541[_0x5843bf(0x141)](_0x14da40),_0x5a7441['push'](_0x14da40);}}return _0x5a7441;}export async function parseImportExcelPreview(_0x317d05){const _0x55bef5=_0x2e02,_0x1a04be=new Uint8Array(await _0x317d05[_0x55bef5(0x145)]()),_0x53f741=parseExcelBuffer(_0x1a04be);return{'headers':headersFromRows(_0x53f741),'rows':_0x53f741};}export async function downloadImportTemplate(_0x2e7ecc,_0x4767cb=_0x16cc11(0x14f)){const _0x5065e1=_0x16cc11,_0x16a8e6=apiUrl(resolveNamespace(_0x2e7ecc)+_0x5065e1(0x150)),_0xcc71e8=await fetch(_0x16a8e6,{'headers':authHeaders()});if(!_0xcc71e8['ok']){const _0x37d169=await _0xcc71e8[_0x5065e1(0x14b)]();throw new Error(_0x37d169||_0x5065e1(0x13e)+_0xcc71e8['status']+')');}const _0x4590b4=new Uint8Array(await _0xcc71e8[_0x5065e1(0x145)]());downloadExcelBuffer(_0x4590b4,_0x4767cb);}export async function uploadImportExcel(_0x45b07a,_0x54e871){const _0x1c03f7=_0x16cc11,_0x49faaa=apiUrl(resolveNamespace(_0x45b07a)+_0x1c03f7(0x153)),_0x365987=new FormData();_0x365987[_0x1c03f7(0x13c)](_0x1c03f7(0x13f),_0x54e871);const _0x23cdf4=await fetch(_0x49faaa,{'method':'POST','headers':authHeaders(),'body':_0x365987}),_0x2e25a0=await _0x23cdf4[_0x1c03f7(0x14b)]();let _0x1f2cdc=null;try{_0x1f2cdc=_0x2e25a0?JSON['parse'](_0x2e25a0):null;}catch{}if(_0x1f2cdc?.[_0x1c03f7(0x14a)]===0x3e8&&_0x1f2cdc[_0x1c03f7(0x146)])return _0x1f2cdc[_0x1c03f7(0x146)];throw new Error(_0x1f2cdc?.['message']||_0x2e25a0||_0x1c03f7(0x13b)+_0x23cdf4['status']+')');}
1
+ import { apiUrl, getAccessToken } from "../api/client";
2
+ import { downloadExcelBuffer } from "./export-excel";
3
+ import { parseExcelBuffer } from "../../shared/excel";
4
+ function authHeaders(extra) {
5
+ const headers = new Headers(extra);
6
+ const token = getAccessToken();
7
+ if (token)
8
+ headers.set("authorization", `Bearer ${token}`);
9
+ return headers;
10
+ }
11
+ function resolveNamespace(ns) {
12
+ if (!ns)
13
+ return "";
14
+ return ns.startsWith("/") ? ns : `/${ns}`;
15
+ }
16
+ function headersFromRows(rows) {
17
+ const ordered = [];
18
+ const seen = new Set;
19
+ for (const row of rows) {
20
+ for (const key of Object.keys(row)) {
21
+ if (seen.has(key))
22
+ continue;
23
+ seen.add(key);
24
+ ordered.push(key);
25
+ }
26
+ }
27
+ return ordered;
28
+ }
29
+ export async function parseImportExcelPreview(file) {
30
+ const buf = new Uint8Array(await file.arrayBuffer());
31
+ const rows = parseExcelBuffer(buf);
32
+ return { headers: headersFromRows(rows), rows };
33
+ }
34
+ export async function downloadImportTemplate(namespace, filename = "导入模板") {
35
+ const url = apiUrl(`${resolveNamespace(namespace)}/importTemplate`);
36
+ const res = await fetch(url, { headers: authHeaders() });
37
+ if (!res.ok) {
38
+ const text = await res.text();
39
+ throw new Error(text || `下载模板失败 (${res.status})`);
40
+ }
41
+ const buf = new Uint8Array(await res.arrayBuffer());
42
+ downloadExcelBuffer(buf, filename);
43
+ }
44
+ export async function uploadImportExcel(namespace, file) {
45
+ const url = apiUrl(`${resolveNamespace(namespace)}/import`);
46
+ const fd = new FormData;
47
+ fd.append("file", file);
48
+ const res = await fetch(url, {
49
+ method: "POST",
50
+ headers: authHeaders(),
51
+ body: fd
52
+ });
53
+ const raw = await res.text();
54
+ let json = null;
55
+ try {
56
+ json = raw ? JSON.parse(raw) : null;
57
+ } catch {}
58
+ if (json?.code === 1000 && json.data)
59
+ return json.data;
60
+ throw new Error(json?.message || raw || `导入失败 (${res.status})`);
61
+ }
@@ -1 +1,42 @@
1
- const _0x31bfec=_0x1ac4;function _0x1ac4(_0x20b2c0,_0x3d75a6){_0x20b2c0=_0x20b2c0-0x11f;const _0x2d9f73=_0x2d9f();let _0x1ac499=_0x2d9f73[_0x20b2c0];if(_0x1ac4['csECAG']===undefined){var _0x1ffb62=function(_0x29f2dd){const _0x75ee80='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4aee63='',_0x4a91b7='';for(let _0xcab349=0x0,_0x121384,_0x325e0b,_0x128793=0x0;_0x325e0b=_0x29f2dd['charAt'](_0x128793++);~_0x325e0b&&(_0x121384=_0xcab349%0x4?_0x121384*0x40+_0x325e0b:_0x325e0b,_0xcab349++%0x4)?_0x4aee63+=String['fromCharCode'](0xff&_0x121384>>(-0x2*_0xcab349&0x6)):0x0){_0x325e0b=_0x75ee80['indexOf'](_0x325e0b);}for(let _0x4e639c=0x0,_0x210f6f=_0x4aee63['length'];_0x4e639c<_0x210f6f;_0x4e639c++){_0x4a91b7+='%'+('00'+_0x4aee63['charCodeAt'](_0x4e639c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a91b7);};_0x1ac4['tnOuUK']=_0x1ffb62,_0x1ac4['RjGQwD']={},_0x1ac4['csECAG']=!![];}const _0x2e951b=_0x2d9f73[0x0],_0x56284f=_0x20b2c0+_0x2e951b,_0x32720b=_0x1ac4['RjGQwD'][_0x56284f];return!_0x32720b?(_0x1ac499=_0x1ac4['tnOuUK'](_0x1ac499),_0x1ac4['RjGQwD'][_0x56284f]=_0x1ac499):_0x1ac499=_0x32720b,_0x1ac499;}(function(_0xe350ed,_0x343a42){const _0x492cd8=_0x1ac4,_0xd73e00=_0xe350ed();while(!![]){try{const _0x13c2f4=-parseInt(_0x492cd8(0x11f))/0x1+-parseInt(_0x492cd8(0x123))/0x2*(parseInt(_0x492cd8(0x12c))/0x3)+-parseInt(_0x492cd8(0x124))/0x4*(parseInt(_0x492cd8(0x12a))/0x5)+parseInt(_0x492cd8(0x12b))/0x6+-parseInt(_0x492cd8(0x12e))/0x7+parseInt(_0x492cd8(0x128))/0x8+-parseInt(_0x492cd8(0x122))/0x9*(-parseInt(_0x492cd8(0x120))/0xa);if(_0x13c2f4===_0x343a42)break;else _0xd73e00['push'](_0xd73e00['shift']());}catch(_0x594cd8){_0xd73e00['push'](_0xd73e00['shift']());}}}(_0x2d9f,0x5af78));export function textOfJson(_0x4aee63){const _0x5cf350=_0x1ac4;if(_0x4aee63==null)return'';if(typeof _0x4aee63==='string')return _0x4aee63;try{return JSON[_0x5cf350(0x12d)](_0x4aee63);}catch{return String(_0x4aee63);}}function _0x2d9f(){const _0x577edc=['neHUCNvjrW','B2jQzwn0','DhjPBq','CgfYC2u','mZK0ntG4ohjTCvzPCa','sLnptIdMOlZLVi/PLjNOR68','mtK2ndCXnu9Rvu96CW','mti2mtm1nMTPzeXOEG','mtHvzNPRqu4','C3rYAw5NAwz5','mJG1mtG0mKvuCvzzyG','ntGXnJq1zuz5Au12','otiZmdbvsgzcrKi','77Yi56M677Yj','mtuWm3LvvxH1uG','mtyZndi2vhjTCKfT'];_0x2d9f=function(){return _0x577edc;};return _0x2d9f();}export function prettyJson(_0x4a91b7,_0xcab349=_0x31bfec(0x121)){const _0x36cec6=_0x31bfec,_0x121384=textOfJson(_0x4a91b7)[_0x36cec6(0x126)]();if(!_0x121384)return _0xcab349;try{return JSON[_0x36cec6(0x12d)](JSON[_0x36cec6(0x127)](_0x121384),null,0x2);}catch{if(typeof _0x4a91b7===_0x36cec6(0x125)&&_0x4a91b7!==null)try{return JSON[_0x36cec6(0x12d)](_0x4a91b7,null,0x2);}catch{}return _0x121384;}}export function hasJsonContent(_0x325e0b){const _0x5f3981=_0x31bfec;return Boolean(textOfJson(_0x325e0b)[_0x5f3981(0x126)]());}export function parseJsonInput(_0x128793){const _0x1a7fc2=_0x31bfec,_0x4e639c=_0x128793[_0x1a7fc2(0x126)]();if(!_0x4e639c)return{'ok':!![],'value':null};try{return{'ok':!![],'value':JSON[_0x1a7fc2(0x127)](_0x4e639c)};}catch(_0x210f6f){return{'ok':![],'error':_0x210f6f instanceof Error?_0x210f6f['message']:_0x1a7fc2(0x129)};}}
1
+ export function textOfJson(v) {
2
+ if (v == null)
3
+ return "";
4
+ if (typeof v === "string")
5
+ return v;
6
+ try {
7
+ return JSON.stringify(v);
8
+ } catch {
9
+ return String(v);
10
+ }
11
+ }
12
+ export function prettyJson(raw, empty = "(空)") {
13
+ const s = textOfJson(raw).trim();
14
+ if (!s)
15
+ return empty;
16
+ try {
17
+ return JSON.stringify(JSON.parse(s), null, 2);
18
+ } catch {
19
+ if (typeof raw === "object" && raw !== null) {
20
+ try {
21
+ return JSON.stringify(raw, null, 2);
22
+ } catch {}
23
+ }
24
+ return s;
25
+ }
26
+ }
27
+ export function hasJsonContent(raw) {
28
+ return Boolean(textOfJson(raw).trim());
29
+ }
30
+ export function parseJsonInput(raw) {
31
+ const s = raw.trim();
32
+ if (!s)
33
+ return { ok: true, value: null };
34
+ try {
35
+ return { ok: true, value: JSON.parse(s) };
36
+ } catch (e) {
37
+ return {
38
+ ok: false,
39
+ error: e instanceof Error ? e.message : "JSON 格式错误"
40
+ };
41
+ }
42
+ }
@@ -1 +1,11 @@
1
- function _0x7bd4(){const _0x4aef61=['BwfW','zMLSDgvY','ohvLELzKzG','nfPpugfkDG','CM91DgvY','y2HPBgrYzw4','nty1odK0ogvMAeX4vG','ndu5mJzrugHksvC','oda4odmWvxvhzhre','BgvUz3rO','mJeYndmYmfz3zMH5Ba','mteYntyXnvzJAwDdta','AxntAg93','ndu5mZm4CwzAyKjc','ndjcvKPiCLa','mtK5nJeYyuXHu1no'];_0x7bd4=function(){return _0x4aef61;};return _0x7bd4();}function _0x13eb(_0x581290,_0x3f559f){_0x581290=_0x581290-0xae;const _0x7bd455=_0x7bd4();let _0x13eb42=_0x7bd455[_0x581290];if(_0x13eb['KZDUJD']===undefined){var _0x30e142=function(_0x179424){const _0x494eb2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x32ebb3='',_0xfa2940='';for(let _0x466ae4=0x0,_0x475381,_0x23744d,_0x182c58=0x0;_0x23744d=_0x179424['charAt'](_0x182c58++);~_0x23744d&&(_0x475381=_0x466ae4%0x4?_0x475381*0x40+_0x23744d:_0x23744d,_0x466ae4++%0x4)?_0x32ebb3+=String['fromCharCode'](0xff&_0x475381>>(-0x2*_0x466ae4&0x6)):0x0){_0x23744d=_0x494eb2['indexOf'](_0x23744d);}for(let _0x511152=0x0,_0x470cc5=_0x32ebb3['length'];_0x511152<_0x470cc5;_0x511152++){_0xfa2940+='%'+('00'+_0x32ebb3['charCodeAt'](_0x511152)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xfa2940);};_0x13eb['zeqFhb']=_0x30e142,_0x13eb['jinfhl']={},_0x13eb['KZDUJD']=!![];}const _0x3129be=_0x7bd455[0x0],_0x1a9673=_0x581290+_0x3129be,_0xfb1a79=_0x13eb['jinfhl'][_0x1a9673];return!_0xfb1a79?(_0x13eb42=_0x13eb['zeqFhb'](_0x13eb42),_0x13eb['jinfhl'][_0x1a9673]=_0x13eb42):_0x13eb42=_0xfb1a79,_0x13eb42;}(function(_0x2f9945,_0x2395fd){const _0x5cb898=_0x13eb,_0x131ad1=_0x2f9945();while(!![]){try{const _0x1705c0=parseInt(_0x5cb898(0xb7))/0x1+parseInt(_0x5cb898(0xb1))/0x2*(parseInt(_0x5cb898(0xb8))/0x3)+-parseInt(_0x5cb898(0xbd))/0x4*(-parseInt(_0x5cb898(0xb5))/0x5)+parseInt(_0x5cb898(0xb2))/0x6+-parseInt(_0x5cb898(0xb9))/0x7*(-parseInt(_0x5cb898(0xbc))/0x8)+-parseInt(_0x5cb898(0xb0))/0x9+-parseInt(_0x5cb898(0xb4))/0xa;if(_0x1705c0===_0x2395fd)break;else _0x131ad1['push'](_0x131ad1['shift']());}catch(_0x53c78b){_0x131ad1['push'](_0x131ad1['shift']());}}}(_0x7bd4,0x5017c));export function filterShowMenus(_0x32ebb3){const _0x2671c3=_0x13eb;if(!Array['isArray'](_0x32ebb3)||!_0x32ebb3[_0x2671c3(0xb3)])return[];return _0x32ebb3[_0x2671c3(0xbb)](_0xfa2940=>_0xfa2940&&_0xfa2940[_0x2671c3(0xb6)]!==![])[_0x2671c3(0xba)](_0x466ae4=>({..._0x466ae4,'children':_0x466ae4['children']?.[_0x2671c3(0xb3)]?filterShowMenus(_0x466ae4['children']):undefined}))[_0x2671c3(0xbb)](_0x475381=>{const _0x3f8293=_0x2671c3,_0x23744d=Number(_0x475381['type']);return _0x23744d===0x0||_0x23744d===0x1&&_0x475381[_0x3f8293(0xae)]||(_0x475381[_0x3f8293(0xaf)]?.[_0x3f8293(0xb3)]??0x0)>0x0;});}
1
+ export function filterShowMenus(nodes) {
2
+ if (!Array.isArray(nodes) || !nodes.length)
3
+ return [];
4
+ return nodes.filter((n) => n && n.isShow !== false).map((n) => ({
5
+ ...n,
6
+ children: n.children?.length ? filterShowMenus(n.children) : undefined
7
+ })).filter((n) => {
8
+ const t = Number(n.type);
9
+ return t === 0 || t === 1 && n.router || (n.children?.length ?? 0) > 0;
10
+ });
11
+ }
@@ -1 +1 @@
1
- function _0x2309(_0x2a2cf0,_0x3bb68a){_0x2a2cf0=_0x2a2cf0-0x146;var _0x5888a0=_0x5888();var _0x23092a=_0x5888a0[_0x2a2cf0];if(_0x2309['rhUUOY']===undefined){var _0x1e9c7e=function(_0x4573fe){var _0x3e1954='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x41cd2e='',_0x36bf2b='';for(var _0x5e5152=0x0,_0x485e12,_0x52d228,_0xb6d55e=0x0;_0x52d228=_0x4573fe['charAt'](_0xb6d55e++);~_0x52d228&&(_0x485e12=_0x5e5152%0x4?_0x485e12*0x40+_0x52d228:_0x52d228,_0x5e5152++%0x4)?_0x41cd2e+=String['fromCharCode'](0xff&_0x485e12>>(-0x2*_0x5e5152&0x6)):0x0){_0x52d228=_0x3e1954['indexOf'](_0x52d228);}for(var _0x9fc377=0x0,_0x1819c6=_0x41cd2e['length'];_0x9fc377<_0x1819c6;_0x9fc377++){_0x36bf2b+='%'+('00'+_0x41cd2e['charCodeAt'](_0x9fc377)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x36bf2b);};_0x2309['VXHGIN']=_0x1e9c7e,_0x2309['HZoGdu']={},_0x2309['rhUUOY']=!![];}var _0x5afe33=_0x5888a0[0x0],_0x7c947b=_0x2a2cf0+_0x5afe33,_0x5715cf=_0x2309['HZoGdu'][_0x7c947b];return!_0x5715cf?(_0x23092a=_0x2309['VXHGIN'](_0x23092a),_0x2309['HZoGdu'][_0x7c947b]=_0x23092a):_0x23092a=_0x5715cf,_0x23092a;}(function(_0x35bb23,_0x180faa){var _0xef3e1e=_0x2309,_0x153888=_0x35bb23();while(!![]){try{var _0x4aa891=parseInt(_0xef3e1e(0x149))/0x1+parseInt(_0xef3e1e(0x147))/0x2+parseInt(_0xef3e1e(0x146))/0x3+-parseInt(_0xef3e1e(0x14c))/0x4*(-parseInt(_0xef3e1e(0x148))/0x5)+-parseInt(_0xef3e1e(0x14d))/0x6+-parseInt(_0xef3e1e(0x14b))/0x7+-parseInt(_0xef3e1e(0x14a))/0x8;if(_0x4aa891===_0x180faa)break;else _0x153888['push'](_0x153888['shift']());}catch(_0x452ae8){_0x153888['push'](_0x153888['shift']());}}}(_0x5888,0xb0039));function _0x5888(){var _0x55d015=['nJu3otCWmLHlyLjfsq','mJiZotaYnMrZD1bfDG','mJGYmdmYmfDhCxfQCG','mJvyshjruxi','mJeZndu2tMDPtfrv','mZC5nZeYohLhsfvRBG','nZK4mtu1nffcvKz3rG','odq5otGWEwvpwNzn'];_0x5888=function(){return _0x55d015;};return _0x5888();}export{deepTree,flattenTree}from'../../shared/tree';
1
+ export { deepTree, flattenTree } from "../../shared/tree";
@@ -1 +1,88 @@
1
- const _0x34c443=_0x1c76;(function(_0x34b25c,_0x49f348){const _0x23286d=_0x1c76,_0xeba64d=_0x34b25c();while(!![]){try{const _0x94dab3=-parseInt(_0x23286d(0x109))/0x1+-parseInt(_0x23286d(0xf3))/0x2+parseInt(_0x23286d(0xf8))/0x3*(parseInt(_0x23286d(0xe1))/0x4)+-parseInt(_0x23286d(0xef))/0x5+parseInt(_0x23286d(0xdd))/0x6+parseInt(_0x23286d(0xd2))/0x7*(-parseInt(_0x23286d(0xfa))/0x8)+parseInt(_0x23286d(0xf9))/0x9;if(_0x94dab3===_0x49f348)break;else _0xeba64d['push'](_0xeba64d['shift']());}catch(_0x244409){_0xeba64d['push'](_0xeba64d['shift']());}}}(_0x595d,0x22bc8));export const DEFAULT_UPLOAD_RULES=[{'name':'图片','type':_0x34c443(0xd3),'color':_0x34c443(0x116),'exts':[_0x34c443(0x102),'jpg','jpeg','png',_0x34c443(0xff),_0x34c443(0xcf),_0x34c443(0x112),'webp']},{'name':'视频','type':_0x34c443(0xf7),'color':_0x34c443(0x111),'exts':[_0x34c443(0x10c),_0x34c443(0xd4),_0x34c443(0xdf),'mpeg',_0x34c443(0x10b),'rm','ram',_0x34c443(0xd1),'flv','mp4',_0x34c443(0x105)]},{'name':'音频','type':_0x34c443(0xf6),'color':_0x34c443(0x111),'exts':[_0x34c443(0xe8),_0x34c443(0x115),_0x34c443(0xe9),_0x34c443(0xdc),_0x34c443(0x118),_0x34c443(0x10a),'ra',_0x34c443(0xec),_0x34c443(0x108),'cda']},{'name':'文档','type':_0x34c443(0x117),'color':'#53B7F4','exts':[_0x34c443(0xda),_0x34c443(0xd5),_0x34c443(0xe2),_0x34c443(0xe3),_0x34c443(0x103),'dotm']},{'name':'表格','type':'excel','color':'#53D39C','exts':[_0x34c443(0xed),'xlsx',_0x34c443(0xfe),_0x34c443(0xea),_0x34c443(0x104),'xltm']},{'name':'演示','type':'ppt','color':_0x34c443(0xd0),'exts':[_0x34c443(0xeb),_0x34c443(0xd9),_0x34c443(0xce),_0x34c443(0xd6),_0x34c443(0xf1),_0x34c443(0xf5),_0x34c443(0x113),_0x34c443(0xe0),_0x34c443(0x107),_0x34c443(0xfc)]},{'name':_0x34c443(0x101),'type':_0x34c443(0x114),'color':_0x34c443(0x106),'exts':[_0x34c443(0x114)]},{'name':_0x34c443(0x110),'type':_0x34c443(0x100),'color':_0x34c443(0xf0),'exts':[_0x34c443(0x100),_0x34c443(0xd8),'7z',_0x34c443(0x10d),'gz']},{'name':'文件','type':_0x34c443(0xfb),'color':_0x34c443(0xee),'exts':[]}];function _0x595d(){const _0x5056ff=['ChbZ','yxvKAw8','DMLKzw8','m0vMAw9Vua','ndm1mZa1n210zLbVwG','mtyYndHHtu55t08','zMLSzq','zhbZ','zMLSDgvY','EgXZBq','DgLM','CMfY','uerg','yM1W','zg90Ea','EgX0Ea','m2DW','iZHMmZuWma','zhb0','ywfJ','otu4owXHzfbfDa','BwLKAq','Bw92','yxzP','DgfY','DxjS','Dg9tDhjPBMC','5y6l57YP5yYf','iZGYnMfLyW','C3zN','Cg90Ea','CgrM','D2f2','iZy3qZiZqq','D29Yza','zMXHyW','CMvWBgfJzq','Dg9mB3DLCKnHC2u','Chb0Bq','z2LM','i0y1nKm2qW','C3DM','ote3uvPVBvLx','Aw1Hz2u','D212','zg9JEa','ChbZEa','zMLUza','EMLW','Chb0Ea','zg9J','C2XPy2u','BxaY','otiXodG4v3zsvK9m','CMfUzg9T','BxbN','Cg90Bq','odK1mdyWq1jnr0nr','zg9JBq','zg90','BgvUz3rO','BwfW','Aw5JBhvKzxm','DhLWzq','BxaZ','D21H','EgX0','Chb0','yxbL','EgXZ','iZKWotm5oq','odG1nte1tLbvCwfp','i0zgqZC1nW','ChbZBq','BM93','ntmYmta2zw9Utg5c','C3bSAxq'];_0x595d=function(){return _0x5056ff;};return _0x595d();}function _0x1c76(_0x8ae22f,_0x5e5040){_0x8ae22f=_0x8ae22f-0xcd;const _0x595dd7=_0x595d();let _0x1c764e=_0x595dd7[_0x8ae22f];if(_0x1c76['nuThEt']===undefined){var _0x56a77b=function(_0xd6162c){const _0x1856be='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x172ef5='',_0x46de32='';for(let _0x1c4a5d=0x0,_0x2e2050,_0x231bfe,_0x3dbaa6=0x0;_0x231bfe=_0xd6162c['charAt'](_0x3dbaa6++);~_0x231bfe&&(_0x2e2050=_0x1c4a5d%0x4?_0x2e2050*0x40+_0x231bfe:_0x231bfe,_0x1c4a5d++%0x4)?_0x172ef5+=String['fromCharCode'](0xff&_0x2e2050>>(-0x2*_0x1c4a5d&0x6)):0x0){_0x231bfe=_0x1856be['indexOf'](_0x231bfe);}for(let _0x588c5d=0x0,_0x1f3808=_0x172ef5['length'];_0x588c5d<_0x1f3808;_0x588c5d++){_0x46de32+='%'+('00'+_0x172ef5['charCodeAt'](_0x588c5d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x46de32);};_0x1c76['oQozgV']=_0x56a77b,_0x1c76['YMsyqr']={},_0x1c76['nuThEt']=!![];}const _0x75c087=_0x595dd7[0x0],_0x344ff7=_0x8ae22f+_0x75c087,_0x494418=_0x1c76['YMsyqr'][_0x344ff7];return!_0x494418?(_0x1c764e=_0x1c76['oQozgV'](_0x1c764e),_0x1c76['YMsyqr'][_0x344ff7]=_0x1c764e):_0x1c764e=_0x494418,_0x1c764e;}export function extname(_0x172ef5=''){const _0x351b3f=_0x34c443,_0x46de32=String(_0x172ef5)[_0x351b3f(0xf4)]('?')[0x0]?.['match'](/\.([^.]+)$/);return _0x46de32?_0x46de32[0x1][_0x351b3f(0xcd)]():'';}export function filename(_0x1c4a5d=''){const _0x2a2f03=_0x34c443,_0x2e2050=String(_0x1c4a5d)[_0x2a2f03(0xf4)]('?')[0x0]?.[_0x2a2f03(0xf4)]('/')['pop']()||'',_0x231bfe=extname(_0x2e2050);return _0x231bfe?_0x2e2050[_0x2a2f03(0xdb)](0x0,-(_0x231bfe[_0x2a2f03(0xe4)]+0x1)):_0x2e2050;}export function fileRule(_0x3dbaa6,_0x588c5d=DEFAULT_UPLOAD_RULES){const _0x903b2a=_0x34c443;if(_0x3dbaa6?.[_0x903b2a(0xe6)]('data:image/'))return _0x588c5d[_0x903b2a(0xd7)](_0x5b062e=>_0x5b062e[_0x903b2a(0xe7)]===_0x903b2a(0xd3));const _0x1f3808=extname(_0x3dbaa6||''),_0xf7c518=_0x588c5d[_0x903b2a(0xd7)](_0x12f31c=>_0x12f31c['exts'][_0x903b2a(0xe6)](_0x1f3808));return _0xf7c518||_0x588c5d[_0x903b2a(0xd7)](_0x195ab9=>_0x195ab9[_0x903b2a(0xe7)]===_0x903b2a(0xfb));}export function getFileType(_0x259734,_0x38296d=DEFAULT_UPLOAD_RULES){const _0x28daf4=_0x34c443;return fileRule(_0x259734,_0x38296d)[_0x28daf4(0xe7)];}export function getUploadRule(_0xec3432,_0x2c9ec3=DEFAULT_UPLOAD_RULES){const _0x4c7fbd=_0x34c443;return _0x2c9ec3[_0x4c7fbd(0xd7)](_0x12fc98=>_0x12fc98['type']===_0xec3432)||_0x2c9ec3[_0x2c9ec3['length']-0x1];}export function getUrls(_0x2c4b80){const _0x54ce2f=_0x34c443;return _0x2c4b80['map'](_0x13ed14=>String(_0x13ed14[_0x54ce2f(0x10e)]||'')[_0x54ce2f(0x119)](/,/g,encodeURIComponent(',')));}export function pathJoin(..._0x56789e){const _0x284bcf=_0x34c443;return _0x56789e[_0x284bcf(0xe5)](_0x5a665f=>_0x5a665f['replace'](/(^\/+|\/+$)/g,''))[_0x284bcf(0xfd)](Boolean)['join']('/');}export function uploadUid(){const _0x4a102c=_0x34c443;return Date[_0x4a102c(0xf2)]()+'_'+Math[_0x4a102c(0xde)]()[_0x4a102c(0x10f)](0x24)['slice'](0x2,0x9);}
1
+ export const DEFAULT_UPLOAD_RULES = [
2
+ {
3
+ name: "图片",
4
+ type: "image",
5
+ color: "#67C23A",
6
+ exts: ["bmp", "jpg", "jpeg", "png", "tif", "gif", "svg", "webp"]
7
+ },
8
+ {
9
+ name: "视频",
10
+ type: "video",
11
+ color: "#826aec",
12
+ exts: ["avi", "wmv", "mpg", "mpeg", "mov", "rm", "ram", "swf", "flv", "mp4", "3gp"]
13
+ },
14
+ {
15
+ name: "音频",
16
+ type: "audio",
17
+ color: "#826aec",
18
+ exts: ["mp3", "wav", "wma", "mp2", "flac", "midi", "ra", "ape", "aac", "cda"]
19
+ },
20
+ {
21
+ name: "文档",
22
+ type: "word",
23
+ color: "#53B7F4",
24
+ exts: ["doc", "docx", "docm", "dot", "dotx", "dotm"]
25
+ },
26
+ {
27
+ name: "表格",
28
+ type: "excel",
29
+ color: "#53D39C",
30
+ exts: ["xls", "xlsx", "xlsm", "xlt", "xltx", "xltm"]
31
+ },
32
+ {
33
+ name: "演示",
34
+ type: "ppt",
35
+ color: "#F56C6C",
36
+ exts: ["ppt", "pptx", "pptm", "ppsx", "ppsm", "pps", "potx", "potm", "dpt", "dps"]
37
+ },
38
+ {
39
+ name: "PDF",
40
+ type: "pdf",
41
+ color: "#8f3500",
42
+ exts: ["pdf"]
43
+ },
44
+ {
45
+ name: "压缩包",
46
+ type: "rar",
47
+ color: "#FFC757",
48
+ exts: ["rar", "zip", "7z", "tar", "gz"]
49
+ },
50
+ {
51
+ name: "文件",
52
+ type: "file",
53
+ color: "#909399",
54
+ exts: []
55
+ }
56
+ ];
57
+ export function extname(path = "") {
58
+ const m = String(path).split("?")[0]?.match(/\.([^.]+)$/);
59
+ return m ? m[1].toLowerCase() : "";
60
+ }
61
+ export function filename(path = "") {
62
+ const base = String(path).split("?")[0]?.split("/").pop() || "";
63
+ const ext = extname(base);
64
+ return ext ? base.slice(0, -(ext.length + 1)) : base;
65
+ }
66
+ export function fileRule(path, rules = DEFAULT_UPLOAD_RULES) {
67
+ if (path?.includes("data:image/")) {
68
+ return rules.find((r) => r.type === "image");
69
+ }
70
+ const ext = extname(path || "");
71
+ const hit = rules.find((r) => r.exts.includes(ext));
72
+ return hit || rules.find((r) => r.type === "file");
73
+ }
74
+ export function getFileType(path, rules = DEFAULT_UPLOAD_RULES) {
75
+ return fileRule(path, rules).type;
76
+ }
77
+ export function getUploadRule(type, rules = DEFAULT_UPLOAD_RULES) {
78
+ return rules.find((r) => r.type === type) || rules[rules.length - 1];
79
+ }
80
+ export function getUrls(list) {
81
+ return list.map((e) => String(e.url || "").replace(/,/g, encodeURIComponent(",")));
82
+ }
83
+ export function pathJoin(...parts) {
84
+ return parts.map((p) => p.replace(/(^\/+|\/+$)/g, "")).filter(Boolean).join("/");
85
+ }
86
+ export function uploadUid() {
87
+ return `${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
88
+ }
@@ -1 +1,80 @@
1
- (function(_0x2d90e7,_0x3e43e5){const _0x35f27=_0x5ac0,_0x5a7fd6=_0x2d90e7();while(!![]){try{const _0x307019=-parseInt(_0x35f27(0xb6))/0x1+parseInt(_0x35f27(0xcc))/0x2*(parseInt(_0x35f27(0xb0))/0x3)+parseInt(_0x35f27(0xb7))/0x4*(-parseInt(_0x35f27(0xc2))/0x5)+parseInt(_0x35f27(0xb3))/0x6*(parseInt(_0x35f27(0xd0))/0x7)+-parseInt(_0x35f27(0xbc))/0x8*(parseInt(_0x35f27(0xc0))/0x9)+parseInt(_0x35f27(0xbe))/0xa+-parseInt(_0x35f27(0xd1))/0xb*(-parseInt(_0x35f27(0xcd))/0xc);if(_0x307019===_0x3e43e5)break;else _0x5a7fd6['push'](_0x5a7fd6['shift']());}catch(_0x4f92cc){_0x5a7fd6['push'](_0x5a7fd6['shift']());}}}(_0x12ab,0x5e016));function _0x5ac0(_0x4b7744,_0x167a5a){_0x4b7744=_0x4b7744-0xac;const _0x12ab4f=_0x12ab();let _0x5ac063=_0x12ab4f[_0x4b7744];if(_0x5ac0['cDwUEd']===undefined){var _0x2315f1=function(_0x1d05af){const _0x16da9e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5418c5='',_0x5ce8c8='';for(let _0x46dd1f=0x0,_0x2d4601,_0x45e567,_0x3b8223=0x0;_0x45e567=_0x1d05af['charAt'](_0x3b8223++);~_0x45e567&&(_0x2d4601=_0x46dd1f%0x4?_0x2d4601*0x40+_0x45e567:_0x45e567,_0x46dd1f++%0x4)?_0x5418c5+=String['fromCharCode'](0xff&_0x2d4601>>(-0x2*_0x46dd1f&0x6)):0x0){_0x45e567=_0x16da9e['indexOf'](_0x45e567);}for(let _0x90518a=0x0,_0x3b0895=_0x5418c5['length'];_0x90518a<_0x3b0895;_0x90518a++){_0x5ce8c8+='%'+('00'+_0x5418c5['charCodeAt'](_0x90518a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ce8c8);};_0x5ac0['fHrvkQ']=_0x2315f1,_0x5ac0['UPZUSC']={},_0x5ac0['cDwUEd']=!![];}const _0x22ce61=_0x12ab4f[0x0],_0x5da889=_0x4b7744+_0x22ce61,_0x4c815b=_0x5ac0['UPZUSC'][_0x5da889];return!_0x4c815b?(_0x5ac063=_0x5ac0['fHrvkQ'](_0x5ac063),_0x5ac0['UPZUSC'][_0x5da889]=_0x5ac063):_0x5ac063=_0x4c815b,_0x5ac063;}import{onUnmounted,ref,watch}from'vue';export const FRAME_CAPTURE_TIMEOUT_MS=0x1f40;export function captureVideoFrame(_0x5418c5){const _0x4a23e4=_0x5ac0;if(typeof document===_0x4a23e4(0xb4))return Promise[_0x4a23e4(0xba)](null);return new Promise(_0x5ce8c8=>{const _0x17f1a2=_0x4a23e4,_0x46dd1f=document[_0x17f1a2(0xb2)](_0x17f1a2(0xc9));_0x46dd1f[_0x17f1a2(0xb1)]='anonymous',_0x46dd1f[_0x17f1a2(0xc8)]=!![],_0x46dd1f[_0x17f1a2(0xc6)]=!![],_0x46dd1f[_0x17f1a2(0xbd)]=_0x17f1a2(0xcf);let _0x2d4601=![];const _0x45e567=_0x90518a=>{const _0x2fd96a=_0x17f1a2;if(_0x2d4601)return;_0x2d4601=!![],window[_0x2fd96a(0xb8)](_0x3b8223),_0x46dd1f[_0x2fd96a(0xac)](_0x2fd96a(0xb5)),_0x46dd1f[_0x2fd96a(0xad)](),_0x5ce8c8(_0x90518a);},_0x3b8223=window[_0x17f1a2(0xae)](()=>_0x45e567(null),FRAME_CAPTURE_TIMEOUT_MS);_0x46dd1f['addEventListener'](_0x17f1a2(0xce),()=>_0x45e567(null),{'once':!![]}),_0x46dd1f[_0x17f1a2(0xd2)]('loadeddata',()=>{const _0x24dd23=_0x17f1a2;try{_0x46dd1f[_0x24dd23(0xc7)]=0.01;}catch{_0x45e567(null);}},{'once':!![]}),_0x46dd1f['addEventListener']('seeked',()=>{const _0x33386e=_0x17f1a2;try{const _0x3b0895=_0x46dd1f[_0x33386e(0xc1)],_0x20d1e5=_0x46dd1f[_0x33386e(0xcb)];if(!_0x3b0895||!_0x20d1e5){_0x45e567(null);return;}const _0x85bf3a=document[_0x33386e(0xb2)](_0x33386e(0xca));_0x85bf3a[_0x33386e(0xb9)]=_0x3b0895,_0x85bf3a[_0x33386e(0xbb)]=_0x20d1e5;const _0x15081a=_0x85bf3a[_0x33386e(0xaf)]('2d');if(!_0x15081a){_0x45e567(null);return;}_0x15081a[_0x33386e(0xbf)](_0x46dd1f,0x0,0x0,_0x3b0895,_0x20d1e5),_0x45e567(_0x85bf3a[_0x33386e(0xc4)]('image/jpeg',0.82));}catch{_0x45e567(null);}},{'once':!![]}),_0x46dd1f[_0x17f1a2(0xb5)]=_0x5418c5;});}export function useVideoFrame(_0x586846){const _0x29c7ea=ref(''),_0x1a697b=ref(![]);let _0x2c68f6=0x0;return watch(_0x586846,_0x1d36e2=>{const _0x2d7aae=_0x5ac0;_0x2c68f6+=0x1;const _0x321f96=_0x2c68f6;_0x29c7ea[_0x2d7aae(0xc3)]='',_0x1a697b[_0x2d7aae(0xc3)]=![];if(!_0x1d36e2)return;captureVideoFrame(_0x1d36e2)[_0x2d7aae(0xc5)](_0x13f836=>{const _0x593669=_0x2d7aae;if(_0x321f96!==_0x2c68f6)return;if(_0x13f836)_0x29c7ea[_0x593669(0xc3)]=_0x13f836;else _0x1a697b[_0x593669(0xc3)]=!![];});},{'immediate':!![]}),onUnmounted(()=>{_0x2c68f6+=0x1;}),{'videoFrameSrc':_0x29c7ea,'frameFailed':_0x1a697b};}function _0x12ab(){const _0x3514c9=['AgvPz2H0','nJm2ntm2C2TiwhnY','ChjLBg9Hza','mtyWmJG0mfLIt2nluq','zhjHD0LTywDL','nZjQDLbnALq','DMLKzw9xAwr0Aa','ntbQANDStKO','DMfSDwu','Dg9eyxrHvvjm','DgHLBG','CgXHExnjBMXPBMu','y3vYCMvUDfrPBwu','Bxv0zwq','DMLKzw8','y2fUDMfZ','DMLKzw9izwLNAhq','nda2B211B2Dx','mJa5odu2z01JvNry','zxjYB3i','yxv0BW','n0HqyNDJzW','nJGYC1DNzMj0','ywrKrxzLBNrmAxn0zw5LCG','CMvTB3zLqxr0CMLIDxrL','Bg9Hza','C2v0vgLTzw91Da','z2v0q29UDgv4Da','mJu5ohvdu2XcAG','y3jVC3npCMLNAw4','y3jLyxrLrwXLBwvUDa','mtaYnJm3ogHRAu5Trq','Dw5KzwzPBMvK','C3jJ','mtmXndm5wKfmu29Q','mtC1mZuYC0D4sgrw','y2XLyxjuAw1LB3v0','D2LKDgG','CMvZB2X2zq'];_0x12ab=function(){return _0x3514c9;};return _0x12ab();}
1
+ import { onUnmounted, ref, watch } from "vue";
2
+ export const FRAME_CAPTURE_TIMEOUT_MS = 8000;
3
+ export function captureVideoFrame(url) {
4
+ if (typeof document === "undefined")
5
+ return Promise.resolve(null);
6
+ return new Promise((resolve) => {
7
+ const video = document.createElement("video");
8
+ video.crossOrigin = "anonymous";
9
+ video.muted = true;
10
+ video.playsInline = true;
11
+ video.preload = "auto";
12
+ let settled = false;
13
+ const finish = (value) => {
14
+ if (settled)
15
+ return;
16
+ settled = true;
17
+ window.clearTimeout(timer);
18
+ video.removeAttribute("src");
19
+ video.load();
20
+ resolve(value);
21
+ };
22
+ const timer = window.setTimeout(() => finish(null), FRAME_CAPTURE_TIMEOUT_MS);
23
+ video.addEventListener("error", () => finish(null), { once: true });
24
+ video.addEventListener("loadeddata", () => {
25
+ try {
26
+ video.currentTime = 0.01;
27
+ } catch {
28
+ finish(null);
29
+ }
30
+ }, { once: true });
31
+ video.addEventListener("seeked", () => {
32
+ try {
33
+ const w = video.videoWidth;
34
+ const h = video.videoHeight;
35
+ if (!w || !h) {
36
+ finish(null);
37
+ return;
38
+ }
39
+ const canvas = document.createElement("canvas");
40
+ canvas.width = w;
41
+ canvas.height = h;
42
+ const ctx = canvas.getContext("2d");
43
+ if (!ctx) {
44
+ finish(null);
45
+ return;
46
+ }
47
+ ctx.drawImage(video, 0, 0, w, h);
48
+ finish(canvas.toDataURL("image/jpeg", 0.82));
49
+ } catch {
50
+ finish(null);
51
+ }
52
+ }, { once: true });
53
+ video.src = url;
54
+ });
55
+ }
56
+ export function useVideoFrame(source) {
57
+ const videoFrameSrc = ref("");
58
+ const frameFailed = ref(false);
59
+ let captureToken = 0;
60
+ watch(source, (url) => {
61
+ captureToken += 1;
62
+ const token = captureToken;
63
+ videoFrameSrc.value = "";
64
+ frameFailed.value = false;
65
+ if (!url)
66
+ return;
67
+ captureVideoFrame(url).then((dataUrl) => {
68
+ if (token !== captureToken)
69
+ return;
70
+ if (dataUrl)
71
+ videoFrameSrc.value = dataUrl;
72
+ else
73
+ frameFailed.value = true;
74
+ });
75
+ }, { immediate: true });
76
+ onUnmounted(() => {
77
+ captureToken += 1;
78
+ });
79
+ return { videoFrameSrc, frameFailed };
80
+ }
@@ -14,8 +14,15 @@ export type EpsDictNode = EpsDictRow & {
14
14
  };
15
15
  export type EpsDictMap = Record<string, EpsDictNode[]>;
16
16
  export declare function getDictMap(): EpsDictMap;
17
+ /**
18
+ * 一级业务字典(无 children、不含 name===color)
19
+ * 用于表单下拉 / switch 等不需要色值的场景
20
+ */
17
21
  export declare function getDict(typeKey: string): EpsDictNode[];
18
- /** 根项 → 下拉 options */
22
+ /**
23
+ * 一级业务项平铺为 { label, value, color? }
24
+ * color 取自该根项下子节点 name===color;供彩色 tag / 菜单类型等
25
+ */
19
26
  export declare function getDictOptions(typeKey: string): {
20
27
  label: string;
21
28
  value: string | number;
@@ -3,14 +3,25 @@ function isEmpty(val) {
3
3
  return val === "" || val === null || val === undefined;
4
4
  }
5
5
  const data = Object.create(null);
6
+ function isColorMeta(n) {
7
+ return String(n.name || "") === "color";
8
+ }
6
9
  export function getDictMap() {
7
10
  return data;
8
11
  }
9
12
  export function getDict(typeKey) {
10
- return data[typeKey] || [];
13
+ const roots = data[typeKey] || [];
14
+ return roots.filter((n) => !isColorMeta(n)).map((n) => {
15
+ const { children: _c, ...rest } = n;
16
+ return {
17
+ ...rest,
18
+ label: n.label || n.name
19
+ };
20
+ });
11
21
  }
12
22
  export function getDictOptions(typeKey) {
13
- return getDict(typeKey).map((n) => {
23
+ const roots = data[typeKey] || [];
24
+ return roots.filter((n) => !isColorMeta(n)).map((n) => {
14
25
  const colorChild = n.children?.find((c) => c.name === "color");
15
26
  return {
16
27
  label: n.label || n.name,